GRUB2 链式加载

GRUB2 链式加载

我想在GRUB配置文件(.cfg)中添加菜单条目以及用其生成的MokManager各种自定义菜单条目。GRUBgrub-mkstandalone

我在编辑文件之前尝试过链式加载过程,但是没有成功。

Secure Boot已启用。


代码:

insmod chain
chainloader ([EFI PARTITION])/EFI/ubuntu/MokManager.efi
boot

输出:

/EndEntire
file path: /ACPI(*)/PCI(*)/Sata(*)/HD(*)/
           File(\EFI\ubuntu)/File(MokManager.efi)/EndEntire
error: Cannot load image

对于任何其他引导加载程序也会发生同样的事情。



更新:

我读到过,这种行为是由一个错误引起的,当启用GRUB2时无法启动其他引导加载程序,因为实际上没有加密货币来验证标志。 Secure BootGRUBshim
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1091464

为了OpenSUSE GRUB张德培2012 年发布了一个补丁,GRUB依赖 shim 验证来链式加载其他二进制文件:
https://build.opensuse.org/package/view_file/openSUSE:Factory/grub2/grub2-secureboot-chainloader.patch

答案1

40_custom 方法

即使无法从计算机自己的 BIOS USB 启动菜单项启动,某些 U 盘也会从 grub 启动。有关 grub 的背景知识,请参阅以下链接

脚本:/etc/grub.d/

编辑文件

sudo nano /etc/grub.d/40_custom

将以下文本添加到文件 40_custom 中(请注意,保留文件附带的前几行很重要)

menuentry "External drive (on hd1) if no eSATA drive connected. edit if necessary" {
        insmod part_msdos
        insmod part_gpt
        insmod fat
        set root='(hd1)'
        drivemap -s (hd0) ${root}
        chainloader +1
}

并运行命令

sudo update-grub

然后您将看到一个 grub 菜单选项,用于从第二个驱动器 (hd1) 启动,该驱动器可以是 USB 闪存盘。如果另一个驱动器是 hd1,您可以将该行编辑为 (hd2) 等。

如果没有 grub 菜单,请在启动时按下左 Shift 键,它就会出现。


我在 BIOS 模式下使用此链式加载方法。我尚未在 UEFI 模式下测试过。

相关内容