为什么 uEFI 固件无法访问软件 RAID 1 /boot/efi 分区?

med*_*bot 6 raid ubuntu mdadm gpt uefi

BIOS 固件可以引导安装在软件 RAID 1 对上的 BIOS 格式的 /boot 分区,没问题。它甚至可以从安装在 LVM 卷上的 /boot 启动,该卷位于软件 RAID 1 对上。

但是对于 uEFI 安装,/boot/efi 必须位于非 md 分区上,否则固件无法访问它。

这是 uEFI 固件的缺陷吗?或者是 Ubuntu 如何在软件 RAID 设备上设置 /boot/efi 的问题?GPT 分区表将软件 RAID 呈现给固件的方式是否存在缺陷?

作为参考,我正在使用:Ubuntu Server 14.04.3 64 位 mdadm RAID 设置,来自分区程序中的“手动”选项。

pgo*_*etz 11

EFI 知道如何访问 FAT 和 FAT32 文件系统。这就是您的 EFI 引导分区必须是 FAT 或 FAT32 格式的原因。然而,EFI知道如何读取软件 RAID 1 分区,即使它是使用 FAT32 格式化的。对此有一个非常简单的方法,至少使用 Arch Linux。安装系统时,您将引导分区设置为 FAT32 格式的 raid,但您指示 EFI 从各个分区引导。具体来说,你这样做。

 mdadm --create /dev/md0 --metadata 1.0 --raid-devices=2 --level=1 /dev/sd[ab]1
 mkfs.fat -F32 /dev/md0
Run Code Online (Sandbox Code Playgroud)

然后继续安装。至于EFI而言,虽然,引导分区的/ dev / sda1和的/ dev / SB1独立。您将每个设置为引导设备,然后如果 /dev/sda 失败,系统仍将从 /dev/sdb1 引导。系统启动后,/dev/md0 RAID 1 启动,确保/dev/sda1 和/dev/sdb1 保持同步。

我所有的系统都是这样设置的,没有任何问题。(请注意,在引导分区上安装软件 raid 时,必须将 mdadm 元数据设置为 1.0。)