Перейти к содержимому

Esp разделы что это

  • автор:

UEFI/GPT-based hard drive partitions (Разделы жесткого диска в системе, использующей UEFI и GPT)

Создавайте пользовательские макеты секций для жестких дисков (HDD), твердотельных накопителей (SSD) и других дисков при развертывании Windows на устройствах на основе единого расширяемого встроенного ПО (UEFI).

Если вы используете пользовательский макет секционирования, обновите сценарий восстановления с помощью кнопки, чтобы средства восстановления могли повторно создать пользовательский макет секции при необходимости.

Требования к разделу

При развертывании Windows на устройстве на основе UEFI необходимо отформатировать жесткий диск, содержащий раздел Windows, с помощью файловой системы таблицы разделов GUID (GPT). Дополнительные диски могут использовать формат файла GPT или master загрузочной записи (MBR).

Диск GPT может содержать до 128 секций.

Каждая секция может иметь не более 18 эксабайт (~18,8 миллиона терабайт) пространства.

Системный раздел

Устройство должно содержать системный раздел. На дисках GPT это называется системным разделом EFI или ESP. Этот раздел обычно хранится на основном жестком диске. Устройство загружается в этот раздел.

Минимальный размер этой секции составляет 100 МБ и должен быть отформатирован в формате FAT32.

Этот раздел управляется операционной системой и не должен содержать другие файлы, включая средства windows RE.

Для дисков Advanced Format 4K Native (4 КБ на сектор) минимальный размер составляет 260 МБ из-за ограничения формата файлов FAT32. Минимальный размер секции дисков FAT32 рассчитывается как размер сектора (4 КБ) x 65527 = 256 МБ.

Это ограничение не влияет на диски с расширенным форматом 512e, так как размер эмулированного сектора составляет 512 байт. 512 байт x 65527 = 32 МБ, что меньше минимального размера в 100 МБ для этой секции.

Зарезервированный раздел Майкрософт (MSR)

Размер MSR составляет 16 МБ.

Добавьте MSR на каждый диск GPT, чтобы упростить управление секциями. MSR — это зарезервированный раздел, который не получает идентификатор секции. Он не может хранить пользовательские данные.

Другие служебные секции

Все другие служебные секции, не управляемые Windows, должны находиться перед секциями Windows, данных и образа восстановления. Это позволяет конечным пользователям выполнять такие действия, как изменение размера раздела Windows, не затрагивая системные служебные программы.

Защитите конечных пользователей от случайного изменения служебных секций, идентифицируя их с помощью атрибута GPT. Это предотвращает отображение этих секций в проводник.

Установка разделов в качестве служебных секций
  • При развертывании Windows с помощью DiskPart используйте набор томов атрибутов GPT_ATTRIBUTE_PLATFORM_REQUIRED команде после создания секции, чтобы определить секцию как служебную. Дополнительные сведения см. в разделе MSDN: структура PARTITION_INFORMATION_GPT.
Проверка наличия системных и служебных разделов
  1. Нажмите кнопку Пуск, щелкните правой кнопкой мыши Этот компьютер и выберите пункт Управление. Откроется окно Управление компьютером.
  2. Выберите Управление дисками. Появится список доступных дисков и секций.
  3. В списке дисков и разделов убедитесь, что системные и служебные секции присутствуют и им не назначена буква диска.

Раздел Windows

  • Для 64-разрядных версий раздел должен иметь не менее 20 ГБ места на диске или 16 ГБ для 32-разрядных версий.
  • Раздел Windows должен быть отформатирован в формате NTFS.
  • Раздел Windows должен иметь 16 ГБ свободного места после завершения работы пользователя при первом включении (OOBE) и автоматического обслуживания.

Раздел средств восстановления

Размер этой секции должен быть не менее 300 МБ.

Средства среды восстановления Windows (Windows RE) требуют дополнительного свободного места:

  • Требуется не менее 52 МБ, но рекомендуется 250 МБ для будущих обновлений, особенно с пользовательскими макетами секций.

Средства среды восстановления Windows (Windows RE) требуют дополнительного свободного места:

  • Требуется не менее 100 МБ, но рекомендуется 250 МБ для будущих обновлений, особенно с пользовательскими макетами секций.

При вычислении свободного места обратите внимание на следующее:

  • Образ восстановления winre.wim обычно находится в диапазоне от 500 до 700 МБ в зависимости от того, какие драйверы, языки и настройки вы добавляете.
  • Сама файловая система может занимать дополнительное место. Например, NTFS может зарезервировать 5–15 МБ или более в секции 750 МБ.

В этой секции должен использоваться идентификатор типа: DE94BBA4-06D1-4D40-A16A-BFD50179D6AC .

Средства восстановления должны находиться в отдельном разделе, чем раздел Windows для поддержки автоматической отработки отказа и поддержки загрузочных секций, зашифрованных с помощью шифрования диска Windows BitLocker.

Рекомендуется размещать эту секцию сразу после секции Windows. Это позволяет Windows изменять и повторно создавать секцию позже, если для будущих обновлений потребуется более крупный образ восстановления.

Секции данных

Рекомендуемые макеты секций не включают секции данных. Тем не менее, если требуются секции данных, они должны быть размещены после раздела Windows RE. Это позволяет в будущих обновлениях среды восстановления Windows увеличивать раздел Windows RE путем сжатия раздела Windows.

Этот макет усложняет для конечных пользователей удаление секции данных и объединение пространства с разделом Windows. Для этого раздел windows RE необходимо переместить в конец неиспользуемого пространства, освобожденного из секции данных, чтобы можно было расширить раздел Windows.

Операционные системы Windows не включают функции или служебные программы для упрощения этого процесса. Однако производители могут разрабатывать и предоставлять такую программу, если компьютеры поставляются с разделами данных.

Разметка раздела

Макет секций по умолчанию для компьютеров на основе UEFI: системный раздел, MSR, раздел Windows и раздел средств восстановления.

Схема макета секции по умолчанию: system, msr, windows и recovery

Этот макет позволяет использовать шифрование диска Windows BitLocker как в Windows, так и в среде восстановления Windows.

Примеры файлов: настройка разделов диска с помощью сценариев Среды предустановки Windows и DiskPart

Для развертывания на основе образа загрузите компьютер в среду предустановки Windows, а затем используйте средство DiskPart , чтобы создать структуры секций на конечных компьютерах.

В этих примерах DiskPart секциям назначаются буквы System=S, Windows=W и Recovery=R. Раздел MSR не получает букву диска.

Измените букву диска Windows на букву, расположенную ближе к концу алфавита, например W, чтобы избежать конфликтов букв диска. Не используйте X, так как эта буква диска зарезервирована для Windows PE. После перезагрузки устройства секции Windows назначается буква C, а другие секции не получают буквы диска.

При перезагрузке среда предустановки Windows переназначает буквы диска в алфавитном порядке, начиная с буквы C, независимо от конфигурации в программе установки Windows. Эта конфигурация может изменяться в зависимости от наличия различных дисков, таких как USB-устройства флэш-памяти.

Ниже описано, как секционировать жесткие диски и подготовиться к применению образов. Для выполнения этих действий можно использовать код из следующих разделов.

Секционирование жестких дисков и подготовка к применению образов

  1. Скопируйте и сохраните файл CreatePartitions-UEFI.txt на USB-устройство флэш-памяти.
  2. Используйте Windows PE для загрузки конечного компьютера.
  3. Очистка и секционирование диска. В этом примере F — это буква USB-устройства флэш-памяти.
DiskPart /s F:\CreatePartitions-UEFI.txt 
  1. Если вы используете пользовательский макет секционирования, обновите сценарий восстановления с помощью кнопки, чтобы средства восстановления могли повторно создать пользовательский макет секции при необходимости.

Чтобы избежать проблем с загрузкой восстановления без операционной системы из-за размера секции, производители должны разрешить скрипту автоматического создания функции восстановления без операционной системы создать секцию, используемую для WIM восстановления. Если изготовитель хочет использовать пользовательский скрипт DISKPART для создания секций, рекомендуемый минимальный размер секции составляет 990 МБ и не менее 250 МБ свободного места.

Дальнейшие действия

Используйте скрипт развертывания, чтобы применить образы Windows к вновь созданным секциям. Дополнительные сведения см. в статье Запись и применение секций Windows, System и Recovery.

Системный раздел (системный раздел EFI или ESP).

Компьютер должен содержать на диске один системный раздел. В системах на основе EFI и UEFI этот раздел называется системным разделом EFI или ESP. Этот раздел обычно хранится на основном жестком диске. С системного раздела происходит загрузка компьютера. Минимальный размер этого раздела составляет 100 МБ, и он должен форматироваться с помощью формата файлов FAT32. Этим разделом управляет операционная система, и он не должен содержать никакие другие файлы, включая средства среды восстановления Windows. Cтандартная конфигурация дисков в разметке GPT на UEFI-системе показана на рис. 1.

