FreeBSD で構成したサーバがやたらkernel panic する。
ひとまずkernel をstable にして様子を見ようとしたが、エラーが出るので確認。
kernel ソースツリーを削除後、cvsup で取得する。
ついでにportsツリーも取得するので、30分ほどかかる。
rm -rf /usr/src cvsup -g -L 2 -z /usr/share/examples/cvsup/stable-supfile
cvsup で取得が完了したら、ユーザーランドを生成する。
# cd /usr && chflags -R noschg obj && rm -rf obj # make buildworld
途中、OpenSSL のヘッダファイルが無いと言ってエラーで止まる。
/../contrib/bind9/lib/dns/zt.c /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/openssl_link.c:38:25: openssl/err.h: No such file or directory /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/openssl_link.c:39:26: openssl/rand.h: No such file or directory /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/openssl_link.c:40:28: openssl/crypto.h: No such file or directory /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/openssldh_link.c:40:24: openssl/dh.h: No such file or directory /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/openssldsa_link.c:38:25: openssl/dsa.h: No such file or directory /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/opensslrsa_link.c:39:25: openssl/err.h: No such file or directory /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/opensslrsa_link.c:40:29: openssl/objects.h: No such file or directory /usr/src/lib/bind/dns/../../../contrib/bind9/lib/dns/sec/dst/opensslrsa_link.c:41:25: openssl/rsa.h: No such file or directory mkdep: compile failed *** Error code 1
OpenSSL はports で入れる前提だったので、
/etc/make.conf にNO_OPENSSL=yes をしていた。
このオプションにより、コンパイルに必要なファイル群が作られていないらしい。
オプションを外して再度make buildworld したところ、うまくコンパイルできた。
コンパイルでエラーが出る場合はmake.conf のオプションを要確認。
ユーザーランドの生成が終わったら、kernel の生成とインストールを行う。
# make KERNCONF=GENERIC buildkernel # make KERNCONF=GENERIC installkernel
エラーが無く終われば成功。
シングルユーザーモードで起動して新しいkernel の確認と、ユーザーランドのインストールを行う。
OK boot -s <snip> Enter full pathname of shell or RETURN for [/bin/sh] : <snip> # mount -a # cd /usr/src # make installworld
続けて、/etc の差分更新を行う。
# diff -u /etc/group /usr/src/etc/group # cp -Rp /etc/ etc.bak # mergemaster -s -v # rm -rf /etc.bak # reboot
再起動したら、更新完了です。
コメント