1

Я готовился к экзамену по Linux+ и, делая заметки, пытался объяснить мне различные этапы загрузчика grub в своих заметках, и я застрял на конкретном факте. Насколько я понимаю, на жестком диске с таблицей разделов mbr первые 512 байт (внутренний диск) хранят таблицу разделов и первый этап загрузчика (в моем случае grub). Я хотел сказать:

Диски в стиле MBR используют первые 512 байт диска для хранения таблицы разделов и загрузчика первого этапа. Загрузчик этапа 1 - это первая из двух частей части загрузчика последовательности загрузки. Сначала BIOS/UEFI ищет в первом читаемом секторе (512 байт) разделенного диска mbr расположение этапа 1.5 загрузчика. Стадия 1 - это указатель, указывающий BIOS/UEFI, где искать вторую часть загрузчика. Вторая часть загрузчика хранится в первом читаемом секторе жесткого диска (обычно размером несколько килобайт).

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

Подводя итог, мои вопросы:

Когда люди говорят "первый читаемый сектор", они говорят с точки зрения операционной системы или прошивки (BIOS/UEFI)?

Существует ли разница между тем, что операционная система может видеть на диске mbr, и тем, что видит компьютер fimware (UEFI/bios)?

Для дисков GPT существует ли загрузочный раздел BIOS только для обратной совместимости с BIOS?

Некоторые графики, на которые я смотрел, чтобы понять эту тему:

MBR против GPT

GPT с загрузочным разделом Bios

Кредиты: anchor.com.au

3 ответа3

3

Но я не могу подтвердить с помощью исследований, что правильно сказать, что первый или второй этап - это первый читаемый сектор

Первый сектор является первым сектором. Что касается устаревшего BIOS, он будет загружать только первый сектор диска в память и передавать управление всему, что там находится (этот "этап 1"). Сам BIOS никогда не знает и не заботится о какой-либо «стадии 1.5», "стадии 2" и т.д. (Которые сами по себе специфичны для GRUB - в то время как другие загрузчики, как правило, применяют аналогичные методы, правила не требуется), На самом деле, BIOS даже не заботится о том, что представляет собой "этап 1", если этот сектор можно прочитать с диска (хотя некоторые микропрограммы действительно ищут флаг, помечающий его как загрузочный).

Когда люди говорят "первый читаемый сектор", они говорят с точки зрения операционной системы или прошивки (BIOS/UEFI)?

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

Существует ли разница между тем, что операционная система может видеть на диске mbr, и тем, что видит компьютер fimware (UEFI/bios)?

Как правило, нет - при условии, что ОС имеет прямой доступ к физическому диску. Единственное исключение - виртуализация.

Для дисков GPT существует ли загрузочный раздел BIOS только для обратной совместимости с BIOS?

Да. Большинство установок на базе GPT вообще не имеют загрузочного раздела BIOS. Вместо этого у них есть только системный раздел EFI, предназначенный для загрузки из EFI-совместимой прошивки.


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

Другие абстракции могут вступать в игру. Например, некоторые типы RAID работают на уровне драйвера операционной системы, в результате чего микропрограмма материнской платы и операционной системы имеют различные представления о диске. Другие типы загружают дополнительное ПЗУ в микропрограмму материнской платы, что может привести к тому, что микропрограмма увидит другой "первый сектор", нежели тот, который открыт диском. "Поддельный" RAID-массив Intel является тому примером.

И даже то, что диск представляет как "первый сектор" (первый блок с LBA), может отличаться от того, что физически находится на диске. Мы давно прошли старые времена, когда контроллер диска был отделен от физического диска, и в наши дни мы больше не знаем точно, как устроена внутренняя структура диска. Если вы действительно хотите получить техническую информацию, вы можете утверждать, что "первый читаемый сектор" отличается от того, что находится внутри диска, но это в значительной степени бессмысленно. Современные накопители также могут переназначать "нечитаемые" (поврежденные) сектора на внутренние области - это прозрачно для всего внешнего.


Примечание:first readable sector фактически появляется в комментарии в исходном тексте ядра Linux 2.4 (удалено в 2.6) для Advanced File Filing System в acorn.c . Обратите внимание, что эта файловая система (и система, с которой она была представлена) относится к 1980-м годам и давно не используется. Из Википедии:

Поддержка жестких дисков в ADFS использовала тот же формат, что и дискеты формата L, с точки зрения 256-байтовых блоков; [5] только базовое расположение дорожек и секторов различалось в зависимости от фактического используемого диска, но это управлялось контроллером SCSI. Он подключался к винчестерскому устройству на базе ST506/ST412 через шину BBC Micro 1 МГц, интерфейсную карту, разработанную компанией Acorn (1 МГц шина к адаптеру SCSI), и готовый контроллер SCSI Adaptec (адаптер SCSI к ST-506) ).

1

Раздел "Загрузка BIOS" необходим Grub только на ПК, который загружается в режиме совместимости ("BIOS") с диска с разделением GPT. Grub нужен дополнительный раздел для хранения там самой стадии 1.5. Grub традиционно хранит эти данные по секторам на первом дисковом "цилиндре" до начала первого раздела. Это немного грязная уловка, потому что эта область является своего рода "ничейной землей" и не гарантируется, что она будет свободной. И это на самом деле не бесплатно, если вы используете разделение GPT, так как таблица разделов GPT хранится в этих дисковых блоках. Отсюда необходимость отдельного раздела. При загрузке в режиме UEFI Grub загружается из системного раздела EFI. (При загрузке в режиме UEFI Grub вообще не нужен, но это другая история.)

0

Вам нужно понять порядок: OS> BIOS> FIRMWARE.

В этом случае прошивка является прошивкой накопителя.

BIOS требует от ЛОГИЧЕСКИХ первых 512 байт, потому что только прошивка привода знает, где он расположен на магнитной поверхности (HDD) / какой электрический элемент принадлежит ему (SSD).

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

Запрос на первые 512 байтов, адресованный DRIVE, не зависит от ОС или BIOS.

Когда люди говорят "первый читаемый сектор", они говорят с точки зрения операционной системы или прошивки (BIOS/UEFI)?

Они разговаривают с точки зрения DRIVE.

Существует ли разница между тем, что операционная система может видеть на диске mbr, и тем, что видит компьютер fimware (UEFI/bios)?

Независимо от типа BIOS, все начинается с первого сектора, и его содержимое решает, куда пересылать (не ограничивайтесь жестким диском, на оптическом диске может не быть загрузочной записи, но они имеют логический 0 сектор)

Для дисков GPT существует ли загрузочный раздел BIOS только для обратной совместимости с BIOS?

Не нужно быть загрузочным разделом (как на жестких дисках только для хранения или томах raidX). В системах EFI есть раздел EFI на системном диске.

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