QIP Shot - Image: 2017-06-20 15:56:26

Рис. 1.Пример конфигурации разделов диска на ПК с UEFI.

Раздел EFI (ESP), отформатированный в FAT32, является обязательным для разметки GPT на системах с UEFI. Стандартный размер раздела EFI составляет 100 MB, но на дисках расширенного формата 4K Native (секторы 4KB) он увеличен до 260 MB ввиду ограничений FAT32. Изготовители ПК могут хранить на этом разделе какие-то свои инструменты, поэтому его размер варьируется в зависимости от производителя. В разметке GPT раздел EFI выполняет одну из ролей, которая возложена на раздел System Reserved в разметке MBR. Он содержит хранилище конфигурации загрузки (BCD) и файлы, необходимые для загрузки операционной системы.

Основные п ринципы построения и функционирования файловой системы на основе FAT-32.

1) Каждому элементу таблицы FAT (начиная со второго) соответствует кластер в области данных с таким же номером.

2) Номер начального кластера файла указывается в каталожной строке , определяющей Файл. Этот номер является и ссылкой на элемент таблицы FAT, который содержит номер следующего кластера файла, и является ссылкой на элемент таблицы FAT, который содержит номер следующего кластера файла и т. д.

3) Кластер — это непрерывная последовательность секторов (фиксированного размера). Это адресуемая «порция» файла.

4) Код в элементе таблицы FAT может еще определять свободный кластер , дефектный кластер и признак конца файла.

5) Файл в разделе FAT — это последовательность кластеров , указанных с помощью строки каталога и элементов таблицы FAT.

6) Все операционные системы могут работать с разделом FAT -32 (главный фактор применения FAT-32 в ESP) .

В результате высокоуровневого форматирования раздела , записью системной информации в блоки данных ряда начальных секторов раздела, создается логический диск (том) файловой системы типа FAT32, который состоит из трех основных областей ( рис. 2) , расположенных в следующем порядке:

— «резервная» область (область резервных секторов);

— область таблиц размещения файлов (FAT1 и FAT2);

— область файлов и каталогов (область данных).

Корневой каталог хранится в области данных как обычный файл и может расширятся по мере необходимости.

Системный раздел EFI

Системный раздел EFI (или ESP) — это независимый от ОС раздел, отформатированный в FAT12, FAT16 или FAT32, который действует как место хранения загрузчиков EFI и драйверов, запускаемых прошивкой UEFI, и является обязательным для загрузки UEFI.

Настроить системный раздел EFI

Linux (с использованием GRUB)

Сначала необходимо изменить таблицу разделов. Убедитесь, что на каждом диске есть не менее 200 МБ свободного пространства без разделов. Чтобы создать ESP, раздел должен быть определен в таблице разделов. Это можно сделать с помощью gdisk .

$ gdisk /dev/nvme0n1 GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help):

На выбранном диске есть таблица разделов GPT. Введите, p чтобы распечатать текущую таблицу разделов.

Command (? for help): p Disk /dev/nvme0n1: 1000215216 sectors, 476.9 GiB Model: SAMSUNG MZVLB512HAJQ-00000 Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 81C8DFEB-06A0-4164-84BC-B5F5D696B519 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 1000215182 Partitions will be aligned on 2048-sector boundaries Total free space is 411614 sectors (201.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 999805582 476.7 GiB 8300 Linux filesystem Command (? for help):

В этом случае будет только один раздел размером с 476.7 GiB установленную ОС. Также имеется полное свободное пространство, 201.0 MiB которое не разделено на разделы. Они 200 MiB будут использоваться для ESP. Чтобы создать новый раздел, введите n .

Command (? for help): n Partition number (2-128, default 2): First sector (34-1000215182, default = 999806976) or size: Last sector (999806976-1000215182, default = 1000215182) or size: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): EF00 Changed type of partition to 'EFI System'

Обратите внимание : ESP не обязательно должен быть в начале таблицы разделов. Единственное, что нужно, — это установить для шестнадцатеричного кода EF00 и использовать минимальный размер 200MiB .

Когда закончите, таблицу разделов можно записать с помощью w .

Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/nvme0n1. The operation has completed successfully.

Чтобы убедиться, что таблица разделов перезагружается, запустите partprobe .

Результат lsblk теперь может выглядеть так:

$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 4G 1 loop nvme0n1 259:0 0 477G 0 disk ├─nvme0n1p1 259:4 0 512M 0 part ├─nvme0n1p2 259:5 0 476.2G 0 part └─nvme0n1p3 259:6 0 256M 0 part

