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