mkinitrdは使わずに、mkinitramfsを使う

rocketraid 2322を使っているが、ドライバをコンパイルしてインストールする時にinitrdイメージを作りなおすが、そのinitrdで起動させると、devfs not mountedで/dev/console開けなくてKernel Panicを起こす。。。。


 umount: devfs: not mounted
 pivot_root:No such file or directory
 /sbin/init: 432: cannot open dev/console: No such file
 Kernel panic - not syncing: Attempted to kill init!

非常に寂しい。 これなんだろうと探していたら、initrdimgを作るなら、mkinitrdを使うのではなく、mkinitramfsを使う事。(devfsが廃止された事に対応してる) という訳で、rocktraid のdriver のinstall.shをいじった。

対象のファイルは: rr232x-linux-src-v1.07/osm/linux/install.sh

書き換える箇所は

# diff -u install.sh.original install.sh
--- install.sh.original 2008-04-06 14:36:27.463394124 +0900
+++ install.sh  2008-04-06 14:38:08.188686133 +0900
@@ -53,9 +53,9 @@

-which mkinitrd 1> /dev/null 2> /dev/null
+which mkinitramfs 1> /dev/null 2> /dev/null
 if test $? -ne 0 ; then
-       echo "Can not find command 'mkinitrd'."
+       echo "Can not find command 'mkinitramfs'."
        exit 1
 fi

@@ -98,7 +98,7 @@
                                fi
-                               mkinitrd ${WITHSCSI} ${WITHSD} --with=${TARGETNAME} /boot/initrd-${MODVER}.img ${MODVER}
+                               mkinitramfs ${WITHSCSI} ${WITHSD} --with=${TARGETNAME} /boot/initrd-${MODVER}.img ${MODVER}
                        fi
@@ -127,7 +127,7 @@
                fi
-               mkinitrd
+               mkinitramfs
        else
                echo "The compiled module is not for current kernel. /boot/initrd-`uname -r` is not updated."
        fi
@@ -138,7 +138,7 @@
                fi
-               mkinitrd -o /boot/initrd.img-${MODVER} ${MODVER}
+               mkinitramfs -o /boot/initrd.img-${MODVER} ${MODVER}
        fi
 ;;
 turbo )

というわけで、このあたりを変更したところうまくブートするようになってくれた。 これ気をつけないとな。

<追記>

これやると、そもそもrr232x.koモジュールがinitrdに入らなくなった。。。。。orz この方法だと、rocketraidをrootファイルシステムにしているものについては、マウントできなくてそのままKernel Panicですねぇ。 まぁ、対策考えないとなぁ。

About this entry