もちろん「チェンジ!!」と読むこと(何。
今までに何度かネタにした通り、さくらのVPS 1.5G で ZFS boot な FreeBSD 8.2-R を愛用していたのですが、そのさくらの VPS が 1.5G プランを廃止、そして 2G プランが 1.5G プランより安くなる、でも 1.5G プランから 2G プランへのアップグレードはなし、という感じにリニューアルされたので、 2G プランで ZFS boot な FreeBSD 9-R に移行することにしたのです。
FreeBSD 8.2-R から 9.0-R にするだけなので、前回やったよーにやるだけ、と思ってデフォルト状態から swap 潰して FreeBSD/amd64 9-R な mfsroot を入れてそこから起動、としたら、何故か ada0 を見つけてくれずにインストールできない謎の現象が発生…。
試しにさくらの VPS 純正の FreeBSD 8.2-R を入れるとちゃんと ad0 を見つけてそこに入るし、そこから 9-R へのアップグレードも問題なし。じゃあ 9-R がイカンのか、とデフォルト状態から swap 潰して FreeBSD/amd64 8.3-R や 8.2-R を入れたのだけど、そうするとやっぱり ad0 が見つからない…。これは困ったと思いながらぐぐってみるとだ
さくらのVPSの新プラン試してみたらVirtIOになっててOpenBSDがインストールできなくて移行できない
— uenoBさん (@uenoB) 3月 29, 2012
カスタムOSでFreeBSDを選択すればストレージも完全仮想化になるっぽい — uenoBさん (@uenoB) 3月 29, 2012
こ!れ!か! ということで、このツイートに準じて再度デフォルト状態から swap 潰して FreeBSD/amd64 9-R な mfsroot を入れて、一度カスタム OS インストールから FreeBSD を選択してから mfsroot から起動としてみたら、今度は無事に ada0 を見つけてくれたのでした。
動いてくれたのは嬉しいのだけど、 VirtIO という単語を知らなかったので調べてみたら仮想環境下で効率よくハードウェアを使う仕組み? みたいですね。さくらの VPS(v3) からこれが使われるようになったので、 VirtIO に対応していない FreeBSD では ada0 が見つけられず、カスタム OS インストールから FreeBSD を選ぶと VirtIO が殺されて完全仮想化されるので ad0 が見つかるという仕組み。うん、これなら納得。
で、 FreeBSD では ports になってるということなので、これ入れたインストールイメージ作れば ada0 が見つかるんじゃね? と思い立って作ってみたらカスタム OS インストールでの FreeBSD の選択をしなくても ada0 が見つかるようになったのです。そのままインストールを行いこれにて一件落着と思って再起動したらやっぱり起動しない。なんで、どうして!? と思ったら /boot/loader.conf を以下のように書いていたのでした…
zfs_load="YES"
virtio_load="YES"
virtio_pci_load="YES"
virtio_blk_load="YES"
if_vtnet_load="YES"
virtio_balloon_load="YES"
virtio 読み込む前に zfs をロードしてそこから起動しようとするので virtio 上の ada0 を見つけられないという…。ダサい。正しくはこうですね。
virtio_load="YES"
virtio_pci_load="YES"
virtio_blk_load="YES"
if_vtnet_load="YES"
virtio_balloon_load="YES"
zfs_load="YES"
あとは 6rd な IPv6 を有効にするだけ、なんだけど FreeBSD 9-R でも 6rd はマージされていない様子。でもダメ元でパッチを当ててみたら当たったので 8.2-R と同じ手順で設定、したんだけど書式その他が変わったみたい。
FreeBSD 8.2-R はこうだったんだけど
# vi /etc/rc.conf (以下を追加) ipv6_enable="YES" cloned_interfaces="stf0" ipv6_ifconfig_stf0="2001:e41:3b6a:457d::1/32" ipv6_defaultrouter="2001:e41:3dd3:e07d::1"
FreeBSD 9.0-R はこうみたい。
# vi /etc/rc.conf (以下を追加) ipv6_activate_all_interfaces="YES" cloned_interfaces="stf0" ifconfig_stf0_ipv6="inet6 2001:e41:3b6a:457d::1 prefixlen 32 alias" ipv6_defaultrouter="2001:e41:3dd3:e07d::1"
というあたりでなんとか移行できました。
FreeBSD 9-R にしたので zfs が v28 になったのが一番のポイントですかね。いや 8.2-R でも v28 使ってたんだけど、公式対応になったからバージョンアップが気軽に出来るようになった、という話なのだけど。
「真さくらのVPS(v3)でFreeBSD」への1件の返信
げげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげげ