Windows 10 升级杀死了 grub,启动修复也无济于事

Nic*_*gen 104 boot grub2 dual-boot boot-repair windows-10

我刚刚在安装了 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但是即使在报告“操作成功”之后,这也没有任何影响。

Nic*_*gen 149

我只需要以管理员身份在 Windows 中运行它:

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是 PowerShell:

bcdedit /set "{bootmgr}" path \EFI\ubuntu\grubx64.efi
Run Code Online (Sandbox Code Playgroud)

GRUB 在启动时看起来很好,我可以很好地启动到 Ubuntu 和 Windows 10。


正如评论中所指出的(David Faure),此命令的最后一个参数取决于您的特定系统配置。您可以使用此命令来确定系统的正确路径:

bcdedit /enum firmware
Run Code Online (Sandbox Code Playgroud)

这将列出所有已安装的引导管理器和关联的 EFI 路径,grub 应该在列表中的某个位置。

  • 注意:要找到该命令的最后一个参数的路径,您可以使用`bcdedit /enum firmware`。如果您使用另一个 Linux 发行版并且您的搜索引擎将您带到这里,这会有所帮助:-) (10认同)
  • 这对我有用,非常感谢。我可以知道那个命令实际上做了什么吗? (3认同)
  • 仅供参考:在 windows powershell 中不起作用,需要以管理员身份运行 cmd 才能工作 (3认同)
  • @bheeshmar:这本身就值得一个答案!**;-)** (2认同)
  • @Jehoshuah 它将 Grub 设置为系统启动管理器,而不是 Windows 启动管理器,这意味着当系统启动时,它运行 Grub。BCD 代表“引导配置数据”。 (2认同)

小智 23

唯一对我有用的解决方案在那个链接上有描述, 我把它再次带到这里只是因为在谷歌上更容易找到这个线程。

基本上步骤是:

  1. 使用 Ubuntu Live 在“尝试 Ubuntu”模式下启动。
  2. 使用 GParted 来验证正确的 linux 分区(例如/dev/sda2)。
  3. 挂载linux分区:

    sudo mount /dev/sda2 /mnt  #Replace sda2 with your partition number
    
    Run Code Online (Sandbox Code Playgroud)
  4. 挂载所有其他 linux 系统文件夹:

    for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
    
    Run Code Online (Sandbox Code Playgroud)

    如果您运行的是 UEFI 系统,则还必须使用以下命令挂载 EFI 目录:

    sudo mount /dev/sda1 /mnt/boot/efi
    
    Run Code Online (Sandbox Code Playgroud)
  5. chroot 进入你的安装

    sudo chroot /mnt
    
    Run Code Online (Sandbox Code Playgroud)
  6. 现在您已登录您的安装(不是 Ubuntu Live),只需执行

    update-grub
    grub-install /dev/sda
    update-grub
    exit
    sudo reboot
    
    Run Code Online (Sandbox Code Playgroud)

就是这样!积分在我上面提到的链接上做 Scott Severance。

  • 部分对我有用..现在它直接启动到linux而不显示启动菜单 (2认同)
  • 这个答案与[链接问题中的这个](/a/88432/175814) 几乎相同,除了更糟糕的格式和语法。如果您的回答本质上是另一个问题的副本,那么在您 [获得 15 声望](/help/whats-) 后,最好将此问题作为另一个问题的副本 [flag](/help/privileges/flag-posts)名声)。不要忘记为您认为有用的答案投票! (2认同)