目次
カーネルアップデート後の RocketRAID 1740 ドライバ リビルドメモ
RocketRAID 1700 Family Series の Downloadより Open Source driver v2.4 をダウンロードして解凍する。
インストール用のシェルスクリプト修正
注意: 以下は Open Source driver v2.2-090407-1348 に関する情報です。
インストール用のシェルスクリプトは、RocketRAID 1740, 2310 兼用のものとして作成されているようであるが、修正漏れが存在している。
これを修正せずに make install を行うと、initrd に sata_mv が含まれてしまうため、新しいカーネルでブートすると sata_mv がロードされてしまい、RAID Array が認識できないというトラブルに見舞われる。
RocketRAID 1740 上に Linux をインストールしている場合は、起動の途中で RAID Array を認識できないため、結果としてブートできない状況となる。
インストール用のシェルスクリプトの以下の部分を修正する。(34行目と同じになるように修正)
rr174x-linux-src-v2.2/osm/linux/install.sh:
[修正前]
54: if [ "${TARGETNAME}" = "hptmv" -o "${TARGETNAME}" = "hptmv6" ] ; then
[修正後]
54: if [ "${TARGETNAME}" = "hptmv" -o "${TARGETNAME}" = "hptmv6" -o "${TARGETNAME}" = "rr174x" -o "${TARGETNAME}" = "rr2310_00" ] ; then
ドライバのリビルドとインストール
ビルドディレクトリに移動する。
# cd rr174x-linux-src-v2.2/product/rr1740pm/linux/
make install コマンドに KERNELDIR オプションを指定して実行する。
※ KERNELDIR には新しいカーネルのソースディレクトリを指定する。
# make install KERNELDIR=/usr/src/kernels/2.6.29.6-213.fc11.x86_64 make[1]: ディレクトリ `/usr/src/kernels/2.6.29.6-213.fc11.x86_64' に入ります CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/os_linux.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/osm_linux.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/div64.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/hptinfo.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/config.o LD [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/rr174x.o Building modules, stage 2. MODPOST 1 modules WARNING: could not find /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/ .him_rr1740pm.o.cmd for /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/ him_rr1740pm.o CC /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/rr174x.mod.o LD [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/rr174x.ko make[1]: ディレクトリ `/usr/src/kernels/2.6.29.6-213.fc11.x86_64' から出ます You made a module for 2.6.29.6-213.fc11.x86_64 which does not match current kernel. The driver will be installed for kernel 2.6.29.6-213.fc11.x86_64. Deleting previous installed driver module rr174x... Install the new driver module... Removing conflicted driver module... Updating module dependencies...Done. Checking for initrd images to be updated... Backup /boot/initrd-2.6.29.6-213.fc11.x86_64.img to /boot/initrd-2.6.29.6-213.fc11. x86_64.img.rr174x.
上記のように無事終了したら、リブートを行い新しいカーネルで起動することを確認する。
Kernel 2.6.29 -> 2.6.30 へ移行時のビルドエラー修正
以下の内容について私は如何なる保証もしない。修正する場合は自己の責任において利用すること。
因みに以下の修正で動作することは確認済みである。
- osm_linux.h:144: error: conflicting types for ‘irqreturn_t’ を修正する。
142~149行目#ifndef IRQ_HANDLED typedef void irqreturn_t; #define IRQ_NONE #define IRQ_HANDLED #define IRQ_RETVAL(x) #endif
修正後:
/* comment out by tomoyan #ifndef IRQ_HANDLED typedef void irqreturn_t; #define IRQ_NONE #define IRQ_HANDLED #define IRQ_RETVAL(x) #endif */
- osm_linux.c:676: error: ‘SUGGEST_ABORT’ undeclared (first use in this function) を修正する。
676行目SCpnt->result = ((DRIVER_INVALID|SUGGEST_ABORT)<<24) | (DID_ABORT<<16);
修正後:
SCpnt->result = DRIVER_INVALID << 24 | DID_ABORT << 16;
- osm_linux.c:1293: error: ‘SUGGEST_ABORT’ undeclared (first use in this function) を修正する。
1293行目SCpnt->result = ((DRIVER_INVALID|SUGGEST_ABORT)<<24) | (DID_ABORT<<16);
修正後:
SCpnt->result = DRIVER_INVALID << 24 | DID_ABORT << 16;
- osm_linux.c:1402: error: ‘SUGGEST_ABORT’ undeclared (first use in this function) を修正する。
1402行目SCpnt->result = ((DRIVER_INVALID|SUGGEST_ABORT)<<24) | (DID_ABORT<<16);
修正後:
SCpnt->result = DRIVER_INVALID << 24 | DID_ABORT << 16;
- 無事ビルドが通ることを確認する。
# make install KERNELDIR=/usr/src/kernels/2.6.30.8-64.fc11.x86_64 make[1]: ディレクトリ `/usr/src/kernels/2.6.30.8-64.fc11.x86_64' に入ります CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/os_linux.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/osm_linux.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/div64.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/hptinfo.o CC [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/config.o LD [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/rr174x.o Building modules, stage 2. MODPOST 1 modules WARNING: could not find /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/.him_rr1740pm.o.cmd for /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/him_rr1740pm.o LD [M] /root/rr174x-linux-src-v2.2/product/rr1740pm/linux/.build/rr174x.ko make[1]: ディレクトリ `/usr/src/kernels/2.6.30.8-64.fc11.x86_64' から出ます You made a module for 2.6.30.8-64.fc11.x86_64 which does not match current kernel. The driver will be installed for kernel 2.6.30.8-64.fc11.x86_64. Deleting previous installed driver module rr174x... Install the new driver module... Removing conflicted driver module... Updating module dependencies...Done. Checking for initrd images to be updated...
参考文献:
Linux Headquarters - Kernel v2.6.30-rc2 /drivers/scsi/hptiop.c Patch
linux/irqreturn.h
scsi/scsi.h
The Linux SCSI programming HOWTO: エラー処理