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 から導入したカーネルモジュールなどは無くなってしまう。 上述の通り、再インストールしたほうがよいだろう。

[$Revision: 1.6 $ $Date: 2008.05.06 07:23:21 $]
[EOF]