НОТА

Если на сервере имеется более одного диска в системе, то рекомендуется сделать ESP в RAID 1. В этом случае важно установить —metadata=1.0 на MD. При этом метаданные MD будут записаны в конец раздела, а не в начало раздела. В данном случае это необходимо, чтобы дать прошивке UEFI возможность обнаруживать ESP.

Сначала сверьтесь с cat /proc/mdstat состоянием MD. Результат может быть таким:

Personalities : [raid1] [raid10] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] md0 : active raid1 nvme0n1p1[1] nvme1n1p1[0] 523712 blocks super 1.2 [2/2] [UU] md1 : active raid1 nvme0n1p2[1] nvme1n1p2[0] 1874716672 blocks super 1.2 [2/2] [UU] bitmap: 1/14 pages [4KB], 65536KB chunk

В этом случае следующим доступным «md-device» будет md2 . Это будет использоваться для ESP. Создайте раздел на каждом устройстве, как уже было описано выше.

Создайте устройство md следующим образом (количество raid-devices и логические устройства должны быть адаптированы):

mdadm --create --verbose --level=1 --raid-devices=2 --metadata=1.0 /dev/md/2 /dev/nvme0n1p3 /dev/nvme1n1p3

После создания mdadm.conf должен быть сгенерирован.

mdadm --detail --scan /dev/md/2 >> /etc/mdadm/mdadm.conf

Отформатируйте только что созданный раздел с помощью FAT32:

$ mkfs.vfat -F 32 /dev/nvme0n1p3 # or the md device mkfs.fat 4.1 (2017-01-24)

Создайте каталог /boot/efi с помощью mkdir /boot/efi .

Смонтируйте раздел ESP в /boot/efi с mount .

Получите UUID раздела blkid -o value -s UUID /dev/your_esp_partition_or_md_device и создайте новую запись fstab:

UUID=the_uuid_of_the_esp /boot/efi vfat umask=0077 0 1

Чтобы установить загрузочные двоичные файлы EFI, сначала необходимо установить загрузчик EFI-GRUB.

В Debian / Ubuntu это так grub-efi-amd64-bin , в CentOS так и есть grub2-efi-x64 .

Теперь можно установить загрузчик EFI-GRUB:

$ # Ubuntu/Debian $ grub-install --target=x86_64-efi --efi-directory=/boot/efi --no-floppy --no-nvram --removable $ # CentOS $ grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

Windows

Microsoft предлагает с Windows Server 2012 инструмент, mbr2gpt который автоматически преобразует таблицу разделов в GPT, а также создает ESP.

Рекомендуется делать это в среде WinPE, но это также можно сделать в работающей системе.

Откройте командную строку с повышенными привилегиями ( cmd ) и запустите mbr2gpt /validate /allowFullOS . Обратите внимание, что /allowFullOS это требуется только при выполнении преобразования в работающей системе (без WinPE). Результат должен быть таким:

C:\Windows\System32> mbr2gpt /validate /allowFullOS MBR2GPT: Attempting to validate disk 0 MBR2GPT: Retrieving layout of disk MBR2GPT: Validating layout, disk sector size is: 512 bytes MBR2GPT: Validation completed successfully

Важно: Если проверка не удалась, прервите ее и проверьте, почему она не прошла. Если диск динамический, то таким образом сделать это невозможно.

Если проверка прошла успешно, продолжайте преобразование. Это можно сделать с помощью mbr2gpt /convert /allowFullOS . Результат должен быть таким:

C:\Windows\System32> mbr2gpt /convert /allowFullOS MBR2GPT will now attempt to convert the default book disk. If conversion is successful the disk can only be booted in GPT mode. These changes cannot be undone! MBR2GPT: Attempting to convert disk 0 MBR2GPT: Retrieving layout of disk MBR2GPT: Validating layout, disk sector size is: 512 bytes MBR2GPT: Trying to shrink the OS partition MBR2GPT: Creating the EFI system partition MBR2GPT: Installing the new boot files MBR2GPT: Performing the layout conversion MBR2GPT: Migrating default boot entry MBR2GPT: Adding recovery boot entry MBR2GPT: Fixing drive letter mapping MBR2GPT: Conversion completed successfully MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode!

Теперь загрузочную прошивку можно изменить на UEFI.

EFI system partition (Русский)

Состояние перевода: На этой странице представлен перевод статьи EFI system partition. Дата последней синхронизации: 12 октября 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

  • Unified Extensible Firmware Interface (Русский)
  • Загрузчик

