stringtranslate.com

Главная загрузочная запись

Основная загрузочная запись ( MBR ) — это тип загрузочного сектора в первых нескольких блоках многораздельных компьютерных запоминающих устройств, таких как фиксированные диски или съемные накопители, предназначенные для использования с IBM PC-совместимыми системами и за их пределами. Концепция MBR была публично представлена ​​в 1983 году с выходом PC DOS 2.0 .

MBR содержит информацию о том, как сектора диска (также известные как «блоки») разделены на разделы, каждый из которых теоретически содержит файловую систему. MBR также содержит исполняемый код, выполняющий функции загрузчика для установленной операционной системы — обычно путем передачи управления второму этапу загрузчика или в сочетании с загрузочной записью тома каждого раздела (VBR). Этот код MBR обычно называют загрузчиком.

Организация таблицы разделов в MBR ограничивает максимальное адресное пространство многораздельного диска до 2  ТиБ (2 32  × 512 байт) . [1] Подходы к небольшому увеличению этого предела с использованием 32-битной арифметики или секторов размером 4096 байт официально не поддерживаются, поскольку они фатально нарушают совместимость с существующими загрузчиками, большинством MBR-совместимых операционных систем и связанных с ними системных инструментов и могут привести к серьезным проблемам. коррупция при использовании за пределами строго контролируемой системной среды. Таким образом, схема секционирования на основе MBR находится в процессе замены схемой таблицы разделов GUID (GPT) на новых компьютерах. GPT может сосуществовать с MBR, чтобы обеспечить некоторую ограниченную форму обратной совместимости для старых систем.

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

Обзор

Поддержка разделенных носителей и, следовательно, главной загрузочной записи (MBR) была введена в IBM PC DOS 2.0 в марте 1983 года для поддержки жесткого диска объемом 10 МБ нового на тот момент IBM Personal Computer XT , все еще использующего файловую систему FAT12. . Исходная версия MBR была написана Дэвидом Литтоном из IBM в июне 1982 года. Таблица разделов поддерживала до четырех основных разделов . Ситуация не изменилась, когда FAT16 была представлена ​​как новая файловая система в DOS 3.0. Поддержка расширенного раздела , специального типа основного раздела, используемого в качестве контейнера для хранения других разделов, была добавлена ​​в DOS 3.2, а вложенные логические диски внутри расширенного раздела появились в DOS 3.30. Поскольку MS-DOS, PC DOS, OS/2 и Windows никогда не позволяли загружать их, формат MBR и загрузочный код оставались практически неизменными по функциональности (за исключением некоторых сторонних реализаций) на протяжении всей эпохи DOS и OS/2. до 1996 года.

В 1996 году поддержка адресации логических блоков (LBA) была введена в Windows 95B и MS-DOS 7.10 (не путать с IBM PC-DOS 7.1) для поддержки дисков размером более 8 ГБ. Также были введены временные метки диска . [2] Это также отражает идею о том, что MBR должна быть независимой от операционной системы и файловой системы. Однако это правило проектирования было частично нарушено в более поздних реализациях MBR от Microsoft, которые обеспечивают доступ CHS для типов разделов FAT16B и FAT32 0x06 / 0x0B , тогда как LBA используется для 0x0E / 0x0C .

Несмотря на иногда плохую документацию некоторых внутренних деталей формата MBR (что иногда вызывало проблемы совместимости), он был широко принят в качестве фактического отраслевого стандарта из-за широкой популярности ПК-совместимых компьютеров и его полустатического характера на протяжении десятилетий. . Это вплоть до того, что оно поддерживалось компьютерными операционными системами для других платформ. Иногда это было дополнением к другим ранее существовавшим или кроссплатформенным стандартам начальной загрузки и разделения. [3]

Однако записи раздела MBR и загрузочный код MBR, используемые в коммерческих операционных системах, ограничены 32 битами. [1] Таким образом, максимальный размер диска, поддерживаемый схемой разбиения MBR (без 32-битной арифметики), использует секторы размером 512 байт (реальные или эмулированные), ограничен 2 ТиБ. [1] Следовательно, для дисков большего размера необходимо использовать другую схему разбиения на разделы, поскольку они стали широко доступны с 2010 года. Поэтому схема разбиения MBR находится в процессе замены таблицей разделов GUID (GPT). Официальный подход ограничивается обеспечением целостности данных за счет использования защитной MBR . В частности, он не обеспечивает обратную совместимость с операционными системами, которые также не поддерживают схему GPT. Между тем, третьи стороны разработали и внедрили несколько форм гибридных MBR , чтобы поддерживать разделы, расположенные в первых физических 2 ТиБ диска, в обеих схемах разбиения «параллельно» и/или чтобы позволить старым операционным системам загружаться с GPT. перегородки тоже. Нынешняя нестандартная природа этих решений вызывает различные проблемы совместимости в определенных сценариях.

MBR состоит из 512 или более байт , расположенных в первом секторе диска.

Он может содержать одно или несколько из:

Разметка диска

В IBM PC DOS 2.0 появилась FDISKутилита для настройки и обслуживания разделов MBR. Когда устройство хранения данных разделено по этой схеме, его MBR содержит таблицу разделов, описывающую расположение, размеры и другие атрибуты линейных областей, называемых разделами.

Сами разделы также могут содержать данные для описания более сложных схем разбиения, таких как расширенные загрузочные записи (EBR), метки дисков BSD или разделы метаданных Logical Disk Manager . [8]

MBR не находится в разделе; он расположен в первом секторе устройства (физическое смещение 0), предшествующем первому разделу. (Загрузочный сектор, присутствующий на неразмеченном устройстве или в отдельном разделе, вместо этого называется загрузочной записью тома .) В тех случаях, когда на компьютере работает оверлей DDO BIOS или менеджер загрузки , таблица разделов может быть перемещена в какой-либо другой физический раздел. расположение на устройстве; например, Ontrack Disk Manager часто помещал копию исходного содержимого MBR во второй сектор, а затем скрывал себя от любой впоследствии загружаемой ОС или приложения, поэтому копия MBR рассматривалась так, как если бы она все еще находилась в первом секторе.

Схема сектора

