Windows更新后,Grub和Ubuntu消失了

我在双启动时安装了Windows 10和Ubuntu 14.04。 每个大约125GB。

Windows更新后,PC只显示了grub救援终端。 我既不能使用Ubuntu也不能使用Windows。

我插入了liveCD并运行了boot-repair。

之后Windows正常出现,但没有GRUB,也没有Ubuntu。

这是我运行sudo fdisk -l时得到的:

在此处输入图像描述

Ubuntu必须是/dev/sda2/dev/sda4 ,因为它们是最大的分区,但它们都不被认为是Linux系统。

我该怎么办?

Windows 10周年更新,我了解Windows 10 Creators Update是相同的,两者都可以删除Linux分区,没有特别的原因。 尚未完全了解哪些因素会触发此操作,但可能与M​​BR格式的磁盘有关。

你的sda4是一个扩展分区,目前包含sda5交换分区,并且还保存了之前的Ubuntu分区,大概是sda6 …位于块253681662和484151295之间。

您可以尝试使用testdisk来恢复分区。

启动到Ubuntu Live DVD / USB,并在terminal类型中:

 sudo apt-get update sudo apt-get install testdisk sudo testdisk 

有关如何使用此工具的帮助,请参见http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step 。

为了详细说明heynnema的答案,Windows分区工具有很多错误导致它们删除逻辑分区或将它们不适当地转换为主要分区,从而导致严重的问题。 我尝试使用谷歌搜索的例子,但我找到了这个,关于Windows XP。 Windows XP! 这就是这些错误存在的时间。 我100%肯定还有其他错误报告,但它们可能已经足够大了,以至于谷歌不会在搜索结果的前几页中将它们提升。 自Windows 8发布以来,基于MBR的安装数量一直在下降,因此问题报告的数量一直在减少。

事实上,我对这类问题的问题报告感到非常沮丧,我在2011年编写了FixParts,它基于(和部分)我的GPT fdisk实用程序套件,安装在Ubuntu的gdisk包中。 但是,FixParts不会解决您的具体问题; 正如heynnema所说,你需要TestDisk(或类似的东西)。 我提到这是另一个例子,说明这些Windows磁盘分区错误的常见和长期存在。

从您的情况中收集一些实用的建议:

  • 尽可能少地使用Windows分区工具,尤其是在MBR磁盘上,尤其是在具有扩展和逻辑分区的MBR磁盘上。 当然,Windows更新(例如您报告已完成)可能很难(或至少不需要)来避免….
  • 如果您必须直接使用Windows分区工具,或者作为更新操作的一部分,请先备份磁盘。 这包括传统文件备份和分区表备份。 您可以使用sudo sfdisk -d /dev/sda > parts.txtsudo sfdisk -d /dev/sda > parts.txt执行后者操作,该命令将sudo sfdisk -d /dev/sda > parts.txt上的分区表备份到parts.txt 。 如果你需要恢复该分区表,你可以使用sudo sfdisk -f /dev/sda < parts.txt ; 但是,如果Windows修改了您的分区表,它可能已经进行了必须保留的更改(比如调整Windows分区的大小),所以要小心。 但是,备份可能仍然有助于有选择地恢复已删除的Linux分区。 ( sfdisk分区表备份是人类可读的,但您需要了解一点才能理解其格式。)
  • 尽可能使用GPT和EFI安装而不是MBR和BIOS安装。 由于GPT不使用扩展或逻辑分区,因此Windows工具在处理它们时遇到的问题对于GPT磁盘来说并不重要。 我不知道Windows分区工具处理GPT磁盘的任何错误,这些错误都发生在您处理MBR磁盘时遇到的错误问题级别附近。 当然,如果您的计算机只是BIOS,那么这不是一个选择; 从MBR / BIOS转换为GPT / EFI会带来风险,可能比它的价值更加麻烦。 (如果你想查看它, 这个Windows工具将进行转换。但是,请注意,我不知道它对双启动配置的效果如何。)

如果您在Windows上,请搜索“命令提示符”并以管理员身份运行。 然后,在命令行中键入:

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

然后,重启,你很高兴。 如果要反转设置,请键入:

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

这是在Windows上获取grub的最简单方法。