我的分区表如下所示。
/dev/mmcblk1p1 2048 6143 4096 2M BIOS boot
/dev/mmcblk1p2 6144 4200447 4194304 2G Linux filesystem
/dev/mmcblk1p3 4200448 16783359 12582912 6G Linux filesystem
我正在从 BIOS 模式启动。设备不支持 UEFI。
/dev/mmcblk1p2
我有两个相同的设备。在设备 A 上,grub 从“ ”获取配置/boot/grub/grub.cfg
。在设备 B 上,将分区和
中的内容复制过来。 然后我在设备 B 上使用以下命令安装 grub:/dev/mmcblk1p2
/dev/mmcblk1p3
grub-install /dev/mmcblk1
在设备 A 上 grub 已经正确安装。
在 grub 菜单中,我可以正确选择要引导到的分区。但是 grub 使用的是 grub.cfg,/dev/mmcblk1p3
而不是/dev/mmcblk1p2
。
我希望安装 grub,/dev/mmcblk1p2
因为这是我的“恢复”分区。
我启动了不同的分区并运行了,grub-install /dev/mmcblk1
但这对 grub 将从哪个分区获取文件没有任何影响grub.cfg
。
我还从 USB 启动并从那里运行了命令。
问题:我怎样才能让 grub 采用/boot/grub/grub.cfg
from/dev/mmcblk1p2
而不是/dev/mmcblk1p3
?
我见过这个 Stackoverflow 问题但它并没有给我进一步的帮助。
答案1
考虑使用标志--boot-directory
明确告诉 GRUB 你想要 grub.cfg 的位置
请注意,如果您在当前根目录以外的文件系统上安装此文件,则需要chroot放入或安装并使用--boot-directory
否则,当 grub-install 运行时,它将默认将代码写入指向当前根分区上的 \boot 的 MBR...
例子:
sudo mount /dev/mmcblk1p2 /mnt
sudo grub-install --boot-directory /mnt/boot/ /dev/mmcblk1
对于 chroot 选项,你可以按照此处的示例进行操作:
https://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd