首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GRUB2链负载

GRUB2链负载
EN

Ask Ubuntu用户
提问于 2017-01-25 09:23:50
回答 1查看 3.8K关注 0票数 1

我想向GRUB配置文件(.cfg)中添加grub-mkstandalone生成的MokManager和variuos自定义GRUB的菜单条目。

在编辑文件之前,我已经尝试过chainload过程,但没有成功。

启用了Secure Boot

代码:

代码语言:javascript
复制
insmod chain
chainloader ([EFI PARTITION])/EFI/ubuntu/MokManager.efi
boot

输出:

代码语言:javascript
复制
/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,迈克尔·张( Michael )在2012年发布了一个补丁,使得GRUB依赖于shim验证来链接其他二进制文件:

https://build.opensuse.org/package/view_file/openSUSE:Factory/grub2/grub2-secureboot-chainloader.patch

EN

回答 1

Ask Ubuntu用户

发布于 2017-01-25 09:38:34

40_custom方法

有些挂件会从grub启动,即使它们不会从计算机自己的BIOS USB启动菜单条目启动。有关grub的背景信息,请参阅下面的链接

剧本: /etc/grub.d/

编辑文件

代码语言:javascript
复制
sudo nano /etc/grub.d/40_custom

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

代码语言:javascript
复制
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
}

并运行命令

代码语言:javascript
复制
sudo update-grub

然后,您将获得一个grub菜单选项从第二个驱动器(hd1)启动,这可能是一个USB吊坠。如果另一个驱动器是hd1,则可以将行编辑为(hd2)等。

如果没有grub菜单,在引导过程中按左shift键,它应该会出现。

我在BIOS模式下使用这种链式加载方法。我还没有在UEFI模式下测试它。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/875978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档