Пятница, 29.03.2024
Мафия Клуб: Закрытый клуб
Меню сайта
Категории раздела
Техника [175]
Информационные технологии
Мини-чат
500
Наш опрос
Смотрите видео
Всего ответов: 0
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2015 » Октябрь » 3 » Главная загрузочная запись
22:20
Главная загрузочная запись
Главная загрузочная запись (англ. master boot record, MBR) — код и данные, необходимые для последующей загрузки операционной системы и расположенные в первых физических секторах (чаще всего в самом первом) на жёстком диске или другом устройстве хранения информации.

MBR содержит небольшой фрагмент исполняемого кода, таблицу разделов (partition table) и специальную сигнатуру.

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

В процессе запуска компьютера, после окончания начального теста (Power-on self-test — POST), Базовая система ввода-вывода (BIOS) загружает «код MBR» в оперативную память (в IBM PC обычно с адреса 0000:7c00) и передаёт управление находящемуся в MBR загрузочному коду.

В процессе загрузки компьютера x86 вначале всегда отрабатывается BIOS. На этой стадии, кроме тестирования и инициализации оборудования компьютера, происходит также и выбор устройства, с которого будет происходить дальнейшая загрузка. Это может быть дискета, жёсткий диск, сетевой ресурс, встроенное ПЗУ или любое иное устройство (алгоритм выбора загрузочного устройства может быть различным и зависит от реализации BIOS). После выбора загрузочного устройства управление всей дальнейшей загрузкой BIOS полностью передаёт этому устройству.

В случае, если устройство имеет только один раздел (как, например, дискета или сетевая загрузка), то выбор однозначен, и загрузка продолжается сразу с этого устройства. Однако, если устройство содержит несколько разделов, каждый из которых потенциально может быть загрузочным (как, например, в случае жёстких дисков), то возникает неопределённость: с какого именно раздела производить загрузку. Для разрешения неоднозначности по выбору раздела было предложено вынести этот вопрос из ве́дения BIOS и передать этот выбор самому устройству. Возникла идея использовать для этого небольшую программу, записанную на самом носителе, которая и осуществляла бы данный выбор. Так появилась концепция MBR.

Таким образом, потенциальное наличие нескольких загрузочных разделов, среди которых необходимо осуществить выбор — это ключевой момент в необходимости появления и отработки MBR. Для устройств с единственным (или однозначно заданным) загрузочным разделом концепция MBR лишена смысла и не используется.

Иногда в MBR кроме основной функции (выбора раздела) включаются также и другие функции, например, авторизация. Но это уже расширение и дополнение к основной функции и задаче MBR. Такие системы не получили широкого распространения.

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

Утверждённого стандарта на структуру MBR не существует, однако, есть «сложившиеся традиции», которых придерживаются большинство MBR от разных производителей.

Загрузчики, отличные от стандартных Windows-загрузчиков, могут использовать всё пространство между MBR и первым разделом (около 32 кб) для собственных целей. В таких случаях под MBR понимают весь загрузочный код, а для выделения именно первых 512 байт говорят, что они расположены в MBS (Master Boot Sector) — главном загрузочном секторе.

Для операционных систем Microsoft понятия MBR и MBS совпадают, так как вся MBR содержится в MBS, хотя это не совсем правильно, так как под MBR подразумевают данные, а под MBS — физический сектор.

BIOS проводит начальную инициализацию оборудования.
BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д. (выбор устройства зависит от версии и от настроек BIOS)
[в данном описании рассматривается только случай загрузки с жёсткого диска].
BIOS считывает один сектор (512 байт), который находится по адресу: «цилиндр 0, головка 0, сектор 1»[а 1], и помещает его в область памяти по адресу 0000:7c00.
BIOS проверяет, что этот сектор оканчивается сигнатурой 55ААh
[если это не так, то управление возвращается обратно в BIOS].
BIOS передаёт управление по адресу 0000:7C00 (то есть сектору MBR), предварительно записав в регистр DL номер диска, с которого этот сектор считан. Для первого жёсткого диска это значение будет равно 80h (128 в десятичной системе), для дисковода A: равно 0. Кроме того, Plug-n-Play BIOS может записать в регистры ES:DI указатель на структуру «$PnP».

