grub2エラーディスク「hd0、msdos1」が見つかりません。 ls にディスクがないことが表示されます。

grub2エラーディスク「hd0、msdos1」が見つかりません。 ls にディスクがないことが表示されます。

私はこの質問をたくさん検索しました。私が見つけたこれしかし、これは私の問題を解決できませんでした。他の解決策では、grubを再インストールすることを提案しましたが(grub-installを実行する)、それはうまくいきませんでした。

これが私がすることです:(私のgrubバージョンは2.02です)

  1. X.iso を作成するには grub2-mkrescue を使用します。
  2. 1.0GB SATAディスクを搭載したX.isoからVMWareWorkstation仮想マシンを起動しました。
  3. ディスクにX.isoをインストールしましたが、詳細は次のとおりです。

3.1。古いパーティションがある場合は/ dev / sdaを削除します。 dd if=/dev/zero of=/dev/sda bs=1M count=1

3.2。 / dev / sdaに3つのデフォルトパーティションdev / sda1、sda2、sda3(サイズはそれぞれ100M、30M、および70M)を作成し、sda1を起動可能に切り替えます。

Disk /dev/sda: 1024 MB, 1073741824 bytes, 2097152 sectors
130 cylinders, 255 heads, 63 sectors/track
Units: sectors of 1 * 512 = 512 bytes

Device  Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/sda1 *  0,1,1       12,191,50           63     204862     204800  100M 83 Linux
/dev/sda2    12,191,51   16,147,2        204863     266302      61440 30.0M 83 Linux
/dev/sda3    16,147,3    25,127,37       266303     409662     143360 70.0M 83 Linux

3.3 3つのパーティションをext2としてフォーマットし、/ dev / sda1をマウントします。

mkfs.ext2 /dev/sda1
mkfs.ext2 /dev/sda2
mkfs.ext2 /dev/sda3
ROOTFS_PATH=/var/.rootfs
mkdir $ROOTFS_PATH
mount /dev/sda1 $ROOTFS_PATH

3.4ファイルのコピー...

for i in bzImage initrd.img vmlinuz-*; do
    cp -rf /boot/$i $ROOTFS_PATH/boot
done
cp -f /boot/grub/device.map $ROOTFS_PATH/boot/grub/device.map
for i in init linuxrc; do
    cp -rf /$i $ROOTFS_PATH
done
for i in bin etc lib sbin share usr; do
    cp -a /$i $ROOTFS_PATH
done
for i in dev var proc sys tmp data log; do
    mkdir -p $ROOTFS_PATH/$i
done

3.5 grub インストールおよび grub 構成ファイルの作成

chroot $ROOTFS_PATH <<EOF
mount -a
mdev -s
grub-install $tdisk
grub-install --recheck $tdisk
grub-mkconfig -o /boot/grub/grub.cfg
exit
EOF
  1. 再起動

それは言う:

.
error: disk 'hd0,msdos1' not found
Entering rescue mode...
grub rescue>

最も奇妙なことは、lsコマンドがgrub-rescue cliに何も表示しないことです。誰かが言ったように、ディスクのリストを表示する必要があります。

再起動後のエラー

答え1

cp -f /boot/grub/device.map $ROOTFS_PATH/boot/grub/device.map

device.mapそれでは、GRUB回復ISOイメージのGRUBファイルをディスクにコピーしましたか?grub-installGRUBデバイスhd0識別子/dev/sda

を実行する前に、ファイルがGRUBをインストールしたいディスク(つまり、あなたの場合)に実際に接続されていることをgrub-install確認してください。device.maphd0/dev/sda

さらに、なぜこのようなことをするのでしょうか?grub2-mkrescueブートローダが失われた他の仮想マシンを救出するために使用できる仮想マシンイメージを作成したいようです。これは意図したものですか?その場合、Live CD / DVD LinuxディストリビューションのISOイメージを使用して問題のあるVMを起動すると、ブートローダプログラムが見つからないかその他の問題であるか、元の問題を解決するためのより広いツールセットとより快適な環境が提供されます。

特に必要grub2-mkrescueで、すでに持っている場合は、X.isoなぜvdiskベースのインストールに変換しようとしますか?

関連情報