Загрузочная запись тома
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2014 г. ) |
Загрузочная запись тома ( VBR ) (также известная как загрузочный сектор тома , загрузочная запись раздела или загрузочный сектор раздела ) — это тип загрузочного сектора, представленный на персональном компьютере IBM . Его можно найти на разбитом на разделы устройстве хранения данных , таком как жесткий диск , или на неразмеченном устройстве, таком как дискета , и содержит машинный код для загрузки программ (обычно, но не обязательно, операционных систем ), хранящихся в других частях диска. устройство. На неразделенных устройствах хранения данных это первый сектор устройства. На многораздельных устройствах это первый сектор отдельного раздела устройства, причем первый сектор всего устройства представляет собой главную загрузочную запись (MBR), содержащую таблицу разделов .
Код в загрузочных записях тома вызывается либо непосредственно микропрограммой машины, либо косвенно с помощью кода в главной загрузочной записи или диспетчере загрузки . Код в MBR и VBR по сути загружается одинаково .
Вызов VBR через менеджер загрузки называется цепной загрузкой . Некоторые системы с двойной загрузкой , такие как NTLDR ( загрузчик для всех выпусков операционных систем Microsoft, производных от Windows NT, вплоть до Windows XP и Windows Server 2003 включительно ), берут копии загрузочного кода, устанавливаемого отдельными операционными системами, в один VBR раздела и сохраняйте их в файлах на диске, загружая соответствующее содержимое VBR из файла после того, как загрузчик спросит пользователя, какую операционную систему следует загрузить. В Windows Vista , Windows Server 2008 и более новых версиях NTLDR был заменен; Вместо этого функциональность загрузчика обеспечивается двумя новыми компонентами: WINLOAD.EXE и диспетчером загрузки Windows .
В таких файловых системах , как FAT12 (за исключением DOS 1.x), FAT16 , FAT32 , HPFS и NTFS , VBR также содержит блок параметров BIOS (BPB), который определяет расположение и структуру основных структур данных на диске для файловая система. (Подробное обсуждение структуры секторов FAT VBR, различных версий FAT BPB и их записей можно найти в статье FAT .)
Технические детали
[ редактировать ]Подпись
[ редактировать ]Наличие IBM PC-совместимого загрузчика для процессоров x86 в загрузочном секторе по соглашению обозначается двухбайтовой шестнадцатеричной последовательностью, называемой сигнатурой загрузочного сектора ( 55 часов при фиксированном смещении +1FEэх и Ааа и +1FFh ) для секторов размером 512 байт и более. [номер 1] Для секторов размером 512 байт подпись загрузочного сектора также отмечает конец сектора. VBR в секторах меньшего и большего размера также могут отображать подписи в конце фактического размера сектора, однако описанная здесь семантика применима к 16-битной подписи в +1FE, только.
Эта подпись указывает на наличие по крайней мере фиктивного загрузчика, запуск которого безопасен, даже если он не сможет фактически загрузить операционную систему. Он не указывает на наличие (или даже конкретной) файловой системы или операционной системы, хотя некоторые старые версии DOS до 3.3 использовали ее в своем процессе для обнаружения носителей в формате FAT (более новые версии этого не делают). Загрузочный код для других платформ или процессоров не должен использовать эту подпись, поскольку это может привести к сбою, когда BIOS передает выполнение загрузочному сектору, предполагая, что он содержит действительный исполняемый код. Это означает, что носители FAT12 / FAT16 , которые будут использоваться также очень старыми версиями DOS, должны поддерживать подпись, даже если они не содержат операционную систему или предназначены для загрузки только на других платформах; следовательно, они также должны содержать как минимум совместимый с x86 (фиктивный) загрузчик (для сравнения см. примеры FAT на Atari ST и с MSX-DOS ). Тем не менее, некоторые носители для других платформ ошибочно содержат подпись даже без фиктивного загрузчика, совместимого с x86, что на практике делает проверку не на 100% надежной.
Сигнатура проверяется большинством системных BIOS, начиная (по крайней мере) с IBM PC/AT (но не с исходным IBM PC и некоторыми другими машинами). Более того, он также проверяется большинством загрузчиков MBR перед передачей управления загрузочному сектору. Некоторые BIOS (например, IBM PC/AT) выполняют проверку только для фиксированных/съемных дисков, тогда как для дискет и супердискет достаточно начать с байта, большего или равного 06h и первые девять слов не должны содержать одно и то же значение, прежде чем загрузочный сектор будет принят как действительный, тем самым избегая явной проверки на 55ч , АА на дискетах. Поскольку старые загрузочные сектора (т.е. очень старые носители CP/M-86 и DOS) иногда не имеют этой подписи, несмотря на то, что они могут успешно загружаться, в некоторых средах проверку можно отключить. Это также отражает тот факт, что дискеты могут быть отформатированы для использования секторов меньшего размера, чем 512 байт.
Если код BIOS или MBR не обнаруживает действительный загрузочный сектор и, следовательно, не может передать выполнение коду загрузочного сектора, он попытается использовать следующее загрузочное устройство в строке. Если все они терпят неудачу, обычно отображается сообщение об ошибке и вызывается INT 18h . [1] Это либо запустит дополнительное резидентное программное обеспечение в ПЗУ ( ROM BASIC ), попытается выполнить удаленную загрузку по сети, перезагрузит систему через INT 19h после подтверждения пользователя, либо заставит систему остановить процесс загрузки до следующего включения. [1]
От десятичного смещения от 72 до 79 PBR NTFS содержит серийный номер идентификатора тома UUID раздела.
Призыв
[ редактировать ]Загрузочный код в VBR может предполагать, что BIOS настроил свои структуры данных, прерывает и инициализирует оборудование. Для обеспечения отказоустойчивой работы код не должен предполагать наличие более 32 КБ памяти; [1] если ему требуется больше памяти, он должен запросить для этого INT 12h , поскольку другой предзагрузочный код (например, наложения расширений BIOS, системы шифрования или удаленные загрузчики начальной загрузки ) также может присутствовать в другом месте памяти (и обычно скрывается от загрузочный сектор, соответственно уменьшив указанную память INT 12h, чтобы они не перезаписывались действиями MBR и VBR). Спецификация загрузки BIOS допускает 64 КБ памяти и явно рекомендует 0000h:7C00h до 0000h:FFFFh как временный блокнот. [2] [1] Загрузочный код не должен предполагать процессоры лучшего качества, чем исходный Intel 8088 или 8086 (использовавшийся в исходном ПК), и не делать никаких предположений относительно точного состояния оборудования, системы прерываний (прерывания можно включать или отключать) или местоположения и размер стека. Хотя исходный IBM BIOS инициализирует регистры ЦП DS, ES и SS для сегментации 0000h и сохраняет начальный стек на уровне SS : SP = 0000h:0400h , это не обязательное условие, поскольку не все коды BIOS и MBR следуют этому соглашению. Регистры, не упомянутые ниже, следует рассматривать как неинициализированные. Прямой доступ к оборудованию обычно не допускается. Хотя таблица параметров диска (DPT/FDPB) обычно настраивается в 0000h:0078h уже в памяти, VBR должен переместить (и, возможно, исправить) DPT, на который указывает вектор INT 1Eh , в это место (INT 1Eh не прерывание, а дальний указатель на DPT).
Некоторые условия могут быть смягчены в контролируемых средах, например, некоторые загрузчики сегодня предполагают, что имеют до 128 КБ памяти для работы в нормальном режиме (без запроса большего количества), а некоторые загрузчики, использующие доступ LBA, предполагают, что по крайней мере Intel Процессор 80188 или 80186 .
VBR загружается в ячейку памяти. 0000h
: 7C00h
[1] и со следующими регистрами ЦП, настроенными, когда предыдущий загрузчик (то есть обычно BIOS или MBR, но, возможно, другой загрузчик) передает ему выполнение, перейдя на 0000h
: 7C00h
процессора в реальном режиме .
Некоторые BIOS Compaq вместо этого ошибочно используют 07C0h:0000h. Хотя это разрешается в одно и то же место в памяти реального режима, это нестандартно, и его следует избегать, поскольку код VBR, предполагающий определенные значения регистра или не записанный как перемещаемый, в противном случае может не работать.
- DL = загрузочный дисковод ( дискеты / супердискеты :
00h
= первый,01h
= второй, ...,7Eh
; фиксированные диски / съемные диски :80h
= первый,81h
= второй, ...,FEh
; ценности7Fh
иFFh
зарезервированы для ПЗУ/удаленных дисков и не должны использоваться на диске). [3] DL поддерживается BIOS IBM, а также большинством других BIOS. Известно, что BIOS Toshiba T1000 не поддерживает это должным образом, а некоторые старые BIOS Wyse 286 используют значения DL, большие или равные 2 для жестких дисков. USB-накопителям, настроенным как супердискеты, обычно присваивается значение DL =00h
или01h
, однако некоторые редкие BIOS ошибочно представляют USB-накопители, настроенные как съемные диски, как DL =01h
также вместо использования DL =80h
. Традиционно только ценности00h
и80h
передавались BIOS во время загрузки, и многие загрузочные сектора в любом случае были запрограммированы на работу с фиксированными значениями. Спецификация Plug and Play BIOS и Спецификация загрузки BIOS (BBS) позволяют другим устройствам также стать загрузочными. [2] [4] Последний также рекомендует, чтобы коды MBR и VBR использовали DL, а не внутренне запрограммированные значения по умолчанию. [2] (Примечание. MS-DOS / PC DOS и OS/2 VBR игнорируют предоставленное значение DL и вместо этого извлекают значение, сохраненное по смещению+19h
в расширенном блоке параметров BIOS (EBPB) или по смещению сектора.+1FDh
в версиях DOS от 3.2 до 3.31. Некоторые версии DR-DOS используют DL, начиная с 7.02. По умолчанию VBR DR-DOS 7.07 используют DL и игнорируют значение BPB, ноSYS /O[:nnn]
может использоваться для повторного вызова старого поведения при использовании значения BPB или даже для принудительного использования определенного загрузочного диска.nnn
храниться там. [3] На FAT32 томах FreeDOS также использует значение DL, тогда как на томах FAT12 / FAT16 она действует только, если для значения BPB установлено значениеFFh
.) - Бит DH 5 = 0: устройство поддерживается через INT 13h ; иначе: все равно (должно быть равно нулю). DH поддерживается некоторыми BIOS IBM. Некоторые коды MBR и VBR сохраняют значение DH.
Системы с поддержкой Plug-and-Play BIOS или BBS помимо DL будут предоставлять указатель на данные PnP: [2] [4]
Эта информация позволяет загрузчику (в MBR или VBR) активно взаимодействовать с BIOS или резидентным оверлеем PnP/BBS в памяти с целью настройки порядка загрузки и т. д., однако эта информация игнорируется большинством стандартных MBR и VBR. . В идеале передается ES:DI, но операционные системы с поддержкой PnP обычно также имеют резервные методы для последующего получения точки входа PnP BIOS, чтобы большинство операционных систем не полагались на это. Информацию в ES:DI можно использовать как подсказку — согласно спецификации PnP BIOS, структуру проверки установки «$PnP» можно найти путем поиска сигнатуры ASCII-строки $PnP в системной памяти, начиная с F0000h до FFFFFh каждый раз. Граница 16 байт.
При использовании разделенного носителя, когда VBR запускается MBR (или другим загрузчиком), а не BIOS, многие реализации передают дополнительную информацию в VBR помимо только DL (а иногда также DH и ES:DI):
- DS : SI = указывает на 16-байтовую запись таблицы разделов MBR (в перемещенном MBR), соответствующую активированному VBR. От этого зависит загрузка PC-MOS 5.1, если ни один раздел в таблице разделов не помечен как загрузочный. В сочетании с LOADER, Multiuser DOS и загрузочными секторами REAL/32 используйте это для поиска загрузочного сектора активного раздела (или другого загрузчика, такого как IBMBIO.LDR, в фиксированной позиции на диске), если загрузочный файл (LOADER.SYS) может не найти. PTS-DOS 6.5 и S/DOS 1.0 используют это вместе с функцией Advanced Active Partition (AAP). Помимо поддержки LOADER и AAP, DR-DOS 7.07 может использовать это для определения необходимого метода доступа INT 13h при использовании двойного кода CHS/LBA VBR. Код MBR OS/2, MS-DOS (до 7.0), PC DOS (до 7.10) и Windows NT (приблизительно до 2007 г.) также предоставляет тот же интерфейс, хотя эти системы не создают использование этого. MBR, установленный в Windows NT 6.0 (и более поздних версиях), использует другие регистры и поэтому больше не совместим с этими расширениями. Хотя некоторые расширения зависят только от самой 16-байтовой записи таблицы разделов, другие расширения могут также требовать присутствия всей таблицы разделов из 4 (или 5 записей).
В DR-DOS 7.07 расширенный интерфейс может дополнительно использоваться MBR и совместно с LOADER:
- AX = магическая подпись, указывающая на наличие этого расширения (
0EDCh
) - DL = загрузочный диск (см. выше)
- DS:SI = указывает на используемую 16-байтовую запись таблицы разделов MBR (см. выше).
- ES: BX = начало загрузочного сектора или специальный "
NEWLDR
"изображение сектора (обычно 7C00h) - CX = зарезервировано
В сочетании с таблицами разделов GUID (GPT) в расширенной спецификации дискового накопителя (EDD) 4 предложение гибридного MBR рекомендуется другое расширение интерфейса MBR-VBR: [5]
- ЕАХ =
54504721h
(«!GPT
") - DL = загрузочный диск (см. выше)
- ES:DI = указывает на "
$PnP
" структура проверки установки (см. выше) - DS:SI = указывает на структуру передачи обслуживания гибридной MBR, состоящую из 16-байтовой фиктивной записи таблицы разделов MBR (со всеми установленными битами, за исключением флага загрузки по смещению).
+0h
и тип раздела по смещению+4h
), за которым следуют дополнительные данные. Это частично совместимо со старым расширением DS:SI, обсуждавшимся выше, если для этих старых расширений требуется только 16-байтовая запись раздела, а не вся таблица разделов.
См. также
[ редактировать ]- Основная загрузочная запись (MBR)
- Расширенная загрузочная запись (EBR)
- Блок параметров BIOS (BPB)
- Форматы BPB в файловых системах FAT
- Разметка диска
- Выравнивание разделов
Примечания
[ редактировать ]- ^ Подпись в смещении
+1FEh
в загрузочных секторах есть55h AAh
, то есть55h
в зачете+1FEh
иAAh
в зачете+1FFh
. Поскольку с прямым порядком байтов , необходимо предполагать представление в контексте компьютеров, совместимых с IBM PC , это можно записать как 16-битное слово.AA55h
в программах для процессоров x86 (обратите внимание на порядок перестановки), тогда как это нужно было бы записать как55AAh
в программах для других архитектур ЦП используется представление с прямым порядком байтов . Поскольку это неоднократно путалось в книгах и даже в оригинальных справочных документах Microsoft, в этой статье используется побайтовое представление на диске на основе смещения, чтобы избежать любой возможной неправильной интерпретации.
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и Пол, Матиас Р. (02 октября 1997 г.) [29 сентября 1997 г.]. «Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM — README.TXT и BOOT.TXT — краткое описание загрузки OpenDOS» . Архивировано из оригинала 4 октября 2003 г. Проверено 29 марта 2009 г. [1]
- ^ Перейти обратно: а б с д Компьютерная корпорация Compaq ; Феникс Технологии Лтд .; Корпорация Intel (11 января 1996 г.). Спецификация загрузки BIOS 1.01 (PDF) . 1.01. Архивировано из оригинала (PDF) 14 апреля 2016 г.
- ^ Перейти обратно: а б Пол, Матиас Р. (14 августа 2017 г.) [07 августа 2017 г.]. «Продолжение саги о Windows 3.1 в расширенном режиме на OmniBook 300» . MoHPC — Музей калькуляторов HP . Архивировано из оригинала 01 мая 2018 г. Проверено 1 мая 2018 г.
[…] SYS […] /O[:nnn] Переопределить загрузочный диск, сообщенный IPL (n=0..126, 128..254). […] Подготовка целевого диска... Выбор загрузочного сектора FAT12 CHS (требуется, чтобы IPL сообщала о загрузочном модуле). Рассматривается как дискета или супердискета (загрузочный диск 0). Написание нового загрузочного сектора... […]
- ^ Перейти обратно: а б Компьютерная корпорация Compaq ; Феникс Технологии Лтд .; Корпорация Intel (5 мая 1994 г.). Спецификация Plug and Play BIOS 1.0A (PDF) . 1,0А. Архивировано из оригинала (PDF) 2 февраля 2018 г.
- ^ Эллиотт, Роберт (4 января 2010 г.). «Приложение гибридного загрузочного кода MBR EDD-4» (PDF) . Hewlett-Packard , Технический комитет T13. е09127r3. Архивировано (PDF) из оригинала 1 мая 2018 г. Проверено 1 мая 2018 г.
Дальнейшее чтение
[ редактировать ]- «Том загрузочных секторов» . Руководство для ПК .