FreeBSD7を make installworld とかする前に、gmirrorでミラーを作っていますから、これをソフトウェア的に切り離す事にしました。アップグレードに失敗したら元に戻せるようにするためです。
# gmirror remove gm0 ad4
/dev/ad0 と /dev/ad4 で RAID1 を構成していましたから、この操作で /dev/ad0 のみを使用したディスクアレイ(?)になりました。で、正常に再起動できることを確認してから installworld や installkernel、mergemaster なんかを行ったのですが、その後再起動してみると
pid 637 (named), uid 0: exited on signal 12 (core dumped)
と表示されて named が止まっちゃうのです。で、named.confを一生懸命眺めていたのですが、なんか妙なことに気付きました。
# uname -v
FreeBSD 6.3-RC2 #1: Sat Dec 22 23:42:15 JST 2007 root@XXXXX.jp:/usr/obj/usr/src/sys/GENERIC
あり? FreeBSD7を入れたはずなのに、6.3が動いてますな(笑)。
今回のオチは「ミラーを解除したものの、ブート時のカーネル読み出しは解除した方のドライブが使われていた」というものでした。カーネルは6.3RC2が読み出され、カーネル読み込みによりgmirrorが有効になるのでその後はgmirror側の7.0RC1がマウントされていたと。一度起動テストしたときはどっちも同じ版だったので問題が顕在化しなかったのです(苦笑)。
ちなみに、リモートからカーネル読み込みドライブを指定する方法がわからなかったので、
# mount /dev/ad4s1a /mntとして6.3RC2のドライブに7.0RC1のカーネルを入れちゃって対処しました。 (本日の教訓) gmirrorをバックアップ用途に使用する場合はデバイスを物理的に切り離そう
# cd /usr/src
# make installkernel DESTDIR=/mnt/