Light-industry-up.ru

Экосистема промышленности

Главная загрузочная запись

12-08-2023

Главная загрузочная запись (англ. master boot record, MBR) — это код и данные, необходимые для загрузки операционной системы (ОС), и расположенные в первых физических секторах (чаще всего в самом первом) на жёстком диске или другом устройстве хранения информации. MBR содержит небольшой фрагмент исполняемого кода, таблицу разделов (partition table) и специальную сигнатуру.

Цель MBR — ещё не загрузка ОС, а всего лишь выбор, «с какого раздела жёсткого диска следует загружать ОС». На стадии MBR происходит выбор раздела диска и ничего более. Загрузка самой ОС происходит на более поздних этапах.

В процессе запуска компьютера после окончания начального теста (Power On Self Test, POST) MBR загружается базовой системой ввода-вывода (BIOS) в оперативную память (в компьютерах архитектуры IBM PC обычно с адреса 0000:7c00) и передаётся управление находящемуся в MBR загрузочному коду (обычно командой long jump).

Структура Главной загрузочной записи (MBR)
Адрес Содержимое
0x0000 Код загрузчика
0x01B8 4-х байтная сигнатура диска (только в Windows 2000, XP [1], но не в Windows 95/98 [2])
0x01BE Четыре 16-байтных записи таблицы основных разделов (только схема таблицы основных разделов MBR)
0x01FE 2-х байтная сигнатура MBR (55AA16)

Содержание

Роль и место MBR в загрузке компьютера (для архитектуры x86)

В процессе загрузки компьютера x86 вначале всегда отрабатывается BIOS. На этой стадии кроме тестирования и активации «железа», происходит также и выбор устройства, с которого будет происходить дальнейшая загрузка. Это может быть дискета, жёсткий диск, сетевой ресурс, встроенное ПЗУ или любое иное устройство (алгоритм выбора загрузочного устройства может быть различным и зависит от реализации BIOS). После выбора загрузочного устройства, управление всей дальнейшей загрузкой BIOS полностью передаёт этому устройству.

В случае, если устройство имеет только один раздел (как, например, дискета или сетевая загрузка), то выбор однозначен, и загрузка продолжается сразу с этого устройства. Однако, если устройство содержит несколько разделов, каждый из которых потенциально может быть загрузочным (как, например, в случае жестких дисков), то возникает неопределённость: с какого именно раздела производить загрузку?

Для разрешения неоднозначности по выбору раздела было предложено вынести этот вопрос из ведения BIOS и передать этот выбор самому устройству. Возникла идея использовать для этого небольшую программу, записанную на самом носителе, которая и осуществляла бы данный выбор. Так появилась концепция MBR.

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

Развитие MBR

Иногда в MBR кроме основной функции (выбора раздела) включаются также и другие функции, например, авторизация. Но это уже расширение и дополнение к основной функции и задаче MBR. Такие системы не получили широкого распространения.

Другие (не x86) системы

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

Стандартизация MBR

Утвержденного стандарта на структуру MBR не существует, однако, есть «сложившиеся традиции», по сути, «стандарт де-факто», которого придерживаются большинство MBR от разных производителей.

Наиболее частый формат MBR

Иные форматы MBR

Загрузчики, отличные от стандартных Windows-загрузчиков, могут использовать всё пространство между MBR и первым разделом (~32 кб) для собственных целей. В таких случаях под MBR понимают весь загрузочный код, а для выделения именно первых 512 байт говорят, что они расположены в MBS — Master Boot Sector — главном загрузочном секторе. Для операционных систем Microsoft понятия MBR и MBS совпадают, так как вся MBR содержится в MBS, хотя это не совсем правильно, так как под MBR подразумевают данные, а под MBS — физический сектор.

MBR от Microsoft (MS DOS и MS Windows)

Структура MBR

Структура MBR от Microsoft занимает один сектор (512 байт):

  • область кода и служебных данных (446 байт)
  • область partition table (4 записи по 16 байт)
  • Сигнатура 55AAh (2 байта)

Содержание «Области кода и служебных данных» зависит от версии DOS / Windows, но функции остаются те же — поиск, загрузка и запуск нужного загрузочного сектора[1][2][3].

Алгоритм работы кода MBR от Microsoft

BIOS (до MBR)

  • BIOS проводит начальную инициализацию оборудования («железа»)
  • BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д... (выбор устройства зависит от версии и от настроек BIOS)
    …. [в данном описании рассматривается только случай загрузки с жесткого диска..]
  • BIOS считывает один сектор (512 байт), который находится по адресу: «цилиндр 0, головка 0, сектор 1», и помещает его в область памяти по адресу 0000:7c00
  • BIOS проверяет, что этот сектор оканчивается сигнатурой 55ААh
    …. [если это не так, то управление возвращается обратно в BIOS]
  • BIOS передаёт управление по адресу 0000:7c00 (то есть сектору MBR)

MBR

