昨日の続き。 FreeBSD 4.6.2-RELEASE をインストールしようとしたら、 内蔵 ATA ドライブのプローブでインストーラ用カーネルがハングアップしてしまう、 SiS 651 ベースの Pentium 4 マシンへのインストールに挑戦。
まずは、一昨日の直感をベースに、 FreeBSD 4.6.2-RELEASE が動作しているマシンで、 次のパッチ(ダウンロードはこちら)を、 src/sys/dev/ata/ata-dma.c に当てます。
--- ata-dma.c.orig Fri Apr 19 04:14:04 2002 +++ ata-dma.c Wed Oct 9 07:22:06 2002 @@ -502,6 +502,7 @@ ata_find_dev(parent, 0x06401039, 0) || /* SiS 640 */ ata_find_dev(parent, 0x06451039, 0) || /* SiS 645 */ ata_find_dev(parent, 0x06501039, 0) || /* SiS 650 */ + ata_find_dev(parent, 0x06511039, 0) || /* SiS 651 */ ata_find_dev(parent, 0x07301039, 0) || /* SiS 730 */ ata_find_dev(parent, 0x07331039, 0) || /* SiS 733 */ ata_find_dev(parent, 0x07351039, 0) || /* SiS 735 */
で、このソースを使ってインストーラフロッピーを make します (インストーラのコンパイルは面倒なので、 コンパイル済みのバイナリも用意しました。 boot.flp、 kern.flp、 mfsroot.flp。 fetch や wget の類か右クリックで保存してね)。
てなことで、 さっき買ってきたキティのフロッピーに kern.flp と mfsroot.flp を、 dd で書き込みます。 ラベルで区別できて便利だな (^^;。
うむ、一昨日と異なり、 無事にインストーラが起動したぞ! やった。
てなわけで、DVD を突っ込み忘れたので、 再度『改訂版 FreeBSD 徹底入門』の限定付録 DVD を DVD-ROM に突っ込み、 BIOS から CD-ROM ブートを禁止して再度インストーラをフロッピーから起動。
うん、FDISK も問題なくできるね。 ちゃんとディスクは認識できているらしい。
disklabel はほとんど AUTO。 Softupdates 問題の件は修正済みの sysinstall を使っているため、 特に問題はなし。
CD-ROM の選択画面では 2 つのドライブが表示されました。 acd0c を選択。
無事にインストール開始。
ports の展開も 800KB/s 〜 1000KB/s 程度で進むのは、 いくら最近の ports は展開スピードが速い構成になっているとは言え、 すごいなぁ。
で、インストールが終わったら、再起動する前にやることがあります。 ここで再起動してしまうと、 またしても SiS 561 の ATA プローブでハングしてしまうため、 パッチを当てたカーネルをコンパイル & インストールしなければなりません。 ということで、 まず Alt-F4 でホログラフィックシェルに移動し、 vi で /usr/src/sys/dev/ata/ata-dma.c を編集しましょう (慣れた csh を使ってます)。
kitamori# cd /usr/src/sys/dev/ata kitamori# cp -p ata-dma.c{,.orig} kitamori# vi ata-dma.c
で、先ほどと同様のパッチを手で当てます (たった 1 行だから、別にネットワークを使ってまで入れなくてもいいや)。
で、カーネルを make します。
kitamori# cd /usr/src/sys kitamori# make buildkernel kitamori# make installkernel
うーん、気持よく速い!
というわけで、ここまで来たら Alt-F1 でインストーラに戻り、 メインメニューからインストーラを終了して再起動!
dmesg の結果はこんな感じ。 をを、「CPU: Pentium 4 (2539.10-MHz 686-class CPU)」! 問題の ATA の検出も、 「ad0: 117800MB <IC35L120AVVA07-0> [239340/16/63] at ata0-master UDMA100」と、無事に検出されています。 というわけで、make buildworld やってみよう。
kitamori# /usr/bin/time make buildworld ...(略)... ===> etc/sendmail rm -f freebsd.cf (cd /usr/src/etc/sendmail && m4 -D_CF_DIR_=/usr/src/etc/sendmail/../.. /contrib/sendmail/cf/ /usr/src/etc/sendmail/../../contrib/sendmail/cf/m4/cf.m4 freebsd.mc) > freebsd.cf chmod 444 freebsd.cf 1268.86 real 903.02 user 288.42 sys kitamori#
うわっ! たったの 21 分かよ! ……結構強烈かも。 さすが Pentium 4 2.53GHz。