在 Windows 8.1 与 Xubuntu 14.04.2 双启动环境下无法直接从 Grub2 启动

在 Windows 8.1 与 Xubuntu 14.04.2 双启动环境下无法直接从 Grub2 启动

我在虚拟机中安装了 Windows 8.1 Professional 和 Xubuntu,但现在我想要双重启动

前两个分区是我在 Windows 8.1 中用过的((1)EFI 和(2)msftres)然后(3)分区 C: 和(4)分区 D:。

我计划将剩余的空间用于 Linux,在安装 Xubuntu 时,向导建议我为保留启动空间创建一个单独的分区(5)我让了100MB。

进而(6)映射到 / 和(7)進行交换。

parted 输出

valentin@valentin-N550JV:~$ sudo parted -l
Model: ATA WDC WD7500BPKX-8 (scsi)
Disk /dev/sda: 750GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End    Size    File system     Name                          Flags
 1      1049kB  538MB  537MB   fat32                                         boot
 2      538MB   672MB  134MB   ext4            Microsoft reserved partition  msftres
 3      672MB   323GB  322GB   ntfs            Basic data partition          msftdata
 4      323GB   478GB  155GB   ntfs            Basic data partition          msftdata
 5      478GB   478GB  99,6MB                                                bios_grub
 6      478GB   734GB  256GB   ext4
 7      734GB   750GB  16,5GB  linux-swap(v1)

问题: 我有以下启动项:Windows 启动管理器和 ubuntu(目标 \EFI\Ubuntu\grubx64.efi)。

当我从 BIOS 中选择 ubuntu 条目时,我进入 grub2 最小 shell 界面。

要真正进入 Grub2 菜单选择,我需要手动运行这些命令

set prefix=(hd1,gpt6)/boot/grub
insmod normal
normal

EasyBCD 的启动条目:

There are a total of 4 entries listed in the bootloader.

Default: Windows 8.1
Timeout: None
EasyBCD Boot Device: C:\

Entry #1
Name: CD/DVD Drive 
BCD ID: {9e3f8460-4c68-11e4-9e25-d50f39372dbe}
Device: Unknown
Bootloader Path: 

Entry #3
Name: Network Card 
BCD ID: {3e1cfad9-4c73-11e4-824e-806e6f6e6963}
Device: Unknown
Bootloader Path: 

Entry #4
Name: Windows 8.1
BCD ID: {current}
Drive: C:\
Bootloader Path: \Windows\system32\winload.efi

我已经尝试过从实时 USB 驱动器 xubuntu 进行启动修复,但由于 /dev/sda2 而失败,(2)分区(Microsoft 保留的分区)。

mount /dev/sda2 : Error code 32
mount -r /dev/sda2 /mnt/boot-sav/sda2
mount: wrong fs type, bad option, bad superblock on /dev/sda2,

请查看为参考而创建的启动修复日志,该日志已上传至 ubuntu pastebin:启动修复日志

问题解决了。谢谢 RobinHood、Rod Smith!

我更改了 grub.cfg 中的路径,现在它可以与 grub2 菜单选择器配合使用。我检索了 Linux 分区的 UUID 并将其替换到 grub.cfg 文件中。

valentin@valentin-N550JV:/media/efimnt/EFI/ubuntu$ pwd
/media/efimnt/EFI/ubuntu

valentin@valentin-N550JV:/media/efimnt/EFI/ubuntu$ sudo blkid /dev/sda6
/dev/sda6: UUID="d17d4033-8152-412f-ad06-f30ecde45d53" TYPE="ext4"

valentin@valentin-N550JV:/media/efimnt/EFI/ubuntu$ cat grub.cfg
search.fs_uuid d17d4033-8152-412f-ad06-f30ecde45d53 root hd1,gpt6
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

答案1

分区 5 不是必需的。从您的描述来看,此分区不用于 /boot。您可以将其删除。

解决方案:

  1. 您需要检查 grub.cfgEFI 分区(分区 1)\EFI\Ubuntu\grub.cfg更正 /boot 分区

例如:search.fs_uuid d17d4033-8152-412f-ad06-f30ecde45d53 root hd1,gpt6 可以使用命令找到分区的 uuid blkid

或者

  1. 修复启动使用 Ubuntu 中的 boot-repair。此应用程序将在 EFI 分区中安装 grub2 作为默认引导加载程序,而不是 easybcd 和 bootmgr。

使用引导修复来修复引导(在分区 1 中重新安装 grub2)。

