我正在尝试在虚拟机中的 puppet 上测试 grub2,其中一项测试是确保它仍然可以在擦除的 MBR 上运行。
所以我用以下命令擦拭 MBR:
dd if=/dev/0 of=/dev/vda bs=512 计数=1
然后我尝试安装 grub2
grub2 安装 /dev/vda
并得到
引导时 GRUB 无法读取路径“/boot/grub2”。安装是不可能的。正在流产。
如果我尝试安装 grub2 而不先擦除 MBR,它就可以正常工作。
有任何想法吗?
答案1
如果您查看第一个扇区中存储的内容(例如,在维基百科的MBR文章)你会发现你擦除了分区表。
如果没有分区表,您的/boot
分区可能不再存在。
我建议您执行以下操作来保存和恢复它:
sfdisk -d /dev/vda > part-table
dd if=/dev/zero of=/dev/vda bs=512 count=1 # note, maybe want more than 1
sfdisk /dev/vda < part-table
grub2-install /dev/vda
请注意,grub 实际上占用了扇区 0 和扇区 1 的一部分 –n, 在哪里n比第一个分区的开头小一些数字。您可能还想擦除这些扇区。