По соглашению, в схеме таблицы разделов MBR имеется ровно четыре записи основной таблицы разделов, хотя некоторые операционные системы и системные инструменты расширяют это число до пяти (Advanced Active Partitions (AAP) с PTS-DOS 6.60 [9] и DR-DOS 7.07). , восемь ( AST и NEC MS-DOS 3.x [10] [11], а также Storage Dimensions SpeedStor) или даже шестнадцать записей (с Ontrack Disk Manager ).

Записи таблицы разделов

Артефакт технологии жестких дисков эпохи ПК XT , таблица разделов подразделяет носитель данных с использованием единиц цилиндров , головок и секторов ( CHS- адресация). Эти значения больше не соответствуют своим тезкам в современных дисководах, а также не имеют значения в других устройствах, таких как твердотельные накопители , которые физически не имеют цилиндров или головок.

В схеме CHS индексы секторов (почти) всегда начинаются с сектора 1, а не с сектора 0 по соглашению, и из-за ошибки во всех версиях MS-DOS/PC DOS, включая 7.10, количество головок обычно ограничено. до 255 [h] вместо 256. Когда адрес CHS слишком велик, чтобы поместиться в эти поля, сегодня обычно используется кортеж (1023, 254, 63), хотя в старых системах и старых дисковых инструментах значение цилиндра часто оборачивается по модулю барьеру CHS около 8 ГБ, вызывая неоднозначность и риск повреждения данных. (Если ситуация связана с «защитной» MBR на диске с GPT, спецификация Intel Extensible Firmware Interface требует использования кортежа (1023, 255, 63).) Значение 10-битного цилиндра записывается в двух байтах по порядку. для облегчения вызовов исходных/устаревших процедур доступа к диску BIOS INT 13h , где 16 бит были разделены на части секторов и цилиндров, а не на границы байтов. [13]

Из-за ограничений адресации CHS [16] [17] был сделан переход к использованию LBA или адресации логических блоков . И длина раздела, и начальный адрес раздела представляют собой значения секторов, хранящиеся в записях таблицы разделов в виде 32-битных величин. Размер сектора раньше считался фиксированным и составлял 512 (29 ) байт, и широкий спектр важных компонентов, включая наборы микросхем , загрузочные сектора , операционные системы , механизмы баз данных , инструменты секционирования , утилиты резервного копирования и файловой системы и другое программное обеспечение, имели это значение жестко. -кодированный. С конца 2009 года стали доступны диски с секторами размером 4096 байт ( 4Kn или Advanced Format ), хотя размер сектора для некоторых из этих дисков по-прежнему сообщался хост-системе как 512 байт посредством преобразования в жестком формате. встроенное ПО диска и называется дисками эмуляции 512 ( 512e ).

Поскольку адреса и размеры блоков хранятся в таблице разделов MBR с использованием 32 бит, максимальный размер, а также наивысший начальный адрес раздела, использующего диски с 512-байтовыми секторами (фактическими или эмулируемыми), не может превышать 2 ТиБ. −512 байт (2 199 023 255 040 байт или4 294 967 295 (2 32 −1) секторов × 512 (2 9 ) байт на сектор). [1] Устранение этого ограничения емкости было одной из главных мотиваций для разработки GPT.

Поскольку информация о разделах хранится в таблице разделов MBR с использованием адреса начального блока и длины, теоретически можно определить разделы таким образом, чтобы выделенное пространство для диска с 512-байтовыми секторами давало общий размер, приближающийся к 4 ТиБ, если все разделы, кроме одного, расположены ниже предела в 2 ТиБ, а последний назначается как начинающийся с блока 2 32 −1 или близкий к нему, и укажите размер до 2 32 −1, тем самым определяя раздел, которому требуется 33 ТиБ. вместо 32 бит для адреса сектора, к которому осуществляется доступ. Однако на практике только некоторые операционные системы с поддержкой LBA-48 , включая Linux, FreeBSD и Windows 7 [18] , которые внутри используют 64-битные адреса секторов, фактически поддерживают это. Из-за ограничений пространства кода и того, что таблица разделов MBR поддерживает только 32 бита, загрузочные сектора, даже если включена поддержка LBA-48, а не LBA-28 , часто используют 32-битные вычисления, если только они специально не предназначены для поддержки полный диапазон адресов LBA-48 или предназначены для работы только на 64-битных платформах. Любой загрузочный код или операционная система, использующие внутри себя 32-битные адреса секторов, приведет к зацикливанию адресов при доступе к этому разделу и, таким образом, приведет к серьезному повреждению данных во всех разделах.

Для дисков с размером сектора, отличным от 512 байт, таких как внешние USB- накопители , также существуют ограничения. Размер сектора 4096 приводит к восьмикратному увеличению размера раздела, который можно определить с помощью MBR, что позволяет создавать разделы размером до 16 ТиБ (2 32  × 4096 байт). [19] Версии Windows, более поздние, чем Windows XP, поддерживают большие размеры секторов, а также Mac OS X, а Linux поддерживает большие размеры секторов, начиная с 2.6.31 [20] или 2.6.32, [21] , но возникают проблемы с загрузкой. загрузчики, инструменты разметки и реализации компьютерного BIOS имеют определенные ограничения, [22] поскольку они часто жестко зарезервированы только 512 байт для буферов секторов, что приводит к перезаписи памяти для секторов большего размера. Это также может привести к непредсказуемому поведению, и поэтому его следует избегать, когда проблема совместимости и соответствия стандартам является проблемой.

Если устройство хранения данных было разделено по схеме GPT, основная загрузочная запись по-прежнему будет содержать таблицу разделов, но ее единственная цель — указать на существование GPT и предотвратить использование служебных программ, которые понимают только схему таблицы разделов MBR. создавая любые разделы в том месте, которое в противном случае они считали бы свободным пространством на диске, тем самым случайно стирая GPT.

Загрузка системы

На компьютерах, совместимых с IBM PC , загрузочная микропрограмма (содержащаяся в ПЗУ BIOS ) загружает и выполняет главную загрузочную запись. [23] В ПК/XT (тип 5160) использовался микропроцессор Intel 8088 . Чтобы сохранить совместимость, все системы с архитектурой BIOS x86 запускаются с микропроцессора в рабочем режиме, называемом реальным режимом . BIOS считывает MBR с запоминающего устройства в физическую память , а затем направляет микропроцессор на начало загрузочного кода. BIOS переключит процессор в реальный режим, а затем начнет выполнять программу MBR, поэтому ожидается, что начало MBR будет содержать машинный код реального режима . [23]

