Linuxの追加ドライバディスク作成
元COMPAQ、現HPのサーバマシン HP ProLiant DL360G4にLinuxをinstallする
ことになった。
まずは、RedHat9でトライ。さすが元COMPAQ!
SCSI-RAIDを自動認識しないのはいいけど、ドライバがバイナリしかないよ...orz
通常は、ソースで提供されたドライバをmakeしてinstallしたいkernelにあわせるのだが、それができな
い。
そうすると、HPが公認するLinuxディストリビューションでしか使えない。
RedHat9は当然ない。そのかわりRedHat Enterprise3が対応しているけど、10万円くらいするのでいま
さら買えないよ...orz
似たものということで、非商用版のWhiteBox Enterpriseを使うことに。
* 公式サイト http://whiteboxlinux.org/ * News & Forums サイト http://whiteboxlinux.net/
しかし、話はそれで終わらない。WhiteBoxとEnterpriseのkernelでは微妙に
バージョンがずれている。
HPのサイトからドライバをダウンロードし、WhiteBox Linuxをinstall時に追加ドライバディスクとして
使用しても、裏で「file not found.」として失敗する。
めんどいけど、追加ディスクを自分で修正することにした。
まずは、HPからダウンロードしたFDDイメージファイルから、ドライバの詰まったmodules.cgzを取り出>す。
% gunzip cpq_cciss-2.4.50-30.rhel3.i386.dd.gz % mkdir BOOT_FDD % su # mount -o loop cpq_cciss-2.4.50-30.rhel3.i386.dd BOOT_FDD # exit % ls BOOT_FDD ./ ../ modinfo* modules.cgz* modules.dep* pcitable* rhdd-6.1* % mkdir BOOT_IMG; cd BOOT_IMG % gzip -dc ../BOOT_FDD/modules.cgz | cpio -id
そしたら、一番似てそうなバージョンのドライバ(cciss.o)をinstallするkernelのバージョンに合わせ>てコピーする。
% mkdir 2.4.21-4.EL 2.4.21-4.ELBOOT 2.4.21-4.ELsmp % cp 2.4.21-9.EL/cciss.o 2.4.21-4.EL % cp 2.4.21-9.ELBOOT/cciss.o 2.4.21-4.ELBOOT % cp 2.4.21-9.ELsmp/cciss.o 2.4.21-4.ELsmp
まだ、cciss.o内のkernelバージョン情報が違う。
viで無理やり変更する。
% vi 2.4.21-4*/cciss.o .... 2.4.21-9 -> 2.4.21-4というように変更
viで編集すると、最後に改行が追加されるため、ファイルが1byte拡張するのはご愛嬌。
修正したドライバでもって、新しいmodules.cgzを作成。
% find -name "*.o" -type f | cpio -oH crc | gzip -9 > modules.cgz
出来上がったmodules.cgzを追加ドライバディスク(FDD)に上書きすればOK。
もちろん、すべては自己責任で。:-)