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。

もちろん、すべては自己責任で。:-)