Выбор загрузочного раздела и проверка целостности MBR:

  • MBR копирует себя с адреса 0000:7c00 на адрес 0000:0600 (освобождая место для будущей загрузки уже собственно загрузчика ОС)
  • MBR просматривает по очереди все записи о разделах и ищет первую запись об «активном» (== «загрузочном») разделе (то есть ищет раздел, отмеченный как 80h)
  • В случае успеха (раздел, помеченный как 80h — найден) MBR запоминает номер этого раздела
    …. [если просмотрены все 4 записи и не найден раздел, помеченный как 80h, то вызывается INT 18h. Это возвращает управление обратно в BIOS, что может приводить либо к загрузке BASIC, либо к повторной попытке загрузить систему с диска, либо к перезагрузке компьютера — в зависимости от версии и реализации BIOS]
  • MBR просматривает все оставшиеся записи и проверяет, что это единственный активный раздел (что больше разделов, помеченных 80h, на данном физическом диске не существует)
    …. [если находятся другие разделы, помеченные 80h, то MBR выводит сообщение об ошибке (обычно это что-то типа «Invalid partition table»), после чего система подвисает в бесконечном цикле, из которого можно выйти только перезагрузкой компьютера]
  • MBR проверяет, что в данном поле для всех 4-х разделов нет иных значений кроме «00h» и «80h»
    …. [если находятся разделы, помеченные иным значением, чем 00h или 80h, то MBR выводит сообщение об ошибке («Invalid partition table»), система подвисает, требуется перезагрузка компьютера]

На этом заканчивается проверка MBR и начинается подготовка к загрузке ОС:

  • MBR считывает первый сектор логического диска, помеченного как «загрузочный» и помещает этот сектор по адресу 0000:7c00
  • MBR проверяет, что данный сектор заканчивается сигнатурой 55ААh
    …. [если этой сигнатуры в этом месте нет, то выводится сообщение «Missing operating system» и компьютер подвисает, требуется перезагрузка]
  • MBR передает управление по адресу 0000:7c00 (то есть загрузочному сектору выбранного логического диска)

Загрузочный сектор логического диска (после MBR)

  • Загрузочный сектор зависит от типа файловой системы на логическом диске и содержит код, выполняющий нахождение и загрузку собственно операционной системы на данном типе файловой системы.

Структура MBR

Структура Главной загрузочной записи (MBR)
Смещение Длина Описание
000h 446 Код загрузчика
1BEh 64 Таблица разделов
16 Раздел 1
1CEh 16 Раздел 2
1DEh 16 Раздел 3
1EEh 16 Раздел 4
1FEh 2 Сигнатура (55h AAh)

Код загрузчика

После завершения процедуры POST в ОЗУ по адресу 0x0000:0x7c00 записывается код загрузчика после чего ему передается управление. Задача загрузчика проанализировать таблицу разделов жёсткого диска, а затем либо передать управление загрузочному коду активного раздела, либо загрузить в память ядро операционной системы и передать ему управление.

Таблица разделов

В таблице разделов хранится информация о типе раздела и его расположении на жёстком диске.

Сигнатура

Последние два байта MBR называются сигнатурой. Значение этих байтов должно быть 55h AAh. В случае, если это не так, запись считается некорректной.

Структура описания раздела

Структура описания раздела
Смещение Длина Описание
00h 1 Признак активности раздела
01h 1 Начало раздела — головка
02h 1 Начало раздела — сектор (биты 0-5), дорожка (биты 6,7)
03h 1 Начало раздела — дорожка (старшие биты 8,9 хранятся в байте номера сектора)
04h 1 Код типа раздела
05h 1 Конец раздела — головка
06h 1 Конец раздела — сектор (биты 0-5), дорожка (биты 6,7)
07h 1 Конец раздела — дорожка (старшие биты 8,9 хранятся в байте номера сектора)
08h 4 Смещение первого сектора
0Ch 4 Количество секторов раздела

Признак активности разделов

Признак активности раздела — признак обозначающий возможность загрузки операционной системы с данного раздела. Для стандартных загрузчиков может принимать следующие значения:

  • 80h — раздел является активным
  • 00h — раздел является неактивным
  • Другие значения являются ошибочными и игнорируются.

Начало раздела / Конец раздела

Координаты начала и конца раздела в CHS (Цилиндр, головка, сектор) формате. Следует учитывать, что CHS не позволяет выполнять адресацию более чем к 7,8 Гб данных. Для адресации к разделам находящимся за пределами 7,8 Гб используется LBA адресация.

Код типа раздела

Код файловой системы используемой на данном разделе. В случае расширенного раздела принимает значение 05h. В случае если используется расширенный раздел, то координаты начала раздела указывают на EBR.

Структура EBR
Смещение Длина Описание
1BEh 16 Указатель на раздел
1CEh 16 Указатель на следующий EBR
1FEh 2 Сигнатура (55h AAh)

Формат указателей аналогичен MBR.

Смещение первого сектора

Координаты начала раздела в LBA координатах. Позволяет выполнять адресацию до 2 Тб данных.

Восстановление MBR

Если каким-либо образом была потеряна MBR, то её можно восстановить специальными утилитами (например TestDisk), которая просмотрит весь носитель информации и создаст таблицу разделов.

См. также

Примечания

  1. An Examination of the Standard MBR (DOS 3.30 - Win 95A)  (англ.). Проверено 23 июля 2009.
  2. An Examination of the Standard MBR (Win 95B - Win ME)  (англ.). Проверено 23 июля 2009.
  3. An Examination of the Standard MBR (Win 2k - Win XP)  (англ.). Проверено 23 июля 2009.

Ссылки

  • MBR своими руками
  • Главная Загрузочная Запись — Master Boot Record (MBR)
  • Восстановление MBR
  • MBR, разделы и загрузчики

Главная загрузочная запись.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06