Поскольку процедура начальной загрузки BIOS загружает и запускает ровно один сектор физического диска, наличие таблицы разделов в MBR с загрузочным кодом упрощает разработку программы MBR. Он содержит небольшую программу, которая загружает загрузочную запись тома (VBR) целевого раздела. Затем управление передается этому коду, который отвечает за загрузку реальной операционной системы. Этот процесс известен как цепная загрузка .

Популярные программы с кодом MBR были созданы для загрузки ПК DOS и MS-DOS , и аналогичный загрузочный код до сих пор широко используется. Эти загрузочные сектора ожидают FDISKиспользования схемы таблицы разделов и сканируют список разделов во встроенной таблице разделов MBR, чтобы найти единственный, помеченный активным флагом . [24] Затем он загружает и запускает загрузочную запись тома (VBR) активного раздела.

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

На компьютерах, которые не используют процессоры x86 , или на компьютерах x86 с прошивкой, отличной от BIOS, такой как прошивка с открытой прошивкой или расширяемым интерфейсом прошивки (EFI), эта конструкция не подходит, и MBR не используется как часть начальной загрузки системы. [25] Вместо этого встроенное ПО EFI способно напрямую понимать схему разбиения GPT и формат файловой системы FAT , а также загружать и запускать программы, хранящиеся в виде файлов в системном разделе EFI . [26] MBR будет использоваться только в том случае, если он может содержать таблицу разделов в целях совместимости, если используется схема таблицы разделов GPT.

Существует некоторый код замены MBR, который эмулирует загрузку встроенного ПО EFI, что позволяет машинам, отличным от EFI, загружаться с дисков с использованием схемы разбиения GPT. Он обнаруживает GPT, переводит процессор в правильный рабочий режим и загружает с диска совместимый с EFI код для выполнения этой задачи.

Идентификация диска

Информация, содержащаяся в таблице разделов внешнего жесткого диска, как она отображается в служебной программе QtParted , работающей под Linux (с KDE).

Помимо кода начальной загрузки и таблицы разделов, основные загрузочные записи могут содержать подпись диска. Это 32-битное значение, предназначенное для однозначной идентификации дискового носителя (в отличие от дискового устройства — для съемных жестких дисков эти два значения не обязательно совпадают).

Подпись диска была введена в Windows NT версии 3.5, но сейчас она используется несколькими операционными системами, включая ядро ​​Linux версии 2.6 и более поздних версий. Инструменты Linux могут использовать подпись диска NT, чтобы определить, с какого диска загрузилась машина. [27]

Windows NT (и более поздние операционные системы Microsoft) использует подпись диска в качестве индекса всех разделов на любом диске, когда-либо подключенном к компьютеру под этой ОС; эти подписи хранятся в разделах реестра Windows , в первую очередь для хранения постоянных сопоставлений между разделами диска и буквами дисков. Его также можно использовать в файлах BOOT.INI Windows NT (хотя большинство из них этого не делают) для описания расположения загрузочных разделов Windows NT (или более поздних версий). [28] Одним из ключей (среди многих), где подписи дисков NT появляются в реестре Windows 2000/XP, является:

HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\

Если подпись диска, хранящаяся в MBR, была A8 E1 B9 D2 (именно в этом порядке), а его первый раздел соответствовал логическому диску C: в Windows, то данные под значением ключа будут такими:REG_BINARY\DosDevices\C:

A8 E1 B9 D2 00 7E 00 00 00 00 00 00

Первые четыре байта — это подпись диска. (В других ключах эти байты могут появляться в порядке, обратном тому, который находится в секторе MBR.) За ними следуют еще восемь байтов, образующих 64-битное целое число в записи с прямым порядком байтов , которые используются для определения смещения байта. этого раздела. В этом случае 00 7E соответствует шестнадцатеричному значению 0x7E00 (32256 ). Если предположить, что рассматриваемый диск сообщает о размере сектора 512 байт, то деление этого смещения байтов на 512 дает результат 63, который представляет собой номер физического сектора (или LBA), содержащий первый сектор раздела (в отличие от используемого счетчика секторов). в значениях секторов кортежей CHS, которые отсчитываются с единицы , абсолютное значение сектора или LBA начинает отсчет с нуля ).

Если бы на этом диске был другой раздел со значениями 00 F8 93 71 02 после подписи диска (например, под значением ключа ), он начинался бы со смещения байтов 0x00027193F800 (\DosDevices\D:10,495,457,280 ), который также является первым байтом физического сектора.20 498 940 .

Начиная с Windows Vista , подпись диска также хранится в хранилище данных конфигурации загрузки (BCD), и от этого зависит процесс загрузки. [29] Если подпись диска изменилась, не может быть найдена или имеет конфликт, Windows не сможет загрузиться. [30] Если Windows не вынуждена использовать перекрывающуюся часть адреса LBA записи расширенного активного раздела в качестве подписи псевдодиска, использование Windows противоречит функции расширенного активного раздела PTS-DOS 7 и DR-DOS 7.07. в частности, если их загрузочный код расположен за пределами первых 8 ГБ диска, поэтому необходимо использовать адресацию LBA.

Рекомендации по программированию

MBR возникла в PC XT . [31] Компьютеры , совместимые с IBM PC, имеют прямой порядок байтов , что означает, что процессор сохраняет числовые значения, охватывающие два или более байта, в памяти, начиная с младшего значащего байта . Формат MBR для СМИ отражает это соглашение. Таким образом, подпись MBR появится в редакторе дисков в виде последовательности 55 AA. [а]

Последовательность начальной загрузки в BIOS загрузит первую найденную действительную MBR в физическую память компьютера по адресу 0x0000 : 0x7C00 . [31] Последняя инструкция, выполняемая в коде BIOS, будет «переходом» по этому адресу, чтобы направить выполнение в начало копии MBR. Основной проверкой для большинства BIOS является подпись по смещению 0x01FE , хотя разработчик BIOS может включить и другие проверки, например проверку того, что MBR содержит действительную таблицу разделов без записей, относящихся к секторам, превышающим заявленную емкость диска.

