Скачиваний:
10
Добавлен:
18.07.2023
Размер:
1.8 Mб
Скачать

20

1.7 Загрузочные сектора MBR и GPT

MBR (Master Boot Record) это Главная загрузочная запись блочного устройства, — это программный код и данные, расположенные в первом секторе блочного устройства и используемые для загрузки некоторой ОС.

В общем случае, под загрузчик MBR выделено 32 Кбайт винчестера или другого внешнего блочного накопителя. Если под загрузчик ОС используются все 32 Кбайт, то под MBR понимают весь этот загрузочный код. В этом случае, первые 512 байт называют MBS — Master Boot Sector или главным загрузочным сектором.

Для операционных систем MS Windows, понятия MBR и MBS совпадают, так как вся MBR содержится в MBS и они рассматриваются как синонимы.

Замечание

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

с одного устройства загружалась только одна ОС;

структура блочного устройства была уникальна для каждой ОС.

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

На стадии MBR происходит только выбор раздела диска и ничего более.

Загрузка самой ОС происходит на более поздних этапах.

1.7.1 Общая структура MBR

Структура MBR содержит три основные части (см. таблицу 1.1):

небольшой фрагмент исполняемого кода, - 446 байт;

таблицу разделов (Partition table), - 64 байт;

специальную сигнатуру, - 2 байта.

Таблица 1.1 - Структура Главной загрузочной записи (MBR)

Адрес

Содержимое

0x0000

Код загрузчика (446 байт)

0x01B8

4-х байтная сигнатура диска (только для MS Windows 2000 и XP)

0x01BE

Четыре 16-байтных записи схемы таблицы основных разделов MBR

(Partition table)

0x01FE

2-х байтная сигнатура MBR (55AA16)

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

Согласно «традиции MBR», винчестер может быть разбит на четыре основных раздела. Допускается один из разделов использовать как расширенный раздел и делить его дополнительно. Традиционно также, MBR создаётся или редактируется в момент инсталляции ОС на внешний носитель.

21

Когда BIOS прочитает первый сектор блочного устройства и запишет его по адресу 0000:7С00, она проверяет наличие сигнатуры 55AAh:

Если сигнатура есть, управление передаётся коду загрузчика MBR;

Если сигнатуры нет, то проверяется следующее блочное устройство.

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

копирует себя с адреса 0000:7C00 по адресу 0000:6000, освобождая место для непосредственного загрузчика ОС;

работает с таблицей разделов (Partition table), структура отдельной строки которой показана в таблице 1.2: если загрузочный раздел найден, то первый сектор загрузчика ОС записывается по адресу 0000:7С00 и ему передаётся управление; если загрузочный раздел не найден или обнаружена ошибка записи partition table, то делается прерывание INT 18h и управление передаётся назад в BIOS.

1.7.2 Структура отдельной записи Partition table

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

80h — раздел является активным;

00h — раздел является неактивным;

Другие значения являются ошибочными и игнорируются.

Следующие три байта задают начало раздела в системе координат (C,H,S). Пятый байт обозначает код файловой системы: Partition Ids, некоторые зна-

чения которого приведены в таблице 1.3.

Следующие три байта задают окончание раздела в координатах (C,H,S). Завершают строку Partition table два четырёхбайтовых числа, задающие на-

чало раздела и его длину в секторах.

Таблица 1.2 - Структура описания раздела

Смещение

Длина

Описание

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

Количество секторов раздела

22

Таблица 1.3 - Ранее распространённые коды типов файловых систем

ID (hex)

Описание

01

Primary DOS12 (12-bit FAT)

04

Primary DOS16 (16-bit FAT)

05

Extended DOS

06

Primary big DOS (> 32MB)

0A

OS/2®

83

Linux (EXT2FS)

A5

FreeBSD, NetBSD, 386BSD (UFS)

Замечание

Допускается, чтобы один из разделов блочного устройства имел код типа файловой системы равный 05h, который соответствует структуре раздела EBR — Extended Boot Record, начинающегося со структуры, приведённой в таблице 1.4.

Таблица 1.4 - Структура EBR

Смещение

Длина

Описание

1BEh

16

Указатель на раздел

1CEh

16

Указатель на следующий EBR

1FEh

2

Сигнатура (55AAh)

Замечание

Формат указателей в таблице 1.4 аналогичен формату строки Partition Table в

MBR.

Раздел EBR не может содержать в себе других разделов EBR.

Традиционная таблица разделов винчестера MBR ориентирована на загрузку только одной ОС.

1.7.3 Общая структура GPT

Дальнейшее развитие структуры блочных устройств связано с созданием новой усовершенствованной таблицы разделов: GPT, показанной на рисунке 1.6.

GPT GUID Partition Table.

GUID — Global Unique Identifier - глобальный уникальный идентификатор, который в данном контексте используется для именования разделов блочных устройств:

само устройство именуется в момент создания на нем структуры GPT;

раздел устройства именуется в момент создания на нем файловой системы.

23

Рисунок 1.5 - Структура таблицы разделов GPT

Структура блочного устройства — GPT, обеспечивает:

Каждое блочное устройство может быть разбито на 128 разделов, записи о которых дублируются в конце устройства (отрицательные номера LBA).

Все разделы GPT являются основными.

Размер LBA=512 байт и LBA0 — для совместимости соответствует MBR.

Отдельный LBA содержит записи о 4-х разделах: по 128 байт на раздел.

Для идентификации раздела используются GUID.

Замечание

MBR, входящий в структуру GPT, должен указывать наличие на блочном устройстве только одного раздела с типом eeh и размером:

всего блочного устройства, для устройств < 2 ТБайт;

2 ТБайт, для устройств > 2 ТБайт.

Не все BIOS могут работать со структурой GPT.

Соседние файлы в папке 5. Операционные системы (complete)