[Linux][Kernel][自分用メモ] Linux Kernel 3.13系列で起動時に「module scsi_wait_scan not found」となってしまった時の対処方法。

AIX、UNIX、Linux
60758 – module scsi_wait_scan not found kernel panic on boot
RHEL6でドライバ(カーネルモジュール)のロード順を固定化する方法 - Qiita
先に書いておくと、ここに書いた方法はあまりやる意味無いです。互換デバイス名を用いて動作するプログラムが既にあったので、互換デバイス名を固定化しようと暫定対処でこの方法をとりましたが、この方法だとデ…

はじめに

Linux Kernel のstableで3.13系列がでるようになりましたが、自宅環境でカーネルをコンパイルして導入した際に「module scsi_wait_scan not found」と出てしまい、Kernel Panicを起こして起動しない症状が発生していました。

色々と試行錯誤していたのですが、どうやらvirtio_blk.koモジュールが組み込まれていないというところまで原因を突き止めていました。

しかし、モジュール自体はコンパイルされているのに組み込まれないという不思議現象だったのですが、どうにか組み込めることがわかったので試してみることにしました。

検証環境

  • CentOS 6.5 x64 on Ubuntu 13.10(KVM)

コンパイルオプション自体は、うまくいっていた3.12系列のconfigファイルを流用してコンパイルしてみました。

問題の状況

導入した直後の結果は以下のとおり。

# lsinitrd /boot/initramfs-3.13.2.img | grep virt
drwxr-xr-x   2 root     root            0 Feb  8 23:13
lib/modules/3.13.2/kernel/drivers/virtio
-rw-r--r--   1 root     root        17192 Feb  8 23:13
lib/modules/3.13.2/kernel/drivers/virtio/virtio_balloon.ko
-rw-r--r--   1 root     root        13216 Feb  8 23:13
lib/modules/3.13.2/kernel/drivers/virtio/virtio.ko
-rw-r--r--   1 root     root        19944 Feb  8 23:13
lib/modules/3.13.2/kernel/drivers/virtio/virtio_pci.ko
-rw-r--r--   1 root     root        19448 Feb  8 23:13
lib/modules/3.13.2/kernel/drivers/virtio/virtio_ring.ko

見たとおり、本来組み込まれるべき /lib/modules/3.13.2/kernel/drivers/block/virtio_blk.ko が組み込まれていないことがわかります。

モジュール自体は所定の場所に作成されているのが分かったので、後からモジュールを追加することにしました。

対応方法

# dracut -f --add-drivers virtio_blk.ko /boot/initramfs-3.13.2.img 3.13.2

--add-driversで追加したいモジュールを指定します。また、今回は既にインストール済みのinitramfsに組み込む関係上、上書き処理が必要になるため-f(--force)を指定する必要があります。

で、上記を実行した結果は以下のとおり。

# lsinitrd /boot/initramfs-3.13.2.img | grep virt
-rw-r--r--   1 root     root        22744 Feb  8 23:18
lib/modules/3.13.2/kernel/drivers/block/virtio_blk.ko
-rw-r--r--   1 root     root        25536 Feb  8 23:18
lib/modules/3.13.2/kernel/drivers/scsi/virtio_scsi.ko
drwxr-xr-x   2 root     root            0 Feb  8 23:18
lib/modules/3.13.2/kernel/drivers/virtio
-rw-r--r--   1 root     root        17192 Feb  8 23:18
lib/modules/3.13.2/kernel/drivers/virtio/virtio_balloon.ko
-rw-r--r--   1 root     root        13216 Feb  8 23:18
lib/modules/3.13.2/kernel/drivers/virtio/virtio.ko
-rw-r--r--   1 root     root        19944 Feb  8 23:18
lib/modules/3.13.2/kernel/drivers/virtio/virtio_pci.ko
-rw-r--r--   1 root     root        19448 Feb  8 23:18
lib/modules/3.13.2/kernel/drivers/virtio/virtio_ring.ko

先ほどまでinitramfsに組み込まれていなかった、virtio_blk.kovirtio_scsi.ko が無事に組み込まれていることがわかります。

この状態で再起動をするのですが、grub.confを先に編集して起動してこないと大変なことになるので、念のためコンソールからgrubメニューで起動するKernel を今回インストールしたKernelを選択して、起動してくることを確認します。
これで問題がなければ、grub.confの起動順序を編集すれば良いと思います。

とりあえずKernel本体のコンパイルオプションだけではどうにもなりそうも無かったので、手作業での対処方法になってしまいました。いつ修正されるか分かりませんが、とりあえず本家が修正される?まではこの対処方法でいこうと思います。

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました