Windows 10升级杀死了grub并且引导修复无济于事


83

我刚刚在装有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目录(但是我已经正确安装了所有东西)。

Update2:刚刚发现在chroot进入ubuntu之后运行efibootmgr表示ubuntu根本不在引导顺序中。我手动更改了顺序,然后重新启动以发现引导顺序已重置。我在Windows中运行:bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi但是即使报告“操作成功”也没有任何效果。


接下来是提交错误报告。
Rinzwind

@Rinzwind我刚刚将日志发送到boot.repair@gmail.com,解释了我的情况。
Nicholas Verstegen

如果您在ESP中更新了grub的文件,您是否已进入ACERs UEFI并启用了对这些文件的信任。您需要设置系统密码才能执行此操作。 askubuntu.com/questions/597213/...
oldfred

保留两个单独的ESP,否则Windows将在每次BOOTMGR更新时擦除GRUB。
Erkin AlpGüney2015年

本简短说明(linuxbsdos.com/2015/07/29/…)指出,如果您的ESP在UEFI分区中,则升级不会破坏任何内容。
卡莱斯·阿拉古兹

Answers:


114

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

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

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

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

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


2
@bheeshmar:值得一个答案! ;-)
Fabby 2015年

3
这对我有用,非常感谢。我能知道那个命令实际上做了什么吗?
Jehoshuah

3
仅供参考:在Windows Powershell中不起作用,需要以管理员身份运行cmd才能使其工作
William Saunders

2
@Jehoshuah它将Grub设置为系统启动管理器,而不是Windows启动管理器,这意味着当系统启动时,它将运行Grub。BCD代表“引导配置数据”。
wjandrea

7
注意:要查找该命令的最后一个参数的路径,可以使用bcdedit /enum firmware。如果您使用的是其他Linux发行版,并且您的搜索引擎将您放在此处,这将有所帮助:-)
David Faure

19

链接上描述了唯一对我有用的解决方案, 我在这里再次介绍了该链接,只是因为在Google上更容易找到该线程。

本质上,这些步骤是:

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

    sudo mount /dev/sda2 /mnt  #Replace sda2 with your partition number
    
  4. 挂载所有其他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
    
  5. chroot进入您的安装

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

    update-grub
    grub-install /dev/sda
    update-grub
    exit
    sudo reboot
    

就是这样!我在上面提到的链接上可以学到Scott Severance。


1
部分为我工作..现在它直接启动进入linux而不显示启动菜单
PowerAktar

@PowerAktar您是否尝试过按“ ESC”显示grub菜单?
InitializeSahib

答案帮助了我。基本上,我以“尝试Ubuntu”模式启动PC并安装了启动修复程序来修复grub。Linux分区已恢复。但是修复后我丢失了Windows分区。因此,我尝试从步骤4转到步骤6。这些步骤帮助我恢复了Windows 10分区。谢谢Nir
r0ng

2
除了格式和语法较差外,此答案与链接问题中的答案几乎相同。如果您的答案本质上是其他问题的副本,那么当您赢得15个信誉后,最好将该问题标记为其他问题的重复。不要忘记为您认为有用的答案投票!
David Foerster,2016年

那是唯一对我有用的东西。我注意到(L)ubuntu不会在sda1 / EFI / boot / ...中创建任何内容,而是手动进行修复。谢谢!
user2084865

4

同样的问题,在双启动PC中从Windows7升级到10 ...我以这种方式解决:

  1. 升级Windows
  2. 在安装过程中,第一次重新启动后,我得到了grub救援提示,并通过USB记忆棒中的BootRepair修复了此问题
  3. 完成Windows安装后,GRUB消失了,并带有gparted的现场CD,我注意到所有分区都还在那里,但是所有分区都是NTFS
  4. 从Windows使用的TestDisk恢复了我的Linux分区
  5. 再次进行BootRepair,一切似乎都正常(我在GRUB菜单中复制了Windows语音。我不知道为什么,但是现在对我来说一切似乎都正常!)

我希望它对某人有用!


更多分步操作会有所帮助
Veridian 2015年

这个解决方案也为我工作..并节省了我的时间:) PS。这一步可能会有所帮助:cgsecurity.org/wiki/TestDisk_Step_By_Step
好巨人

1
TestDisk如何恢复您的Linux分区?您是否只是使用它来更改分区类型?
格雷格·贝尔

