EFI System Partition
The EFI System Partition (also called ESP or EFISYS) is a FAT32 formatted physical partition (in the main partition table of the disk, not under LVM or software RAID etc.) from where the UEFI firmware launches the UEFI bootloader and application.
It is an OS independent partition that acts as the storage place for the EFI bootloaders and applications to be launched by the EFI firmware. It is mandatory for UEFI boot.
Contents
Create the partition
The following two sections show how to create an EFI System Partition (ESP).
It is recommended to keep ESP size at 512 MiB although smaller/larger sizes are fine. [1]
According to a Microsoft note[2], the minimum size for the EFI System Partition (ESP) would be 100 MB, though this is not stated in the UEFI Specification. Note that for Advanced Format 4K Native drives (4-KB-per-sector) drives, the size is at least 260 MB, because it is the minimum partition size of FAT32 drives (calculated as sector size (4KB) x 65527 = 256 MB), due to a limitation of the FAT32 file format.
GPT partitioned disks
Choose one of the following methods to create an ESP for a GPT partitioned disk:
- fdisk/gdisk: Create a partition with partition type EFI System (
EFI System
in fdisk orEF00
in gdisk). Proceed to #Format the partition. - GNU Parted: Create a FAT32 partition and in Parted set/activate the
boot
flag (notlegacy_boot
flag) on that partition. Proceed to #Mount the partition.
MBR partitioned disks
Create a partition with partition type EFI System using fdisk. Proceed to #Format the partition.
Format the partition
After creating the ESP, you must format it as FAT32:
# mkfs.fat -F32 /dev/sdxY
If you used GNU Parted above, it should already be formatted.
If you get the message WARNING: Not enough clusters for a 32 bit FAT!
, reduce cluster size with mkfs.fat -s2 -F32 ...
or -s1
; otherwise the partition may be unreadable by UEFI.
Mount the partition
In case of EFISTUB, the kernels and initramfs files should be stored in the EFI System Partition. For sake of simplicity, you can also use the ESP as the /boot
partition itself instead of a separate /boot
partition, for EFISTUB booting. In other words, after creating and formatting the EFI System Partition as instructed above, simply mount it at /boot
.
Also see #Using bind mount.
Known issues
ESP on RAID
It is possible to make the ESP part of a RAID1 array, but doing so brings the risk of data corruption, and further considerations need to be taken when creating the ESP. See [3] and [4] for details.
Tips and tricks
Using bind mount
Instead of mounting the ESP itself to /boot
, you can mount a directory of the ESP to /boot
using a bind mount (see mount(8)
). This allows pacman to update the kernel directly while keeping the ESP organized to your liking. If it works for you, this method is much simpler than the other approaches which copy files.
As EFISTUB#Alternative ESP Mount Points, copy all boot files to a directory on your ESP, but mount the ESP outside /boot
(e.g. /esp
). Then bind mount the directory:
# mount --bind /esp/EFI/arch/ /boot
If your files appear in /boot
as desired, edit your Fstab to make it persistent:
/etc/fstab
/esp/EFI/arch /boot none defaults,bind 0 0