无法在 EFI 分区上安装 grub

无法在 EFI 分区上安装 grub

我已经尝试在我的计算机上安装双启动很长时间了 - 尝试了几个不同的教程,但总是无法安装 grub。有人有什么建议吗?我被难住了。

我已经通过 EFI 安装了 Windows,然后通过 USB 密钥安装了 Kubuntu,然后我再次通过 USB 密钥登录并尝试在现有的 Windows 创建的 EFI 分区上或通过启动修复安装 grub。

启动修复给我错误(最近一次尝试)“检测到 Locked-NVram”。启动修复 paste-bin 消息在这里:https://paste.ubuntu.com/p/jKHWNYQXWP/

(如果有帮助的话,它是使用 EFI 的 Dell XPS 13 上的 Windows 10 / Kubuntu 22.04)

感谢您的任何建议

答案1

确保 EFI 分区足够大,Windows 默认的 EFI FAT32 分区大小约为 100MB,可能太小,请调整其大小并尝试再次安装 grub,我建议至少使用 512MB 分区

答案2

尝试再次回答,我在尝试在笔记本电脑上对此进行排序时读了很多资料,我发现由于 EFI 模式只是解锁的修改后的 BIOS 中的黑客行为,因此 BIOS 中的 NVRAM 变量是硬编码的,在此过程中,我阅读了一些笔记本电脑完全拒绝覆盖其默认 NVRAM 启动项,这里有一些有用的链接、说明和我为我的 precellular 用例编写的脚本,其中所有编辑启动顺序的尝试都无法在重新启动后继续存在,即使 efibootmgr 和 easyuefi 中的列表很好,我希望这会有用/提供答案:

在运行 install/update-grub 之前,进入“chroot”/“在系统分区中运行 shell”后,需要在“救援模式”下挂载 efivarfs,否则会出现锁定的 NVram 错误。

modprobe nvram
modprobe efivars
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
update-grub

或者

"apt-get install --reinstall grub-efi-amd64" /-signed

或者还有 Grub2win,它可能是这里的另一种解决方案。

https://sourceforge.net/projects/grub2win/

在这种情况下,update-grub 和 'modprobe efivars' 程序会做什么?

https://ubuntuforums.org/showthread.php?t=2482909

在双启动的 Ubuntu 中锁定 NVram

https://superuser.com/questions/1338643/how-do-i-change-the-uefi-boot-order-from-within-windows-10

https://www.easyuefi.com/index-us.html我在 askubuntu.com 上读到的一篇文章中推荐了 Hasleo EasyUEFI。

使用 efibootmgr 更改启动顺序

https://github.com/rhboot/efibootmgr/issues/19

还有一个“Visual BCD 编辑器”,只需谷歌一下。alternativesto.net 也有一些不错的建议。

对我来说,我的解决方案最终是编辑 os-prober 脚本(/usr/lib/os-probes/mounted/efi/20microsoft : bootmgfw=$(item_in_dir bootmgfw.efi "$efi/$microsoft/$boot")来搜索bootmgfww.efi并移动EFI/Microsoft/Boot/bootmgfw.efi、复制/boot/EFI/debian/*/boot/EFI/ubuntu/在您的情况下)到/boot/EFI/Microsoft/Boot/并复制grubx64.efibootmgfw.efi

我最终编写了一个 PowerShell 脚本,在 Windows 更新更新了 .efi 之后运行,就像前几天做的那样,我刚刚完成该脚本以支持全系列的 grub.efi,确保安全并搜索 Linux 发行版的 efi 路径:https://github.com/threader/ro-nvram-efi-grub

一个真正硬核的方法是下载https://packages.ubuntu.com/kinetic/grub-efi-amd64-bin或者https://packages.ubuntu.com/kinetic/grub-efi-amd64-signed,以及 shim-unsigned 包(帖子的链接之外),假设 grub 配置完全正确生成并通过“bcdedit /set”设置默认值。

在 Powershell 中

mountvol w: /S
mkdir w:\EFI\ubuntu\

使用 7zip 提取 .deb 和 data.tar 并复制它们,如果你按照我的解决方法,就会得到类似这样的结果:

   cp W:\EFI\Microsoft\Boot\bootmgfw.efi W:\EFI\Microsof\Boot\bootmgfw.efi.bak
cp W:\EFI\Microsoft\Boot\bootmgfw.efi W:\EFI\Microsoft\Boot\bootmgfww.efi


    path to: cp "usr\lib\grub\x86_64-efi\monolithic\gcdx64.efi" /.signed
    "usr\lib\grub\x86_64-efi\monolithic\grubnetx64.efi" /.signed
    "usr\lib\grub\x86_64-efi\monolithic\grubx64.efi" /.signed
     usr\lib\shim\BOOTX64.CSV
to W:\EFI\Microsoft\Boot\ and or w:\EFI\ubuntu\

假设 grub.cfg 和 efis 已正确写入或生成,您可以替换 windows .efi

    cp W:\EFI\ubuntu\* W:\EFI\Microsoft\Boot\
    cp W:\EFI\ubuntu\grubx64.efi W:\EFI\Microsoft\Boot\bootmgfw.efi

或者尝试

"bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi" /.signed

或者使用安全启动:

"bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi" /.signed

要求"packages.ubuntu.com/kinetic/shim" /-signed

(如果您已禁用安全启动,则可以用 grubx64.efi 替换 shimx64.efi,尽管在禁用安全启动的情况下,它们都可以工作。)

只需谷歌一下bcdedit /set说明,论坛规则就禁止我发布更多链接。

WSL2 现在还可以安装最有用的 Linux 驱动器。(我认为也很危险)。

编辑:这篇文章变得一团糟,但我们会启动!:)

相关内容