Fedora18升级到Fedora19后,如何让grub2链式启动Win8?

Fedora18升级到Fedora19后,如何让grub2链式启动Win8?

故事

拥有联想 IdeaPad U310,配备 24gb SSD、500gb HDD 和 UEFI 系统。我使用 U410 的 EFI 刷新了它,了解更多信息http://forums.lenovo.com/t5/Linux-Discussion/Installing-Fedora-17-on-U310-i7-power-button-wifi-noise-problem/mp/927429#M4376。 那里预装了 Win7拥有 iRST 等所有这些超创新技术。 磁盘有旧的 MBR 表,因此我使用实时 Fedora usb 通过 gparted 将两个磁盘格式化为 GPT。这清除了所有数据。Fedora17 在 UEFI 模式下看不到带有 MBR 的磁盘,但 GPT 安装却顺利进行。

第一次安装过程;首先我将 Fedora17 安装到 SSD作为 LVM 安装,我让 HDD 保持原样,没有任何变化。GRUB2 也安装在 SSD 上。(分区布局;

  • sda1 200M /启动/efi
  • sda2 500M /启动
  • sda3 其余 LVM 带有 root 和 swap)

在 Fedora 中,我将硬盘格式化为 400GB ext4 数据分区,并留出 100GB 空间用于安装 Windows。我以为如果我在两个独立的磁盘中有两个操作系统,我可以从 EFI 启动菜单(启动计算机时按 F12)解决启动问题,但我错了。过了一段时间,我只使用 Linux 计算机(这很棒,在发布 Linux 版 Steam 后,我甚至可以在那里玩游戏,在 eclipse 中进行 C 编程也很完美) 然后我将Win8安装到HDD上。Windows 将其无用的 128MB 分区创建为 Windows 保留分区,随后再创建系统分区。它没有为引导加载程序创建自己的 EFI 分区!我认为它只是使用了 Linux 并将引导加载程序写入 sda1。

一切进展顺利。Grub2 没有看到 Windows 8因此它无法链式启动窗口,但这不是问题。我可以在 EFI 启动菜单中选择 Windows 启动管理器选项,它启动了 Windows 8并且没有启动 grub2。我已经用了几个月了。

我将 Fedora 17 升级到了 Fedora 18(它是相当全新的安装)我还没有意识到Windows 和 Fedora 在 sda1 上共享 EFI 分区(我不太清楚,但似乎就是这样的)。因此,新安装的Fedora 18 格式化 SSD 上的所有分区并在那里全新安装。它删除了 EFI 上的 Windows 数据分区也是如此,所以 Windows 根本无法启动。

答案1

(作为发布经过B0D_Mr4ZU

我希望 grub2 直接启动 Windows。我根本无法那样做。我为 grub2 制作了菜单项;在 /etc/grub.d/40_custom 中我添加了

menuentry "Windows 8 UEFI" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root **4013-6F8C**
chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}

4013-6F8C是我的 EFI 分区的 UUID(在我的情况下是 sda1,win 和 linux 只有一个)。如果你的系统有自己的 Windows EFI 分区(默认情况下,windows EFI 有 100MB,而 linux 有 200MB),请使用 windows 的 UUID。我找到了所有分区中哪些是 EFI;gdisk -l /dev/sda并且gdisk -l /dev/sdb(我发现我只有一个 EFI 分区)。然后我需要 sda1 的 UUID。我曾经grub2-probe -t fs_uuid -d /dev/sda1找到它。我编辑了 40_custom 文件,保存了它并将设置应用于 grub 2。grub2-mkconfig然后grub2-install(有些系统有脚本来应用 grub 设置,但我使用了这种方法。)重新启动后,我在 grub2 菜单中有了 windows 的菜单项,但它没有启动 windows,因为bootmgfw.efisda1 的 /boot/efi/EFI/Microsoft/Boot 文件夹中缺少它。我启动了 Fedora,挂载了 Windows 分区,并将所有文件从 \Windows\Boot\EFI(它包含一些语言环境文件 en-GB、en-US...... 和我正在寻找的 .efi 文件 bootmgfw.efi、bootmgr.efi......)复制到 sda1 上的 /boot/efi/EFI/Microsoft/Boot 文件夹。


重启后,grub2 菜单显示 Windows 选项,并以 charm 形式启动。Fedora 也启动正常,没有任何问题。不过有一个问题……首先,grub2 菜单项无法启动,可能是内存损坏。但在这种情况下,它会保留“较旧”的内核,因此我启动了较旧的内核,它运行正常。我可以等待新内核,更新后,这类问题会自行解决,或者我可以卸载内核,然后尝试再次手动安装。


哦...还有一件事...尽量避免通过 Windows 安装 DVD 重新安装 Windows 启动管理器。它只会擦除磁盘的启动扇区,在最坏的情况下,您将无法启动 Linux 和 Windows。(Windows 启动管理器不擅长查找除 MS OS 之外的任何其他操作系统,因此它不会启动 Linux 或通过 grub 进行链式启动)

如果这对某人有所帮助,我会非常高兴。祝您有美好的一天。

答案2

也可以看看https://bugzilla.redhat.com/show_bug.cgi?id=972355(基本上需要 os-prober >= 1.58 和修复了该错误的 grub2)。

相关内容