2009/11/16(Mon)Debian4にIntel PCI-E GbEを認識させる方法
2009/11/16 23:58
Intelの場合は幸いにもドライバを公開してくれているので楽ではあるが、Windowsの時と比べてダイアログに従ってポンポン行けばよいほど楽ではないので、いろいろ試行錯誤してみて解決策を見出したので、そのメモ。
ダウンロード
今回tryしたマシンはhp compaqのdx7500 SFF PCという、BTO PC。構成表の「インテル(R) WG82567V ギガビット・ネットワーク・コネクション」を頼りにintelを探すと、82567に該当するドライバを発見。
以下からダウンロード。
Network Adapter Driver for PCI-E Gigabit Network Connections under Linux*
インストールしてみる
とりあえずマニュアル通りにやってみる。$ cd $ tar zxvf e1000e-1.0.15.tar.gz $ cd src $ sudo make installすると、カーネルソースがないと怒られる。
ま、そりゃそうか。
Windows慣れしてると「ドライバインストールにカーネルが要る」という発想がイマイチだな…。
kernel準備
自分が使っているのはDebian 4.0/etchのrev6なので、kernel.orgからlinux-2.6.18.6.tar.bz2とかをダウンロードして/usr/src/に解凍。# mv linux-2.6.18.6.tar.bz2 /usr/src # cd /usr/src # tar jxf linux-2.6.18.6.tar.bz2
適宜小細工
カーネルソースのパスを見つけてくれない*2ので、/usr/src/linuxにシンボリックを張るのが楽。# ln -s linux-2.6.18.6 linuxversion.hが無いという問題はREADMEにも書いてあるようにmakeすりゃいいのでする。
# cd /usr/src/linux/ # make include/linux/version.hコンフィグがautoconf.hという名前で無いといけないらしいのでシンボリック。
# ln -s config.h autoconf.hで、これでmakeやったらコンパイラがないと言われたwこれはひどい……
gccインストール
# aptitude install gccネットワークが使えないので、CD-ROMよりaptインストール。
Makefile修正
gccをインストールして再度makeに挑戦するとThis driver is not supported on kernel versions older than 2.4.0カーネルが2.4.0以下だと!?そんなはずはない…。
色々追っていくと、Makefileのカーネルバージョンが入るべきKVERに何も入っていないことが判明したので、代入しても良いかと思ったが、とりあえずunameコマンドを使う事に。
Makefileをいじって177行目あたりのKVERの定義している下に
# get the kernel version - we use this to find the correct install path KVER := $(shell $(CC) $(EXTRA_CFLAGS) -E -dM $(VERSION_FILE) | grep UTS_RELEASE | awk ' print $$3' | sed 's/\"//g') KVER:= $(shell uname -r) # ←これを追加とする
makeエラー
が、まだmakeエラー起こす。どうやら、カーネル側も置いただけじゃだめで適宜コンパイルが居る模様。
# cd /usr/src/linux # make oldconfig && make prepare新機能の部分については、適当にEnter連打でよい。
ちなみに、
WARNING: Symbol version dump /usr/src/linux-2.6.18.6/Module.symvers is missing, module will have dependencies and modversions.は無視で問題なさそう。
またmakeエラー
MODPOST /bin/sh: script/mod/modpost そのようなファイルやディレクトリはありません make[2]: *** [__modpost] Error 127 make[1]: *** [modules] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.18.6' make: *** [default] Error 2というなエラーメッセージで止まった場合、
# cd /usr/src/linux # make modules_prepareで直る。
やっと
これでやっとmakeが通った。いえーい。注意として、一発目でsudo make installやって失敗した場合、makeで生成されたファイルがroot権限で0バイトのまま残ってしまい、ユーザ権限でmakeしても許可がないなどと怒られるので、一度書庫ごと解凍し直したほうが良さそう。
make cleanやるにも、先のMakefile修正の部分までたどり着いていないとcleanできないって怒られるので。
ちなみに、sudo make installしたときの
catmanモードで/var/cache/man/cat7/e1000e.7.gz に書き込みできませんは無視した。
参考文献など
- 本家のREADME
- README
- autoconf.hはconfig.hのシンボリックでおkのソース
- Linux kernel source not configured: missing config.h [Archive] - Ubuntu Forums
- カーネルソースを利用したモジュールの作成方法についての補足
- http://sourceforge.jp/forum/forum.php?forum_id=16160
- modpostで止まった時の対処法
- incentivespro.com:: View topic - modpost missing