Для BIOS съемные (например, дискеты) и фиксированные диски по сути одинаковы. В любом случае BIOS считывает первый физический сектор носителя в ОЗУ по абсолютному адресу 0x7C00 , проверяет подпись в последних двух байтах загруженного сектора, а затем, если правильная подпись найдена, передает управление первому байте сектор с инструкцией перехода (JMP). Единственное реальное различие, которое делает BIOS, заключается в том, что (по умолчанию или если порядок загрузки не настраивается) он пытается загрузиться с первого съемного диска, прежде чем пытаться загрузиться с первого фиксированного диска. С точки зрения BIOS действие MBR, загружающее загрузочную запись тома в ОЗУ, точно такое же, как действие загрузочной записи тома дискеты, загружающей объектный код загрузчика операционной системы в ОЗУ. В любом случае программа, загружаемая в BIOS, выполняет цепную загрузку операционной системы.

Хотя код загрузочного сектора MBR предполагает загрузку по физическому адресу 0x0000 : 0x7C00 , [i] вся память с физического адреса 0x0000 : 0x0501 (адрес 0x0000 : 0x0500 — последний, используемый Phoenix BIOS) [13] до 0x0000 : 0x7FFF , [31] позже было смягчено до 0x0000 : 0xFFFF [32] (а иногда и [j] до 0x9000 : 0xFFFF )‍—‌конец первых 640 КБ ‍—‌доступно в реальном режиме. [k] Вызов прерывания BIOS может помочь определить, сколько памяти можно выделить безопасно (по умолчанию он просто считывает базовый размер памяти в КБ из сегмента :offset по адресу 0x0040 : 0x0013 , но он может быть перехвачен другим резидентным предварительным вызовом). загрузочное программное обеспечение, такое как наложения BIOS, код RPL или вирусы, чтобы уменьшить сообщаемый объем доступной памяти, чтобы не допустить их перезаписи другим программным обеспечением этапа загрузки, например загрузочными секторами).INT 12h

Последние 66 байт 512-байтовой MBR зарезервированы для таблицы разделов и другой информации, поэтому программа загрузочного сектора MBR должна быть достаточно маленькой, чтобы уместиться в 446 байт памяти или меньше.

Код MBR проверяет таблицу разделов, выбирает подходящий раздел и загружает программу, которая выполнит следующий этап процесса загрузки, обычно с использованием вызовов INT 13h BIOS . Код начальной загрузки MBR загружает и запускает (зависит от загрузчика или операционной системы) код загрузочной записи тома , расположенный в начале «активного» раздела. Загрузочная запись тома будет помещаться в 512-байтовый сектор, но код MBR может безопасно загружать дополнительные сектора для размещения загрузчиков длиной более одного сектора, при условии, что они не делают никаких предположений о размере сектора. Фактически, по адресу 0x7C00 доступно как минимум 1 КБ ОЗУ на каждой машине IBM XT- и AT-класса, поэтому сектор размером 1 КБ можно использовать без проблем. Как и MBR, загрузочная запись тома обычно ожидает загрузки по адресу 0x0000 : 0x7C00 . Это связано с тем, что конструкция загрузочной записи тома возникла на неразделенном носителе, где загрузочная запись тома загружалась непосредственно процедурой загрузки BIOS; как упоминалось выше, BIOS одинаково обрабатывает MBR и загрузочные записи тома (VBR) [l] . Поскольку это то же самое место, где загружается MBR, одной из первых задач MBR является перемещение себя в другое место в памяти. Адрес перемещения определяется MBR, но чаще всего это 0x0000 : 0x0600 (для кода MS-DOS/PC DOS, OS/2 и Windows MBR) или 0x0060 : 0x0000 (большинство MBR DR-DOS). (Несмотря на то, что оба этих сегментированных адреса разрешаются в один и тот же адрес физической памяти в реальном режиме, для загрузки Apple Darwin MBR должна быть перемещена в 0x0000 : 0x0600 вместо 0x0060 : 0x0000 , поскольку код зависит от указателя DS:SI. к записи раздела, предоставленной MBR, но он ошибочно ссылается на него только через 0x0000 :SI [33] ). Важно не перемещаться по другим адресам в памяти, поскольку многие VBR при загрузке своей загрузки принимают определенную стандартную структуру памяти. файл.

Поле Статус в записи таблицы разделов используется для указания активного раздела . Соответствующие стандартам MBR допускают пометку активного только одного раздела и используют это как часть проверки работоспособности для определения существования действительной таблицы разделов. Они отобразят сообщение об ошибке, если более одного раздела помечены как активные. Некоторые нестандартные MBR не рассматривают это как состояние ошибки и просто используют первый отмеченный раздел в строке.

Традиционно значения, отличные от 0x00 (неактивный) и 0x80 (активный), были недопустимыми, и программа начальной загрузки отображала сообщение об ошибке при их обнаружении. Однако с 1994 года Спецификация Plug and Play BIOS и Спецификация загрузки BIOS (BBS) позволили сделать загрузочными и другие устройства. [32] [34] Следовательно, с появлением MS-DOS 7.10 (Windows 95B) и выше MBR начал рассматривать установленный бит 7 как активный флаг и показывал сообщение об ошибке только для значений 0x01 .. 0x7F . Он продолжал рассматривать эту запись как единицу физического диска, которая будет использоваться при последующей загрузке VBR соответствующего раздела, тем самым теперь также признавая другие загрузочные диски, кроме 0x80 , как действительные, однако MS-DOS сама по себе не использовала это расширение. Сохранение фактического номера физического диска в таблице разделов обычно не вызывает проблем с обратной совместимостью, поскольку значение будет отличаться от 0x80 только на дисках, отличных от первого (которые в любом случае ранее не были загрузочными). Однако даже если в системах разрешена загрузка с других дисков, расширение может работать не всегда, например, после того, как назначение физических дисков в BIOS изменилось при удалении, добавлении или замене дисков. Таким образом, согласно спецификации загрузки BIOS (BBS) [32] для современной MBR, принимающей бит 7 в качестве активного флага, рекомендуется передавать значение DL, первоначально предоставленное BIOS, вместо использования записи в таблице разделов.

Интерфейс BIOS-MBR

MBR загружается в ячейку памяти 0x0000 : 0x7C00 и со следующими регистрами ЦП , установленными, когда предыдущий загрузчик начальной загрузки (обычно IPL в BIOS) передает ему выполнение, переходя на 0x0000 : 0x7C00 в реальном режиме ЦП .

