カーネル再構築とNICドライバ

Intel PRO/1000 MT Server Adapter をなぜか手に入れてしまったので、
使うためのドライバを導入しようと思ったら、カーネルソースコードが必要とか。
とっくに削除しちゃっていたので、探してみると、
1年前から今まで動かしていた2.6.30は脆弱性があったらしく一般公開はされてない。
もういいよ。知らない。


というわけで、新しく入れなおそうと思い立ったわけです。
今回は普通に入れてもつまらないので、RealTime(rt)パッチを適用するところからやってみた。
入れたバージョンは2.6.33.6-rt。
最新安定版は2.6.34.1だが、rtパッチがないようなので。

kernel

作業はNICのドライバの事情により/usr/srcで行った。

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.6.tar.bz2
tar xv linux-2.6.33.6.tar.bz2
wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.33.6-rt26.bz2
bzip2 -d patch-2.6.33.6-rt26.bz2


linux-2.6.33.6へ移動し、rtパッチを当てる

cd linux-2.6.33.6
patch -p1 < ../patch-2.6.33.6-rt26


.configはバックアップを取っていたのでそれを使用。
というのも、必要な設定を忘れているせいか、デフォルトのままで行うと、自分の環境ではカーネルパニックになったから。
コンパイルの時間が30分かからなくておかしいと思ったらこれだよ。
そこで今まで使ってたkernelの.configを使ってみたら回避できた。


.configを作ったら、後はmakeするだけ。
以上。

NICドライバ

まず、MACアドレスを控えておく。MACアドレスは製品のシールの左上に書かれている。
IntelのページにLinux向けのドライバがあるので、入手。多分このへん。
http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=9180&ProdId=879&lang=jpn


解凍して、移動して、make installする。

tar zxf e1000-8.0.19.tar.gz
cd e1000-8.0.19/src
make install


正常に終わると、以下の場所にドライバが追加される。
/lib/modules//kernel/drivers/net/e1000/e1000.[k]o


以下で古いモジュールと新しいモジュールを切り替える(IntelのReadMe.txtより)。

rmmod e1000; modprobe e1000


make installでエラーが出る人は、カーネルのソースがない人。
導入されたものと同じソースコードが必要で、かつ、1度コンパイルを行っているものが必要らしい。
ネットで調べると、make include/linux/version.hすればいいらしいけど、
上の流れから僕は既に1度構築したものを持っているので、これをしなくてもできた。


次に、NICを切り替える。
今はオンボードにつないでいるので、そこから新しいNICを使ってもらうようにする。
MACアドレスを書き換えるだけでよい。
以下のファイルを変更する。
/etc/sysconfig/network-scripts/ifcfg-eth0
このファイルは大体こんな感じに書かれている。

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.11.255
HWADDR=00:19:21:XX:XX:XX
IPADDR=192.168.11.xxx
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.11.0
ONBOOT=yes

NICを入れ替えるだけなら、HWADDRの行をそっくり新しいNICMACアドレスに書き換えるだけ。
最後に再読み込みをして起動させて終了。

ifdown eth0; ifup eth0;

必ず2つのコマンドを1行で撃つ事。
遠隔の場合、ifdownされるとネットに繋げなくなるため遠隔操作できなくなる。
複数ある場合、eth0が優先されるっぽいが、よくわからない。


後はオンボードのLANを無効にしたりして自己満足する。
以上。