我已经使用双启动电脑几年了。我习惯在安装 Windows 更新后使用 bcdedit 来更新启动管理器,但在最新一次更新之后,这似乎不再起作用了。
我通常会运行:bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
这次,我还尝试了:bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
无论哪种方式,计算机都会直接启动到 Windows 10。我仍然可以通过以下方式进入 Grub 菜单:
- 重新启动电脑,按住 ESC 暂停启动
- 从启动菜单中,选择 F9:启动设备选项
- 从启动选项菜单中,选择 ubuntu (ST1000LM023 HN-M101MBB)
有人可以推荐我应该检查什么,或者下一步的最佳措施吗?
这台电脑是 HP Pavilion15,我从 2014 年开始使用。
一旦我修好了这台机器,我可能会把它从机器上删除——维护 Windows 分区变得越来越麻烦,得不偿失!:)
更新 基于这个答案我发现,这也许受到与该用户描述的相同的固件错误的影响。以下步骤可在启动时恢复 grub 菜单:`cd /boot/efi/EFI #备份旧的 bootmgrfile mv Microsoft/Boot/bootmgrfw.efi Microsoft/Boot/bootmgrfw.old.efi #用 grub 替换 Windows 启动管理器 cp ubuntu/shimx64.efi Microsoft/Boot/bootmgrfw.efi
出于某种原因,如果这个文件不存在它就会抱怨......
cp ubuntu.grub64.efi Microsoft/Boot/grub64.efi`
这种方法的问题在于,Windows 的 Grub 菜单中条目当然会重新加载 Grub,而不是启动 Windows。目前无法进入 Windows 并不完全困扰我,但我真的很想知道如何让它正常工作。
我尝试运行 os-prober 和 update-grub,希望它能在 bootmgrfw.old.efi 找到 Windows 引导加载程序,但显然没有找到!
有人能建议一种方法来纠正 Grub 菜单中 Windows 的条目,或者通常一种更好的配置方法吗?
答案1
如果@IvánAraolaza 提供的解决方案不起作用,请在启动 Ubuntu 时重新安装 Grub2。
你也可以:
- 在 Windows 中安装 Grub2Win 并将其设置为主引导加载程序并对其进行配置。
- 使用 Ikkiboot 或 Super Grub2 磁盘从 USB 棒/SD 卡启动。它们将识别所有可启动系统并重新安装 Grub2。
答案2
跑步:
# Where X is your ma/dev/nvme0n1p1in boot drive. e.g. /dev/sda
# Note: if you're running an NVME drive, it may be /dev/nvme0 instead
sudo grub-install /dev/sdX
sudo update-grub
然后重试。
如果仍然不起作用,那么sudo efibootmgr
可以帮助您从 Linux 开始使其工作(请务必阅读手册;您很容易最终得到一个无法启动的系统)。
笔记:根据我的经验,如果设置启动操作系统不成功,则可能是 BIOS 错误:廉价闪存芯片即将损坏,或者 UEFI BIOS 可能需要重新刷新*。无论哪种情况,您都可能最终得到一个损坏的系统;请小心。
* 发生这种情况的原因是 NVRAM 被 UEFI 当作垃圾收集器,而垃圾收集器通常不运行或运行得很糟糕;因此您只是用完了空间。
在继续之前,我强烈建议您谷歌搜索“主板型号”(或笔记本电脑型号)+“UEFI 启动顺序问题”或“UEFI Linux 变砖”或类似内容。看看是否有其他人遇到同样的问题。
更新:在我写这篇文章的时候,你发布了一个更新,你确实怀疑固件存在错误。这很棘手。你必须查看你的 Bios 固件的确切细节。有些固件在刷新后可以正常工作。其他固件最终会导致系统崩溃。
问题是可能操作系统仅写入 50% 的可用 NVRAM,以避免已知的固件错误;但 BIOS 认为它只用了 50%,所以它不会运行垃圾收集器。而您的操作系统认为 NVRAM 已用了 50%,所以它将其视为已用完。
强制内核写入其余 50% 可以解决这个问题......但如果您的固件有缺陷(很可能),您最终可能会损坏笔记本电脑,只能使用 SPI 闪存和夹子来修复。