Некоторые BIOS Compaq вместо этого ошибочно используют 0x07C0 : 0x0000 . Хотя это приводит к тому же месту в памяти реального режима, это нестандартно, и его следует избегать, поскольку код MBR, предполагающий определенные значения регистров или не записанный как перемещаемый, в противном случае может не работать.
DL поддерживается BIOS IBM, а также большинством других BIOS. Известно, что BIOS Toshiba T1000 не поддерживает это должным образом, и некоторые старые BIOS Wyse 286 используют значения DL, большие или равные 2 для фиксированных дисков (тем самым отражая номера логических дисков в DOS, а не номера физических дисков в BIOS). USB-накопителям, сконфигурированным как съемные диски, обычно присваиваются DL = 0x80 , 0x81 и т. д. Однако некоторые редкие BIOS ошибочно представляли их как DL = 0x01 , как если бы они были настроены как супердискеты.
Соответствующий стандарту BIOS присваивает номера, большие или равные 0x80, исключительно фиксированным или съемным дискам, и традиционно во время загрузки в качестве физических дисков передавались только значения 0x80 и 0x00 . По соглашению, разделами являются только фиксированные/съемные диски, поэтому единственное значение DL, которое традиционно могла видеть MBR, было 0x80 . Многие MBR в любом случае были запрограммированы так, чтобы игнорировать значение DL и работать с жестко заданным значением (обычно 0x80 ).
Спецификация Plug and Play BIOS и Спецификация загрузки BIOS ( BBS ) с 1994 года также позволяют другим устройствам становиться загрузочными . [32] Это также обеспечит совместимость с различными нестандартными назначениями (см. примеры выше), что касается кода MBR.
Загрузочные компакт-диски, соответствующие спецификации El Torito, могут содержать образы дисков, смонтированные BIOS, которые будут выглядеть как дискеты или супердискеты на этом интерфейсе. Значения DL 0x00 и 0x01 также могут использоваться расширениями BIOS Protected Area Run Time Interface Extension Services (PARTIES) и Trusted Computing Group (TCG) в доверенном режиме для доступа к невидимым в противном случае разделам PARTIES и файлам образов дисков, расположенным через запись расширения Boot Engineering. (BEER) в последнем физическом секторе защищенной области хоста (HPA) жесткого диска . Хотя код MBR предназначен для эмуляции дискет или супердискет, он принимает эти нестандартные значения DL и позволяет использовать образы разделенных носителей по крайней мере на этапе загрузки операционных систем.

Системы с поддержкой Plug-and-Play BIOS или BBS будут предоставлять указатель на данные PnP в дополнение к DL: [32] [34]

Эта информация позволяет загрузчику в MBR (или VBR, если он передан) активно взаимодействовать с BIOS или резидентным оверлеем PnP/BBS BIOS в памяти с целью настройки порядка загрузки и т. д., однако эта информация игнорируется. большинством стандартных MBR и VBR. В идеале ES:DI передается в VBR для последующего использования загруженной операционной системой, но операционные системы с поддержкой PnP обычно также имеют резервные методы для последующего получения точки входа PnP BIOS, чтобы большинство операционных систем не полагались на это. .

Интерфейс MBR-VBR

По соглашению, MBR, соответствующий стандарту, передает выполнение успешно загруженному VBR, загруженному в ячейку памяти 0x0000 : 0x7C00 , путем перехода к 0x0000 : 0x7C00 в реальном режиме ЦП со следующими поддерживаемыми или специально настроенными регистрами:

MBR MS-DOS 2.0–7.0 / PC DOS 2.0–6.3 не передают значение DL, полученное при вводе, а скорее используют запись состояния загрузки в записи таблицы разделов выбранного основного раздела в качестве физического загрузочного диска. Поскольку в большинстве таблиц разделов MBR по соглашению это 0x80 , это ничего не изменит, если BIOS не попытается загрузить физическое устройство, отличное от первого фиксированного или съемного диска в строке. Это также причина, по которой эти операционные системы не могут загружаться со второго жесткого диска и т. д. Некоторые инструменты FDISK также позволяют помечать разделы на дополнительных дисках как «активные». В этой ситуации, зная, что эти операционные системы в любом случае не могут загружаться с других дисков, некоторые из них продолжают использовать традиционно фиксированное значение 0x80 в качестве активного маркера, тогда как другие используют значения, соответствующие текущему назначенному физическому диску ( 0x81 , 0x82 ). тем самым позволяя загрузку с других дисков, по крайней мере теоретически. Фактически, это будет работать со многими кодами MBR, которые принимают установленный бит 7 записи состояния загрузки в качестве активного флага, а не настаивают на 0x80 , однако MBR MS-DOS/PC DOS жестко запрограммированы на принятие фиксированного значения Только 0x80 . Сохранение фактического номера физического диска в таблице разделов также может вызвать проблемы при изменении назначения физических дисков в BIOS, например, при удалении, добавлении или замене дисков. Таким образом, для обычного MBR, принимающего бит 7 в качестве активного флага и в противном случае просто использующего и передающего VBR значение DL, первоначально предоставленное BIOS, обеспечивает максимальную гибкость. MBR MS-DOS 7.1–8.0 были изменены и теперь рассматривают бит 7 как активный флаг, а любые значения 0x01 .. 0x7F как недействительные, но они по-прежнему берут физический диск из таблицы разделов, а не используют значение DL, предоставленное BIOS. Расширенные MBR DR-DOS 7.07 рассматривают бит 7 как активный флаг и по умолчанию используют и передают значение BIOS DL (включая нестандартные значения 0x00 .. 0x01 , используемые некоторыми BIOS также для разделенных носителей), но они также предоставляют специальный NEWLDR. блок конфигурации для поддержки альтернативных методов загрузки в сочетании с LOADER и REAL/32, а также для изменения подробного поведения MBR, чтобы он также мог работать со значениями дисков, полученными из таблицы разделов (важно в сочетании с LOADER и AAP, см. смещение NEWLDR ), преобразуйте нестандартные единицы привода Wyse 0x02 .. 0x7F в 0x80 .. 0xFD и, при необходимости, исправьте значение привода (хранящееся по смещению в расширенном блоке параметров BIOS (EBPB) или по смещению сектора.0x000C0x0190x01FD) в загруженных VBR перед передачей им выполнения (см. NEWLDR offset 0x0014) — это также позволяет другим загрузчикам использовать NEWLDR в качестве цепного загрузчика, на лету настраивать его образ в памяти и «туннелировать» загрузку VBR, EBR, или AAP через NEWLDR.

