linux:fedora:driver_rebuild_after_kernel_updated

カーネルアップデート後の RocketRAID 1740 ドライバ リビルドメモ

注意: 以下は 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.

上記のように無事終了したら、リブートを行い新しいカーネルで起動することを確認する。

 以下の内容について私は如何なる保証もしない。修正する場合は自己の責任において利用すること。
 因みに以下の修正で動作することは確認済みである。

  1. 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
    */
  2. 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;
  3. 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;
  4. 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;
  5. 無事ビルドが通ることを確認する。
    # 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: エラー処理

  • linux/fedora/driver_rebuild_after_kernel_updated.txt
  • 最終更新: 2024/02/04 13:35
  • by ともやん