我想在GRUB
配置文件(.cfg)中添加菜单条目以及用其生成的MokManager
各种自定义菜单条目。GRUB
grub-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 Boot
GRUB
shim
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 的背景知识,请参阅以下链接
编辑文件
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 模式下测试过。