你可能需要这个:

答案2

RobinHood 的答案值得考虑。启动修复应该能够解决您的问题;但有些情况下容易混淆,所以有时会失败。我还有一些信息和建议……

首先,您的/dev/sda5设置为BIOS 启动分区,用于 BIOS 模式启动,而不是 EFI 模式启动。此类分区通常大小为 1MiB,尽管它们可以稍大或稍小 - 但 100MiB 的 BIOS 启动分区实在是太大了。您可以安全地删除该分区;但这当然会浪费 100MiB 的空间。

我记不清 Ubuntu 安装程序对 BIOS 启动分区使用了什么术语。如果它使用“保留启动空间”作为 BIOS 启动分区的同义词,则表明安装程序是在 BIOS/CSM/旧模式而不是 EFI 模式下运行的。考虑到您预先存在的 Windows EFI 模式安装,这是产生问题的根源。此类问题无法修复,但如果确实发生了这种情况,最简单的方法可能是删除所有 Ubuntu 分区并重新开始。不过,这一次,你应该进入固件并禁用任何启用 BIOS 模式启动(又称传统模式启动或兼容性支持模块 [CSM])或禁用 EFI/UEFI 模式启动的选项。正如我在我关于这个主题的网页,启用 CSM 会使启动过程更加复杂,其中可能会出现更多错误。如果您使用现有的 EFI 模式安装进行双启动,则很少能从额外的复杂性中获得任何好处,因此通常的结果是没有效果或负面效果。(有时在双启动中使用 EFI 模式操作系统时启用 CSM 是有好处的,但这种情况越来越少见。)

Microsoft 保留分区被某些 Windows 分区工具用作“临时空间”。除了这些工具运行时的临时存储外,它通常是空的。出于某种原因,它被检测为系统上的 ext4fs 分区 - 很可能您曾经有一个从这个确切位置开始的 ext4fs 分区。这使您的安装变得复杂,尽管如果您使用了“其他”安装选项,您可以简单地忽略它。我建议您不要像 RobinHood 建议的那样删除分区,而是使用以下命令覆盖它:

sudo dd if=/dev/zero of=/dev/sda2

非常不过,请小心使用该命令,尤其是选项of=/dev/sda2。如果您输入了错误的目标分区,您将覆盖错误的分区,这可能会破坏您的 Windows 安装。以这种方式擦除分区将使 Windows 能够在需要时使用它,同时还可以防止它混淆 Ubuntu 安装程序。

如果你不想重新安装 Ubuntu,你可以考虑的另一个选择是安装另一个引导加载程序。其中最简单的可能是我自己的重新索引

  1. 如果您还没有这样做,请在固件中禁用安全启动。
  2. 从以下网址下载 rEFInd 的 USB 闪存驱动器或 CD-R 版本其下载页面。
  3. 准备 rEFInd 启动介质。
  4. 启动至 rEFInd。
  5. 测试 rEFInd 是否可以启动 Windows。如果不能,您可能需要重新考虑此方法或努力修复它。
  6. 再次重新启动进入 rEFInd,但这次尝试启动 Ubuntu。(rEFInd 应该至少显示一个 Ubuntu 选项。)
  7. 如果 rEFInd 启动 Ubuntu,请安装 rEFInd 的 Debian 包或 PPA。这应该会将 rEFInd 设置为计算机上的默认启动程序。
  8. 如果需要,请重新启用安全启动。如果这导致 rEFInd 无法启动,请禁用安全启动并安装 Shim 包,如 rEFInd 文档中所述。(如果 rEFInd 找到 Shim 二进制文件,它将自行设置为使用 Shim,但您的系统可能还没有这个。)

rEFInd 比 GRUB 更少出现混淆,尽管 rEFInd 与 Ubuntu 集成得不是很好,因此需要更多的设置工作,特别是如果你想使用安全启动时。如果 GRUB 运行不正常,就像你的一样,这种额外的设置工作可能比修复 GRUB 所需的工作要少,因此建议这样做。不过,在你的情况下,由于你还没有对 Ubuntu 做任何事情,而且删除 BIOS 启动分区会浪费 100MiB 的磁盘空间,因此重新安装 Ubuntu 可能比修复 GRUB 或安装 rEFInd 更好。

除此之外,如果您需要更多帮助,您还需要发布 Boot Repair 运行的详细信息。(Boot Repair 应该会给出一个 URL,其中存储了有关您的系统的详细信息。)

相关内容