Hetzner · Robot · Документация

Системный раздел EFI (ESP): размер, монтирование, зеркалирование и восстановление

Обновлено

Системный раздел EFI (EFI System Partition, ESP) — небольшой раздел с файловой системой FAT32, на котором UEFI-прошивка ищет загрузчики операционных систем. Если сервер загружается в режиме UEFI (как это проверить), без рабочего ESP система не стартует. Ниже — как выглядит раздел, как он монтируется, как защитить его при RAID1 на двух дисках и как восстановить загрузчик.

Как выглядит ESP

lsblk -o NAME,SIZE,FSTYPE,PARTTYPENAME,MOUNTPOINT
findmnt /boot/efi
ls /boot/efi/EFI
efibootmgr -v
  • Тип раздела: EFI System (GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B).
  • Файловая система: FAT32.
  • Размер: обычно 256–512 МиБ; installimage предлагает значение по умолчанию.
  • Точка монтирования: /boot/efi.
  • Содержимое: каталоги EFI/debian, EFI/ubuntu, EFI/BOOT с файлами загрузчика.

Монтирование через fstab

# узнать UUID
blkid /dev/nvme0n1p1
# /etc/fstab
UUID=XXXX-XXXX  /boot/efi  vfat  umask=0077  0  1

Используйте UUID, а не имена устройств, так как нумерация дисков может меняться (NVMe).

ESP при программном RAID1

Прошивка не понимает mdadm, поэтому ESP обычно не включают в обычный RAID1 «как есть». Есть два подхода:

  1. Два независимых ESP. На каждом диске создаётся свой раздел ESP, загрузчик устанавливается в оба, а содержимое синхронизируется после обновлений:
    mkdir -p /mnt/esp2 && mount /dev/nvme1n1p1 /mnt/esp2
    rsync -a --delete /boot/efi/ /mnt/esp2/
    umount /mnt/esp2
    Добавьте этот шаг в хук обновления GRUB или в cron и проверяйте результат.
  2. RAID1 с метаданными 1.0. Метаданные размещаются в конце раздела, и прошивка видит каждый диск как обычный FAT32:
    mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/nvme0n1p1 /dev/nvme1n1p1
    mkfs.vfat -F32 /dev/md0
    Способ рабочий, но прошивка может записывать в раздел напрямую, что способно нарушить синхронизацию; используйте его осознанно.

Запишите в UEFI запись загрузки для каждого диска: efibootmgr --create --disk /dev/nvme1n1 --part 1 --label "debian2" --loader '\EFI\debian\shimx64.efi' (путь к загрузчику проверьте в каталоге EFI).

Восстановление загрузчика из Rescue

  1. Активируйте Rescue System и загрузитесь в неё (инструкция).
  2. Смонтируйте корень, затем ESP, привяжите системные каталоги и войдите в chroot:
    mount /dev/md2 /mnt
    mount /dev/nvme0n1p1 /mnt/boot/efi
    for d in dev proc sys sys/firmware/efi/efivars; do mount --rbind /$d /mnt/$d; done
    chroot /mnt
  3. Установите загрузчик заново:
    grub-install --target=x86_64-efi --efi-directory=/boot/efi
    update-grub
    efibootmgr -v
  4. Повторите для второго диска, если используете два ESP.

Если раздел ESP повреждён, пересоздайте файловую систему: mkfs.vfat -F32 /dev/nvme0n1p1 и выполните установку загрузчика. Формат раздела сотрёт его содержимое, сохраните каталог EFI заранее.

Типичные ошибки

  • ESP размером меньше 100 МиБ: не помещаются несколько загрузчиков и обновления прошивок.
  • Запись в fstab по имени устройства.
  • Забытая синхронизация второго ESP после обновления GRUB.
  • Удалена запись efibootmgr — прошивка не знает, откуда грузиться (создайте её заново).

Частые вопросы

Можно ли сделать ESP на LVM?

Нет, прошивка не умеет читать LVM; ESP должен быть обычным разделом GPT с FAT32.

Сколько нужно места под ESP?

256–512 МиБ достаточно для нескольких загрузчиков; больший размер нужен редко.

Что будет, если ESP на одном из дисков RAID1 пропадёт?

При схеме с двумя ESP сервер загрузится со второго диска. Для этого загрузчик должен стоять на обоих, а запись об этом — в UEFI. Порядок установки в целом описан в Rescue System и installimage.