![Каково назначение активного раздела MBR?](https://rvso.com/image/1592544/%D0%9A%D0%B0%D0%BA%D0%BE%D0%B2%D0%BE%20%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B0%20MBR%3F.png)
Концепция загрузки загрузчиков на 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, которое сохранилось навсегда, и не по какой-либо другой причине, а лишь по решению какой-то ранней команды разработчиков (возможно, даже принятому одним человеком).