我正在使用 Ubuntu 破解我的 Surface Pro 3。Surface 是一个 UEFI x64 系统,使用安全启动。此时,我已经在 Windows 上安装了 Ubuntu,并通过 GRUB2 启动安全启动已禁用。一切都很好,但我想将 GRUB 换成 rEFInd,如果可能的话,重新启用安全启动。
- 按照说明进行操作这里,我使用二进制 ZIP 安装 rEFInd:,
sudo bash install.sh --localkeys --shim shim.efi
安装成功。(请参阅安装说明这里。 efibootmgr -v
报告:BootCurrent: 0001 Timeout: 2 seconds BootOrder: 0001 Boot0000* ubuntu HD(2,af800,64000,025ae8fc-da93-4531-b8b2-519ff2ec37ee)File(\EFI\ubuntu\shimx64.efi) Boot0001* rEFInd Boot Manager HD(2,af800,64000,025ae8fc-da93-4531-b8b2-519ff2ec37ee)File(\EFI\refind\shim.efi) Boot0002 USB Drive ACPI(a0341d0,0)PCI(14,0)USB(1,0)HD(1,20,1dda7e0,0000aa76)..BO
我的
/boot/efi/EFI
文件夹如下:Boot/ bootx64.efi Microsoft/ Boot/ bootmgfw.efi bootmgr.efi refind/ grubx64.efi (<-- This is actually rEFInd) MokManager.efi shim.efi ubuntu/ grubx64.efi MokManager.efi shimx64.efi
我的问题是,当我重新启动时,它会直接返回 GRUB2。为什么一切正常,它却没有加载 rEFInd?我该如何让它加载 rEFInd?
我过去注意到的一个行为是固件有时会忽略配置,直接进入Boot/bootx64.efi
或Microsoft/Boot/bootmgfw.efi
直接进入。Ubuntu 安装程序的“与 Windows 一起安装”选项令人惊讶地成功配置了 GRUB2 引导加载程序,因此它实际上可以毫无问题地加载 GRUB2。我想复制同样的成功,但使用 rEFInd。
答案1
我有四条建议:
- 尝试另一个垫片-- 我发现有些 EFI 在加载某些签名二进制文件时有点不稳定,会拒绝其他 EFI 接受的某些签名二进制文件。不幸的是,这个怪癖会影响 Shim 的一些副本,因此您可能只需要尝试另一个 Shim 二进制文件。使用适用于 Ubuntu 的那个是一个很好的起点。如果您更换 Shim,请确保也替换 MokManager 二进制文件。
bcdedit
在 Windows 中使用-- 您可以尝试使用bcdedit
Windows 中的程序将 rEFInd(或 rEFInd 的 Shim 副本)注册为引导加载程序。从行政人员命令提示符窗口,输入bcdedit /set {bootmgr} path \EFI\refind\shim.efi
就可以了。- 自定义安全启动配置-- 您可以通过用自己的密钥替换计算机的默认安全启动密钥来绕过 Shim。这个过程有点繁琐,但它可以让您更好地控制该过程。请参阅我的页面介绍了如何执行此操作了解详情。
- 将 rEFInd 复制到
EFI/BOOT/bootx64.efi
-- 您的计算机可能已经以这种方式启动,尽管这似乎不太可能。您可以手动复制文件,也可以使用mvrefind.sh
rEFInd 附带的脚本,尽管该脚本将移动,而不是复制,二进制文件。我强烈建议您在继续操作之前备份已有的内容。
答案2
我遇到了完全相同的问题。我以为我找到了解决方案这里但即使按照 shim 15 而不是 shim 15.3 的所有步骤,并通过 MOK 管理器导入 bootx64.efi,系统也会直接进入 grub,它被设置为默认引导加载程序 bootx64.efi
我知道我的设置是正确的,因为如果我禁用安全启动,我就可以进入 rEFInd。
此外,使用 shim 15 确实改变了系统的行为。使用 shim 15.4 时,我收到一条错误消息,提示存在一些安全违规行为,但使用 shim 15 后,rEFInd 会悄无声息地失败,我又回到了 bootx64.efi。我进行的另一项测试是用 shim 15 替换 EFI/ubuntu 中的 .efi,现在 ubuntu 在启用安全启动的情况下也无法启动。
有可能我的 ESP 或 NVRAM 中遗留了某些东西,这就是导致我出现问题的原因。我只是不知道。
更新:我找到了另一个解决方案,这似乎是 majaro 特有的,涉及相当多的步骤。但我刚刚下载了垫片-x64-15-2.x86_64.rpm并提取
2018-04-30 01:41 PM 1,210,776 shimx64.efi
将文件复制到 EFI/refind 并重新启动。
令我惊讶的是,它居然真的有效!对我来说,唯一的小问题是 shellx64.efi 现在停止工作了。我想我需要把它的签名放入 MOK 中。
第二次更新。我现在已经在另外两台笔记本电脑上测试了该程序,以下是我让它持续工作的方法:
按照 RW Smith 的指南使用,
sudo ./refind-install --shim /boot/efi/ubuntu/shimx64.efi
以便将 Ubuntu 20 的 shimx64.efi 和 mmx64.efi 复制到 /boot/efi/refind重启后,您将看到 MOK 管理屏幕。输入您的密码,以便将 key/refind.cer 导入 MOK。
现在启动 Linux 或 Windows,并将 shimx64.efi 替换为从以下位置下载的 5.2 版本这里
现在重新启动并重新查找就可以了。
我从一开始就尝试使用 fedora shimx64 并使用 fedora 中的 mmx64.efi 来实现这一点,但这导致 MOK 管理屏幕在重启后不会出现。也许 5.2 shimx64 与 Ubuntu mmx64 的组合会起作用,但我还没有尝试过这种组合。