2012年1月アーカイブ

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
つらつらと眺めると、以下のような変更があるらしい。
  1. インストーラやportsで使われる dialog ライブラリが新しくなりました。
  2. パーティションメタデータの整合性チェックがデフォルトで有効になりました。
  3. ATA/SATAがcamベースになり、デバイスファイル名が /dev/ad0 等から /dev/ata0 等に変更になりました。互換性のために、/dev/ada0から/dev/ad0へのシンボリックリンクが提供されます。
  4. /etc/rc.conf でのネットワークの設定が変更になりました。IPアドレスの前にアドレスファミリの指定が必須になりました。ipv6_enableはdeprecatedになり、デフォルトで有効になりました。
  5. resolv.conf を設定するためのresolvconfユーティリティが追加されました。
  6. disk partision 関連のユーティリティ(fdisk, disklabel, bsdlabel)は将来的にサポートされなくなり、gpartの使用が推奨されます
大きいのはad?のデバイスファイル名の変更かなと思ったけど、リンクが張られるなら問題ないはず。
と、言うことで、いつものように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にできないかなあ。
2012年1月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

このアーカイブについて

このページには、2012年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年12月です。

次のアーカイブは2012年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1