NetBSD 4.0 に - Part 2

仮想スクリーンに移動できるようになったので、次はカーネルコンパイルしようとして GENERIC を MYKERNEL とコピーしてコンパイルするためのスクリプトを作成した。


config MYKERNEL
cd ../compile/ MYKERNEL
make depend &&
make all &&
make install
MYKERNEL を実際に作成するのは、一分一秒でも早くカーネルをロードすること。そのためにカーネルのサイズを削減し不要なデバイスをチェックしないようにする。FreeBSD ではそのあたりわかりやすいように設定されていたような記憶があるのだが、NetBSD はより多くのプラットフォームに対応するためか微妙に異なるような印象を受ける。
他のことをしながら 15 分程度のコンパイル、リンク、インストール。入れ替えてみると Pentium 233MHz のマシンでは、ネットワーク カードを認識しているのに、dhcp サーバから動的に IP アドレスを取得しようとしていながら取得できない。GENERIC カーネルでは問題ないのにおかしい。
たしかに、Pentium 4 2GHz のマシンに装着している NICPentium 233MHz のマシンの NIC とは異なるのだが。改めて、GENERIC カーネルから出力される dmesg を見直すと miiphy インターフェイス名がコメントアウトした部分と異なることに気がついた。相変わらず思い込みで走っている。最終的に次のようになった。

[該当箇所の MYKERNEL]
...
inphy* at mii? phy ? # Intel 82555 PHYs
...
nsphy* at mii? phy ? # NS83840 PHYs
...

[dmesg の内容]
...
fxp0 at pci0 dev 4 function 0: Intel i82557 Ethernet, rev 1
fxp0: interrupting at irq 10
fxp0: May need receiver lock-up workaround
fxp0: Ethernet address 00:XX:XX:XX:XX:XX
nsphy0 at fxp0 phy 1: DP83840 10/100 media interface, rev. 0
nsphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp1 at pci0 dev 5 function 0: i82558 Ethernet, rev 5
fxp1: interrupting at irq 11
fxp1: May need receiver lock-up workaround
fxp1: Ethernet address 00:XX:XX:XX:XX:XX
inphy0 at fxp1 phy 1: i82555 10/100 media interface, rev. 0
inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
...
i82557 と i82558 はまったく同じ fxp デバイスとして認識されるのに、異なる miiphy インターフェイス名を名乗っているだなんて。これにはまいった。まさに「はまった」という感じ。とりあえず、これで動的に IP アドレスを取得できるようになったので、ビルドした netbsdftp コマンドで自動的に get するスクリプトを書いた。

ftp ftp://visor:spring@10.0.1.42/%2f/netbsd
ftp ftp://visor:spring@10.0.1.42/%2f/usr/src/sys/arch/i386/conf/MYKERNEL
mv ./netbsd /
当初 10MB 程度もあった GENERIC カーネルでも、5MB 以下にまでファイルサイズを削減できて、ディスク容量の点でもわずかながら貢献?それにしても、使っていないとよく忘れるものだ。新年早々、これでは今年も先が思いやられる。
なお、オプション設定は次の URL が参考になる。
http://netbsd.gw.com/cgi-bin/man-cgi?options+4+NetBSD-4.0