私はSUSE 11.2を実行しています。 Ubuntuは拡張パーティションにありますが、/dev/sda5
起動すると次のメッセージが表示されます。
Error 19: Linux kernel must be loaded before initrd
menu.lstのUbuntuエントリは次のとおりです。
#Don’t change this comment – YaST2 identifier: Original name: none#
title Ubuntu 10.04
root (hd0,4)
kernel /vmlinuz root=/dev/sda5 ro quiet splash
initrd /initrd.img
答え1
vmlinuzファイルが見つからない可能性があります。これはおそらく sda5 の /boot ディレクトリにあるので、その行を次に変更する必要があります。
title Ubuntu 10.04 root (hd0,4) kernel /boot/vmlinuz root=/dev/sda5 ro quiet splash initrd /initrd.img
または他の場所にいる場合は、その場所がどこにいても構いません。
(initrd.imgファイルでも同じことをする必要があるかもしれません)
また、Ubuntuのvmlinuzファイルとinitrd.imgファイルの名前がまったく同じであることを確認してください。通常、カーネルバージョンがあり、名前(例:vmlinuz-2.6.35-22-generic)を入力します。
答え2
次のことを試すことができます。
mount /dev/sda5 /mnt
cd /mnt
ls -l boot vmlinuz initrd.img
シンボリックリンクが指す場所が実際に存在し、探しているファイルが正しいことを確認してください。
たとえば、私のボックスでは、vmlinuz -> boot / vmlinuz-2.6.32-25-genericです。
txwikingerの回答で説明されているように、正しいファイルを指すようにgrub設定を変更できます。
これをデバッグするもう1つの簡単な方法は、grubにプロンプトを表示してから(grub1からCを押してgrub2についてはわかりません)、タブ補完を使用して利用可能なファイルを一覧表示してすぐにテストできます。