grub2 错误磁盘 'hd0,msdos1' 未找到,ls 显示没有磁盘

grub2 错误磁盘 'hd0,msdos1' 未找到,ls 显示没有磁盘

我已经用谷歌搜索了很多这个问题。我发现,但这并没有解决我的问题。其他解决方案建议我重新安装 grub(运行 grub-install),但这也不起作用。

这是我正在做的:(我的 grub 版本是 2.02)

  1. 我使用 grub2-mkrescue 来制作我的 X.iso
  2. 我从 X.iso 启动 VMWareWorkstation 虚拟机,该虚拟机具有 1.0GB SATA 磁盘
  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

那么,您是否将 GRUBdevice.map文件从 GRUB 救援 ISO 映像复制到了磁盘?它可能会强制grub-install将 GRUB 设备标识符hd0/dev/sda.

在运行之前grub-install,请验证该device.map文件是否确实hd0与您要安装 GRUB 的磁盘(即/dev/sda您的情况)关联。

另外,你为什么要做这一切?看起来您正在尝试制作一个grub2-mkrescue虚拟机映像,该映像可用于拯救其他丢失引导加载程序的虚拟机 - 这是您打算做的吗?如果是这样,只需使用任何 Live CD/DVD Linux 发行版的 ISO 映像来启动有问题的 VM,就会为您提供更广泛的工具集和更舒适的环境来修复原始问题,无论是缺少引导加载程序还是其他问题。

如果您特别需要grub2-mkrescue,您已经拥有了X.iso- 为什么您要尝试将其转换为基于虚拟磁盘的安装?

相关内容