我正在尝试在 UEFI 模式下和 Windows 10(BIOS-MBR)模式下双启动 Arch Linux,但我不知道如何正确对其进行分区或使用 GRUB 引导加载程序。
我在初学者指南中读到的内容说我需要将其安装在 UEFI-MBR 上,因为 Windows 10 在 MBR 上,但它也提到了一些有关引导加载程序链式加载的内容,这意味着如果我没记错的话,它不适用于此设置。
那么我需要做什么?
如果需要,我可以先在 UEFI 上重新安装 Windows 10
答案1
是的,如果您已经安装了 Windows 10 BIOS/MBR,最简单的方法是使用为 Arch 准备的部分空间(100MB 左右)创建一个 EFI 系统分区(FAT32)。只要您的主板具有符合标准的 UEFI,UEFI/MBR 就可以工作。
但是这样 grub 将无法链式加载 Windows 启动管理器(除非您bcdboot
在 Windows 中将一组 UEFI 版本安装到 ESP)。您需要使用 UEFI 的启动菜单在 UEFI(Linux)和传统启动模式(Windows)之间切换。您也可以尝试重新索引尽管。
如果您不介意重新安装 Windows,请确保以 UEFI 模式启动安装介质,以便获得 UEFI/GPT Windows 安装。然后,您很可能希望与 Arch(grub、systemd-boot……)共享 Windows 创建的 ESP。
答案2
通常,您无法从 UEFI 引导加载程序链式加载到 BIOS 引导加载程序,反之亦然。您能做的最好的事情就是在 Windows 和 GRUB 之间进行选择固件启动菜单(F12 或 Esc 后面的菜单),因为大多数固件也将 BIOS 模式磁盘列为特殊的 UEFI 启动项。
在这种情况下,安装过程与常规 Arch 安装相同(因为双启动将完全在固件级别处理)。您需要创建一个 EFI 系统分区(~200 MB vfat),在 UEFI 模式下安装 Linux,然后放入 grub2 或更简单的systemd-boot在 ESP 中 – 就是这样。
然而,实际上以相同的方式安装两个操作系统会更好(至少不会太混乱)(理想情况下是 UEFI 模式,但两种模式都可以);这样,你可以从 grub 或 sd-boot 链式加载 Windows 的 BOOTMGR。
(如果需要,您可以将 MBR 磁盘转换为 GPT,gdisk
而不会丢失任何数据。)
答案3
我也陷入了同样的境地,昨天我成功地配置好了一切。您可以在 BIOS 菜单中设置进行传统启动,然后尝试启动到 Arch Linux。
如果在启动过程中打开 grub 命令行,请尝试查找包含 的分区/grub
。理想情况下,您可以 -
ls
>> (hd0,msdos0), (hd0,msdos1), ...
ls (hd0,msdosX) (where X is the number which contains grub)
>> /boot ...
现在您可以相应地设置 grub 变量并执行启动。
set root=hd0,msdosX
set prefix=(hd0,msdosX)/boot/grub
insmod normal
normal
这可能会加载 grub 指向的操作系统。如果其中有多个条目,您将获得可供选择的选项。如果缺少 Windows 条目,您可以转到 Linux 并添加它。
os-prober
update-grub
就是这样。现在重新启动应该可以解决所有问题。