Код MBR передает дополнительную информацию в VBR во многих реализациях:

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

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

Поскольку более старые операционные системы (включая их VBR) не поддерживают это расширение и не могут адресовать сектора за пределами барьера в 2 ТиБ, гибридный загрузчик с поддержкой GPT все равно должен эмулировать 16-байтовую фиктивную запись таблицы разделов MBR, если загрузочный раздел расположен в пределах первых 2 ТиБ. [н]

Редактирование и замена содержимого

Хотя можно манипулировать байтами в секторе MBR напрямую с помощью различных дисковых редакторов , существуют инструменты для записи фиксированных наборов функционирующего кода в MBR. Начиная с MS-DOS 5.0, в программу FDISKвключен переключатель /MBR, который перезапишет код MBR. [38] В Windows 2000 и Windows XP консоль восстановления можно использовать для записи нового кода MBR на устройство хранения с помощью ее fixmbrкоманды. В Windows Vista и Windows 7 среду восстановления можно использовать для записи нового кода MBR с помощью этой BOOTREC /FIXMBRкоманды. Некоторые сторонние утилиты также могут использоваться для непосредственного редактирования содержимого таблиц разделов (без каких-либо знаний шестнадцатеричных редакторов или редакторов дисков/секторов), например MBRWizard . [о]

dd— это команда POSIX, обычно используемая для чтения или записи любого места на устройстве хранения, включая MBR. В Linux для установки MBR Windows можно использовать ms-sys. В проектах GRUB и LILO есть инструменты для записи кода в сектор MBR, а именно grub-installи lilo -mbr. Интерактивная консоль GRUB Legacy может записывать данные в MBR с помощью команд setupи embed, но в настоящее время GRUB2 необходимо grub-installзапускать из операционной системы.

Различные программы способны создавать « резервную копию » как основной таблицы разделов, так и логических разделов расширенного раздела.

Linux sfdisk(на SystemRescueCD ) может сохранять резервную копию основной и расширенной таблицы разделов. Он создает файл, который можно прочитать в текстовом редакторе, или этот файл может быть использован sfdisk для восстановления основной/расширенной таблицы разделов. Пример команды для резервного копирования таблицы разделов sfdisk -d /dev/hda > hda.outи восстановления — sfdisk /dev/hda < hda.out. Таким образом можно скопировать таблицу разделов с одного диска на другой, что полезно для настройки зеркалирования, но sfdisk выполняет команду без запросов/предупреждений, используя sfdisk -d /dev/sda | sfdisk /dev/sdb. [39]

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

Примечания

  1. ^ abcdefg Сигнатура по смещению 0x01FE в загрузочных секторах равна 0x55 по смещению 0x01FE и по смещению 0x01FF . Поскольку в контексте компьютеров, совместимых с IBM PC , необходимо предполагать представление с прямым порядком байтов , в программах для процессоров x86 его можно записать как 16-битное слово (обратите внимание на порядок перестановки), тогда как в программах для других процессоров его необходимо записать как 16-битное слово. Архитектуры ЦП, использующие представление с прямым порядком байтов . Поскольку это неоднократно путалось в книгах и даже в оригинальных справочных документах Microsoft, в этой статье используется побайтовое представление на диске на основе смещения, чтобы избежать любой возможной неправильной интерпретации.55hex AAhexAAhexAA55hex55AAhex
  2. ^ Чтобы обеспечить целостность кода загрузчика MBR, важно, чтобы байты от 0x00DA до 0x00DF никогда не менялись, если только все шесть байтов не представляют значение 0 или весь код загрузчика MBR (за исключением ( расширенная) таблица разделов) также заменяется одновременно. Это включает в себя сброс этих значений до тех пор, пока не известен код, хранящийся в MBR. Windows придерживается этого правила.00 00 00 00 00 00hex
  3. ^ Первоначально значения статуса, отличные от 0x00 и 0x80, были недопустимыми, но современные MBR рассматривают бит 7 как активный флаг и используют эту запись для хранения физической загрузочной единицы.
  4. ^ ab Поля стартового сектора ограничены 1023+1 цилиндром, 255+1 головкой и 63 секторами; Поля конечных секторов имеют те же ограничения.
  5. ^ abcde Диапазон секторов от 1 до 63; диапазон цилиндров — от 0 до 1023; диапазон head — от 0 до 255 включительно. [13]
  6. ^ Эта запись используется операционными системами при определенных обстоятельствах; в таких случаях адреса CHS игнорируются. [15]
  7. ^ Ноль зарезервирован и не должен использоваться в обычных записях раздела. Эта запись используется операционными системами при определенных обстоятельствах; в таких случаях адреса CHS игнорируются. [15]
  8. ^ «Цитата: [Большинство] версий MS-DOS (включая MS-DOS 7 [Windows 95]) содержат ошибку, которая предотвращает загрузку на жестких дисках с 256 головками (FFh), поэтому многие современные BIOS обеспечивают сопоставления не более чем с 255 ( ФЭх) головы». РБИЛ [40] [41]
  9. ^ Адрес : первый байт 32-го КБ ОЗУ. Загрузка загрузочной программы по этому адресу исторически была причиной того, что, хотя минимальный размер ОЗУ исходного IBM PC (тип 5150) составлял 16 КБ, для дискового варианта в IBM XT требовалось 32 КБ.0000hex7C00hex
  10. ^ Если есть EBDA, доступная память заканчивается под ним.
  11. ^ Очень старые машины могут иметь менее 640 КБ ( или 655 360 байт) памяти. Теоретически гарантированно существует только 32 КБ (до : ) или 64 КБ (до : ); это будет иметь место на машине IBM XT-класса, оснащенной только минимальным объемом памяти, необходимым для дисковой системы.A0000hex0000hex7FFFhex0000hexFFFFhex
  12. ^ Это применимо, когда BIOS обрабатывает VBR, то есть когда он находится в первом физическом секторе неразделенного носителя. В противном случае биос не имеет никакого отношения к VBR. Конструкция VBR такова, какая она есть, потому что VBR возникли исключительно на неразмеченных дискетах (у IBM PC типа 5150 изначально не было жесткого диска), а система разметки с использованием MBR была позже разработана как адаптация для размещения более одного тома. , каждый из которых начинается со своего уже определенного VBR, на один фиксированный диск. Благодаря такой конструкции MBR, по сути, эмулирует процедуру загрузки BIOS, выполняя те же действия, что и BIOS, чтобы обработать этот VBR и настроить для него начальную операционную среду, как если бы BIOS обнаружил этот VBR на неразделенном носителе.
  13. ^ IP установлен в результате прыжка. CS может быть установлен в 0 либо путем выполнения дальнего перехода, либо путем явной загрузки значения регистра перед выполнением ближнего перехода. (Код x86, осуществивший переход, не может определить, был ли использован ближний или дальний переход для его достижения [если только код, совершивший переход, отдельно не передает эту информацию каким-либо образом].)
  14. ^ Это не часть вышеупомянутого предложения, а естественное следствие ранее существовавших условий.
  15. ^ Например, редактор таблицы разделов PowerQuest (PTEDIT32.EXE), который работает в операционных системах Windows, по-прежнему доступен здесь: FTP-сайт Symantec.

