GRUB 从错误的分区获取配置文件

GRUB 从错误的分区获取配置文件

我的分区表如下所示。

/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.cfgfrom/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

相关内容