Каково назначение активного раздела MBR?

Каково назначение активного раздела MBR?

Концепция загрузки загрузчиков на UEFI проста и понятна, так как они помещаются .efiна системный раздел EFI. .efiЗатем файл загружает соответствующие операционные системы. Однако я все еще не могу понять, зачем MBR нужен активный раздел для загрузки ОС.

Из моего исследования на данный момент, код начальной загрузки MBR находится в первых 446 байтах диска, который будет автоматически выполнен BIOS после POST (как стандарт де-фактора). Он может загружать ОС напрямую, но большую часть времени код настолько мал, что его основная задача — загрузить фактический загрузчик, лежащий где-то на другом разделе.

Зачем нам нужно делать раздел активным, чтобы с него загружаться? Теоретически, код начальной загрузки MBR может запустить что угодно и откуда угодно.

решение1

Зачем нам нужно делать раздел активным, чтобы с него загружаться? Теоретически, код начальной загрузки MBR может запустить что угодно и откуда угодно.

Да, и на практике код начальной загрузки MBR часто делает именно это.

Но код начальной загрузки нуждаетсянекоторыйметод поиска места хранения следующей стадии загрузчика. (Весь загрузчик никогда не занимает всего 446 байт; MBR — это только его стадия 1.)

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

Например,сислинуксЗагрузочный сектор MBR, по-видимому, полностью взаимозаменяем с загрузочным сектором Windows MBR. Если вы используете двойную загрузку Linux и Windows, неважно, какой у вас загрузочный сектор, они оба делают одно и то же, поэтому вы всегда можете просто поменять бит «активный», чтобы поменять ОС. (А установка загрузочного сектора — это просто копирование mbr.bin на сырой диск.)

Но разные загрузчики, конечно, используют разные подходы: например, популярный Linux GRUB2 хранит свой второй этап в «промежутке после MBR» и динамически генерирует код начальной загрузки в соответствии с его расположением; т. е. загрузочный сектор MBR знает, с какого LBA начинается второй этап (полностью игнорируя таблицу разделов и флаг «активный»), и это может различаться между дисками, поэтому загрузочный сектордолженбыть записан программой grub-installиндивидуально для каждого диска.

(GRUB2 обычно не использует разделы VBR; хотя онможет(Таким образом, «chainload» (цепная загрузка), его типичная конфигурация фактически напрямую обращается к реальной файловой системе и загружает файлы ядра ОС.)

решение2

Видеть Главная загрузочная запись Wikipedia для получения информации об истории формата MBR.

По сути, необходимость в активном разделе была заложена в основу раннего загрузчика IBM/DOS и остается таковой до сих пор.

Эти ранние загрузчики сканировали список разделов во встроенной таблице разделов MBR, чтобы найти единственный раздел, отмеченный флагом «активный», а затем загружали и запускали загрузочную запись тома (VBR) этого активного раздела.

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

Связанный контент