LINUXTALKS.CO

Леннарт Поттеринг предложил модернизировать разбивку загрузочных разделов

 


0

0

Леннарт Поттеринг продолжил публикацию идей по переработке компонентов для загрузки Linux и рассмотрел ситуацию с дублированием загрузочных разделов. Недовольство вызвало использование для организации начальной загрузки двух дисковых разделов с разными ФС, которые монтируются вложенно - раздела /boot/efi на базе ФС VFAT с компонентами прошивки EFI (EFI System Partition) и раздела /boot на базе ФС ext4, btrfs или xfs, на котором размещаются образы ядра Linux и initrd, а также настройки загрузчика.

Ситуация усугубляется тем, что раздел EFI является общим для всех систем, а загрузочный раздел с ядром и initrd создаётся отдельно для каждого установленного дистрибутива Linux, что приводит к необходимости создания лишних разделов при установке в системе нескольких дистрибутивов. В свою очередь необходимость поддержки разных ФС приводит к усложнению загрузчика, а использование вложенного размещения разделов мешает реализации автоматического монтирования (раздел /boot/efi может быть примонтирован только после монтирования раздела /boot).

Леннарт предложил по возможности использовать только один загрузочный раздел и на системах с EFI по умолчанию размещать образы с ядром и initrd в VFAT-разделе /efi. На системах без EFI или если во время установки раздел EFI уже существует (параллельно используется ещё одна ОС) и в нём недостаточно свободного места, можно использовать отдельный раздел /boot с типом XBOOTLDR (раздел /efi в таблице разделов имеет тип ESP). Разделы ESP и XBOOTLDR предлагается создавать в отдельных каталогах (раздельное монтирование /efi и /boot вместо вложенного монтирования /boot/efi), сделать их автоопределяемыми и автомонтируемыми через идентификацию по типу XBOOTLDR в таблице разделов (без прописывания раздела в /etc/fstab).

Раздел /boot будет общим для всех установленных на компьютере дистрибутивов Linux, а разделение специфичных для дистрибутивов файлов будет осуществляться на уровне подкаталогов (для каждого установленного дистрибутива свой подкаталог). В соответствии со сложившейся практикой и требованиями спецификации UEFI в разделе с компонентами EFI используется только файловая система VFAT. Для унификации и избавления загрузчика от усложнений, связанных с поддержкой разных ФС, предлагается использовать VFAT и в качестве файловой системы для раздела /boot, что значительно упростит реализацию работающих на стороне загрузчика компонентов, осуществляющих доступ к данным в разделах /boot и /efi. Унификация позволит равноценно поддерживать оба раздела (/boot и /efi) для загрузки образов ядра и initrd.

// cc-by opennet.ru
// converted with crypt’s opennet autoreposter

>>> Подробности

★★★★★★★★★★★★
Ответ на: комментарий от cocucka

С MBR как-то попроще было.

Только вот Линукс в подавляющем числе случаев его неправильно использует, устанавливая загрузчик в MBR, а не PBR и ломая стандартную цепочку загрузки ещё времён IBM PC и DOS.

X512    
★★★★★
Windows / Firefox
Ответ на: комментарий от X512

А как ты иначе сделаешь мультизагрузку? Я всегда думал, что основной загрузчик должен быть в MBR, чтобы биос его дергал, а там уже он либо грузит свою систему, либо chainload’ит другой загрузчик из уже PBR.

cocucka    
★★★★★★
Ubuntu / Firefox
Ответ на: комментарий от cocucka

Записать в MBR меню выбора загрузочного раздела, так что при выборе запускается соответствующий PBR раздела. Haiku так делает. Само меню влезает в 512 байт вместе с настройками так что не зависит от какой либо установленной операционной системы.

X512    
★★★★★
Windows / Firefox
Ответ на: комментарий от cocucka

В MBR (точнее в его IPL-области) в случае использования DOS или Windows обычно лежит стандартный загрузчик, который обходит таблицу разделов в этой MBR, находит среди них активный, читает его первый сектор (PBR) и передаёт туда управление.

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

Если загрузчик большой и сложный, и не влезает в 446 байт IPL, то можно в IPL записать стандартный загрузчик, а большой и сложный код положить на отдельный раздел.

Пока все придерживаются этой схемы, можно менять как операционные системы (создали новый раздел, прописали загрузчик в его PBR, сделали активным), так и загрузчики в IPL.

Большинство дистрибутивов Linux в legacy-режиме ставят Grub на /dev/sda, затирая то, что там есть. Если пользователь захочет вернуть свой прежний загрузчик, то обнаружит, что в PBR его раздела с линуксом нет загрузчика, способного загрузить ядро.

С загрузчиками SYSLINUX, например, такой проблемы не возникает - у него стартовый код помещается в PBR, а основная часть лежит в виде файла ldlinux.sys на ext[234] или FAT.

kmeaw    
★★★
Linux / Chrome

XBOOTLDR

TL,DR?..

Sahas    
★★★★★★
Gentoo / Firefox

Леннарт Поттеринг

Нужно закрыть эту клоаку коричневых идей. Пусть в своей винде балуется.

odalist    
★★★★★
Linux / Firefox
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90