ベースシステムの再構築について
最近では freebsd-update(8) が登場したりと、あまり出番がなくなった buildworld ですが、バイナリパッチということで、システムに適合出来ない場合があると思います。
そういった時の為に buildworld の方法を覚えておきましょう。
クリーンアップ
以前に buildkernel や buildworld した事がある場合、下記のようにして /usr/obj 以下を削除してください。
初めて挑戦される方は必要ありません。
# chflags -R noschg /usr/obj/*
# rm -rf /usr/obj/*
ソースツリーの更新
SA ( Security Advisory ) が出ている場合は下記ページを参考に、ソースツリーの更新を行ってください。
- ソースツリーの更新
ログディレクトリの作成
worldのログ出力先ディレクトリを作成します。
# mkdir /var/log/world
# chmod 700 /var/log/world
ベースシステムの再構築
データセンターにサーバを設置している場合は、シングルユーザーモードでの buildworld が出来ません。(シリアルコンソールからログイン出来る場合はその限りではありません。)
よくある例として実家にサーバを置いて、遠隔保守をしている方などはもっぱらこの方法になると思います。
以下の例ではnohupから起動し、バックグラウンドで実行しているので、ログアウト後もmake worldが継続されるようになっています。
ログを閲覧したい場合はtailコマンドで確認出来ます。
csh系シェルでmake world
# cd /usr/src
# nohup /usr/bin/time -l make -j4 buildworld buildkernel >&! /var/log/build.log &
# nohup /usr/bin/time -l make installkernel >&! /var/log/installkernel.log &
# mergemaster -siva
# nohup /usr/bin/time -l make installworld >&! /var/log/installworld.log &
# mergemaster -sivr
sh系シェルでmake world
# cd /usr/src
# nohup /usr/bin/time -l make -j4 buildworld buildkernel > /var/log/build.log 2>&1 &
# nohup /usr/bin/time -l make installkernel > /var/log/installkernel.log 2>&1 &
# mergemaster -siva
# nohup /usr/bin/time -l make installworld > /var/log/installworld.log 2>&1 &
# mergemaster -sivr
古いファイルの削除
# make check-old
# make delete-old
再起動
# shutdown -r now
# uname -a
# head -n 1 /var/log/world/buildworld.log && tail -n 1 /var/log/world/buildworld.log
参考リンク
buildworldのログをのこしてみる ( nohup と time と date) - 天下泰平 The Whole World is peaceful.