您可以使用 Windows 8 启动管理器从第二个硬盘启动 Linux 吗?UEFI/GPT

您可以使用 Windows 8 启动管理器从第二个硬盘启动 Linux 吗?UEFI/GPT

根据在线资料推测,对于 UEFI/GPT 系统来说,这是不可能的。

我的设置是 SSD 上的 Windows 8.1 操作系统和 1TB SATA HDD 用于存储数据/音乐/图片等。

我最近想加载 Archlinux,并决定调整 1TB 硬盘的大小,以便为 Linux 提供 100GB。我能够成功安装,并且能够通过 BIOS 启动 UEFI Linux 安装。

但是,要在 Windows 8.1 和 Linux 之间切换,我必须在重新启动时按 DEL,进入 BIOS,单击 BOOT 菜单,然后单击 1TB HDD 上启动分区的 arch_grub 条目。

理想情况下,我希望让 Windows 8 Bootmanager 显示 Archlinux 的条目并从那里启动 linux EFI 分区。

我的设置

Primary SSD (Win8)
|- /dev/sda1 – recovery (ntfs)
|- /dev/sda2 – boot (fat32)
|- /dev/sda3 – unknown
|- /dev/sda4 – windows primary (ntfs)

Secondary HDD (Windows Data Disk / Archlinux install)
|- /dev/sdb1 – unknown
|- /dev/sdb2 – windows secondary (ntfs)
|- /dev/sdb3 – /boot (fat32)
|- /dev/sdb4 – /mnt (ext4)
|- /dev/sdb5 – /mnt/var (ext4)
|- /dev/sdb6 – swap
|- /dev/sdb7 – /mnt/home (ext4)

我将单独的 /boot 分区格式化为 FAT32,并使用以下命令将 GRUB 安装到该分区:

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug --force /dev/sdb3

这使我能够从 Windows(驱动器 H:)看到 linux /boot 分区,其结构如下:

/boot/
  |-EFI/arch_grub/grubx64.efi
  |-grub/
      |-fonts/...
      |-locale/...
      |-themes/...
      |-x86_64-efi/...
      |-grub.cfg
      |-grub.cfg.example
      |-grubenv
  |- initramfs-linux
  |- initramfs-linux-fallback
  |- vmlinuz-linux

我尝试过的:

  1. 按照众所周知的步骤配置bcdedit指导在 Archlinux wiki 中引用。

这会导致启动错误,并要求用户重新启动操作系统。只有 Windows 选项有效。我怀疑这是因为 Linux 位于第二个硬盘上。

  1. 使用 Grub4Dos 方法,将 grldr 和 grldr.mbr 放在 C: 中,创建一个 bcdedit 条目,其中包含指向 grldr.mbr 的路径。配置 menu.lst 并将其放在 C: 中。menu.lst 如下所示:

标题 Linux

根(hd1,2)

内核/boot/vmlinuz-linux root=/dev/sdb3

initrd /boot/initramfs-linux.img

这会导致与 1 相同的启动错误。我怀疑这是因为不支持在 UEFI/GPT 环境中加载 MBR。

  1. 创建了一个 bcdedit 条目,目录设置为 H:(linux fat32 /boot 分区),路径指向 EFI/arch_grub/grubx64.efi

这又导致同样的错误。我怀疑这是因为 bcdedit 无法在第二个硬盘上运行。

有人能对这个问题提供见解/指导吗?

相关内容