
- •Введение
- •1 Тема 2. BIOS, UEFI и загрузка ОС
- •1.1 Архитектура процессоров х86
- •1.1.1 Базовый набор регистров процессора 8086
- •1.1.2 Наборы регистров 64-битных процессоров
- •1.1.3 Вызов функций и прерывания
- •1.2 BIOS и его функции
- •1.3 Этапы и режимы POST
- •1.4 UEFI и его стандартизация
- •1.4.1 Программное обеспечение 16-битного BIOS
- •1.4.2 Оперативная память 16-битного IBM PC компьютера
- •1.4.3 Отличительные особенности ПО UEFI
- •1.5 Блочные и символьные устройства компьютера
- •1.6 Винчестер и загрузочные устройства
- •1.6.1 Блочная адресация CHS
- •1.6.2 Блочная адресация LBA
- •1.7 Загрузочные сектора MBR и GPT
- •1.7.1 Общая структура MBR
- •1.7.2 Структура отдельной записи Partition table
- •1.7.3 Общая структура GPT
- •1.8 GRUB как универсальный загрузчик ОС
- •1.8.1 Примеры загрузчиков ОС
- •1.8.2 Меню и функции GRUB
- •2 Лабораторная работа №2
- •2.1 Установка ПО GRUB на устройство flashUSB
- •2.2 Создание аварийного варианта ОС УПК АСУ
- •2.3 Практика настройки файла конфигурации grub.cfg
- •Список использованных источников

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.