Главная загрузочная запись
Главная загрузочная запись (англ. Master Boot Record, MBR) — это специальный системный раздел, расположенный в первом секторе (сектор 0) жёсткого диска или другого запоминающего устройства, который содержит код начального загрузчика (boot loader) и таблицу разделов. MBR является стандартом для организации данных на дисках с архитектурой IBM PC и используется для загрузки операционной системы, а также для описания структуры диска (разбивки на логические разделы). Размер MBR составляет 512 байт, из которых первые 446 байт занимает исполняемый код, следующие 64 байта — таблица разделов (четыре записи по 16 байт каждая), а последние 2 байта — сигнатура (0x55AA), указывающая на корректность загрузочной записи.
История
Концепция главной загрузочной записи была разработана в начале 1980-х годов компанией IBM для персональных компьютеров IBM PC/XT, использующих BIOS (базовую систему ввода-вывода). Первоначально MBR предназначалась для загрузки операционной системы DOS (Disk Operating System) с жёсткого диска. В 1983 году, с выходом IBM PC/AT, стандарт MBR был закреплён в документации BIOS и стал обязательным элементом для всех совместимых компьютеров.
В 1990-е годы, с развитием операционных систем Microsoft Windows и Linux, MBR оставалась основным способом загрузки и разметки дисков. Однако с ростом объёмов жёстких дисков (более 2 ТБ) и появлением новых технологий (UEFI, GPT) MBR начала устаревать. В 2010-х годах большинство современных компьютеров перешли на использование таблицы разделов GPT (GUID Partition Table) и прошивки UEFI, хотя MBR всё ещё поддерживается для обратной совместимости.
Структура и устройство
Размер и расположение
MBR занимает первый сектор диска (сектор 0), который имеет размер 512 байт. Этот сектор физически расположен в начале диска (на цилиндре 0, головке 0, секторе 1). В случае использования расширенного адресного пространства (LBA — Logical Block Addressing) MBR находится в блоке LBA 0.
Составные части
- Код загрузчика (446 байт) — исполняемый машинный код, который запускается BIOS после успешной проверки сигнатуры. Этот код ищет активный раздел в таблице разделов и передаёт управление его загрузочному сектору (Volume Boot Record, VBR). В современных системах код MBR может быть заменён более сложным загрузчиком, например, GRUB (Grand Unified Bootloader) или NTLDR (NT Loader).
- Таблица разделов (64 байта) — содержит четыре записи, каждая по 16 байт. Каждая запись описывает один первичный раздел: его тип (например, FAT32, NTFS, ext4), начальный и конечный адреса (в формате CHS и LBA), размер и статус (активный/неактивный). Если на диске требуется больше четырёх разделов, используется расширенный раздел, который содержит вложенные логические разделы.
- Сигнатура (2 байта) — значение 0x55AA (в шестнадцатеричной системе), записанное в конце сектора. BIOS проверяет эту сигнатуру, чтобы убедиться, что сектор является загрузочным. Если сигнатура отсутствует или неверна, BIOS не загружает операционную систему и выводит сообщение об ошибке.
Ограничения
- Максимальный объём диска: MBR поддерживает адресацию до 2 ТБ (точнее, 2,2 ТБ) из-за использования 32-битных адресов LBA. Для дисков большего объёма требуется GPT.
- Количество разделов: поддерживается только четыре первичных раздела. Для создания большего числа разделов используется расширенный раздел, что усложняет структуру.
- Отсутствие резервной копии: MBR хранится в единственном экземпляре в начале диска. Повреждение MBR делает диск недоступным для загрузки и может привести к потере данных.
Процесс загрузки с использованием MBR
- Включение компьютера: BIOS (или UEFI в режиме совместимости с BIOS) выполняет самотестирование (POST) и инициализирует устройства.
- Поиск загрузочного устройства: BIOS проверяет список устройств, заданный в настройках (например, жёсткий диск, SSD, USB-накопитель), и считывает первый сектор (MBR) с выбранного устройства.
- Проверка сигнатуры: BIOS проверяет последние 2 байта MBR на наличие сигнатуры 0x55AA. Если сигнатура верна, BIOS передаёт управление коду загрузчика в MBR.
- Загрузка кода MBR: Код загрузчика анализирует таблицу разделов, находит активный раздел (помеченный как загрузочный) и считывает его загрузочный сектор (VBR) в память.
- Передача управления: Код MBR передаёт управление коду VBR, который, в свою очередь, загружает ядро операционной системы (например, ntoskrnl.exe для Windows или vmlinuz для Linux).
Виды и варианты
Классическая MBR (IBM PC/AT)
Используется в системах на базе BIOS. Поддерживает загрузку DOS, Windows 9x, Windows NT, Linux и других операционных систем. Код загрузчика обычно простой и не поддерживает выбор нескольких операционных систем (требуется менеджер загрузки, например, GRUB).
MBR с защитой (Protective MBR)
В системах с GPT (GUID Partition Table) первый сектор диска может содержать защитный MBR (protective MBR). Этот MBR содержит один раздел типа 0xEE, который занимает весь диск. Защитный MBR предотвращает случайное повреждение GPT-диска устаревшими программами, которые не поддерживают GPT, и позволяет загружать систему в режиме совместимости с BIOS.
MBR в системах UEFI
При использовании UEFI (Unified Extensible Firmware Interface) MBR может использоваться для загрузки в режиме совместимости (CSM — Compatibility Support Module). Однако в чистом режиме UEFI загрузка происходит через GPT, а MBR не используется.
Применение
- Загрузка операционных систем: MBR является стандартным способом загрузки для большинства старых и многих современных операционных систем (Windows 7, Windows 8, Windows 10 в режиме BIOS, Linux, FreeBSD).
- Разметка дисков: MBR используется для хранения информации о разделах на жёстких дисках и SSD. Программы для управления разделами (например, fdisk, Diskpart) могут создавать, удалять и изменять разделы, редактируя таблицу разделов MBR.
- Восстановление данных: При повреждении MBR (например, из-за сбоя питания или вируса) используются утилиты для восстановления загрузочной записи (например, MBRFix, TestDisk).
Критика и ограничения
- Устаревшая архитектура: MBR была разработана для дисков объёмом до 2 ТБ и не поддерживает современные диски ёмкостью 4 ТБ и более.
- Отсутствие резервирования: MBR не имеет резервной копии, что делает её уязвимой для повреждений. В отличие от GPT, которая хранит несколько копий таблицы разделов, MBR полагается на единственный сектор.
- Ограничение на количество разделов: Четыре первичных раздела недостаточно для сложных конфигураций (например, при установке нескольких операционных систем или создании большого числа логических томов).
- Проблемы с безопасностью: Код MBR может быть изменён вредоносным ПО (например, bootkit), что позволяет перехватывать управление загрузкой и скрывать своё присутствие от операционной системы.
Интересные факты
- Сигнатура 0x55AA была выбрана разработчиками IBM из-за её уникального битового паттерна (01010101 10101010), который легко распознаётся аппаратно.
- В некоторых старых системах (например, IBM PC/XT) MBR могла отсутствовать, и загрузка происходила напрямую с дискеты.
- Существуют утилиты для редактирования MBR вручную (например, dd в Linux), что позволяет восстанавливать загрузку после сбоев, но требует осторожности из-за риска повреждения данных.
Источники
- IBM PC/AT Technical Reference Manual, IBM Corporation, 1984.
- Tanenbaum, A. S. (2007). Modern Operating Systems. Prentice Hall.
- Microsoft Corporation. (2010). Windows Internals, Part 1. Microsoft Press.
- GNU GRUB Manual. Free Software Foundation.
- UEFI Specification, Version 2.10, Unified EFI Forum, 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →