先日からDELL PowerEdge R420にDebian 6.0.6(Squeeze)をインストールてたのですがNICが認識されずに苦労しました。
R420に搭載されているNICはBroadcomのギガビットイーサで
NetXtreme BCM5720 Gigabit Ethernet PCIe (VenderID;DeviceID 14e4:165f)
というのを使っているようなのですが探してもドライバのバイナリが無さそうなのでコンパイルしました。
しかし、何度作っても「Invalid module format」見たいなエラーが出てinsmodもmodprobeも出来ません。
modules.symvers is missing みたいな警告を吐いてたりしてたのでそこら辺があやしいと思い色々試してやっと動くモジュールが作れました。
以下が大まかな作り方になります。
まずlinux-3.122n.zipダウンロードページからlinux-3.122n.zipをダウンロードしてServer/Linux/Driver/tg3-3.122n.tar.gzを取り出して/usr/srcに展開しておきます。
そのあとは
apt-get install linux-image-2.6.32-5-486 apt-get install linux-source-2.6.32 apt-get install linux-headers-2.6.32-5-common apt-get install linux-headers-2.6.32-5-486 apt-get install linux-headers-2.6.32-5-686
とパッケージを入れて
cd /usr/src bzip2 -d linux-source-2.6.32.tar.bz2 tar xvf linux-source-2.6.32.tar ln -s linux-source-2.6.32 linux cd linux make clean #(2回目のみ必要) make oldconfig make prepare make modules_prepare make modules #(1回目のみでOKのはず) cd /usr/src/tg3-3.122n/ make clean #(2回目のみ必要) make mkdir /media/usr0/tg3-486/ #(または686) cp tg3.ko /media/usb0/tg3-486/ #(または686) make install #(686カーネル起動時のみ) modprobe tg3 #(686カーネル起動時のみ)
という感じでコンパイルすると出来ました。
make modulesはCPUにもよりますが30分以上掛かります。
試しに1度目しかコンパイルしなくても486版と686版のモジュールが作れました。
それぞれ486と686のカーネルで起動して作り直してUSBメモリに保存しておきます。
Debianはインストール中は486のカーネルで動作し、インストール後はほぼ686のカーネルで動きます。
インストール時にCD-1を使っている場合で「標準パッケージ」しか選ばない時は686版だけで何とかなります。
●インストール中にBCM5720を認識させる方法
インストールで「ネットワークアダプタの検出」で一番下の「該当なし」を選ぶと
リムーバブルディスクを探しますか?と聞かれるので「はい」を選択し「見つかりませんでした。」を表示中に
ALT+F2を押してENTERを押すとプロンプトが出るので
cd /media/tg3-486
insmod tg3.ko
cd /
とやってからALT+F1を押してインストール画面に戻って「戻る」を選んで再び「ネットワークアダプタの検出」を選ぶとNICが見つかります。
●インストール後に認識させる方法
mkdir /media/usb0 mount -t vfat /dev/sdb1 /media/usb0 cp /media/usb0/tg3-686/tg3.ko /lib/modules/2.6.32-5-686/kernel/drivers/net/ umount /media/usb0 depmod -a modprobe tg3 udevadm trigger #(インストール時にモジュールを認識させなかった場合のみ必要)
とやってから/etc/network/interfacesの編集をして/etc/init.d/networking restartをすればOKのはずです。
下記がモジュールのバイナリです
tg3.ko(kernel-2.6.32-5-486版)
tg3.ko(kernel-2.6.32-5-686版)
tg3.ko(kernel-2.6.32-5-686-bigmem版)
※必要だったので686-bigmem版を追加しました
ご教示ありがとうございます。
実は僕も最近同じ問題で困っています。こちらはamd64版のsqueezeをdellのR420にインストールしましたが、やはりbroadcomのBCM5720が認識されませんでした。ご教示の手順でもamd64に使えるモジュールを作ることができるのでしょうか。
ご教示いただけたら助かります。
どうぞよろしくお願いいたします。
返事が遅くなって済みません。
amd64でインストールしているのであればそのCDから
gcc
make
kernel-image
linux-source
linux-headers
をインストールしてそのカーネルイメージで起動してからコンパイルすればamd64用のモジュールが作れるはずです。
netinstじゃないディスクでインストールすれば1枚目だけでコンパイル環境は構築できます。