Главная загрузочная запись
Материал из Википедии — свободной энциклопедии
| Адрес | Содержимое |
|---|---|
| 0x0000 | Код загрузчика |
| 0x018A | Четыре 9-байтных записи таблицы основных разделов (IBM-расширения к схеме таблицы разделов MBR)[источник не указан 50 дней] |
| 0x01B8 | 4-х байтная сигнатура диска (только в Windows 2000, XP [1], но не в Windows 95/98 [2]) |
| 0x01BE | Четыре 16-байтных записи таблицы основных разделов (только схема таблицы основных разделов MBR) |
| 0x01FE | 2-х байтная сигнатура MBR (0xAA55) |
Главная загрузочная запись (англ. master boot record, MBR) — это первый физический сектор на жёстком диске или другом устройстве хранения информации, разбиваемом на логические диски (разделы). MBR содержит таблицу разделов (partition table) и небольшой фрагмент исполняемого кода.
Цель MBR — ещё не загрузка ОС, а всего лишь выбор «с какого раздела жёсткого диска следует загружать ОС». На стадии MBR происходит выбор раздела диска и ничего более. Загрузка самой ОС происходит на более поздних этапах.
В процессе запуска компьютера при загрузке с жёсткого диска MBR загружается в память базовой системой ввода-вывода (BIOS) после окончания теста POST (в компьютерах архитектуры IBM PC обычно с адреса 0000:7c00), ему передаётся управление командой long jump.
Для некоторых ОС в MBR содержится программа stage1, то есть первый этап загрузки операционной системы[источник не указан 50 дней], который загружает программу второго этапа загрузки операционной системы stage2 (иногда в качестве stage2 загружается загрузочный сектор активного раздела, boot manager или программа авторизации и защиты доступа).
Содержание |
[править] Роль и место MBR в загрузке компьютера (для архитектуры x86)
В процессе загрузки компьютера x86 вначале всегда отрабатывается BIOS. На этой стадии кроме тестирования и активации «железа», происходит также и выбор устройства, с которого будет происходить дальнейшая загрузка. Это может быть дискета, жёсткий диск, сетевой ресурс, встроенное ПЗУ или любое иное устройство. (Алгоритм выбора загрузочного устройства может быть различным и зависит от реализации BIOS.) После выбора загрузочного устройства, управление всей дальнейшей загрузкой BIOS полностью передаёт этому устройству.
В случае, если устройство имеет только один раздел (как, например, дискета или сетевая загрузка), то выбор однозначен, и загрузка продолжается сразу с этого устройства. Однако, если устройство содержит несколько разделов, каждый из которых потенциально может быть загрузочным (как, например, в случае жестких дисков), то возникает неопределённость: с какого именно раздела производить загрузку?
Для разрешения неоднозначности по выбору раздела, было предложено вынести этот вопрос из ведения BIOS и передать этот выбор самому устройству. Так появилась идея использовать небольшую программу, записанную на самом носителе, которая и осуществляла бы данный выбор. Так появилась концепция MBR.
Таким образом, потенциальное наличие нескольких загрузочных разделов, среди которых необходимо осуществить выбор — это ключевой момент в необходимости появления и отработки MBR. Для устройств с единственным (или однозначно заданным) загрузочным разделом концепция MBR лишена смысла и не используется.
[править] Развитие MBR
Иногда в MBR кроме основной функции (выбора раздела) включаются так же и другие функции, например, авторизация. Но это уже расширение и дополнение к основной функции и задаче MBR. Такие системы не получили широкого распространения.
[править] Другие (не x86) системы
В связи с тем, что на других системах применяются иные архитектурные решения (начиная от активации железа и заканчивая загрузкой ОС), то концепция MBR может быть к ним не применима. Для подробностей — см. описание соответствующих систем.
[править] Стандартизация MBR
Утвержденного стандарта на структуру MBR не существует, однако, есть «сложившиеся традиции», по сути, «стандарт де-факто», которого придерживаются большинство MBR от разных производителей.
[править] Наиболее частый формат MBR
[править] Иные форматы MBR
Загрузчики, отличные от стандартных Windows-загрузчиков могут использовать всё пространство между MBR и первым разделом (64 кб) для собственных целей. В таких случаях, под 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 (подробне см. в разделе Ссылки)
[править] Алгоритм работы кода 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 не производит никакой иной работы, кроме выбора активного раздела. Загрузкой ОС занимается boot-сектор выбранного логического диска. А MBR находится как бы между BIOS и собственно загрузкой ОС.
Подробности можно посмотреть: [3], [4], [5]
[править] Структура MBR
| Смещение | Длина | Описание |
|---|---|---|
| 000h | 446 | Код загрузчика |
| 1BEh | 64 | Таблица разделов |
| 16 | Раздел 1 | |
| 1CEh | 16 | Раздел 2 |
| 1DEh | 16 | Раздел 3 |
| 1EEh | 16 | Раздел 4 |
| 1FEh | 2 | Сигнатура (55h AAh) |
[править] Код загрузчика
После завершения процедуры POST в ОЗУ по адресу 0x07c0:0x0000 записывается код загрузчика после чего ему передается управление. Задача загрузчика проанализировать таблицу разделов жёсткого диска, а затем либо передать управление загрузочному коду активного раздела, либо загрузить в память ядро операционной системы и передать ему управление.
[править] Таблица разделов
В таблице разделов хранится информация о типе раздела и его расположении на жёстком диске.
[править] Сигнатура
Последние два байта 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.
| Смещение | Длина | Описание |
|---|---|---|
| 16 | Указатель на раздел | |
| 1CEh | 16 | Указатель на следующий EBR |
| 1FEh | 2 | Сигнатура (55h AAh) |
Формат указателей аналогичен MBR.
[править] Смещение первого сектора
Координаты начала раздела в LBA координатах. Позволяет выполнять адресацию до 2 Тб данных.
[править] Восстановление MBR
Если каким-либо образом была потеряна MBR, то её можно восстановить специальными утилитами (например TestDisk), которая просмотрит весь носитель информации и создаст таблицу разделов.
[править] См. также
- Логический диск
- Файловая система
- Раздел диска
- Загрузчик операционной системы
- Загрузочный сектор
- Начальная загрузка компьютера
[править] Ссылки
- Главная Загрузочная Запись — Master Boot Record (MBR)
- http://thestarman.narod.ru/asm/mbr/STDMBR.htm (англ.) — Описание MBR в MS-DOS 3.30 и MS-Windows 95 (A)
- http://thestarman.narod.ru/asm/mbr/95BMEMBR.htm (англ.) — Описание MBR в MS-Windows 95B, 98, 98SE and ME
- http://thestarman.narod.ru/asm/mbr/Win2kmbr.htm (англ.) — Описание MBR в Windows 2000 (NT5.0) и Windows XP (NT5.1)
- Восстановление MBR
- MBR, разделы и загрузчики