Выбор загрузочного раздела и проверка целостности MBR:
MBR копирует себя на другой адрес, чтобы освободить место для загрузчика ОС (к примеру MBR фирмы Microsoft копирует себя на адрес 0000:0600).
MBR просматривает по очереди все записи о разделах и ищет первую запись об «активном» («загрузочном») разделе (то есть ищет раздел, отмеченный как 80h).
В случае успеха (раздел, помеченный как 80h — найден) MBR запоминает номер этого раздела
[если просмотрены все 4 записи и не найден раздел, помеченный как 80h, то вызывается INT 18h. Это возвращает управление обратно в BIOS, что может приводить либо к загрузке BASIC, либо к повторной попытке загрузить систему с диска, либо к перезагрузке компьютера — в зависимости от версии и реализации BIOS].
MBR просматривает все оставшиеся записи и проверяет, что это единственный активный раздел (что больше разделов, помеченных 80h, на данном физическом диске не существует). Если находятся другие разделы, помеченные 80h, то MBR выводит сообщение об ошибке (обычно это что-то типа «Invalid partition table»), после чего система зависает в бесконечном цикле, из которого можно выйти только перезагрузкой компьютера.

На этом заканчивается проверка MBR и начинается подготовка к загрузке ОС:
MBR считывает первый сектор логического диска (VBR), помеченного как «загрузочный», и помещает этот сектор по адресу 0000:7c00.
MBR проверяет, что данный сектор заканчивается сигнатурой 55ААh
[если этой сигнатуры в этом месте нет, то выводится сообщение «Missing operating system» и компьютер подвисает, требуется перезагрузка].
MBR передаёт управление загрузочному сектору выбранного раздела диска.
Загрузочный сектор логического диска (VBR) (после MBR)[править | править вики-текст]

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

После завершения процедуры POST в ОЗУ по адресу 0000:7C00 записывается код загрузчика, после чего ему передаётся управление. Задача загрузчика — проанализировать таблицу разделов жёсткого диска, затем либо передать управление загрузочному коду активного раздела, либо загрузить в RAM ядро операционной системы и передать ему управление.

В таблице разделов хранится информация о типе раздела и его расположении на жёстком диске.

Последние два байта MBR называются сигнатурой. Значение этих байтов должно быть 55h AAh. В случае, если это не так, запись считается некорректной.

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

Координаты начала и конца раздела в CHS-формате (цилиндр, головка, сектор). CHS не позволяет выполнять адресацию более чем к 7,8 ГБ данных, и для адресации к разделам, находящимся за пределами 7,8 ГБ, используется LBA-адресация.

