FreeBSD 9.0 がリリースされた(FreeBSD 9.0-RELEASE アナウンス)ので、うちの環境も9.0に上げてみることにする。
早速、supfile の tag を RELENG_8 から RELENG_9 に変更して csup する。csupの間にリリースノートを読んだりしてたんだけど、9.0Rをソースから入れる場合のタグは RELENG_9_0 とか、svn の場合は releng/9.0 ブランチだとか書いてある。
あれ? RELENG_9 と RELENG_9_0 の違いってなんだっけ?と調べたところ、RELENG_9 は 9-STABLE ブランチで、RELENG_9_0 は 9.0-RELEASE のスナップショットらしい。
そして、2008年から開発はCVSからsvnに移っていることもわかったが、公式サイトではsvnwebと言うwebインターフェイス([base] Index of /)のURLしか見つけることができなかった。これだと、subversionクライアントから取得することができない。
ちょっとぐぐったら、FreeBSDのソースコードを Subversionリポジトリから取得する - Life is very shortと言うページを見つけたので、svn://svn.freebsd.org/base/ だと言うことがわかった。9-STABLE なら、svn://svn.freebsd.org/base/stable/9 なのだろう。(releng/9 じゃないので、CVSのタグポリシーと違うみたいだけど、こっちの方がわかりやすいと思う)
どっちが早いかとか調べるのも面倒だったので、当面はCVSup(csup)を使い続けることにする。
さて、Upgradeを開始する前に読むべきはFreeBSD 9.0-RELEASE Release Notesの3 Upgrading from previous releases of FreeBSD
つらつらと眺めると、以下のような変更があるらしい。
と、言うことで、いつものようにbuildworld & buildkernel。
いつもなら、ここでそのまま installkernel, installworld, reboot, mergemaster なんだけど、流石にメジャーバージョンアップなので、world の再構築の手順に従って真面目にやることにする。(結果的に、このおかげで助かった)
はじめて make world したころとは、ドキュメントの中身がだいぶ変わっていて、すごく詳細に書いてあるので、最近読んでないな〜という人は一読をおすすめする。
と、言うわけで installkernel したところで一度reboot、起動メニューで4番の Single user mode を選ぶ。
と、あっと言う間に kernel panic。ほっておくと15秒で再起動、キーを押すと再起動のカウントダウンを止められるけど、コンソールに出ているメッセージは更に数行流れてしまうため、エラーの原因が良くわからない。
カーネルが起動すれば dmesg とか messages とかログの調べようがあるのだけれど、boot時のpanicだとどうやってログを取得すれば良いのかわからない。
fixitフロッピーとか作ってないし、そもそもFDドライブないし、8のCDもどこにあるかわからないし、どうやって復旧したもんかな〜と悩んだ結果、別のメディアから起動しなくても、一個前のカーネルくらい残ってるんじゃね?と思いつく。
そこで、起動メニューから6番を選んでプロンプトに降りて、
これで、何か調べて installkernelしてしまうと、kernel.old は起動できない 9-STABLE になってしまうので、まずは保全を考える。
/boot/kernel.old を /boot/kernel.8 にコピー(tar使いました)して再起動して、
ついでに、/boot/loader.conf に
保全ができたので、panicの原因を追求する。
しかし、起動時のログが取れないので、iPhoneのカメラで動画を撮影して、手でコピーしてみた。
ちなみに、8.2だと以下のような感じ。
もうちょっと情報を集めないと、9.0にできないかなあ。
早速、supfile の tag を RELENG_8 から RELENG_9 に変更して csup する。csupの間にリリースノートを読んだりしてたんだけど、9.0Rをソースから入れる場合のタグは RELENG_9_0 とか、svn の場合は releng/9.0 ブランチだとか書いてある。
あれ? RELENG_9 と RELENG_9_0 の違いってなんだっけ?と調べたところ、RELENG_9 は 9-STABLE ブランチで、RELENG_9_0 は 9.0-RELEASE のスナップショットらしい。
そして、2008年から開発はCVSからsvnに移っていることもわかったが、公式サイトではsvnwebと言うwebインターフェイス([base] Index of /)のURLしか見つけることができなかった。これだと、subversionクライアントから取得することができない。
ちょっとぐぐったら、FreeBSDのソースコードを Subversionリポジトリから取得する - Life is very shortと言うページを見つけたので、svn://svn.freebsd.org/base/ だと言うことがわかった。9-STABLE なら、svn://svn.freebsd.org/base/stable/9 なのだろう。(releng/9 じゃないので、CVSのタグポリシーと違うみたいだけど、こっちの方がわかりやすいと思う)
どっちが早いかとか調べるのも面倒だったので、当面はCVSup(csup)を使い続けることにする。
さて、Upgradeを開始する前に読むべきはFreeBSD 9.0-RELEASE Release Notesの3 Upgrading from previous releases of FreeBSD
つらつらと眺めると、以下のような変更があるらしい。
- インストーラやportsで使われる dialog ライブラリが新しくなりました。
- パーティションメタデータの整合性チェックがデフォルトで有効になりました。
- ATA/SATAがcamベースになり、デバイスファイル名が /dev/ad0 等から /dev/ata0 等に変更になりました。互換性のために、/dev/ada0から/dev/ad0へのシンボリックリンクが提供されます。
- /etc/rc.conf でのネットワークの設定が変更になりました。IPアドレスの前にアドレスファミリの指定が必須になりました。ipv6_enableはdeprecatedになり、デフォルトで有効になりました。
- resolv.conf を設定するためのresolvconfユーティリティが追加されました。
- disk partision 関連のユーティリティ(fdisk, disklabel, bsdlabel)は将来的にサポートされなくなり、gpartの使用が推奨されます
と、言うことで、いつものようにbuildworld & buildkernel。
いつもなら、ここでそのまま installkernel, installworld, reboot, mergemaster なんだけど、流石にメジャーバージョンアップなので、world の再構築の手順に従って真面目にやることにする。(結果的に、このおかげで助かった)
はじめて make world したころとは、ドキュメントの中身がだいぶ変わっていて、すごく詳細に書いてあるので、最近読んでないな〜という人は一読をおすすめする。
と、言うわけで installkernel したところで一度reboot、起動メニューで4番の Single user mode を選ぶ。
と、あっと言う間に kernel panic。ほっておくと15秒で再起動、キーを押すと再起動のカウントダウンを止められるけど、コンソールに出ているメッセージは更に数行流れてしまうため、エラーの原因が良くわからない。
カーネルが起動すれば dmesg とか messages とかログの調べようがあるのだけれど、boot時のpanicだとどうやってログを取得すれば良いのかわからない。
fixitフロッピーとか作ってないし、そもそもFDドライブないし、8のCDもどこにあるかわからないし、どうやって復旧したもんかな〜と悩んだ結果、別のメディアから起動しなくても、一個前のカーネルくらい残ってるんじゃね?と思いつく。
そこで、起動メニューから6番を選んでプロンプトに降りて、
boot kernel.oldと入力してみたら、無事に8.2-STABLEで起動した。
これで、何か調べて installkernelしてしまうと、kernel.old は起動できない 9-STABLE になってしまうので、まずは保全を考える。
/boot/kernel.old を /boot/kernel.8 にコピー(tar使いました)して再起動して、
boot kernel.8としてみたところ、ちゃんと起動できたので、このディレクトリを取っておけば大丈夫だろう。
ついでに、/boot/loader.conf に
kernel="kernel.8"とか書けば、こっちがデフォルトになるんじゃないかと思うけど、そんな頻繁に再起動するものでもないからこのままにする。
保全ができたので、panicの原因を追求する。
しかし、起動時のログが取れないので、iPhoneのカメラで動画を撮影して、手でコピーしてみた。
(前略) agp1: <Intel 82855GME (855GME GMCH) SVGA controller> on vgapci0 panic: make_dev_credv: bad si_name (error=17, si_name=agpgart) cpuid = 0 KDB: stack backtrace: #0 0xc0a9a3d7 at kdb_backtrace+0x47 #1 0xc0a66679 at panic+0x119 #2 0xc0a1cf1e at make_dev_credv+0x9e #3 0xc0a1d15a at make_dev+0x4a #4 0xc05510ee at agp_generic_attach+0x12e #5 0xc0d7d288 at agp_i810_attach+0xb8 #6 0xc0a93d77 at device_attach+0x387 (後略)agpのドライバ周りでpanicしてる?ぐぐると、"panic: make_dev_credv: bad si_name" で結構ひっかかるんだけど、どうも関係ないっぽい。
ちなみに、8.2だと以下のような感じ。
agp1: <Intel 82855GME (855GME GMCH) SVGA controller> on vgapci0 agp1: aperture size is 128M, detected 32636k stolen memory vgapci1: <VGA-compatible display> at device 2.1 on pci0
もうちょっと情報を集めないと、9.0にできないかなあ。
カテゴリ
FreeBSDトラックバック(0)
このブログ記事を参照しているブログ一覧: FreeBSD 9.0 アップグレード失敗
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/2837
コメントする