stringtranslate.com

Загрузочная запись тома

Загрузочная запись тома ( 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 в загрузочном секторе по соглашению обозначается двухбайтовой шестнадцатеричной последовательностью, называемой сигнатурой загрузочного сектора ( 55h при фиксированном смещении +1FEh и AAh при +1FFh ) для размеров сектора 512 байт и более. [nb 1] Для секторов размером 512 байт сигнатура загрузочного сектора также отмечает конец сектора. VBR на меньших и больших секторах также могут показывать сигнатуры в конце фактического размера сектора, однако семантика, описанная здесь, применима только к 16-битной сигнатуре при +1FEh .

Эта сигнатура указывает на наличие по крайней мере фиктивного загрузчика, который можно безопасно запустить, даже если он не сможет загрузить операционную систему. Она не указывает на наличие (или даже конкретной) файловой системы или операционной системы, хотя некоторые старые версии 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 , и первые девять слов не должны содержать того же значения, прежде чем загрузочный сектор будет принят как действительный, тем самым избегая явного теста на 55h , AAh на дискетах. Поскольку старые загрузочные секторы (то есть очень старые носители CP/M-86 и DOS) иногда не содержат эту подпись, несмотря на то, что они могут быть успешно загружены, проверку можно отключить в некоторых средах. Это также отражает тот факт, что дискеты можно отформатировать для использования меньших размеров сектора, чем 512 байт.

Если код BIOS или MBR не обнаруживает допустимый загрузочный сектор и, следовательно, не может передать выполнение коду загрузочного сектора, он попробует следующее загрузочное устройство в строке. Если все они терпят неудачу, он обычно отображает сообщение об ошибке и вызывает INT 18h . [1] Это либо запустит дополнительное резидентное программное обеспечение в ПЗУ ( ROM BASIC ), либо попытается выполнить удаленную загрузку по сети, перезагрузит систему через INT 19h после подтверждения пользователя, либо заставит систему остановить процесс загрузки до следующего включения питания. [1]

В десятичном смещении от 72 до 79 NTFS PBR содержит серийный номер идентификатора тома UUID раздела.

Призыв

Загрузочный код в VBR может предполагать, что BIOS настроил свои структуры данных и прерывания и инициализировал оборудование. Код не должен предполагать наличие более 32 КБ памяти для отказоустойчивой работы; [1] если ему требуется больше памяти, он должен запросить ее в INT 12h, поскольку другой предзагрузочный код (например, оверлеи расширения BIOS, системы шифрования или удаленные загрузчики ) может также присутствовать в другом месте памяти (и обычно скрывает себя от загрузочного сектора, уменьшая сообщаемую память INT 12h соответствующим образом, чтобы они не были перезаписаны действиями MBR и VBR). Спецификация загрузки BIOS допускает 64 КБ памяти и явно рекомендует 0000h:7C00h по 0000h:FFFFh в качестве пространства памяти для MBR и/или VBR. [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, предполагающий определенные значения регистров или не записанный как перемещаемый, может не работать в противном случае.

Системы с поддержкой Plug-and-Play BIOS или BBS будут предоставлять указатель на данные PnP в дополнение к DL: [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):

В DR-DOS 7.07 расширенный интерфейс может опционально использоваться MBR и совместно с LOADER:

В сочетании с таблицами разделов GUID (GPT) предложение Enhanced Disk Drive Specification (EDD) 4 Hybrid MBR рекомендует еще одно расширение интерфейса MBR-VBR: [5]

Смотрите также

Примечания

  1. ^ Сигнатура по смещению +1FEhв загрузочных секторах — 55h AAh, то есть 55hпо смещению +1FEhи AAhпо смещению +1FFh. Поскольку в контексте совместимых с IBM PC машин необходимо предполагать представление little-endian , в программах для процессоров x86 это можно записать как 16-битное слово (обратите внимание на поменянный порядок), тогда как в программах для других архитектур ЦП это должно быть записано как представление big-endian . Поскольку это много раз путалось в книгах и даже в оригинальных справочных документах Microsoft, в этой статье используется представление на основе смещения побайтово на диске, чтобы избежать любой возможной неверной интерпретации.AA55h55AAh

Ссылки

  1. ^ abcde Пол, Маттиас Р. (1997-10-02) [1997-09-29]. "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT и BOOT.TXT - Краткое описание того, как загружается OpenDOS". Архивировано из оригинала 2003-10-04 . Получено 2009-03-29 .[1]
  2. ^ abcd Compaq Computer Corporation ; Phoenix Technologies Ltd. ; Intel Corporation (1996-01-11). BIOS Boot Specification 1.01 (PDF) . 1.01. Архивировано из оригинала (PDF) 2016-04-14.
  3. ^ ab Paul, Matthias R. (2017-08-14) [2017-08-07]. "Продолжение саги о Windows 3.1 в расширенном режиме на OmniBook 300". MoHPC - Музей калькуляторов HP . Архивировано из оригинала 2018-05-01 . Получено 2018-05-01 . […] SYS […] /O[:nnn] Переопределить IPL сообщенный загрузочный диск (n=0..126, 128..254). […] Подготовка целевого диска... Выбор загрузочного сектора FAT12 CHS (требуется IPL для сообщения загрузочного устройства). Обработка цели как дискеты или супергибкого диска (загрузочный диск 0). Запись нового загрузочного сектора... […]
  4. ^ ab Compaq Computer Corporation ; Phoenix Technologies Ltd. ; Intel Corporation (1994-05-05). Plug and Play BIOS Specification 1.0A (PDF) . 1.0A. Архивировано из оригинала (PDF) 2018-02-02.
  5. ^ Эллиотт, Роберт (2010-01-04). "EDD-4 Hybrid MBR boot code Annex" (PDF) . Hewlett-Packard , Технический комитет T13. e09127r3. Архивировано (PDF) из оригинала 2018-05-01 . Получено 2018-05-01 .

Дальнейшее чтение