Главная загрузочная запись (англ. master boot record, MBR) — это код и данные, необходимые для загрузки операционной системы (ОС), и расположенные в первых физических секторах (чаще всего в самом первом) на жёстком диске или другом устройстве хранения информации. MBR содержит небольшой фрагмент исполняемого кода, таблицу разделов (partition table) и специальную сигнатуру.
Цель MBR — ещё не загрузка ОС, а всего лишь выбор, «с какого раздела жёсткого диска следует загружать ОС». На стадии MBR происходит выбор раздела диска и ничего более. Загрузка самой ОС происходит на более поздних этапах.
В процессе запуска компьютера после окончания начального теста (Power On Self Test, POST) MBR загружается базовой системой ввода-вывода (BIOS) в оперативную память (в компьютерах архитектуры IBM PC обычно с адреса 0000:7c00) и передаётся управление находящемуся в MBR загрузочному коду (обычно командой long jump).
Адрес | Содержимое |
---|---|
0x0000 | Код загрузчика |
0x01B8 | 4-х байтная сигнатура диска (только в Windows 2000, XP [1], но не в Windows 95/98 [2]) |
0x01BE | Четыре 16-байтных записи таблицы основных разделов (только схема таблицы основных разделов MBR) |
0x01FE | 2-х байтная сигнатура MBR (55AA16) |
Содержание |
В процессе загрузки компьютера x86 вначале всегда отрабатывается BIOS. На этой стадии кроме тестирования и активации «железа», происходит также и выбор устройства, с которого будет происходить дальнейшая загрузка. Это может быть дискета, жёсткий диск, сетевой ресурс, встроенное ПЗУ или любое иное устройство (алгоритм выбора загрузочного устройства может быть различным и зависит от реализации BIOS). После выбора загрузочного устройства, управление всей дальнейшей загрузкой BIOS полностью передаёт этому устройству.
В случае, если устройство имеет только один раздел (как, например, дискета или сетевая загрузка), то выбор однозначен, и загрузка продолжается сразу с этого устройства. Однако, если устройство содержит несколько разделов, каждый из которых потенциально может быть загрузочным (как, например, в случае жестких дисков), то возникает неопределённость: с какого именно раздела производить загрузку?
Для разрешения неоднозначности по выбору раздела было предложено вынести этот вопрос из ведения BIOS и передать этот выбор самому устройству. Возникла идея использовать для этого небольшую программу, записанную на самом носителе, которая и осуществляла бы данный выбор. Так появилась концепция MBR.
Таким образом, потенциальное наличие нескольких загрузочных разделов, среди которых необходимо осуществить выбор — это ключевой момент в необходимости появления и отработки MBR. Для устройств с единственным (или однозначно заданным) загрузочным разделом концепция MBR лишена смысла и не используется.
Иногда в MBR кроме основной функции (выбора раздела) включаются также и другие функции, например, авторизация. Но это уже расширение и дополнение к основной функции и задаче MBR. Такие системы не получили широкого распространения.
В связи с тем, что на других системах применяются иные архитектурные решения (начиная от активации железа и заканчивая загрузкой ОС), то концепция MBR может быть к ним не применима. Для подробностей — см. описание соответствующих систем.
Утвержденного стандарта на структуру MBR не существует, однако, есть «сложившиеся традиции», по сути, «стандарт де-факто», которого придерживаются большинство MBR от разных производителей.
Загрузчики, отличные от стандартных Windows-загрузчиков, могут использовать всё пространство между MBR и первым разделом (~32 кб) для собственных целей. В таких случаях под MBR понимают весь загрузочный код, а для выделения именно первых 512 байт говорят, что они расположены в MBS — Master Boot Sector — главном загрузочном секторе. Для операционных систем Microsoft понятия MBR и MBS совпадают, так как вся MBR содержится в MBS, хотя это не совсем правильно, так как под MBR подразумевают данные, а под MBS — физический сектор.
Структура MBR от Microsoft занимает один сектор (512 байт):
Содержание «Области кода и служебных данных» зависит от версии DOS / Windows, но функции остаются те же — поиск, загрузка и запуск нужного загрузочного сектора[1][2][3].
Выбор загрузочного раздела и проверка целостности 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 | Количество секторов раздела |
Признак активности раздела — признак обозначающий возможность загрузки операционной системы с данного раздела. Для стандартных загрузчиков может принимать следующие значения:
Координаты начала и конца раздела в CHS (Цилиндр, головка, сектор) формате. Следует учитывать, что CHS не позволяет выполнять адресацию более чем к 7,8 Гб данных. Для адресации к разделам находящимся за пределами 7,8 Гб используется LBA адресация.
Код файловой системы используемой на данном разделе. В случае расширенного раздела принимает значение 05h. В случае если используется расширенный раздел, то координаты начала раздела указывают на EBR.
Смещение | Длина | Описание |
---|---|---|
1BEh | 16 | Указатель на раздел |
1CEh | 16 | Указатель на следующий EBR |
1FEh | 2 | Сигнатура (55h AAh) |
Формат указателей аналогичен MBR.
Координаты начала раздела в LBA координатах. Позволяет выполнять адресацию до 2 Тб данных.
Если каким-либо образом была потеряна MBR, то её можно восстановить специальными утилитами (например TestDisk), которая просмотрит весь носитель информации и создаст таблицу разделов.
Главная загрузочная запись нового жесткого диска, главная загрузочная запись компьютера странным образом изменена, главная загрузочная запись кратенько, главная загрузочная запись и таблица разделов.