Особенности разметки системного раздела EFI

Системный раздел EFI = EFI system partition.

Стандарт UEFI требует](Specifications | Unified Extensible Firmware Interface Forum) поддержки FAT32 для закреплённых накопителей и FAT16 + FAT12 для сменных.

EFI encompasses the use of FAT32 for a system partition, and FAT12 or FAT16 for removable media. The FAT32 system partition is identified by an OSType value other than that used to identify previous versions of FAT. This unique partition type distinguishes an EFI defined file system from a normal FAT file system. The file system supported by EFI includes support for long file names.

Т.е. предполагается использование VFAT всегда.

В свою очередь Микрософт требует разметку системного раздела EFI как FAT32 размером ≥ 100 МБ:

System partition

The device must contain a system partition. On GPT drives, this is known as the EFI System Partition, or the ESP. This partition is usually stored on the primary hard drive. The device boots to this partition.
The minimum size of this partition is 100 MB, and must be formatted using the FAT32 file format.
This partition is managed by the operating system, and should not contain any other files, including Windows RE tools.

Note

For Advanced Format 4K Native drives (4-KB-per-sector) drives, the minimum size is 260 MB, due to a limitation of the FAT32 file format. The minimum partition size of FAT32 drives is calculated as sector size (4KB) x 65527 = 256 MB.
Advanced Format 512e drives are not affected by this limitation, because their emulated sector size is 512 bytes. 512 bytes x 65527 = 32 MB, which is less than the 100 MB minimum size for this partition.

А openSUSE идёт своим путём: при установке можно выбрать размер системного раздела EFI весьма произвольно. При этом установщик желает делать размер системного раздела EFI > 256 МБ, не объясняя почему. И также есть советы делать этот размер больше 512 МБ, опять-таки без объяснений.

Дак вот:

  1. Размер более 256 МБ (обычно 260 МБ) нужен для выровненного раздела у накопителей с Advanced Format 4K Native drives.
    Если у вас накопитель не Advanced Format 4K Native, то можно ставить ≥ 32 МБ.

  2. Установщик openSUSE размечает системный раздел EFI как FAT16 при размере ≤ 512 МБ, и как FAT32 для большего объёма.
    Отчего случаются ошибки на некоторых системах при загрузке.

**Итог:
**

  1. Не доверяйте установщику openSUSE форматировать системный раздел EFI, делайте это руками.

  2. Размечайте его как FAT32 размером 100 МБ и более для совместимости с MS Windows.
    Если совместимость с виндой не нужна, то можно ставить 32 МБ и более.

  3. Для дисков Advanced Format ставьте его ≥ 256 МБ.

  4. При установке выбирайте “Не форматировать системный раздел EFI”.

  5. Для совместимости с MS Windows используйте GPT + UEFI (или MBR + (legacy BIOS или CSM support mode)), остальные два случая не поддерживаются виндой.

  6. Стандарт UEFI предполагает использование особой метки для обозначения разметки у системного раздела EFI, сообщающего, что это не просто FAT, а UEFI FAT.

  7. Обычно системный раздел EFI идёт первым, однако это условие необязательно.

Я создал сообщение об ошибке](https://bugzilla.opensuse.org/show_bug.cgi?id=1177358) по этому вопросу, но пока что движения там нет.

А в чём,собственно, проблема?

  • При установке openSUSE мне всё равно какой размер и ФС у раздела EFI (главное работает)
  • При двойной загрузке, сначала устанавливаем Windows (она сама всё разметит как ей надо), затем устанавливаем openSUSE.

Или я чего от не понимаю:?

Некоторые устройства не грузятся с системного раздела с FAT16.
Стало понятно, откуда взялись советы “ставьте 260 МБ, а лучше 520 МБ”.
Зачем тратить на раздел 520 МБ, когда достаточно 100?

При двойной загрузке придётся следовать порядку установки “винда, потом Линукс”, что бывает неудобно.

Научные знания лучше танцев с бубном.

Некоторое железо, особенно - ноутбуки (HP, Dell), требует FAT32 для системного раздела EFI.
openSUSE использует FAT16 на установочной флешке.
Что подходит для старого способа = legacy BIOS, но иногда несовместимо с UEFI загрузкой.

(Хотя бывает ли BIOS без поддержки загрузки с диска с FAT32, только с FAT16/FAT12?)

Можно загрузиться с флешки в режиме legacy BIOS (CSM mode), и установить openSUSE для EFI. При этом системный раздел EFI нужно предварительно разметить в FAT32, или задать ему размер больше 512 МБ (см выше объяснения). Тогда система будет работать.

С FAT16 мне приходилось использовать внешние загрузчики - rEFInd.

Имеем:
DELL Inspiron 11-3162
-> UEFI - Включено
-> Secure Boot - Включено

Устанавливаю openSUSE 15.2 специально с USB Flash (обычно с DVD), при разметке диска, очищаю диск от существующих разделов и соглашаюсь с разметкой предложенной установщиком. (разметку вручную не правлю) (EFI раздел 500 МБ)

После благополучной установки система загружается.:slight_smile:

По моему, рано кричать “ВОЛКИ, ВОЛКИ”, возможно вам попалось очень специфичное “железо”.

Прошли некоторые улучшения: Revisit the size and format of the proposed /boot/efi by ancorgs · Pull Request #1159 · yast/yast-storage-ng · GitHub

Вроде стало лучше, надо разбираться.

При установке на x86 по умолчанию выбирается системный раздел EFI = (256 - 512) МБ + FAT32.
Руками - через “minimal size” - 128-512 МБ и FAT16 (FAT32 не будет выбран из-за настроек mkfs.vfat).

Как оказалось, нужно ещё учитывать работу на ARM.
Для Raspberry Pi нужен ли системный раздел EFI размером 128 МБ? Может ли хватить меньшего? Винды там не будет, наверное.

Запрос Request 845964: Submit yast2-storage-ng - openSUSE Build Service - yast2-storage-ng 4.3.18
заменён на Request 847913: Submit yast2-storage-ng - openSUSE Build Service - yast2-storage-ng 4.3.20.

Wed Nov 4 09:21:55 UTC 2020 - Ancor Gonzalez Sosa <ancor@suse.com>

  • Proposal: adjusted the size and format of the EFI partition
    (bsc#1177358, bsc#1170625, bsc#1119318).
  • 4.3.18

Пакет yast2-storage-ng: openSUSE Software .

Доступно в TW и в будущем SLE 15 SP3 = openSUSE Leap 15.3.
В openSUSE Leap 15.2 - добавлять в дистрибутив самому или м.б. установка по сети.