Системный раздел EFI (EFI system partition, также называемый ESP или EFISYS) — это независимый от ОС раздел, который служит местом хранения загрузчиков UEFI и приложений, которые будут запускаться прошивкой UEFI. Он необходим для загрузки системы в режиме UEFI.

Проверка существования раздела

Если вы устанавливаете Arch Linux на компьютер с поддержкой UEFI и предустановленной ОС, например, Windows 10, то вполне вероятно, что у вас уже есть системный раздел EFI.

Чтобы посмотреть схему разделов диска и системный раздел, запустите fdisk от имени root, указав диск, с которого вы хотите загрузиться:

# fdisk -l /dev/sdx 

Эта команда выведет:

  • Таблицу разделов диска: GPT будет обозначен как Тип метки диска: gpt , а MBR — как Тип метки диска: dos .
  • Список разделов на диске: поищите в списке системный раздел EFI, он обычно имеет размер не менее 100 МиБ и тип EFI System или EFI (FAT-12/16/32) . Чтобы убедиться, что это ESP, смонтируйте его и проверьте, содержит ли он каталог с именем EFI ; если да, то это точно ESP.

Совет: Чтобы узнать, является ли файловая система FAT12, FAT16 или FAT32, смотрите FAT (Русский)#Определение типа FAT.

Важно: Если в системе уже есть другие установленные операционные системы, не форматируйте существующий системный раздел EFI, так как форматирование сотрёт загрузчики других систем. Используйте существующий раздел как есть и просто монтируйте его.

Если вы нашли существующий системный раздел EFI, просто переходите к разделу #Монтирование раздела. Если раздел не нашёлся, его нужно создать: #Создание раздела.

Создание раздела

В следующих двух разделах показано, как создать системный раздел EFI (ESP).

Важно: Системный раздел EFI должен быть физическим разделом в основной таблице разделов диска, не под LVM или программным RAID и т. д.

Раздел должен иметь достаточно большой размер для хранения загрузчиков и других файлов, необходимых для загрузки.

Для предотвращения проблем совместимости с другими операционными системами[1] и дисками Advanced Format[2] рекомендуется делать его не менее 300 МиБ.

  • Для ранних и/или несовершенных реализаций UEFI может потребоваться размер не менее 512 МиБ.[3]
  • Для форматирования в FAT32 размер раздела должен быть не менее 36 МиБ при размере сектора 512 байт и не менее 260 МиБ при размере сектора 4096 байт.[4]
  • Если вы планируете устанавливать несколько ядер и при этом монтировать системный раздел EFI как /boot или использовать unified kernel image, используйте раздел размером около 1 ГиБ, чтобы быть уверенным в том, что всё поместится.
  • Если ни одна из этих проблем не актуальна, размер раздела может составлять всего 2 МиБ, хотя тогда в него не поместится ничего кроме загрузчика.

Разметка дисков GPT

Системный раздел EFI в таблице разделов GUID идентифицируется с помощью GUID типа раздела C12A7328-F81F-11D2-BA4B-00A0C93EC93B .

Выберите один из следующих способов создания ESP для диска GPT с разделами:

  • fdisk: Создайте раздел и измените тип раздела на EFI System .
  • gdisk: Создайте раздел с типом раздела EF00 .
  • GNU Parted: Создайте раздел fat32 и в Parted установите/активируйте флаг esp .

После создания раздел нужно отформатировать; переходите к разделу #Форматирование раздела.

Разметка дисков MBR

  • Некоторые прошивки могут не поддерживать загрузку UEFI/MBR из-за того, что она не поддерживается установкой Windows.
  • bootctl не поддерживает установку systemd-boot на MBR-диск; смотрите systemd issue 1125.

Подробнее об ограничениях MBR и преимуществах GPT смотрите в разделе Разметка дисков#Выбор между GPT и MBR.

Системный раздел EFI в главной загрузочной записи идентифицируется с помощью partition ID EF .