Код файловой системы, используемой на данном разделе.
Коды типов разделовКод    Тип раздела
00h    Пустая запись (свободное место)
01h    FAT-12 (если это логический раздел или раздел расположен в первых 32 мегабайтах диска, иначе используется код 06h)
02h    XENIX root
03h    XENIX usr
04h    FAT-16 до 32 Мбайт (если раздел первичный, то должен находиться в первых физических 32 Мб диска, иначе используется код 06h)
05h    Расширенный раздел
06h    FAT-16B, а также FAT-16, не попадающий под условия кода 04h и FAT-12, не попадающий под условия кода 01h
07h    IFS, HPFS, NTFS, exFAT (и некоторые другие — тип определяется по содержимому загрузочной записи)
08h    AIX
09h    AIX загрузочный
0Ah    OS/2 Boot менеджер, OPUS
0Bh    FAT-32
0Ch    FAT-32X (FAT-32 с использованием LBA)
0Dh    Зарезервирован
0Eh    FAT-16X (FAT-16 с использованием LBA) (VFAT)
0Fh    Расширенный раздел LBA (то же что и 05h, с использованием LBA)[1]
10h    OPUS
11h    Скрытый FAT (аналогичен коду 01h)
12h    Compaq, Сервисный раздел
14h    Скрытый FAT (аналогичен коду 04h)
15h    Скрытый Расширенный раздел (аналогичен коду 05h)
16h    Скрытый FAT (аналогичен коду 06h)
17h    Скрытый раздел HPFS/NTFS/IFS/exFAT
18h    AST SmartSleep
19h    OFS1
1Bh    Скрытый раздел FAT-32 (см. 0Bh)
1Ch    Скрытый раздел FAT-32X (см. 0Ch)
1Eh    Скрытый раздел FAT-16X (VFAT) (см. 0Eh)
1Fh    Скрытый Расширенный раздел LBA (см. 0Fh)
20h    OFS1
21h    FSo2
22h    Расширенный раздел FS02
24h    NEC DOS
25h    Windows Mobile IMGFS
27h    Скрытый NTFS (Раздел восстановления системы)
28h    Зарезервирован для FAT-16+
29h    Зарезервирован для FAT-32+
2Ah    AFS (AthFS)
35h    JFS
38h    THEOS 3.2
39h    Plan 9
3Ah    THEOS 4
3Bh    Расширенный раздел THEOS 4
3Ch    Partition Magic, NetWare
3Dh    Скрытый раздел NetWare
40h    Venix 80286, PICK R83
41h    Старый Linux/Minix, PPC PReP Boot
42h    Старый своп Linux, SFS
43h    Старый Linux
4Ah    ALFS
4Ch    A2 (Aos)
4Dh    QNX4.x
4Eh    QNX4.x 2-я часть
4Fh    QNX4.x 3-я часть
50h    OnTrack DM (только чтение)
51h    OnTrack DM6 (чтение и запись)
52h    CP/M
53h    OnTrack DM6 Aux3
54h    OnTrack DM6 DDO
55h    EZ-Drive
56h    Golden Bow
56h    Novell VNDI
5Ch    Priam Edisk
61h    SpeedStor
62h    GNU HURD
63h    UNIX
64h — 69h    NetWare
77h    VNDI, M2FS, M2CS
78h    XOSL
7Fh    Данный код зарезервирован для исследовательских или учебных проектов
80h    MINIX (старый)
81h    MINIX
82h    Linux swap, Sun Solaris (старый)
83h    Linux
85h    Linux extended (расширенный)
86h    Раздел FAT-16 stripe-массива Windows NT
87h    Раздел NTFS/HPFS stripe-массива Windows NT
8Eh    Раздел LVM
93h    Amoeba, Скрытый Linux (см. код 83)
94h    Amoeba BBT
94h    ISO-9660
9Eh    ForthOS
A5h    Раздел гибернации
A5h    NetBSD (старый),FreeBSD,BSD/386
A6h    OpenBSD
A7h    NeXTSTEP
A8h    Apple Darwin, Mac OS X UFS
A9h    NetBSD
AFh    Mac OS X HFS и HFS+, ShangOS
B6h    Зеркальный master-раздел FAT-16 Windows NT
B7h    Зеркальный master-раздел NTFS/HPFS Windows NT
BEh    Solaris 8 загрузочный
BFh    Solaris
С2h    Скрытый Linux
С3h    Скрытый своп Linux
С6h    Зеркальный slave-раздел FAT-16 Windows NT
С7h    Зеркальный slave-раздел NTFS Windows NT
СDh    Дамп памяти
D8h    CP/M-86
DAh    Данные — не файловая система
DBh    CP/M-86
DDh    Скрытый дамп памяти
DEh    Dell Utility
EBh    BFS
ECh    SkyOS
EDh    Гибридный GPT
EEh    GPT
EFh    Системный раздел UEFI
F7h    EFAT, SolidState
FBh    VMFS
FCh    Своп VMFS
FEh    LANstep, PS/2 IML
FFh    XENIX BBT

В случае, если используется расширенный раздел, то координаты начала раздела указывают на EBR.
Структура EBRСмещение    Длина    Описание
1BEh    16    Указатель на раздел
1CEh    16    Указатель на следующий EBR
1DEh    32    Не используется (должно быть заполнено нулями) [а 2]
1FEh    2    Сигнатура (55h AAh)


Формат указателей аналогичен MBR.

Если каким-либо образом была потеряна MBR, то её можно восстановить специальными утилитами (например, TestDisk), которая «просмотрит» весь носитель информации и создаст таблицу разделов.

Пример кода создания резервной копии MBR в unix-подобных системах для диска sda:
dd if=/dev/sda of=mbr.bin bs=512 count=1

Восстановление загрузчика и таблицы разделов:
dd if=mbr.bin of=/dev/sda bs=512 count=1

Восстановление только загрузчика:
dd if=mbr.bin of=/dev/sda bs=446 count=1
Категория: Техника | Просмотров: 472 | Добавил: ADMINISTRATOR | Теги: Главная загрузочная запись | Рейтинг: 0.0/0
Всего комментариев: 0
lign="center">


Вход на сайт
Поиск
Календарь
«  Октябрь 2015  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031
Архив записей
Copyright Mafiaclub.at.ua © 2024