Материал: 6261

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

46

Суть LBA состоит в том, что каждый блок, адресуемый на жестком диске, имеет свой номер - целое число, начиная с нуля и далее:

LBA 0 = Цилиндр 0/Головка 0/Сектор 1

Преимущество метода адресации LBA — ограничение размера диска обусловлено лишь разрядностью LBA. В настоящее время, для задания номера блока используется 48 бит, что дает возможность адресовать (248) 281 474 976 710 656 блоков.

Технический комитет X3T10 установил правила получения адреса блока в режиме LBA, при условии, что размер блока равен размеру сектора:

где:

с — номер текущего цилиндра; h — номер текущей головки;

s — номер текущего сектора; H — число головок;

S — число секторов на дорожке;

mod — операция взятия остатка от деления.

После того, как BIOS закончит начальный тест POST, она начнет просматривать блочные устройства ЭВМ с целью поиска загрузочного устройства ОС:

•Блочные устройства просматриваются в том порядке, который указан в настройках BIOS. Чтобы определить является ли устройство загрузочным, BIOS читает первый сектор блочного устройства и помещает его в ОЗУ ЭВМ. В компьютерах архитектуры IBM PC, этот адрес обычно 0000:7c00.

•Если сектор соответствует MBR — Master Boot Record, то BOIS передает управление его загрузочному коду: обычно командой long jump.

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

•Если все просмотренные устройства не являются загрузочными, то BIOS: или перезапускает ЭВМ или загружает встроенный в BIOS интерпретатор языка BASIC (если он, конечно, — есть).

Замечание

BIOS рассматриватет flashUSB как загрузочное устройство, если:

•его ПО поддерживает такие устройства;

•имеется раздел MBR, который отмечен как загрузочный.

UEFI рассматривает flashUSB как загрузочное устройство, если оно имеет раздел, форматированный как FAT12/16/32, и в корне разделя имеется директория EFI.

47

2.7 Загрузочный сектор MBR, его назначение и архитектура

MBR (Master Boot Record) — это Главная загрузочная запись блочного устройства.

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

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

Замечание

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

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

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

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

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

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

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

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

•таблицу разделов (partition table);

•специальную сигнатуру.

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

Адрес Содержимое

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

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

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

(partition table)

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

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

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

48

ется в момент инсталляции ОС на внешний носитель.

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

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

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

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

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

работает с таблицей разделов (partition table), структура отдельной строки

которой показана в таблице 2.2: если загрузочный раздел найден, то первый сектор загрузчика ОС записывается по адресу 0000:7С00 и ему передается управление; если загрузочный раздел не найден или обнаружена ошибка за-

писи partition table, то делается прерывание INT 18h и управление передается назад в BIOS.

Для отдельной записи partition table:

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

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

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

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

Следующие три байта задают начало раздела в системе координат (C,H,S).

Пятый байт обозначает код файловой системы: Partition Ids, некоторые значения которого приведены в таблице 2.3.

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

Таблица 2.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

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

49

Таблица 2.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, начинающегося со структуры, приведенной в таблице 2.4.

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

Смещение

Длина

Описание

1BEh

16

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

1CEh

16

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

1FEh

2

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

Замечание

Формат указателей в таблице 2.4 аналогичен формату строки Partition Table в MBR. Раздел EBR не может содержать в себе других разделов EBR.

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

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

GPT — GUID Partition Table.

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

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

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

50

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

Теперь,

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

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

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

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

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

Замечание

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

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

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

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

Источник: https://studfile.net/preview/16438529/