Главная загрузочная запись создается на новом диске программой FDISK. Управление дисками Windows при создании раздела производит запись в MBR. Все программы наподобие Partition Magic или Acronis Disk Director тоже создают и редактируют главную загрузочную запись.
Просмотреть содержимое секторов винчестера, в том числе первого, на котором находится главная загрузочная запись, можно многими HEX-редакторами. В редакторе Hexplorer есть отдельная команда меню Disk (Диск). При ее вызове появляется окно, где следует указать номер начального сектора и число секторов, которое программа должна прочитать. Существуют и специальные дисковые редакторы, например DiskEdit из пакета Norton Utilities или DiskExplorer for NTFS (http://www.runtime.org). Основное отличие дисковых редакторов от обычных бинарных редакторов – наличие широкого набора шаблонов просмотра данных (можно сразу интерпретировать их не только как текст, но и как загрузочный сектор либо один из элементов файловой системы) и защиты от непреднамеренной записи на диск.
MBR занимает ровно 512 байтов – один сектор. Структура этой записи представлена в табл. 2.1.
Четыре 16-байтных блока, каждый из которых описывает один раздел, образуют таблицу разделов – Partition Table. Максимальное количество разделов, которое может быть описано в MBR, – четыре. Каждый блок состоит из 10 полей (табл. 2.2).
Флаг активности указывает на то, что раздел активен. Из всех разделов на диске активным может быть лишь один. Код типа раздела – однобайтовый идентификатор. Если его значение 00h, то считается, что этого раздела не существует и его содержимое игнорируется. Любое ненулевое значение означает, что в указанном пространстве находится раздел определенного типа. Так, например, идентификатор 06h указывает на раздел, отформатированный в FAT16, 0Bh или 0Ch – на раздел FAT32, а 07h – на раздел NTFS.
Если на диске нужно создать больше четырех разделов, то следует использовать специальный тип раздела с кодом 05h – расширенный раздел (Extended Partition).
Расширенный раздел отличается от всех остальных типов. Он описывает не сам раздел, а область пространства накопителя, в которой описаны разделы. В том секторе, который прописан в MBR как сектор начала расширенного раздела, фактически содержится еще одна загрузочная запись – Extended Boot Record (EBR) (табл. 2.3). Кода загрузчика в ней нет, есть только таблица разделов и сигнатура.
Указатель на раздел описывает обычный раздел (Partition), как показано в табл. 2.2. Если обычный раздел занимает не все пространство, то в таблице разделов появляется второй элемент, который вновь описывает оставшееся пространство как Extended Partition, то есть указатель на следующий EBR. В секторе, на который ссылается эта запись, точно так же описывается один раздел, и, если осталось место, делается очередная запись об Extended Partition. Так продолжается до тех пор, пока пространство не будет разделено. Фактически все записи о расширенных разделах являются цепью (Extended Partition Chain), в которой от дискового пространства отрезаются кусочки, пока место не закончится. Ошибка в любом элементе этой цепи приведет к ее обрыву. Все разделы, записи о которых лежат после разрыва цепи, операционная система найти не сможет, а занимаемое этими расширенными разделами пространство она будет считать незанятым.
Файловые системы
Таблица разделов указывает на первые сектора каждого раздела. Для размещения файлов в разделе его следует отформатировать, то есть создать внутри раздела файловую систему. Основная запись файловой системы обычно начинается в первом секторе раздела. Структура записей файловой системы зависит от ее типа. Чаще всего встречаются файловые системы NTFS и FAT.
Файловая система NTFS сейчас используется на дисках 90 % домашних и офисных компьютеров. В основе ее лежит главная файловая таблица (Master File Table – MFT). Это база данных, или таблица, строки которой соответствуют файлам тома, а столбцы — атрибутам файлов. Файловая система NTFS образована девятью системными файлами, которые скрыты от просмотра обычными средствами. Эти файлы содержат таблицы занимаемых файлами кластеров и атрибутов файлов, список шагов транзакций (проведенных операций с файлами), корневой каталог и т. д. В секторе начальной загрузки указано положение сегментов данных MFT и зеркального файла MFT. В середине диска расположен дубликат сектора начальной загрузки.