/etc/rc.conf の 「kern_securelevel="-1"」の行を、(必要なら)変更する.
/etc/rc.conf の変更を有効にするためには、reboot を行ってください.
参考 Web ページ:
https://docs.freebsd.org/ja/books/handbook/security/
下記のamd64のところは,マシンのタイプに応じて,適切に読み替えてください.
cd /usr/src/sys/amd64/conf cp GENERIC NEWKERNEL # ここで、NEWKERNEL の編集を行ってください
カスタムカーネルの構築ですが、昔は、性能向上が目的でした。 現在は、コンピュータは十分速いですが、 セキュリティ向上のために余分な機能を削る という目的で、カスタムカーネルの構築を行なうことをお勧めします.
config を実行する前に、NEWKERNEL の編集を行う.
必ず ident の行は GENERIC 以外に書き換えておくこと(GENERIC のままだと混乱の元です)。
■ 設定例: カーネル識別名を NEWKERNEL に設定
ident NEWKERNEL
FreeBSD の設定ファイルには, IPv6 の存在を前提に造られているものがあるので,よほどの理由が無い限り,IPv6 の機能は生かしておく方がよい.
■ 設定例: NFS を使わない場合
■ 設定例: フロッピードライブとテーブドライブをコメント化
■ 設定例: すべてをコメント化
■ 設定例: すべてをコメント化
■ 設定例: すべてをコメント化
■ 設定例: すべてをコメント化
■ 設定例: すべてをコメント化
必要な NIC は「ifconfig -a」で分かるので,それ以外は取り除く,という意味.
※ 但し「miibus」は取り除いてはいけない
■ 設定例: em と miibus 以外をすべてコメント化
■ 設定例: すべてをコメント化
■ 設定例: すべてをコメント化
■ 設定例: すべてをコメント化
【外部ページへのリンク】 http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/kernelconfig.html
/etc/make.conf には、新しいカーネル識別名を書いておきます.
KERNCONF= NEWKERNEL
/etc/make.conf には、次のような行を追加しておく.
# /etc/make.conf を次のように設定 CFLAGS+=-O2 -fno-strict-aliasing -pipe NO_PROFILE=true USA_RESIDENT=NO
先ほど、「cd /usr/src; make update」を実行して,ソースコードの更新を行った。更新されたソースコードを使って,システムのビルドを行う.
作業を行う前に、FreeBSD ハンドブックの Web ページ を読んでおく.役に立つ情報が得られるでしょう.
/usr/share/examples/etc/make.conf の CFLAGS, NO_PROFILE の行を参考にして,/etc/make.conf を書き換える
「以前にも,同じマシンで,FreeBSD のシステムのインストール(つまり make buildworld) したことがある」という場合,前回のビルド結果を消しておく操作を行っておく.
make buildworld により,「前回のビルド結果は自動で消える」はず,とは言え,下記のようなコマンド操作を行っておくと,トラブルが減る(私の経験上)
cd /usr/obj # chflags -R noschg * で "No such file or directory" と出ても無視 chflags -R noschg * rm -rf * cd /usr/src # make cleandir は2回行う make cleandir; make cleandir
ビルドには大体1時間以上かかります. 「script ...」の実行で、以下「exit」までが /var/tmp/makeworld.out に記録されるようになる.これは,エラー時に役立つので便利.
※ プロファイル版のライブラリを生成したくない ときは,make buildworld, make installworld の実行時(両方とも)に,「-DNOPROFILE=true」を付ける
script /var/tmp/makeworld.out cd /usr/src make -j4 buildworld
エラーメッセージが出ていないこと
exit
今なら「インストールした時点のカーネルのファイル(つまり確実に動くファ イル)」 が残っているので、バックアップしておく.
カーネルのバックアップは,シングルユーザモードで行ないたい。
shutdown now fsck -p mount -u / mount -a -t ufs swapon -a
mkdir /boot/GENERIC.BAK cd /boot tar -cvpf /var/tmp/GENERIC.tar ./kernel cd /boot/GENERIC.BAK tar -xvpf /var/tmp/GENERIC.tar rm /var/tmp/GENERIC.tar
バックアップが終わったので,「exit」でマルチユーザモードに移行する.
exit
カーネルの構築とインストールを行うが、その前に、上記の「システムのビルド」を済ませておくこと。
◆ GENERIC カーネルを再構築する場合
GENERIC カーネルを再構築してインストールする場合には 下記のように「KERNCONF=GENERIC」とします.
カーネルの構築とインストールには、時間がかかります
script /var/tmp/buildkernel.out cd /usr/src make -j4 buildkernel KERNCONF=GENRIC
◆ カスタム・カーネルを構築する場合
KERNCONF=*** のところには、作成したカーネルコンフィグファイルの名前を書く.
※ 「カーネルコンフィグファイルを作っていないよ」という場合には,すでにある GENERIC を使いたいので,上の「GENERIC カーネルを再構築する場合」の手順になる.
script /var/tmp/buildkernel.out cd /usr/src make -j4 buildkernel KERNCONF=NEWKERNEL
exit
カーネルのインストールは,シングルユーザモードで行ないたい。
shutdown now fsck -p mount -u / mount -a -t ufs swapon -a
◆ GENERIC カーネルをインストールする場合
GENERIC カーネルを再構築してインストールする場合には 下記のように「KERNCONF=GENERIC」とします.
カーネルの構築とインストールには、時間がかかります
cd /usr/src make installkernel KERNCONF=GENERIC
◆ カスタム・カーネルをインストールする場合
KERNCONF=*** のところには、作成したカーネルコンフィグファイルの名前を書く.
※ 「カーネルコンフィグファイルを作っていないよ」という場合には,すでにある GENERIC を使いたいので,上の「GENERIC カーネルを再構築する場合」の手順になる.
cd /usr/src make installkernel KERNCONF=NEWKERNEL
再起動します.
sync sync sync sync sync reboot
■ カーネルが起動しない場合
ブートローダ(FreeBSD の新しいバージョンなら、起動時のメニューで 「6. Escape to loader prompt」を選びます
unload load /boot/GENERIC.BAK/kernel/kernel boot
のようにカーネルのファイル名を指定して起動できるので、さっきバックアッ プをとっておいた GENERIC カーネルで起動します.
システムのインストールは,シングルユーザモードで行ないたい。
shutdown now fsck -p mount -u / mount -a -t ufs swapon -a
adjkerntz -i
cp -Rp /etc /etc.org
mergemaster -p
基本は「d」で棄却. 必要なものだけ「m」でマージ.
make installworld のときは,オプションに -j などを付けてはいけません。
※ 「make installworld」の実行時に指示が出たら、指示に従うこと
cd /usr/src make installworld
再起動します.操作ミスで,再起動できなくなることもよくあるので注意(そのときはシングルユーザモードで再起動して,/etc.org を使うなどで対処)
sync sync sync sync sync reboot
まず,不要ファイルの削除を行う.
cd /usr/src make delete-old
次は mergemaster の実行.
基本は「d」で棄却. 必要なものだけ「m」でマージ.
mergemaster -UPi
※ mergemaster の実行によって /etc, /dev のファイルが新しいファイルに入れ替わってしまうので, 上記の手順では,「cp -Rp /etc /etc.org」 を実行して、コピーを作っています./etc.orgに古いファイルがバックアップ として残るので、必要に応じて、自分でマージを行ってください(つまり、手動でマージします. 問題が起きたときに /etc/etc.org のファイルを見る、という感じでも良いで しょう)。
uname -a
「uname -a」を実行して、バージョンを確認しておく.
# (オプション)古いライブラリの削除 cd /usr/src make delete-old-libs # (オプション)sysinstall のインストール cd /usr/src/release/sysinstall make all install
解決法