Рекомендации

  1. ^ abcd «Поддержка Windows для жестких дисков объемом более 2 ТБ». 1. Майкрософт . 26 июня 2013 г. 2581408. Архивировано из оригинала 27 апреля 2017 г. Проверено 28 августа 2013 г.
  2. ^ abc Седори, Дэниел Б. (2004). «Таинственные байты (или байты диска/метки времени) основной загрузочной записи MS-Windows 95B, 98, 98SE и Me (MBR)». Основные загрузочные записи . thestarman.pcministry.com. Архивировано из оригинала 24 августа 2017 г. Проверено 25 августа 2012 г.
  3. ^ Лукас, Майкл (2003). Абсолютный OpenBSD: Unix для практичных параноиков. п. 73. ИСБН 9781886411999. Проверено 9 апреля 2011 г. Каждая операционная система включает инструменты для управления разделами MBR. К сожалению, каждая операционная система обрабатывает разделы MBR по-своему.
  4. ^ Нортон, Питер ; Кларк, Скотт (2002). «Новое внутри ПК» Питера Нортона. Издательство Самс . стр. 360–361. ISBN 0-672-32289-7.
  5. ^ Грейвс, Майкл В. (2004). Руководство A+ по обслуживанию и ремонту оборудования ПК . Томсон Дельмар. п. 276. ИСБН 1-4018-5230-0.
  6. ^ Эндрюс, Джин (2003). Обновление и ремонт с Джин Эндрюс. Технология курса Томсона. п. 646. ИСБН 1-59200-112-2.
  7. ^ Босуэлл, Уильям (2003). Внутри Windows Server 2003 . Аддисон-Уэсли Профессионал . п. 13. ISBN 0-7357-1158-5.
  8. ^ Смит, Родерик В. (2000). Руководство по мультизагрузочной настройке. Издательство Que . стр. 260–261. ISBN 0-7897-2283-6.
  9. ^ Брауэр, Андрис Эверт (22 апреля 2004 г.) [2000]. «Свойства таблиц разделов». Типы разделов . Архивировано из оригинала 24 августа 2017 г. Проверено 24 августа 2017 г. Матиас [Р.] Пол пишет: «[…] PTS-DOS [использует] специальную запись пятого раздела перед остальными четырьмя записями в MBR и соответствующий загрузочный код MBR, поддерживающий AAP. […]»
  10. ^ Брауэр, Андрис Эверт (22 апреля 2004 г.) [2000]. «Свойства таблиц разделов». Типы разделов . Архивировано из оригинала 24 августа 2017 г. Проверено 24 августа 2017 г. Некоторые OEM-системы, такие как AST DOS (тип ) и NEC DOS (тип ), имели 8 вместо 4 записей разделов в секторах MBR. (Матиас Р. Пол).14hex24hex(Примечание. Таблицам разделов NEC MS-DOS 3.30 и AST MS-DOS с восемью записями предшествует подпись со смещением 0x017C .)A55Ahex
  11. ^ Седори, Дэниел Б. (18 мая 2007 г.) [2003]. «Заметки о различиях в одной OEM-версии MBR DOS 3.30». Основные загрузочные записи . Архивировано из оригинала 24 августа 2017 г. Проверено 24 августа 2017 г. Когда мы добавили разделы в эту таблицу NEC, первый из них был помещен по смещению от 0x01EE до 0x01FD , а следующая запись была добавлена ​​чуть выше него. Таким образом, записи вставляются и перечисляются в обратном порядке по сравнению с обычной таблицей. Таким образом, если просмотреть такую ​​таблицу с помощью редактора дисков или утилиты составления списка разделов, первая запись в таблице NEC из восьми записей будет показана как последняя (четвертая запись) в обычной таблице разделов.(Примечание. Показана таблица разделов с 8 записями и отличия ее загрузочного кода от MS-DOS 3.30.)
  12. ^ «Таблица разделов». osdev.org. 18 марта 2017 г. [06 марта 2007 г.]. Архивировано из оригинала 24 августа 2017 г. Проверено 24 августа 2017 г.
  13. ^ abc Системный BIOS для компьютеров IBM PC/XT/AT и совместимых устройств . Технический справочник Феникса . Аддисон-Уэсли . 1989. ISBN 0-201-51806-6.
  14. ^ Брауэр, Андрис Эверт (2013) [1995]. «Список идентификаторов разделов для ПК». Типы разделов . Архивировано из оригинала 24 августа 2017 г. Проверено 24 августа 2017 г.
  15. ^ Аб Вуд, Сибил (2002). Руководство по эксплуатации Microsoft Windows 2000 Server. Майкрософт Пресс . п. 18. ISBN 978-0-73561796-4.
  16. ^ «Введение в геометрию жесткого диска». Технический сок . 6 декабря 2012 г. [08 августа 2011 г.]. Архивировано из оригинала 4 февраля 2013 г.
  17. ^ Козерок, Чарльз М. (17 апреля 2001 г.). «БИОС и жесткий диск». Руководство для ПК . Архивировано из оригинала 17 июня 2017 г. Проверено 19 апреля 2013 г.
  18. ^ Смит, Роберт (26 июня 2011 г.). «Обход ограничений MBR». Учебное пособие по GPT fdisk . Архивировано из оригинала 24 августа 2017 г. Проверено 20 апреля 2013 г.
  19. ^ «Более 2 ТиБ на диске MBR» . superuser.com. 07.03.2013. Архивировано из оригинала 24 августа 2017 г. Проверено 22 октября 2013 г.
  20. ^ «Переход на жесткие диски расширенного формата с сектором 4 КБ» . Технический инсайт . Технология Сигейт . 2012. Архивировано из оригинала 24 августа 2017 г. Проверено 19 апреля 2013 г.
  21. ^ Калверт, Кельвин (16 марта 2011 г.). «Жесткие диски большой емкости WD AV-GP» (PDF) . Western Digital . Проверено 20 апреля 2013 г.
  22. ^ Смит, Родерик В. (27 апреля 2010 г.). «Linux на дисках с секторами 4 КБ: Практические советы». РазработчикWorks . ИБМ . Архивировано из оригинала 24 августа 2017 г. Проверено 19 апреля 2013 г.
  23. ^ ab "MBR (x86)". OSDev Wiki . OSDev.org. 05.03.2012. Архивировано из оригинала 24 августа 2017 г. Проверено 20 апреля 2013 г.
  24. ^ Седори, Дэниел Б. (30 июля 2003 г.). «Основная загрузочная запись IBM DOS 2.00». Царство Звездного Человека. Архивировано из оригинала 24 августа 2017 г. Проверено 22 июля 2011 г.
  25. ^ Сингх, Амит (25 декабря 2009 г.) [декабрь 2003 г.]. «Загрузка Mac OS X». Внутреннее устройство Mac OS X: Книга . Проверено 22 июля 2011 г.
  26. ^ де Бойн Поллард, Джонатан (10 июля 2011 г.). «Процесс загрузки EFI». Часто встречающиеся ответы . Архивировано из оригинала 24 августа 2017 г. Проверено 22 июля 2011 г.
  27. ^ Домш, Мэтт (22 марта 2005 г.) [19 декабря 2003 г.]. «Re: Улучшения EDD в RFC 2.6.0». Список рассылки ядра Linux . Архивировано из оригинала 24 августа 2017 г. Проверено 24 августа 2017 г.
  28. ^ «Windows может использовать синтаксис Signature() в файле BOOT.INI». База знаний . Майкрософт .
  29. ^ Мактавиш (февраль 2014 г.). «Подпись диска MBR Vista». Мультизагрузка: двойная и мультизагрузка с Vista . Архивировано из оригинала 24 августа 2017 г. Проверено 24 августа 2017 г.
  30. ^ Руссинович, Марк (08 ноября 2011 г.). «Устранение конфликтов подписей дисков». Блог Марка Руссиновича . Майкрософт . Архивировано из оригинала 24 августа 2017 г. Проверено 19 апреля 2013 г.
  31. ^ abc Сакамото, Масахико (13 мая 2010 г.). «Почему BIOS загружает MBR в 0x7C00 в x86?». Glamenv-Septzen.net. Архивировано из оригинала 24 августа 2017 г. Проверено 4 мая 2011 г.
  32. ^ abcdef Compaq Computer Corporation ; Феникс Технологии Лтд .; Корпорация Intel (11 января 1996 г.). «Спецификация загрузки BIOS 1.01» (PDF) . 1.01. АКПИКА. Архивировано (PDF) из оригинала 24 августа 2017 г. Проверено 20 апреля 2013 г.[1]
  33. ^ аб Эллиотт, Дэвид Ф. (12 октября 2009 г.). «Почему «стандартный» MBR устанавливает SI?». tgwbd.org . Архивировано из оригинала 24 августа 2017 г. Проверено 20 апреля 2013 г.
  34. ^ abc Compaq Computer Corporation ; Феникс Технологии Лтд .; Корпорация Intel (5 мая 1994 г.). «Спецификация Plug and Play BIOS 1.0A» (PDF) . 1,0А. Интел . Архивировано из оригинала (PDF) 24 августа 2017 г. Проверено 20 апреля 2013 г.
  35. ^ Пол, Матиас Р. (02 октября 1997 г.) [29 сентября 1997 г.]. «Caldera OpenDOS 7.01/7.02, обновление Alpha 3 IBMBIO.COM — README.TXT и BOOT.TXT — краткое описание загрузки OpenDOS». Архивировано из оригинала 4 октября 2003 г. Проверено 29 марта 2009 г.[2]
  36. ^ Пол, Матиас Р. (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). Написание нового загрузочного сектора... […](Примечание. SYS записывает загрузочные записи тома , а не основные загрузочные записи, но интерфейс их входящего регистра аналогичен (с расширениями), поскольку оба они могут быть изначально загружены базовой системой.)
  37. ^ Эллиотт, Роберт (4 января 2010 г.). «Приложение гибридного загрузочного кода MBR EDD-4» (PDF) . Hewlett Packard , Технический комитет T13. е09127r3. Архивировано (PDF) из оригинала 24 августа 2017 г. Проверено 20 апреля 2013 г.
  38. ^ «FDISK /MBR перезаписывает главную загрузочную запись» . Поддерживать . 1. Майкрософт . 2011-09-23. 69013. Архивировано из оригинала 8 февраля 2017 г. Проверено 19 апреля 2013 г.
  39. ^ «sfdisk(8) — справочная страница Linux». сайт die.net . 2013 [2007]. Архивировано из оригинала 24 августа 2017 г. Проверено 20 апреля 2013 г.
  40. ^ Браун, Ральф Д. (16 июля 2000 г.). «Список прерываний Ральфа Браунса (v61 html)». Программное обеспечение Делори . Проверено 3 ноября 2016 г.
  41. ^ Браун, Ральф Д. (16 июля 2000 г.). «B-1302: INT 13 — ДИСК — ЧИТАТЬ СЕКТОР(Ы) В ПАМЯТЬ». Список прерываний Ральфа Брауна (RBIL) (61-е изд.) . Проверено 3 ноября 2016 г.(Примечание. См. файл INTERRUP.B внутри архива «INTER61A.ZIP.)

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

Внешние ссылки