我刚刚在安装了 Ubuntu 14.04 的分区笔记本电脑上从 Windows 8.1 升级到 Windows 10。Grub 不再出现在启动时,因此我从 Ubuntu liveUSB 运行启动修复。这似乎没有任何效果。我已检查,安全启动仍处于禁用状态。
来自启动修复的日志:http://paste.ubuntu.com/11972534/
那么接下来该怎么做?
更新:我尝试使用 chroot 从我的 Ubuntu 分区更新 grub。update-grub 成功运行,找到 linux 和 windows 启动管理器,但该过程仍然没有任何效果。grub-install 抱怨它找不到 EFI 目录(但我已正确安装所有内容)。
更新 2:刚刚发现在 chroot 进入 ubuntu 后运行 efibootmgr 显示 ubuntu 根本不在启动顺序中。我手动更改了顺序并重新启动,发现启动顺序已被重置。我在 windows 中运行:bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
但即使在报告“操作成功”后,这也没有任何效果。
答案1
我只需要以管理员身份在 Windows 中运行它:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
或者,如果您使用 PowerShell:
bcdedit /set "{bootmgr}" path \EFI\ubuntu\grubx64.efi
GRUB 在启动时显示正常,并且我可以正常启动 Ubuntu 和 Windows 10。
正如评论(由 David Faure 指出)中指出的那样,此命令的最后一个参数取决于您的特定系统配置。您可以使用此命令来确定系统的正确路径:
bcdedit /enum firmware
这将列出所有已安装的启动管理器和相关的 EFI 路径,并且 grub 应该位于列表中的某个位置。
注意:此功能无需 USB 即可运行,但您可能需要启动 BIOS 并关闭安全启动。这可能会导致上述操作无法运行。
答案2
对我有用的唯一解决方案是关联 我再次将它带到这里只是因为在 Google 上更容易找到这个帖子。
本质上步骤如下:
- 使用 Ubuntu Live 以“尝试 Ubuntu”模式启动。
- 使用 GParted 验证正确的 Linux 分区(例如
/dev/sda2
)。 挂载linux分区:
sudo mount /dev/sda2 /mnt #Replace sda2 with your partition number
挂载所有其他Linux系统文件夹:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
如果您正在运行 UEFI 系统,您还必须使用以下命令挂载您的 EFI 目录:
sudo mount /dev/sda1 /mnt/boot/efi
chroot 进入你的安装
sudo chroot /mnt
现在你已经登录到你的安装(不是 Ubuntu Live),只需执行
update-grub grub-install /dev/sda update-grub exit sudo reboot
就是这样!感谢 Scott Severance 提供上述链接。
答案3
同样的问题,在双启动电脑上从 windows7 升级到 10...我通过以下方式解决:
- 升级 Windows
- 在安装过程中,第一次重启后,我得到了 grub 救援提示,使用 USB 记忆棒中的 BootRepair 修复了这个问题
- 完成了 Windows 安装,GRUB 已经消失,使用 gparted 的实时 CD,我注意到所有分区仍然存在,但它们都是 NTFS
- 使用 Windows 的 TestDisk 恢复了我的 Linux 分区
- 再次启动 BootRepair 并且一切似乎正常(我的 GRUB 菜单中的 Windows 语音重复了...我不知道为什么,但是现在对我来说一切似乎都正常!)
我希望它对某人有用!
答案4
您是否检查过启动顺序?如果 Microsoft 启动加载程序位于第 2 位,请将其移至底部并重新启动。
您可以通过在 Ubuntusudo efibootmgr -v
中运行终端来检查它。