1

Я нахожусь в процессе написания простого загрузчика ОС (сначала загрузка в устаревшем режиме). После понимания процесса загрузки (MBR, загрузка VBR и т.д.) Я начал изучать спецификации для разных файловых систем, чтобы понять, как они справляются с этим старым стилем загрузки.

Это необходимо, поскольку загрузочная запись тома (VBR) по своей конструкции расположена на диске в первом секторе "активного" раздела. Другими словами, байты первого сектора (обычно 512 байтов) на самом деле представляют собой не структуры данных файловой системы, а загрузочный код операционной системы.

Сначала я посмотрел на FAT за его простоту. К своему удивлению я обнаружил ссылки на « загрузочный сектор », встроенный прямо в спецификацию. В частности, когда вы форматируете диск с файловой системой FAT, вначале можно "зарезервировать" некоторое количество секторов в начале для специальных блоков кода, таких как VBR. В этом случае все структуры данных файловой системы смещаются на это количество зарезервированных блоков. Большой! Это именно то, что я искал.

Однако я не смог найти что-то похожее в других файловых системах (в частности, ext). Эти другие файловые системы должны поддерживать "унаследованный" стиль загрузки (например, пространство для VBR для начальной загрузки ОС), поскольку они были доступны задолго до спецификации загрузки UEFI.

1 ответ1

2

Эти другие файловые системы должны поддерживать "унаследованный" стиль загрузки (например, пространство для VBR для начальной загрузки ОС), поскольку они были доступны задолго до спецификации загрузки UEFI.

Нет, им не нужно. См. GNU GRUB Руководство 2.02:

Формат таблицы разделов, традиционно используемый на платформах BIOS компьютера, называется форматом основной загрузочной записи (MBR); Этот формат позволяет использовать до четырех основных разделов и дополнительных логических разделов. С этим форматом таблицы разделов GRUB можно установить двумя способами: он может быть встроен в область между MBR и первым разделом (называемый различными именами, такими как "загрузочная дорожка", "разрыв MBR" или "встраивание"). область », которая обычно составляет не менее 31 КиБ), или образ ядра может быть установлен в файловой системе, и список блоков, из которых он состоит, может быть сохранен в первом секторе этого раздела.

У каждого из них свои проблемы. Невозможно зарезервировать пространство в области встраивания с полной безопасностью, и известно, что некоторые проприетарные программы используют его, чтобы пользователям было сложно обойти лицензионные ограничения; и системы иногда разбиваются, не оставляя достаточно места перед первым разделом. С другой стороны, установка в файловую систему означает, что GRUB уязвим к перемещению своих блоков такими функциями файловой системы, как "хвостовая упаковка", или даже агрессивными реализациями fsck , поэтому этот подход довольно хрупок; и этот подход можно использовать только в том случае, если файловая система /boot находится на том же диске, с которого загружается BIOS, поэтому GRUB не нужно полагаться на угадывание номеров дисков BIOS.

Команда разработчиков GRUB обычно рекомендует встраивать GRUB перед первым разделом, если у вас нет особых требований. Вы должны убедиться, что первый раздел начинается не менее 31 КиБ (63 сектора) с начала диска; на современных дисках зачастую преимущество в производительности заключается в том, чтобы выровнять разделы по большим границам, так что первый раздел может начинаться на 1 МБ с начала диска.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .