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

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

我似乎几乎完全搞砸了我的机器。我试图将 ubuntu liveusb 安装到我的外部硬盘上,但在此过程中我搞乱了我的内部设置。外部的可以工作 ;)

它是一个双启动系统,最初带有 win8 以及一大堆联想/windows 恢复分区。它还有一个 24gb SSD 混合。我之前禁用了安全启动,安装了 ubuntu 13.04,最近升级到了 14.04。在我遇到小事故之前,它运行良好。现在我的所有启动标志似乎也在不断变化。我不太清楚为什么。


启动修复的输出(它不允许我选择 /dev/sda2 或 /dev/sda11,只能选择 sda8(这是我的主分区?)。我还是尝试了一下。它说成功了,但显然没有做任何事情。

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


我的(许多)分区如下:

/dev/sda1 -- WINRE_DRV (1000mb ntfs,标志:隐藏,诊断)

/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,标志:隐藏?)——我的 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。从那里我能够正确使用启动修复来安装 grub(到 /dev/sda11)并启动 /dev/sda6。

之前 boot-repair 的问题是它没有检测到我的 EFI 分区,所以它试图将非 efi 安装到我的 /dev/sda6(可能是因为我是从 livecd 执行的)。不过,这似乎是 ubuntu14.04 附带的 grub 的问题,它不支持 EFI 还是什么?

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

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

谢谢!

答案1

首先,你缺少一个EFI 系统分区 (ESP),它用于保存 EFI 引导加载程序。大多数搭载 Windows 8 的计算机都将其/dev/sda2用作 ESP,您的/dev/sda2大小也正好适合;但您的/dev/sda2ESP 保存的是 Linux 文件系统,没有 EFI 引导加载程序。因此,我的直觉是,您不小心破坏了 ESP,导致计算机无法启动。

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

你的/dev/sda11大小适合作为 ESP,并且有一个 FAT 文件系统(ESP 必须有),但它被标记为BIOS 启动分区。

首先,您必须创建适当的 ESP。有两种相对简单的方法可以做到这一点:

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

完成后,您就可以开始恢复了。理论上,您可以使用 Boot Repair 来完成这项任务,至少对于 Linux 来说是这样;但是看起来它之前让你走上了错误的道路,你可能需要做一些不同的事情:

  1. 下载并准备可启动的 USB 闪存驱动器或 CD-R 版本的我的rEFInd 启动管理器。
  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. 下载并安装 Debian 软件包版本的 rEFInd。

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

相关内容