kernel の再構築、world の再構築
ハンドブックに丁寧に書いてあるので、読め。 目次をざーっと見て行くと、割と後半の方にあるはずだ。
ソースの最新化
ソースを最新化するには cvsup を使う。 cvsup はベースシステムには含まれていないが、 6.2-RELEASE あたりから csup が入っているので、どちらかを使えばよい。 ports の更新と同様に supfile を用意して、 /etc/make.conf に設定を行った上で処理するのが楽である。
SUP_UPDATE=yes SUPFILE=/usr/local/etc/supfile-src
…のように make.conf が書かれていると仮定すると、 オペレーションは以下のようになる。
cd /usr/src make update
make.conf で SUP_UPDATE が yes の場合、 PORTSSUPFILE が定義されていると SUPFILE が定義されていなくても それに基づいて cvsup が始まってしまうので注意が必要である。
kernel の再構築
world はそのままにしておいて kernel だけを再構築する、ということが可能である。 というかこちらのほうがより頻繁に行うのではないか? やり方は2種類あるが、どちらのやり方でも構わない。
■"Traditional" way cd /usr/src/sys/i386/conf cp GENERIC CUSTOM vi CUSTOM /usr/sbin/config CUSTOM cd ../../compile/CUSTOM make depend make make install ■"New" way cd /usr/src/sys/i386/conf cp GENERIC CUSTOM vi CUSTOM cd /usr/src make buildkernel KERNCONF=CUSTOM make installkernel KERNCONF=CUSTOM
kernel を再構築した場合、ports から導入したカーネルモジュールなどが (old の方に移動してしまうことにより)無くなってしまう。 ports から導入されるカーネルモジュールには、例えば kqemu-kmod などがある。 こういう特殊なカーネルモジュールについては、安全のため再度インストールしたほうが よいだろう。
cd /usr/ports/emulators/kqemu-kmod make clean make -DFORCE_PKG_REGISTER install clean
world の再構築
world を再構築する際には、カーネルも作り直しておいた方がよい。 放っておくと「新しい world」上で「古い kernel」が動くようになってしまう。
以下に、冗長ではあるが、手順を書いておく。
cd /usr/src/usr.sbin/mergemaster/ ./mergemater.sh -p /etc/make.conf をチェック。変なのは外す。 cd /usr/obj && rm -rf usr cd /usr/src make buildworld make buildkernel KERNCONF=XX_XXX make installkernel KERNCONF=XX_XXX shutdown now cd /usr/src make installworld shutdown -r now mergemaster shutdown -r now make delete-old make delete-old-libs shutdown -r now
world を再構築した場合も、上記手順どおりであれば ports から導入したカーネルモジュールなどは無くなってしまう。 上述の通り、再インストールしたほうがよいだろう。