HDD×2への予備起動パーティション作成

ほぼ個人メモ。

SSDのzfsミラーが両方とも壊れたとき(めったにない)用の 起動パーティションをHDDに作っておく。ZFSパーティションは複数の 起動パーティションを作れない(よね?)ので予備起動場所はgmirrorにしておく。 ada2とada3がHDDという想定。

gpart create -s gpt ada2
gpart create -s gpt ada3
gpart add -a4k -s 512k -t freebsd-boot -l bkboot0 ada2
gpart add -a4k -s 512k -t freebsd-boot -l bkboot1 ada3
gpart add -a4k -s 64g -t freebsd-ufs -l bksys0 ada2
gpart add -a4k -s 64g -t freebsd-ufs -l bksys1 ada3
gpart add -a4k -s 8g -t freebsd-swap -l bkswap0 ada2
gpart add -a4k -s 8g -t freebsd-swap -l bkswap1 ada3
gpart add -a4k -t freebsd-zfs -l zhd0 ada2
gpart add -a4k -t freebsd-zfs -l zhd1 ada3
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada2
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada3
gmirror label -b split bkboot ada{2,3}p2
bsdlabel -w mirror/bkboot
bsdlabel -e mirror/bkboot
a:パーティションのオフセットを0にする!
a: 8g 0 4.2BSD
c: * *
e: 8g * 4.2BSD
f: * * 4.2BSD
newfs -J mirror/bkboota
newfs -J mirror/bkboote
newfs -J mirror/bkbootf
mount /dev/mirror/bkboota /mnt
mkdir /mnt/{var,usr}
mount /dev/mirror/bkboote /mnt/var
mount /dev/mirror/bkbootf /mnt/usr
cd /
rsync -axHR / var/* usr/* /mnt
echo geom_mirror_load=YES >> /mnt/boot/loader.conf
vi /mnt/etc/fstab
(先頭に以下の2行を足す)
/dev/mirror/bkboota		/		ufs	rw
/dev/mirror/bkboote		/var		ufs	rw
/dev/mirror/bkbootf		/usr		ufs	rw

こんな感じで予備起動パーティション完成。