Выберите один из следующих способов создания ESP для диска MBR с разделами:

  • fdisk: Создайте первичный раздел и измените тип раздела на ( EFI (FAT-12/16/32) .
  • GNU Parted: Создайте первичный раздел fat32 и в Parted установите/активируйте флаг esp .

После создания раздел нужно отформатировать; переходите к разделу #Форматирование раздела.

Форматирование раздела

Спецификация UEFI предусматривает поддержку файловых систем FAT12, FAT16 и FAT32 (UEFI specification version 2.10, section 13.3.1.1), но производители могут по желанию добавить поддержку дополнительных файловых систем; например, прошивки компьютеров Apple Mac поддерживают файловую систему HFS+.

Для предотвращения возможных проблем с другими операционными системами и поскольку в спецификации UEFI говорится, что UEFI «включает использование FAT32 для системного раздела и FAT12 или FAT16 для съёмных носителей»[5], рекомендуется использовать FAT32. Используйте утилиту mkfs.fat(8) из пакета dosfstools :

# mkfs.fat -F 32 /dev/sdxY 

Если вы получили сообщение WARNING: Not enough clusters for a 32 bit FAT! и у вас нет возможности увеличить размер раздела, уменьшите размер кластера с помощью команды mkfs.fat -s2 -F32 . или -s1 ; иначе раздел может оказаться нечитаемым для UEFI. Поддерживаемые размеры кластера можно посмотреть в mkfs.fat(8) .

Для разделов размером менее 32 МиБ использовать FAT32 не получится. В этом случае отформатируйте его в FAT16 или даже FAT12. Например, ESP размером 2 МиБ будет поддерживать только FAT12:

# mkfs.fat -F 12 /dev/sdxY 

Монтирование раздела

Ядра, файлы initramfs и, в большинстве случаев, микрокод процессора должны быть доступны загрузчику или самому UEFI для успешной загрузки системы. Таким образом, если вы хотите сохранить простоту установки, выбор загрузчика ограничивает варианты выбора точки монтирования для системного раздела EFI.

Примечание: Если ESP монтируется не в /boot , то при обновлении ядра не полагайтесь на механизм автоматического монтирования systemd (в том числе systemd-gpt-auto-generator). Всегда монтируйте его вручную перед любым обновлением системы или ядра, иначе вы не сможете смонтировать его после обновления из-за недоступности нужных модулей ядра, что заблокирует вас в текущем запущенном ядре и приведёт к невозможности обновить копию ядра на ESP.

/etc/modules-load.d/vfat.conf
vfat nls_cp437 nls_ascii

Типичные точки монтирования

Есть три основных варианта монтирования системного раздела EFI.

  • Монтирование ESP в /boot :
    • Это облегчает обслуживание и администрирование системы, поскольку /boot является путём по умолчанию, в который пакеты микрокода размещают файлы initramfs микрокода процессора, и в который mkinitcpio помещает ядра и образы initramfs.
    • Это обеспечивает доступ к вышеупомянутым файлам для большинства загрузчиков, поскольку не все из них могут обращаться к файлам на других томах.
    • Это предотвращает установку прав доступа и/или расширенных атрибутов отдельным файлам, поскольку FAT устанавливает глобальные права доступа во время монтирования.
    • Это увеличивает необходимый размер раздела, поскольку к файлам, обычно находящимся в /boot , добавляются файлы, связанные с EFI.
    • В случае двойной загрузки это приводит к тому, что специфичные для ОС загрузочные файлы могут подвергаться потенциально опасным манипуляциям со стороны других ОС.
    • Это делает шифрование /boot невозможным, так как файлы, связанные с EFI, должны быть доступны прошивке.
    • Это отделяет файлы, специфичные для ОС, от файлов, связанных с EFI.
    • Это позволяет избежать увеличения размера ESP за счёт отказа от размещения в нём файлов, устанавливаемых в /boot : на ESP будут храниться только исполняемые файлы EFI (загрузчик (и, опционально, драйверы) и/или unified kernel image), что экономит место на разделе.
    • Позволяет использовать специфические для Linux права доступа на уровне файловой системы для файлов, находящихся в /boot , без специфичных для FAT ограничений.
    • Это позволяет монтировать ESP отдельно по необходимости, например, только во время обновления загрузчика.
    • При шифровании системы с соответствующей настройкой это позволяет оставить незашифрованными лишь несколько минимально необходимых файлов, а /boot будет защищён: это может быть полезно для unified kernel image или загрузчиков, имеющих драйверы файловой системы, способные прочитать ядро и прочие файлы из другого места.
    • Монтирование в /efi является заменой[6] для ранее распространённой и ныне не рекомендуемой точки монтирования /boot/efi .
    • Каталог /efi изначально отсутствует; его нужно предварительно создать.

    Альтернативные точки монтирования

    Если вы не используете #Типичные точки монтирования, вам будет нужно самостоятельно скопировать файлы, необходимые для загрузки, в ESP (далее обозначается как esp ).

    # mkdir -p esp/EFI/arch # cp -a /boot/vmlinuz-linux esp/EFI/arch/ # cp -a /boot/initramfs-linux.img esp/EFI/arch/ # cp -a /boot/initramfs-linux-fallback.img esp/EFI/arch/

    Примечание: Вам также может понадобиться скопировать микрокод.

    Кроме того, вам нужно будет поддерживать файлы на ESP в актуальном состоянии при последующих обновлениях ядра. Несоблюдение этого требования может привести к незагружаемой системе. В следующих разделах обсуждаются несколько механизмов для автоматизации этого процесса.

    Использование bind монтирования

    Вместо того, чтобы монтировать целиком ESP в /boot , вы можете подключить отдельный каталог ESP к /boot с помощью bind-монтирования (смотрите mount(8) ). Это позволяет pacman обновлять ядро напрямую, а вам — организовать файлы в ESP по своему вкусу.

    Примечание: Для этого требуется, чтобы ядро и загрузчик были совместимы с FAT32. Это не является проблемой для обычной установки Arch, но может быть проблематичным для других дистрибутивов (а именно тех, которые требуют символических ссылок в /boot/ ). Смотрите сообщение на форуме [7].

    Как описано в начале раздела, скопируйте все загрузочные файлы в каталог вашего ESP, но смонтируйте ESP вне /boot . Затем выполните bind-монтирование каталога:

    # mount --bind esp/EFI/arch/ /boot

    Если всё хорошо, отредактируйте свой Fstab, чтобы сделать изменение постоянным:

    /etc/fstab
    esp/EFI/arch /boot none defaults,bind 0 0
    Использование systemd

    Systemd поддерживает задачи, запускаемые по событию. В данном конкретном случае возможность обнаружения изменения пути используется для синхронизации файлов ядра EFISTUB и initramfs, когда они обновляются в /boot/ . Файл, который проверяется на изменения, это initramfs-linux-fallback.img , так как это последний файл, который собирает mkinitcpio, что позволяет убедиться, что все нужные файлы были собраны перед началом копирования. Файлы path и service, которые должны быть созданы, следующие:

    /etc/systemd/system/efistub-update.path
    [Unit] Description=Copy EFISTUB Kernel to EFI system partition [Path] PathChanged=/boot/initramfs-linux-fallback.img [Install] WantedBy=multi-user.target WantedBy=system-update.target
    /etc/systemd/system/efistub-update.service
    [Unit] Description=Copy EFISTUB Kernel to EFI system partition [Service] Type=oneshot ExecStart=/usr/bin/cp -af /boot/vmlinuz-linux esp/EFI/arch/ ExecStart=/usr/bin/cp -af /boot/initramfs-linux.img esp/EFI/arch/ ExecStart=/usr/bin/cp -af /boot/initramfs-linux-fallback.img esp/EFI/arch/

    Затем запустите и включите efistub-update.path .

    Совет: При использовании Secure Boot с собственными ключами можно настроить службу на подпись образов с помощью sbsigntools :

    ExecStart=/usr/bin/sbsign --key /путь/к/db.key --cert /путь/к/db.crt --output esp/EFI/arch/vmlinuz-linux /boot/vmlinuz-linux
    Использование событий файловой системы

    События файловой системы можно использовать для запуска скрипта, синхронизирующего ядро EFISTUB после обновления ядра. Ниже приведён пример с использованием incron.

    /usr/local/bin/efistub-update
    #!/bin/sh cp -af /boot/vmlinuz-linux esp/EFI/arch/ cp -af /boot/initramfs-linux.img esp/EFI/arch/ cp -af /boot/initramfs-linux-fallback.img esp/EFI/arch/

    Примечание: Первый параметр /boot/initramfs-linux-fallback.img — файл, за которым ведётся наблюдение. Второй параметр IN_CLOSE_WRITE — отслеживаемое действие. Третий параметр /usr/local/bin/efistub-update — скрипт для выполнения.

    /etc/incron.d/efistub-update.conf
    /boot/initramfs-linux-fallback.img IN_CLOSE_WRITE /usr/local/bin/efistub-update
    Использование хука mkinitcpio

    Mkinitcpio может генерировать хук, для работы которого не нужен демон системного уровня. Он порождает фоновый процесс, который ожидает генерации vmlinuz , initramfs-linux.img и initramfs-linux-fallback.img перед копированием файлов.

    Добавьте efistub-update в список хуков в /etc/mkinitcpio.conf .

    /etc/initcpio/install/efistub-update

    #!/usr/bin/env bash build() < /usr/local/bin/efistub-copy $$ & >help()

    /usr/local/bin/efistub-copy
    #!/bin/sh if [ "$1" -gt 0 ] then while [ -e /proc/"$1" ] do sleep .5 done fi rsync -a /boot/ esp/ echo "Synced /boot with ESP"
    Использование предустановки mkinitcpio

    Поскольку предустановки в /etc/mkinitcpio.d/ поддерживают shell-скрипты, ядро и initramfs могут быть скопированы простым редактированием предустановок.

    Замена хука mkinitcpio

    Измените файл /etc/mkinitcpio.d/linux.preset :

    /etc/mkinitcpio.d/linux.preset
    # mkinitcpio preset file for the 'linux' package # Directory to install the kernel, the initramfs. ESP_DIR #ALL_config="/etc/mkinitcpio.conf" ALL_kver="$/vmlinuz-linux" [[ -e /boot/intel-ucode.img ]] && cp -af /boot/intel-ucode.img "$/" [[ -e /boot/amd-ucode.img ]] && cp -af /boot/amd-ucode.img "$/" PRESETS=('default' 'fallback') #default_config="/etc/mkinitcpio.conf" default_image="$/initramfs-linux.img" default_options="" #fallback_config="/etc/mkinitcpio.conf" fallback_image="$/initramfs-linux-fallback.img" fallback_options="-S autodetect"

    Для тестирования выполните:

    # rm /boot/initramfs-linux-fallback.img /boot/initramfs-linux.img # mv /boot/vmlinuz-linux esp/EFI/arch/ # mkinitcpio -p linux
    Другой пример
    /etc/mkinitcpio.d/linux.preset
    ESP_DIR #ALL_config="/etc/mkinitcpio.conf" ALL_kver="$ESP_DIR/vmlinuz-linux$suffix" PRESETS=('default') default_config="/etc/mkinitcpio.conf" default_image="$ESP_DIR/initramfs-linux$suffix.img"
    /etc/mkinitcpio.d/linux-zen.preset
    suffix='-zen' source /etc/mkinitcpio.d/linux.preset
    Использование хука pacman

    Последний вариант полагается на хуки pacman, которые запускаются в конце транзакции.

    Первый файл — это хук, который отслеживает соответствующие файлы и запускается, если они были изменены в прошедшей транзакции.

    /etc/pacman.d/hooks/999-kernel-efi-copy.hook
    [Trigger] Type = Path Operation = Install Operation = Upgrade Target = usr/lib/modules/*/vmlinuz Target = usr/lib/initcpio/* Target = boot/*-ucode.img [Action] Description = Copying linux and initramfs to EFI directory. When = PostTransaction Exec = /usr/local/bin/kernel-efi-copy.sh

    Второй файл — собственно копирующий скрипт. Создайте его и сделайте исполняемым:

    /usr/local/bin/kernel-efi-copy.sh
    #!/bin/sh # # Copy kernel and initramfs images to EFI directory # ESP_DIR for file in /boot/vmlinuz* do cp -af "$file" "$ESP_DIR/$(basename "$file").efi" [ $? -ne 0 ] && exit 1 done for file in /boot/initramfs* do cp -af "$file" "$ESP_DIR/" [ $? -ne 0 ] && exit 1 done [ -e /boot/intel-ucode.img ] && cp -af /boot/intel-ucode.img "$ESP_DIR/" [ -e /boot/amd-ucode.img ] && cp -af /boot/amd-ucode.img "$ESP_DIR/" exit 0

    Решение проблем

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

    Можно сделать ESP частью массива RAID1, но при этом возникает риск повреждения данных, и при создании ESP необходимо принять дополнительные меры. Смотрите [8], [9] и UEFI booting and RAID1 для подробностей.

    Ключевым моментом является использование параметра —metadata 1.0 , чтобы сохранить метаданные RAID в конце раздела, иначе прошивка не сможет получить к ним доступ:

    # mdadm --create --verbose --level=1 --metadata=1.0 --raid-devices=2 /dev/md/ESP /dev/sdaX /dev/sdbY 

    Прошивка не видит каталог EFI

    Если вы задаёте файловой системе FAT имя тома (то есть метку файловой системы), убедитесь, что оно не совпадает с именем EFI . Это может вызвать ошибку в некоторых прошивках (из-за совпадения имени тома с именем каталога EFI), которая заставит прошивку вести себя так, как будто каталог EFI не существует.

    Смотрите также

    • Системный раздел EFI и поведение загрузки по умолчанию
    • Multi Boot Linux With One Boot Partition | John Ramsden [устаревшая ссылка 2023-10-29 ⓘ]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *