VMWare で linux-image-2.6.14 が起動しない (2005/12/05)

研究室のマシンではなく,自宅のマシンのことです.自宅マシンは,Windows XP で VMWare Workstation 5.5 for Windows で Linux ゲストマシンを稼動させています.Linux ゲストマシンは,Debian/GNU Linux unstable version です.Debian/GNU Linux で,linux-image-2.6.14 をインストールしたところ,次のようなメッセージを出して,起動しませんでした (きちんとしたメモをとっていなかったので,メッセージは正確ではないかも知れません).

/bin/cat: /sys/block/sda/dev: No such file or directory
Waiting 1 seconds for /sys/block/sda/dev to show up
/bin/cat: /sys/block/sda/dev: No such file or directory
Waiting 2 seconds for /sys/block/sda/dev to show up
... (省略) ...
Device /sys/block/sda/dev seems to be down
/bin/dash: can't access tty; job control turned off

今までの経験から,initrd イメージに SCSI のモジュールを組み込めばいいだろうと見当をつけました.kernel 2.6.12 で立ち上げておいて,lsmod で関連がありそうなモジュールを見つけました.これらを initrd イメージに組み込み,kernel 2.6.14 で起動したところ立ち上がりました.その解決方法を以下に示します.

kernel 2.6.12 で起動します./etc/mkinitrd/modules に次の4行を追加します.

sd_mod
sg
BusLogic
scsi_mod

kernel 2.6.14 の initrd イメージを新たに作成します.

# cd /boot
# mv initrd.img-2.6.14-2-686 initrd.img-2.6.14-2-686.orig
# mkinitrd -o /boot/initrd.img-2.6.14-2-686 2.6.14-2-686

この後,kernel 2.6.14 で起動したところ,起動できました.

(追記 2005/12/15) 必要となるモジュールを initrd イメージに組み込まなければ起動しないと書きましたが,これが起動しない原因ではありませんでした.推定ですが,正しい initrd イメージが作成されていないことが原因と思われます./etc/mkinitrd/modules が空でも

# cd /boot
# mv initrd.img-2.6.14-2-686 initrd.img-2.6.14-2-686.orig
# mkinitrd -o /boot/initrd.img-2.6.14-2-686 2.6.14-2-686
とすれば起動できるようになります.

ちなみに /boot/initrd.img-2.6.14-2-686 をマウントして,loadmodules を確認すれば,起動時に読み込むモジュールが分かります.

# mount -o loop /boot/initrd.img-2.6.14-2-686 /mnt
# less /mnt/loadmodules

ただし,/boot/initrd.img-2.6.14-2-686 をマウントするには,kernel が cramfs をサポートしている必要があります.

(追記 2006/11/16) パッケージ initramfs-tools は,linux-image パッケージのアップグレード時に自動的に initrd イメージを作成してくれるようです.以前から,initrd イメージを自動作成してくれるマシンとしてくれないマシンがあって,原因が何だろうと思っていましたが,これが原因のようです.これをインストールしておけば,いちいち手動で initrd イメージを作成する必要がなくなると思います.


梅原 大祐 / UMEHARA Daisuke umehara@kit.ac.jp
Last modified: 2020/05/01 15:37
Total Access Count