您是说Windows安装程序将ext4分区转换为NFTS吗?文件权限和符号链接之类的事情发生了什么,在NTFS上不能100%相同地表示出来?我希望部分丢失文件信息。
bluenote10 '16

4

我妻子的机器较旧(非UEFI),并且在逻辑扩展分区上安装了Ubuntu。升级到Windows 10会首先杀死grub,所以重新引导会导致“ grub rescue”提示,我通过LiveUSB的BootRepair恢复了该提示,但是Linux分区丢失了!我从LiveUSB进行了部分营救,以恢复并恢复了该分区。从那里,我从LiveUSB挂载了分区,并进行了grub安装,并且能够引导回到恢复的Ubuntu和Win10。希望这对其他人有帮助。


3
注意:在BIOS中使用Windows 7的所有用户都可以在MBR(msdos)分区驱动器上启动,而在逻辑分区中的Ubuntu则可能会出现此问题。最好先单独备份分区表。然后,如果您尚未更改分区表,则可以直接还原它。askubuntu.com/questions/654386/…Windows总是在重写分区表时“忘记”包含Linux分区。
oldfred

我希望在我妻子的机器上按下“更新到Windows 10”按钮之前,我已经阅读过此书!:)
bheeshmar

2
您能否提供指向“ BootRepair”和“ parted抢救”和/或“ LiveUSB”的链接?这些事情很多,人们可能会对使用您所做的事情感兴趣(我在Google上找不到它们)。
格雷格·贝尔

Windows执行升级时,@ oldfred Windows会重写表吗?太恐怖了
Android开发人员2016年

2

您检查启动顺序的顺序了吗?如果Microsoft引导加载程序位于2号位置,请将其移至底部并重新引导。

您可以通过sudo efibootmgr -v在终端中运行从Ubuntu中进行检查。


2

我们在此处提供了许多答案,以提供有关如何解决此问题的步骤(由于最新的Win10更新,导致Grub菜单丢失)。各种答案都证明该解决方案不是唯一的,因为计算机配置不是唯一的。

对于我的系统(Acer E5-575G-57D4),以下是修复程序:

简短答案

1)在Windows中,正如Nicholas在回答中提到的那样,在Windows命令提示符下以管理员身份输入以下命令。

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

2)使用Live Ubuntu CD / USB 运行启动修复实用程序。

长答案:

1)登录Windows。

2)创建一个可启动的USB记忆棒(使用您的Ubuntu版本)并将其插入。

3)在命令提示符下以管理员身份输入此命令:

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

重新启动

4)在启动时,按F12键查看启动菜单。选择“ Linux”。注意:为此,必须在BIOS设置中启用“ F12引导菜单”(引导时按F2)。

5)在Live Ubuntu会话中,选择菜单“尝试不安装ubuntu” 。

6)连接到您的WiFi。使用以下命令下载并运行引导修复

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

只需按照提示进行操作,直到您收到grub已修复的消息。它为我工作。

谢谢 :)


1

我不确定是否相关,但是尝试从Windows 8.1 / debian双启动升级到Windows 10时遇到了一个问题。

基本上,在升级的某个时刻,我最终以grub进入救援模式,因为我的debian分区已在此过程中擦除,因此启动文件也已被擦除(我通常有一个单独的启动分区,但这次没有)。 )。从这个链接看:Windows 10升级导致grub救援

我认为问题在于Windows在升级过程中未正确写入分区表。

无论如何,我通过在Win8.1安装外部硬盘上启动并按照以下说明进行了操作来解决了该问题:https : //neosmart.net/wiki/fix-mbr/(向下滚动至win8 / 8.1)。那擦了擦grub,然后重新安装了mSoft的启动加载器。然后我设法完成了升级并重新安装了debian,因为当时我还没有意识到这仅仅是分区表编写不正确的问题。还有一个更好的解决方案是尝试恢复分区表(使用testdisk?),然后重新安装/更新grub。

希望能有所帮助。

PS:谢谢Microsoft没有对那些具有双重启动配置的人提供任何帮助...


我也因为升级而遭受了分区擦除。
刘易斯·戈达德

我不明白的是,当我对/ opt和linux-swap保留了两个其他逻辑分区时,只有根linux分区被抹掉了。当然,如果真的窗口遇到了麻烦,在表中写逻辑分区的应该遭受太多...
杰里米里维耶尔

