我的标题借用自这个问题这篇文章描述了一种与我非常接近的情况,其中包括 OP 和我都采取的三个步骤,但没有成功。但是,我正在使用 Ubuntu 18.04.4 live USB 来安装 Ubuntu 18.04.4。总结一下,我所做的事情(主要是按顺序)如下:
- 通过邮件获取全新 HP Pavilion x360
- 创建 Ubuntu 18.04.4 live USB
- 禁用安全启动(BIOS)和快速启动(Windows)
- 重新启动进入实时环境并安装 Ubuntu 18.04.4
- 发现当我重新启动时没有出现 Grub 菜单 - 而是出现 Windows。
引导修复无效。它要求我运行某个命令(“bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi”),这也是这个 AskUbuntu 答案(尽管修改为“bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi”)但这两个命令都没有起作用。不同的 AskUbuntu 答案建议编辑/etc/systemd/system/boot-linux-next.service
;我希望这会起作用,因为它特定于 HP Pavilion 笔记本电脑,但它也失败了。有人有解决方案吗?
(注意:我省略了一些启动修复输出以避免这个问题太长。)
答案1
事实证明这个答案回答之前的问题确实有效。我没有明确测试答案的前提,即 HP 笔记本电脑附带的固件在每次加载设备时都会在 UEFI 启动顺序中首先设置 Windows 条目。但是,efibootmgr 确实显示 Windows 在启动顺序中的位置比 Ubuntu 更早,即使在重新安装后也是如此。运行后efibootmgr
发现 BootCurrent 对我来说是 0000(可能会有所不同),我创建了一个新的启动脚本(/etc/systemd/system/boot-linux-next.service
),内容如下:
[Unit]
Description=Boot Linux next
[Service]
Type=oneshot
# Replace '0' in the next line with the appropriate code. Advice taken from https://askubuntu.com/a/1142709.
ExecStart=/bin/efibootmgr --bootnext 0
[Install]
WantedBy=multi-user.target
并运行sudo systemctl enable --now boot-linux-next.service
。您应该注意此命令的输出以确保没有错误 - Ubuntu 18.04.4 和更高版本的 Ubuntu 之间似乎存在差异,后者可以使用可执行文件的相对路径(efibootmgr
),但前者需要绝对路径(/bin/efibootmgr
)。我能够通过运行 来检查 BootNext 变量是否设置正确efibootmgr
;显然运行操作systemctl
会导致启动脚本运行一次。从那时起,启动一直很正常,尽管我仍然担心下次尝试启动 Windows 时会发生什么。