最近,我在主机上安装了 Windows 10 - 后来发现它破坏了我的整个 Linux 启动分区:
sdb
├─sdb1 ext4 Root 07a703e4-173a-4e54-b425-baa69a220a64 /
├─sdb2 vfat 2C45-FE61 /boot
├─sdb3 ext4 Home 00477b16-d04d-4cc7-bb56-32138146b74d /home
├─sdb4 swap Swap 578c2f2d-1a07-4bae-a235-dbf52dae300f [SWAP]
├─sdb5
└─sdb6 ntfs Win_OS 9292422592420E63 /media/Win_OS
我让 Syslinux 和 Arch 正常工作,但现在我找不到成功创建 Syslinux 条目以启动 Windows 的方法。但是,如果我从 MB 启动菜单中选择“Windows 启动管理器”,它就可以正常启动。
我当前的 syslinux.cfg:(好吧,只是其中的一部分)
...
LABEL Arch
MENU LABEL Arch_64
LINUX ../vmlinuz-linux
APPEND root=UUID=07a703e4-173a-4e54-b425-baa69a220a64 rw
INITRD ../initramfs-linux.img
LABEL Win10
MENU LABEL Windows_10
COM32 chain.c32
APPEND hd1
编辑1#:
我忘了提一下,我还在 /EFI/ 文件夹中安装了 UEFI syslinux,与 Windows 的 Microsoft 和 Boot 文件夹一起,同样,它适用于 Linux,但不适用于 Windows - 无论我使用 UUID、标签、磁盘和分区号...
答案1
经过进一步挖掘,我发现了一段关于ArchLinux 维基陈述:
UEFI Syslinux 不支持链式加载其他 EFI 应用程序,如 UEFI Shell 或 Windows Boot Manager
事实上,即使在 2013 年提出功能请求之后,他们仍然没有实现这个非常重要的功能。
解决方案是安装不同的支持 EFI-chainload 的引导程序,例如 GRUB。Arch 安装指南这里。