ZFS on Root な FreeBSD を 8.2 から 9.0 にアップグレードしたら起動しなくなった (解決)
FreeBSD-8.2 をメインマシンとして利用している.なんだか楽しそうだったので ZFS on Root の環境を構築したのだが,9.0 ヘアップグレードするときにきっとハマるだろうと思うので,別環境でアップグレード試験をしてみた.(これまで何度となくいきなり本番アップグレードをしてうまく起動できなくて焦った経験があるので)
PC-BSD 8.2 を使って FreeBSD-8.2 をインストールして,そこからアップグレードを試したのだが,案の定,zpool や zfs のアップグレードをしたあと起動できなくなってしまった.FreeBSD-9.0R の USB 起動メモリを使って試行錯誤を繰り返した.
結論としては,PC-BSD 8.2 のインストーラが確保する freebsd-boot パーティションの領域が小さ過ぎて,9.0 用の /boot/gptzfsboot が書き込めないようだ.下記のように freebsd-boot のサイズを128セクタに広げてから bootcode を書き込んでやると無事に成功.(もともとは freebsd-boot が 64セクタになっていたと思う).
# gpart resize -i 1 -s 128 ada0 $ gpart show ada0 => 34 117210173 ada0 GPT (55G) 34 128 1 freebsd-boot (64k) 162 1854 - free - (927k) 2016 117198848 2 freebsd-zfs (55G) 117200864 9343 - free - (4.6M) # gpart bootcode -p /boot/gptzfsboot -i 1 ada0
ただ,これは自分の本番環境とは違う構成になってしまっているので,まだ本番環境でアップグレードをして大丈夫という自信がない.本番環境は ZFS on Root なのに何故か下記のような表示になる・・・(謎)
% gpart show => 63 500118129 ad0 MBR (238G) 63 1985 - free - (993K) 2048 24576000 1 !45 (12G) 24578048 614400 2 !45 (300M) 25192448 104856688 3 !45 (50G) 130049136 370069056 4 freebsd [active] (176G) => 0 370069056 ad0s4 BSD (176G) 0 370057216 1 freebsd-ufs (176G) 370057216 11840 - free - (5.8M)