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

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

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

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

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

作为参考,我正在使用:Ubuntu Server 14.04.3 64位 mdadm RAID 设置,通过分区器中的“手动”选项进行。

答案1

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

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

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

相关内容