make world
最新のソースツリーを手に入れる
何はともあれ、最新のソースツリーを手に入れなければなりません。cvsupで最新のソースにを参照してください。
/usr/src/UPDATINGを読む
直近のReleaseからのコミットの際にシステムを作りなおすときの注意点などがまとめられています。必ず読むようにしてください。英語ですが、簡単な文なので読解するのは可能です。
/etc/make.confの確認・/etc/groupの確認
多分しなくても良いですが、/etc/make.confにコンパイルの際のオプションを指定します。これは/etc/defaults/make.confをオーバーライド(上書き)します。
また、新しく作り直すシステムが新しい機能の追加などによって新しいグループを必要とする場合があります。/usr/src/etc/groupと/etc/groupを比べてみて追加されたgroup、gidが同じにもかかわらず名前が変わっている場合はそれも変更しなければなりません。
これもUPDATINGに記載されているようなケースなので、特にこのような情報がなければ大抵の場合省略可能なプロセスです。不安な時は確認してください。
/usr/objを削除する
以前にmake worldをしたことがあるのなら/usr/obj以下に残っています。無用なトラブルを防ぐために削除しておいたほうが良いでしょう。またフラグがたっていて、削除できないときがありますので、以下の手順を踏むとよいでしょう。
# cd /usr/obj
# chflags -R noschg *
# rm -rf *
Userlandを再構築する
/usr/srcにおいて、make buildworldを実行します。この作業ではシングルユーザモードにする必要はありません。
# cd /usr/src
# make buildworld
なお、ログを残したい場合(大体は残しておいたほうが良いと思います)、標準エラー出力を記録するかscriptコマンドを使用すると良いです。
# cd /usr/src
# script /tmp/mbw.log
Script started, output file is /tmp/mbw.log
# make buildworld
--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
rm -rf /usr/obj/usr/src/i386
SNIP!!SNIP!!
# exit
Script done, output file is /tmp/mbw.log
kernelの再構築
この作業もマルチユーザーモードで実行できます。KERNCONFオプションをつけない場合、GENERICのkernelが作られます。
# cd /usr/src
# make buildkernel KERNCONF=hogehoge
kernelのインストール
シングルユーザーモードで実行します。OSがあがっているときはオプションなしでshutdownするとシングルユーザーモードになります。コンソールで作業をしてください。
# shutdown now
シングルユーザモード
# cd /usr/src
# make installkernel KERNCONF=hogehoge
Userlandのインストール
今インストールしたkernelでシングルモードでOSを立ち上げます。boot -sでシングルユーザモードで起動できます。
# shutdown -r now
####PCの再起動
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 7 seconds... _
####この画面でEnter以外のキーを押すとコマンドプロンプトになるので、
boot -s を押すとシングルユーザモードで起動します。
起動すると、/以外はマウントされていないので、ファイルシステムをマウントします。
# mount -a
installworldを実行します。
# cd /usr/src
# make installworld
mergemasterを実行し、/etcのmerge、/devの再構築などをします。 なお、mergemaster は passwd ファイルや groupファイルなども書き換えるコマンドなので、間違えるとシステムを再起不能に陥れる可能性があります。慣れないときは必ず事前に /etc の下をバックアップしてから実行するようにしましょう。
# mergemaster
再起動します。
# shutdown -r now
これで最新のFreeBSDで起動します。お疲れ様でした。
