完全搞砸了grub / efi / gpt双启动

我好像差点搞砸了我的机器。 我试图在我的外部硬盘上安装一个ubuntu liveusb,但是在这个过程中我搞砸了我的内部设置。 外部工作;)

它是一个双启动系统,它最初带有win8以及一大堆联想/ Windows恢复分区。 它还有一个24GB的SSD混合动力车。 我之前禁用了secureboot,并安装了ubuntu 13.04,最近升级到了14.04。 它一直很好,直到我的小小的冒险。 我的所有引导标志现在似乎也在不断变化。 我不完全确定为什么。


引导修复的输出(这不允许我选择/ dev / sda2或/ dev / sda11,只有sda8(这是我的主分区?)。无论如何我试过了。它说它成功了但是没有做什么明显的。

http://paste.ubuntu.com/7303953/


我的(很多)分区如下:

/ dev / sda1 – WINRE_DRV(1000mb ntfs,flags:hidden,diag)

/ dev / sda2 – 这是我原来的EFI分区(我最初标记为SYSTEM_DRV,格式为fat32,但现在它是一个无法识别的文件系统)。

/ dev / sda3 – 未知,msftres ??

/ dev / sda4 – Windows8操作系统(68GB ntfs,标志:msftdata)

/ dev / sda11 – 我创建了这个带有’boot’标志的fat32,希望创建另一个efi分区并移动它,但它似乎没有被引导修复识别。

/ dev / sda5(350mb,ntfs flags:hidden,diag) – 不知道这是什么。

/ dev / sda6 (20GB ext4,flags:hidden?) – 我的ubuntu系统分区。 不知道为什么它现在有一个’隐藏’标志。

/ dev / sda7 – 4GB交换

/ dev / sda8 – 我的ubuntu主分区(75gb ext3,标志:msftdata)

/ dev / sda10 – 290GB ntfs共享数据分区(标志:msftdata)

/ dev / sda9 – 联想恢复(10GB ntfs,标志:隐藏,诊断)


有些事情在这里被严重搞砸了。 我真的更愿意不重新格式化。 我已经阅读了大部分有关UEFI和GPT等的文章,但我似乎无法解决我的问题,实际上似乎只是让它变得更糟。

livecd grub也可能没有使用正确的文件? 它试图安装i386-pc,当我以为我应该使用像x86_64-efi-signed之类的东西。

请问有人可以帮助我解决这个问题吗?


编辑:

好的,所以我下载并安装了rEFInd到windows并用它制作了一个可启动的USB,这让我可以启动到我的实际Linux操作系统而不是LiveCD。 从那里我能够正确使用boot-repair来安装grub(到/ dev / sda11)并启动/ dev / sda6。

之前启动修复的问题是它没有检测到我的EFI分区,所以它试图将非efi安装到我的/ dev / sda6(可能是因为我是从livecd那里做的)。 这似乎与ubuntu14.04附带的grub有关,它没有EFI支持或什么?

无论如何,现在我在/ dev / sda11上有EFI,但我有两个未知的分区(sda2和sda3)。 什么是sda3首先? 我能用sda2及其上的文件做什么(比如联想恢复的东西)? 我可以删除这些分区,还是会导致更多问题?

最后, 现在只是运行Windows恢复的问题 ? 我想这会再次破坏我的ubuntu和grub。

谢谢!

首先,您缺少EFI系统分区(ESP),它用于保存EFI引导加载程序。 Windows 8附带的大多数计算机都使用/dev/sda2作为ESP,而你的/dev/sda2大小合适; 但你的/dev/sda2拥有一个Linux文件系统并且没有EFI启动加载器。 因此,我的预感是你不小心破坏了ESP,导致计算机无法启动。

与第一点相关,您的硬盘或SSD上似乎没有任何EFI引导加载程序。

您的/dev/sda11大小适合作为ESP,并且具有FAT文件系统(ESP必须具有),但它被标记为BIOS引导分区。

作为第一步,您必须创建一个合适的ESP。 有两种相对简单的方法可以做到这一点:

  • 调整/dev/sda11上的类型代码。 在GParted中,您可以通过删除“bios_grub标志”并设置“引导标志”来完成此操作。 在gdisk ,您可以通过将类型代码设置为EF00来完成此EF00
  • 调整/dev/sda2上的类型代码并使其成为FAT32。 在GParted中,您可以通过设置“引导标志”并在其上创建FAT32文件系统来完成此操作。 在gdisk ,您将类型代码设置为EF00 ,然后使用单独的mkdosfs实用程序在分区上创建FAT32文件系统。

完成后,您就可以开始恢复了。 从理论上讲,您可以使用Boot Repair来完成任务,至少对Linux来说是这样; 但是因为它似乎导致你走错了路,你可能想要做一些不同的事情:

  1. 下载并准备我的rEFInd启动管理器的可启动USB闪存驱动器或CD-R版本。
  2. 用rEFInd启动。 它应该向您显示至少一个用于启动Linux的选项。
  3. 启动到Linux。
  4. 打开终端窗口。
  5. 编辑/etc/fstab文件以将ESP( /dev/sda2/dev/sda11 )安装到/boot/efi
  6. 输入sudo mount -a
  7. 键入df -h并确保/boot/efi有一行,显示正确安装的分区。 如果没有,请返回步骤#5。
  8. 下载并安装rEFInd的Debian软件包版本。

此时,rEFInd应该能够启动Linux。 但是,在运行Windows恢复工具之前,Windows安装将无法启动。 您应该可以从Microsoft的站点下载一些东西来修复Windows引导加载程序,但我没有附带的URL或说明。 我建议您在Windows站点上询问是否遇到此部分任务的问题。 请注意,完成后,Windows引导加载程序将被设置为默认值,因此您需要更改它。 您可以按照此过程中的步骤2和10-11进行操作,也可以使用USB闪存驱动器启动到Linux,然后从那里重新安装rEFInd。 或者,您可以在修复Linux之前修复Windows,但在执行特定于操作系统的修复之前,您需要修复ESP。