EFI system partition (简体中文)
EFI 系统分区(也称为 ESP 或者 EFISYS)是一个 FAT32 格式的物理分区 (在硬盘主分区表上,而不是 LVM 或软件 RAID 等等) ,从这里 UEFI 固件启动 UEFI 引导器和应用程序。
它与操作系统无关而是作为 EFI 固件要启动的引导器和应用程序的存储空间,是 UEFI 启动所必须。
推荐使用 GPT 和 UEFI 搭配因为有的 UEFI 固件不支持 UEFI-MBR 启动。
创建分区
推荐 ESP 大小为 512 MiB, 不过大一点小一点都没问题。
Microsoft 文献注解了 ESP 大小: 对高级格式化 (Advanced Format) 4K 本地驱动器 (每扇区4KB) 来说,由于 FAT32 文件格式的限制,最小为 260 MB。 FAT32 的最小分区大小可由扇区大小 (4KB) x 65527 = 算出 256 MB。高级格式化 512e 驱动器不受此限制影响,因为其虚拟扇区是 512B. 512 bytes x 65527 = 32 MB, 这比 100 MB 最小限制还要小。[1]
GPT 磁盘分区
-
fdisk/gdisk: 创建类型为 EFI System (
EFI System
(在 fdisk 中) 或ef00
(在 gdisk 中)的分区。然后运行mkfs.fat -F32 /dev/<THAT_PARTITION>
格式化为 FAT32 格式。
(或)
-
GNU Parted: 创建一个 FAT32 分区然后在 Parted 中为那个分区设置/激活
boot
参数 (不是legacy_boot
参数).
WARNING: Not enough clusters for a 32 bit FAT!
, 运行 mkfs.fat -s2 -F32 ...
或 -s1
以减小簇大小,否则 UEFI 无法读取分区。MBR 磁盘分区
fdisk: 使用 fdisk 创建类型为 EFI System 的分区,然后运行 mkfs.fat -F32 /dev/<THAT_PARTITION>
格式化为 FAT32.
挂载分区
为防止 EFISTUB, 内核以及 initramfs 文件应储存在 EFI 系统分区。精简起见,当以 EFISTUB 启动时你可以把 ESP 当做 /boot
分区而不是单独分一个 /boot
分区。
}}
RAID 上的 ESP
将 ESP 包含进 RAID1 组是可行的,但是会有数据污染的危险,创建 ESP 时请三思。 细节见 https://bbs.archlinux.org/viewtopic.php?pid=1398710#p1398710 和 https://bbs.archlinux.org/viewtopic.php?pid=1390741#p1390741.
技巧
Using bind mount
除了直接将 ESP 挂载到 /boot
,还可以将 ESP 中的某个目录 bind mount 挂载到 /boot
(参考 mount(8)
). 用这种方式,pacman 可以直接更新目录,而 ESP 分区上的文件可以按照需要进行放置,这个方式比文件复制要简单的多。
/boot
). 讨论帖 在这里.参考 EFI system partition#Alternative mount points, 将所有文件复制到 ESP 下的某个目录,将 ESP 挂载到 /boot
之外的地方 (例如 /esp
)。然后 bind mount 目录:
# mount --bind /esp/EFI/arch/ /boot
这样 /boot
下就有了你需要的文件,编辑 Fstab:
/etc/fstab
/esp/EFI/arch /boot none defaults,bind 0 0
root=system_root
内核参数 才能通过此方法启动。