1
尚未看到UEFI / gpt系统无法正确写入分区表的问题。但是任何在逻辑分区中具有BIOS / MBR和Linux的Windows 7或8似乎都存在此问题。askubuntu.com/questions/654386/…所有其他缺少分区的问题,只有一个LInux分区为逻辑分区。但是现在,Windows仅“忘记”写入/(根)分区似乎非常奇怪。即使重新安装Windows 7,也已经看到很多年了。
oldfred

1
@oldfred如果逻辑分区没有按顺序编号,即sda6在扩展分区内的sda5之前,则发生这种情况,而不仅仅是它们是Linux分区(在我的情况下为删除的Linux swap和NTFS)。如果Windows 10升级不适合其引导分区,则有时会为恢复环境创建一个新分区。
马丁·桑顿

1

我使用了raidtux / supergrubdisk。从我的Android平板电脑上的DriveDroid启动了它。然后使用自动检测resulttux。进入WINDOWS按钮,点击betaWindowsMBR修复按钮。并选择/ dev / sda2 ok ok ok。然后说成功。现在,我刚刚重新启动进入Windows uefi菜单。


1

我的解决方法接近@Francesco,但有些不同。

  1. 从7到10升级Windows。
  2. 在安装过程中,第一次重新启动后,我得到了grub抢救提示,并用USB记忆棒中的BootRepair修复了此问题。
  3. Grub现在出现,但仅显示Ubuntu分区,而不显示Windows。
  4. 登录Ubuntu,进入终端并输入 update-grub
  5. 现在Windows在grub菜单中显示备份,继续Windows 10升级。

就我而言,我的系统在BootRepair之后启动进入Windows。
tbear 2015年

1
此外,所有Linux分区都像Francesco一样消失了。你真幸运
tbear 2015年

@tbear那么您如何康复?
格雷格·贝尔

1

如果您有Win10安装介质,则可以使用它来安装新的全新MBR。只需启动引导,您就会看到“立即安装”(或类似内容),但不要单击它。有一个小链接,上面写着“维修工具”(或其他内容)。由此您可以输入命令提示符。

cd c:\windows\system32
bootrec /fixmbr

甚至会

bootrec /fixboot

这应该可以解决问题。但是,由于Microsoft对人们自己选择的无知,您的Linux早已不复存在。他们刚刚决定可以删除HDD上可用的和不喜欢的任何内容。因此,我们可以合法地认为MS是一堆蠢货...

可从https://www.microsoft.com/zh-cn/software-download/windows10免费获得Win10安装媒体创建器工具


0

15年8月8日,我从Windows 7升级到Windows 10,在安装Windows10之后,我将Firefox设置为默认浏览器并关闭了我的PC,等待15秒钟并打开了PC的电源,甚至没想到它会给我仍然在5秒内选择Ubuntu的选项。我单击了Ubuntu,它似乎一直挂着灰色屏幕,看起来似乎是永恒的,但是我什么也没做,只是点击键盘上的Enter键以尝试使事情发生然后等待,然后出现熟悉的黑屏,选择Ubuntu或高级选项。它可以在Ubuntu中正常启动。在Windows 10中关闭电源并启动后,Windows中的时间和日期显示了5个小时的速度,就像Windows 7在使用Ubuntu,LOL之后一样。下次我选择Ubuntu启动时,启动等待时间要短得多。


0

对我来说,这个过程非常复杂。我使用启动修复程序从USB记忆棒中取出,并在移除USB记忆棒并重新启动计算机后才出现ubuntu登录选项。我登录安装在计算机硬盘中的Ubuntu,然后再次使用启动修复。在那之后,当我现在重新启动计算机时,我可以选择登录Unbunt和winsows 10,并且可以正常工作。


-2

在Acer Aspire-AXC-605上升级到Windows 10之后,我无法启动到ubuntu,F2键也无法启动BIOS屏幕,因此无法从USB ubuntu live启动。

我必须在启动时使用Esc键,这会弹出“诊断PC”屏幕,我可以从那里启动USB。


这并不能真正回答问题。
TheWanderer 2015年

@ Zacharee1用户提出的解决方案是“命中方法,进入诊断PC屏幕,其中提供USB引导选项”。这不是一个很好的答案,但它是一种尝试。
托马斯·沃德

@ThomasW。好。我真的看不出来。
TheWanderer 2015年

@ Zacharee1看到了我的编辑-对其进行了拆分,但要点是,虽然这是一个答案,但这并不是一个很好的答案,并且它并没有真正提供一个很好的答案
Thomas Ward
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.