====== カーネルアップデート後の RocketRAID 1740 ドライバ リビルドメモ ======  [[http://www.highpoint-tech.com/USA_new/cs-series_rr1700.htm|RocketRAID 1700 Family Series の Download]]より [[http://www.highpoint-tech.com/BIOS_Driver/rr1740/Linux/rr174x-linux-src-v2.4-091009-1434.tar.gz|Open Source driver v2.4]] をダウンロードして解凍する。\\ \\ 参考文献:\\ [[https://help.ubuntu.com/community/RocketRaid|RocketRaid - Community Ubuntu Documentation]] ===== インストール用のシェルスクリプト修正 ===== 注意: 以下は 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... 参考文献:\\  [[http://www.linuxhq.com/kernel/v2.6/30-rc2/drivers/scsi/hptiop.c|Linux Headquarters - Kernel v2.6.30-rc2 /drivers/scsi/hptiop.c Patch]]\\  linux/irqreturn.h\\  scsi/scsi.h\\  [[http://www.linux.or.jp/JF/JFdocs/SCSI-Programming-HOWTO-21.html|The Linux SCSI programming HOWTO: エラー処理]]\\