Таблица размещения файлов – abcdef.wiki

Таблица размещения файлов - abcdef.wiki Электронная цифровая подпись

Блок параметров bios

Общая структура первых 25 байтов блока параметров BIOS (BPB), используемых версиями FAT, начиная с DOS 2.0 (байты со смещением сектора от 0x00B до 0x017 сохраняются с DOS 2.

Смещение сектораСмещение BPBДлина (байты)СОДЕРЖАНИЕ
0x00B0x002Байт на логический сектор в степени двойки; наиболее распространенное значение – 512. Некоторые операционные системы не поддерживают секторы других размеров. Для простоты и максимальной производительности размер логического сектора часто идентичен размеру физического сектора диска, но в некоторых сценариях может быть больше или меньше.

Минимально допустимое значение для незагрузочных томов FAT12 / FAT16, содержащих до 65535 логических секторов, составляет 32 байта или 64 байта для более чем 65535 логических секторов. Минимальное практическое значение – 128. Некоторые OEM-версии DOS до DOS 3.31 использовали размер логических секторов до 8192 байтов для логических секторных файлов FAT . Atari ST GEMDOS поддерживает размеры логических секторов от 512 до 4096. DR-DOS поддерживает загрузку с томов FAT12 / FAT16 с размерами логических секторов до 32 КБ, а реализации INT 13h поддерживают физические сектора размером до 1024 байт / сектор. Минимальный размер логического сектора для стандартных томов FAT32 составляет 512 байт, который можно уменьшить до 128 байт без поддержки информационного сектора FS .

Дисководы и контроллеры используют физические сектора размером 128, 256, 512 и 1024 байта (например, PC / AX). Портфель Атари поддерживает размер сектора 512 томов размером более 64 Кбайт, 256 байт для томов больше 32 Кбайт и 128 байт для небольших объемов. Магнитооптические приводы использовали размеры секторов 512, 1024 и 2048 байтов. В 2005 году на некоторых пользовательских жестких дисках Seagate использовались сектора размером 1024 байта вместо 512 байтов по умолчанию. Жесткие диски расширенного формата используют 4096 байт на сектор ( 4Kn ) с 2021 года, но также смогут имитировать 512-байтовые сектора ( 512e ) в течение переходного периода.

Linux и, соответственно, Android, поддерживают размер логического сектора намного больше, официально задокументированный на странице Man для утилит файловой системы, как до 32 КБ.

0x00D0x021Логических секторов на кластер. Допустимые значения: 1, 2, 4, 8, 16, 32, 64 и 128. Некоторые версии MS-DOS 3.x поддерживали максимальный размер кластера только 4 КБ, тогда как современные MS-DOS / PC DOS и Windows 95 поддерживают максимальный размер кластера 32 КБ. Windows 98 / SE / ME также частично поддерживает кластер размером 64 КБ, но некоторые службы FCB недоступны на таких дисках, и различные приложения не работают. Семейство Windows NT и некоторые альтернативные версии DOS, такие как PTS-DOS, полностью поддерживают кластеры размером 64 КБ.

Для большинства операционных систем на основе DOS максимальный размер кластера остается равным 32 КБ (или 64 КБ) даже для секторов размером более 512 байт.

Для логических секторов размером 1 КБ, 2 КБ и 4 КБ Windows NT 4.0 поддерживает размер кластера 128 КБ, в то время как для секторов 2 КБ и 4 КБ размер кластера может достигать 256 КБ.

Некоторые версии DR-DOS обеспечивают ограниченную поддержку кластеров 128 КБ с 512 байтами / сектором с использованием значения секторов / кластера 0.

MS-DOS / PC DOS будет зависать при запуске, если это значение ошибочно указано как 0.

0x00E0x032Количество зарезервированных логических секторов . Количество логических секторов перед первой FAT в образе файловой системы. По крайней мере, 1 для этого сектора, обычно 32 для FAT32 (для хранения расширенного загрузочного сектора, информационного сектора FS и резервных загрузочных секторов).

Поскольку тома, отформатированные в DR-DOS 7.0x FAT32, используют односекторный загрузочный сектор, информационный сектор FS и резервный сектор, некоторые тома, отформатированные под DR-DOS, используют здесь значение 4.

0x0100x051Количество таблиц размещения файлов. Почти всегда 2; RAM-диски могут использовать 1. Большинство версий MS-DOS / PC DOS не поддерживают более двух файловых систем. Некоторые операционные системы DOS поддерживают только две FAT во встроенном драйвере диска, но поддерживают другие подсчеты FAT для драйверов блочных устройств, загружаемых позже.

Тома, объявляющие 2 FAT в этой записи, никогда не будут рассматриваться как тома TFAT . Если значение отличается от 2, некоторые операционные системы Microsoft могут попытаться смонтировать том как том TFAT и использовать второй кластер ( кластер 1 ) первой FAT для определения статуса TFAT.

0x0110x062Максимальное количество записей корневого каталога FAT12 или FAT16. 0 для FAT32, где корневой каталог хранится в обычных кластерах данных; см. смещение 0x02C в EBPB FAT32.

Значение 0 без FAT32 EBPB (без подписи 0x29 или 0x28 по смещению 0x042 ) также может указывать на корневой каталог переменного размера в некоторых нестандартных реализациях FAT12 и FAT16, которые хранят начальный кластер корневого каталога в записи кластера 1 в жир. Это расширение, однако, не поддерживается основными операционными системами, так как оно может конфликтовать с другими видами использования записи кластера 1 для флагов обслуживания, текущего маркера конца цепочки или расширений TFAT .

Это значение необходимо настроить так, чтобы записи каталога всегда занимали полные логические секторы, учитывая, что каждая запись каталога занимает 32 байта. MS-DOS / PC DOS требует, чтобы это значение было кратно 16. Максимальное значение, поддерживаемое на гибких дисках, – 240, максимальное значение, поддерживаемое MS-DOS / PC DOS на жестких дисках, – 512. DR-DOS поддерживает загрузку с FAT12. / FAT16, если загрузочный файл находится в первых 2048 записях корневого каталога.

0x0130x082Всего логических секторов. 0 для FAT32. (Если ноль, используйте 4-байтовое значение по смещению 0x020 )
0x0150x0A1Дескриптор мультимедиа (сравните: FAT ID ):
0xE5
  • 8-дюймовая (200 мм) односторонняя, 77 дорожек на сторону, 26 секторов на дорожку, 128 байтов на сектор (250,25 КБ) (только DR-DOS)
0xED
0xEE
0xEF
0xF0
  • 3,5-дюймовый (90 мм) двусторонний, 80 дорожек на сторону, 18 или 36 секторов на дорожку (1440 КБ, известное как «1,44 МБ»; или 2880 КБ, известное как «2,88 МБ»).
  • Предназначен для использования с настраиваемыми форматами гибких и супер-гибких дисков, геометрия которых определяется в BPB.
  • Также используется для других типов носителей, таких как ленты.
0xF4
0xF5
0xF8
0xF9
  • 3,5-дюймовый двусторонний, 80 дорожек на сторону, 9 секторов на дорожку (720 КБ) (начиная с DOS 3.2)
  • 3,5-дюймовый двусторонний, 80 дорожек на сторону, 18 секторов на дорожку (1440 КБ) (только DOS 3.2)
  • 5,25-дюймовый двусторонний, 80 дорожек на сторону, 15 секторов на дорожку (1200 КБ, известный как «1,2 МБ») (начиная с DOS 3.0)
  • Односторонняя (только Altos MS-DOS 2.11 )
0xFA
0xFB
  • 3,5-дюймовые и 5,25-дюймовые двусторонние, 80 дорожек на сторону, 8 секторов на дорожку (640 КБ)
0xFC
  • 5,25-дюймовая односторонняя, 40 дорожек на сторону, 9 секторов на дорожку (180 КБ) (начиная с DOS 2.0)
0xFD
  • 5,25-дюймовый двусторонний, 40 дорожек на сторону, 9 секторов на дорожку (360 КБ) (начиная с DOS 2.0)
  • 8-дюймовый двусторонний, 77 дорожек на сторону, 26 секторов на дорожку, 128 байт на сектор (500,5 КБ)
  • (8-дюймовая двусторонняя, (одинарная и) двойная плотность (DOS 1))
0xFE
  • 5,25-дюймовая односторонняя, 40 дорожек на сторону, 8 секторов на дорожку (160 КБ) (начиная с DOS 1.0)
  • 8-дюймовая односторонняя, 77 дорожек на сторону, 26 секторов на дорожку, 128 байт на сектор (250,25 КБ)
  • 8-дюймовый двусторонний, 77 дорожек на сторону, 8 секторов на дорожку, 1024 байта на сектор (1232 КБ)
  • (8-дюймовая односторонняя, (одинарная и) двойная плотность (DOS 1))
0xFF

Это значение должно отражать дескриптор носителя, хранящийся (в записи для кластера 0 ) в первом байте каждой копии FAT. Некоторые операционные системы до DOS 3.2 ( 86-DOS , MS-DOS / PC DOS 1.x и MSX-DOS версии 1.0) полностью игнорируют параметры загрузочного сектора и используют значение дескриптора носителя из первого байта FAT для внутреннего выбора. предварительно определенные шаблоны параметров. Должен быть больше или равен 0xF0, начиная с DOS 4.0.

На съемных дисках DR-DOS предполагает наличие BPB, если это значение больше или равно 0xF0 , тогда как для фиксированных дисков оно должно быть 0xF8, чтобы предполагать наличие BPB.

Первоначально эти значения предназначались для использования в качестве битовых флагов; для любых съемных носителей без распознанного формата BPB и дескриптора носителя от 0xF8 или от 0xFA до 0xFF MS-DOS / PC DOS обрабатывает бит 1 как флаг для выбора формата с 9 секторами на дорожку, а не с форматом с 8 секторами, и бит 0 как флаг для обозначения двустороннего носителя. Значения от 0x00 до 0xEF и от 0xF1 до 0xF7 зарезервированы и не должны использоваться.

0x0160x0B2Логические секторы в таблице размещения файлов для FAT12 / FAT16. FAT32 устанавливает это значение в 0 и вместо этого использует 32-битное значение со смещением 0x024 .

DOS 3.0 BPB:

Следующие расширения были задокументированы, начиная с DOS 3.0, однако они уже поддерживались некоторыми выпусками DOS 2.11. MS-DOS 3.10 по-прежнему поддерживает формат DOS 2.0, но может также использовать формат DOS 3.0.

Смещение сектораСмещение BPBДлина (байты)СОДЕРЖАНИЕ
0x00B0x0013DOS 2.0 BPB
0x0180x0D2Физических секторов на дорожку для дисков с геометрией INT 13h CHS, например, 15 для дискеты «1,20 МБ» (1200 КБ).

Нулевой элемент указывает, что этот элемент зарезервирован, но не используется.

0x01A0x0F2Количество головок для дисков с геометрией INT 13h CHS, например, 2 для двусторонней дискеты.

Ошибка во всех версиях MS-DOS / PC DOS до 7.10 приводит к сбою этих операционных систем для геометрии CHS с 256 головками, поэтому почти все BIOS выбирают максимум 255 головок.

Нулевой элемент указывает, что этот элемент зарезервирован, но не используется.

0x01C0x112Количество скрытых секторов, предшествующих разделу, содержащему этот том FAT. Это поле всегда должно быть нулевым на носителях, которые не разделены. Эта запись DOS 3.0 несовместима с аналогичной записью по смещению 0x01C в BPB, начиная с DOS 3.31.

Его нельзя использовать, если запись логических секторов по смещению 0x013 равна нулю.

DOS 3.2 BPB:

Официально MS-DOS 3.20 еще используется формат DOS 3.0, но SYSи FORMATбыли приспособлены для поддержки 6 байт длиннее формат уже (из которых были использованы не все записи).

DOS 3.31 BPB:

Официально представленные в DOS 3.31 и не используемые в DOS 3.2, некоторые утилиты DOS 3.2 были разработаны с учетом этого нового формата. Официальная документация рекомендует доверять этим значениям только в том случае, если запись логических секторов по смещению 0x013 равна нулю.

Смещение сектораСмещение BPBДлина (байты)СОДЕРЖАНИЕ
0x00B0x0013DOS 2.0 BPB
0x0180x0D2Физических секторов на дорожку для дисков с геометрией INT 13h CHS, например, 18 для дискеты «1,44 МБ» (1440 КБ). Не используется для дисков, которые больше не поддерживают доступ по протоколу CHS. Идентично записи, доступной с DOS 3.0 .

Нулевой элемент указывает, что этот элемент зарезервирован, но не используется. Значение 0 может указывать на доступ только LBA, но может вызвать исключение деления на ноль в некоторых загрузчиках, чего можно избежать, сохранив здесь нейтральное значение 1, если никакая геометрия CHS не может быть разумно эмулирована.

0x01A0x0F2Количество головок для дисков с геометрией INT 13h CHS, например, 2 для двусторонней дискеты. Не используется для дисков, которые больше не поддерживают доступ по протоколу CHS. Идентично записи, доступной с DOS 3.0 .

Ошибка во всех версиях MS-DOS / PC DOS до 7.10 приводит к сбою этих операционных систем для геометрии CHS с 256 головками, поэтому почти все BIOS выбирают максимум 255 головок.

Нулевой элемент указывает, что этот элемент зарезервирован, но не используется. Значение 0 может указывать на доступ только LBA, но может вызвать исключение деления на ноль в некоторых загрузчиках, чего можно избежать, сохранив здесь нейтральное значение 1, если никакая геометрия CHS не может быть разумно эмулирована.

0x01C0x114Количество скрытых секторов, предшествующих разделу, содержащему этот том FAT. Это поле всегда должно быть нулевым на носителях, которые не разделены на разделы. Эта запись DOS 3.31 несовместима с аналогичной записью по смещению 0x01C в BPB DOS 3.0-3.3. По крайней мере, ему можно доверять, если он содержит ноль или если запись логических секторов по смещению 0x013 равна нулю.

Если это относится к расширенному активному разделу (AAP), выбранному во время загрузки, запись BPB будет динамически обновляться расширенной MBR, чтобы отразить значение «относительных секторов» в таблице разделов, сохраненное по смещению 0x1B6 в AAP или NEWLDR MBR. , чтобы появилась возможность загружать операционную систему с EBR .

(Некоторые загрузчики GPT (например, BootDuet ) используют смещения загрузочного сектора 0x1FA0x1FD для хранения старших 4 байтов значения 64-битных скрытых секторов для томов, расположенных за пределами первых 2 32 -1 секторов.)

0x0200x154Всего логических секторов (если больше 65535; в противном случае см. Смещение 0x013 ). Эта запись DOS 3.31 несовместима с аналогичной записью по смещению 0x01E в DOS 3.2–3.3 BPB. Официально его следует использовать только в том случае, если запись логических секторов по смещению 0x013 равна нулю, но некоторые операционные системы (некоторые старые версии DR DOS) используют эту запись также для дисков меньшего размера.

Для многораздельных носителей, если это и запись в 0x013 оба равны 0 (как видно на некоторых томах DOS 3.x FAT16), многие операционные системы (включая MS-DOS / PC DOS) будут извлекать значение из записи соответствующего раздела (в смещение 0xC ) в MBR .

Если обе эти записи равны 0 на томах, использующих FAT32 EBPB с подписью 0x29 , значения, превышающие предел 4 294 967 295 (2 32 -1) (например, некоторые тома DR-DOS с 32-разрядными записями кластера) могут использовать 64-разрядную запись в смещение 0x052 вместо этого.

Простая формула переводит заданный номер кластера тома CNв логический номер сектора LSN:

  1. Определите (один раз) , где счетчик зарезервированных секторов хранится по смещению 0x00E , количество FAT по смещению 0x010 , секторов на FAT по смещению 0x016 (FAT12 / FAT16) или 0x024 (FAT32), записи корневого каталога по смещению 0x011 , размер сектора по смещению 0x00B и округляется до целого числа.SSA=RSC FN×SF ceil((32×RDE)/SS)RSCFNSFRDESSceil(x)
  2. Определите , где хранятся сектора в кластере по смещению 0x00D .LSN=SSA (CN−2)×SCSC

На неразмеченных СМИ номер тома скрытых секторов равно нуль , и , следовательно , LSNи LBAадреса становятся такими же , так долго , как размер логического сектора тома идентичен размером физического сектора подстилающего медиума. В этих условиях также легко переводить между CHSадресами, LSNsа также:

LSN=SPT×(HN (NOS×TN)) SN−1, где секторы на дорожку SPTхранятся со смещением 0x018 , а количество сторон – NOSсо смещением 0x01A .

Загрузочный сектор

На устройствах без разделов, таких как дискеты , загрузочный сектор ( VBR ) является первым сектором (логический сектор 0 с физическим адресом CHS 0/0/1 или адресом LBA 0). Для разделенных на разделы устройств, таких как жесткие диски, первый сектор является главной загрузочной записью, определяющей разделы, а первый сектор разделов, отформатированных с файловой системой FAT, снова является загрузочным сектором.

Общая структура первых 11 байтов, используемых большинством версий FAT для IBM-совместимых x86-машин, начиная с DOS 2.0:

Смещение байтаДлина (байты)СОДЕРЖАНИЕ
0x0003Инструкция по переходу. Если у загрузочного сектора есть действительная подпись, находящаяся в последних двух байтах загрузочного сектора (проверенная большинством загрузчиков, находящихся в системной BIOS или MBR), и этот том загружается с, предыдущий загрузчик передаст выполнение этой записи точки с определенными значениями регистров, и тогда инструкция перехода пропустит оставшуюся часть (неисполняемого) заголовка. См. Раздел Загрузочная запись тома .

Начиная с DOS 2.0, допустимые загрузочные диски x86 должны начинаться либо с короткого скачка, за которым следует NOP ( последовательность opstring 0xEB 0x ?? 0x90, как это видно с DOS 3.0 – и в DOS 1.1), либо с близкого скачка ( 0xE9 0x ?? 0x? ? как видно на большинстве ( Compaq , TeleVideo ) дисков, отформатированных под DOS 2.x, а также на некоторых ( Epson , Olivetti ) дисках с DOS 3.1). Для обратной совместимости MS-DOS, PC DOS и DR-DOS также принимают переход ( 0x69 0x ?? 0x ?? ) на съемных дисках. На жестких дисках DR DOS дополнительно принимает замененную последовательность JMPS, начиная с NOP ( 0x90 0xEB 0x ?? ), тогда как MS-DOS / PC DOS этого не делает. (См. Ниже совместимость с Atari ST.) Наличие одного из этих шаблонов opstring (в сочетании с тестом на действительное значение дескриптора носителя по смещению 0x015 ) служит индикатором для DOS 3.3 и выше, что присутствует какой-то BPB (хотя точный размер не должен определяться из цели перехода, поскольку некоторые загрузочные секторы содержат данные частного загрузчика после BPB), в то время как для томов DOS 1.x (и некоторых DOS 3.0) им придется вернуться к DOS 1. x для определения формата через байт мультимедиа в FAT (в логическом секторе 1 ).

0x0038OEM-имя (заполнено пробелами 0x20 ). Это значение определяет, в какой системе был отформатирован диск.

Хотя официально зарегистрировано как бесплатное использование OEM, MS-DOS / PC DOS (начиная с версии 3.1), Windows 95/98 / SE / ME и OS / 2 проверяют это поле, чтобы определить, на какие другие части загрузочной записи можно полагаться и как интерпретировать их. Следовательно, установка произвольных или фиктивных значений метки OEM может привести к тому, что MS-DOS, PC DOS и OS / 2 не смогут правильно распознать том и вызвать повреждение данных при записи. Типичные примеры: ” IBM␠␠3.3“, ” MSDOS5.0“, ” MSWIN4.1“, ” IBM␠␠7.1“, ” mkdosfs␠” и ” FreeDOS␠“.

Некоторые поставщики хранят лицензионную информацию или ключи доступа в этой записи.

Volume Tracker в Windows 95/98 / SE / ME перезапишет метку OEM ?????IHCподписями « » (оставшиеся от « ␠OGACIHC» для « Чикаго ») даже при доступе к диску, который кажется доступным только для чтения (например, a DIR A:), если носитель не защищен от записи. Учитывая зависимость от определенных значений, описанную выше, это может, в зависимости от фактического формата и содержимого BPB, привести к тому, что MS-DOS / PC DOS и OS / 2 больше не будут распознавать носитель и выдавать сообщения об ошибках, несмотря на то, что носитель не является неисправен и может быть без проблем прочитан в других операционных системах. Windows 9x без проблем считывает эти самопомеченные диски, но дает некоторые странные значения для не имеющих смысла параметров, которые не существуют или не используются, когда диск был отформатирован с использованием более старой спецификации BPB, например, серийный номер диска (который существует только для дисков, отформатированных на DOS 5.0 или более поздней версии , а в Windows 9x после перезаписи OEM-метки с помощью ?????IHCбудет отображаться как 0000-0000или любое другое значение, сохраненное в поле серийного номера диска при использовании диска, отформатированного в другой системе). Это относится только к съемным дискам.

Некоторые загрузчики вносят изменения или отказываются передавать управление загрузочному сектору в зависимости от определенных здесь значений (например, смещения NEWLDR 0x018 ).

Загрузочное ПЗУ профессионального компьютера Wang будет рассматривать диск как загрузочный только в том случае, если первые четыре символа метки OEM – « Wang». Точно так же ROM BIOS Philips: YES будет загружаться с диска только в том случае, если первые четыре символа метки OEM – « :YES».

Если в FAT32 EBPB подпись со смещением сектора 0x042 равна 0x29 и обе записи общего сектора равны 0, запись файловой системы может служить в качестве записи общего 64-битного счетчика секторов, а запись метки OEM может использоваться как альтернативная файловая система. введите вместо обычной записи по смещению 0x052 .

Аналогичным образом, если для этой записи установлено значение « EXFAT␠␠␠», это указывает на использование BPB exFAT, расположенного со смещением сектора от 0x040 до 0x077 , тогда как тома NTFS используют « NTFS␠␠␠␠» для обозначения BPB NTFS .

0x00BварьируетсяБлок параметров BIOS ( 13 , 19 , 21 или 25 байтов), расширенный блок параметров BIOS (32 или 51 байт) или расширенный блок параметров BIOS FAT32 (60 или 79 байтов); размер и содержимое различаются в зависимости от операционной системы и версии, см. ниже
варьируетсяварьируетсяЗагрузочный код, специфичный для файловой системы и операционной системы; часто начинается сразу после [E] BPB, но иногда между концом [E] BPB и началом загрузочного кода сохраняются дополнительные «частные» данные загрузчика; поэтому переход со смещением 0x001 не может использоваться для надежного получения точного формата [E] BPB.

(В сочетании как минимум с DOS 3.31 BPB некоторые загрузчики GPT (например, BootDuet ) используют 0x1FA0x1FD для хранения старших 4 байтов скрытых секторов для томов, расположенных за пределами первых 2 32 -1 секторов. Поскольку это место может содержать код или другие данные в других загрузочных секторах, они не могут быть записаны, если 0x1F90x1FD не все содержат ноль.)

0x1FD1Номер физического диска (только в загрузочных секторах DOS от 3.2 до 3.31). В OS / 2 1.0 и DOS 4.0 эта запись перемещена на смещение сектора 0x024 (со смещением 0x19 в EBPB ). Большинство загрузочных секторов Microsoft и IBM с тех пор поддерживают значения 0x00 по смещению 0x1FC и 0x1FD , хотя они не являются частью подписи по адресу 0x1FE .

Если он принадлежит загрузочному тому, расширенную MBR DR-DOS 7.07 можно настроить (см. Смещение NEWLDR 0x014 ) для динамического обновления этой записи до значения DL, предоставленного во время загрузки, или значения, хранящегося в таблице разделов. Это позволяет загружать альтернативные диски, даже если код VBR игнорирует значение DL.

0x1FE2Подпись загрузочного сектора ( 0x55 0xAA ). Эта подпись указывает на загрузочный код, совместимый с IBM PC, и проверяется большинством загрузчиков, находящихся в системном BIOS или MBR, перед передачей выполнения в загрузочный код загрузочного сектора (но, например, не в исходной ROM-BIOS IBM PC). Эта подпись не указывает на конкретную файловую систему или операционную систему. Поскольку эта подпись присутствует не на всех дисках в формате FAT (например, не на DOS 1.x или томах FAT, не предназначенных для загрузки x86), операционные системы не должны полагаться на наличие этой подписи при входе в тома (старые проблемы MS-DOS / PC DOS до 3.3 проверяли эту подпись, но более новые выпуски, а также DR-DOS этого не делают). Инструменты форматирования не должны записывать эту подпись, если записанный загрузочный сектор не содержит хотя бы x86-совместимой фиктивной заглушки загрузчика; как минимум, он должен останавливать ЦП в бесконечном цикле ( 0xF4 0xEB 0xFD ) или выдавать INT 19h и RETF ( 0xCD 0x19 0xCB ). Однако эти opstrings не должны использоваться при смещении сектора 0x000 , потому что DOS проверяет другие коды операций как сигнатуры. Многие дискеты MSX-DOS 2 используют 0xEB 0xFE 0x90 со смещением сектора 0x000, чтобы поймать ЦП в замкнутом цикле, сохраняя при этом шаблон кода операции, распознаваемый MS-DOS / PC DOS.

Эта подпись должна быть расположена по фиксированному смещению сектора 0x1FE для секторов размером 512 или выше. Если размер физического сектора больше, он может повторяться в конце физического сектора.

ST Atari будет считать, что диск является загрузочным для Atari 68000, если контрольная сумма по 256 словам с прямым порядком байтов загрузочного сектора равна 0x1234 . Если код загрузчика совместим с IBM, важно убедиться, что контрольная сумма в загрузочном секторе не совпадает с этой контрольной суммой случайно. Если это произойдет, можно использовать изменение неиспользуемого бита (например, до или после области загрузочного кода), чтобы гарантировать, что это условие не выполняется.

В редких случаях на образах дисков наблюдалась обратная подпись 0xAA 0x55 . Это может быть результатом неправильной реализации в инструменте форматирования на основе ошибочной документации, но также может указывать на поменяемый порядок байтов образа диска, который мог иметь место при передаче между платформами с использованием другого порядка байтов . Значения BPB и файловые системы FAT12, FAT16 и FAT32 предназначены для использования только прямого порядка байтов, и нет известных реализаций вариантов, использующих вместо этого значения с прямым порядком байтов .

Дискеты Atari ST в формате FAT имеют очень похожую структуру загрузочного сектора:

Смещение байтаДлина (байты)СОДЕРЖАНИЕ
0x0002Инструкция по переходу. Исходные загрузочные секторы Atari ST начинаются с инструкции 68000 BRA.S ( 0x60 0x ?? ). Для совместимости с операционными системами ПК диски, отформатированные в Atari ST, начиная с TOS 1.4, начинаются с 0xE9 0x ?? вместо.
0x0026OEM-имя (заполненное пробелами 0x20 ), например ” Loader” ( 0x4C 0x6F 0x61 0x64 0x65 0x72 ) на томах, содержащих загрузчик Atari ST. См. Меры предосторожности при использовании имен OEM для дисков, отформатированных на ПК выше. Смещение и длина этой записи отличаются от записи на дисках, отформатированных на ПК.
0x0083Серийный номер диска (по умолчанию: 0x00 0x00 0x00 ), используемый Atari ST для обнаружения смены диска. (Windows 9x Volume Tracker всегда будет хранить ” IHC” здесь на незащищенных от записи гибких дисках; см. Выше.) Это значение необходимо изменить, если содержимое диска было изменено извне, в противном случае ST Atari могут не распознать изменение при повторной вставке. Эта запись перекрывает поле OEM Name на дисках, отформатированных на ПК. Для максимальной совместимости здесь может потребоваться сопоставление определенных шаблонов; см. выше.
0x00B19Блок параметров BIOS DOS 3.0 (формат с прямым порядком байтов )
0x01EварьируетсяДанные частного загрузочного сектора (смешанный формат с прямым порядком байтов и прямым порядком байтов )
варьируетсяварьируетсяЗагрузочный код Atari ST, специфичный для файловой и операционной системы. Не следует делать никаких предположений относительно позиции загрузки кода, которая должна быть перемещаемой. При загрузке операционной системы (TOS.IMG) неуспешно, то код может вернуться к Atari ST BIOS с 68000 РТС ( опкод 0x4E75 с большим обратным порядком байтов последовательности байт 0x4e 0x75 ) инструкции и все регистры неизмененными.
0x1FE2Контрольная сумма. 16-битная контрольная сумма за 256 тупоконечника слов 512 байт загрузочного сектора , включая это слово должно соответствовать значение магического 0x1234 для того , чтобы указать код сектора 68000 исполняемый загрузочный Atari ST. Эта запись контрольной суммы может использоваться для соответствующего выравнивания контрольной суммы.

Если размер логического сектора превышает 512 байт, остаток не включается в контрольную сумму и обычно заполняется нулями. Поскольку некоторые операционные системы ПК ошибочно не принимают дискеты в формате FAT, если здесь нет подписи 0x55 0xAA , рекомендуется поместить 0x55 0xAA в это место (и добавить IBM-совместимый загрузчик или заглушку) и использовать неиспользуемое слово в личные данные, или область загрузочного кода, или серийный номер, чтобы гарантировать, что контрольная сумма 0x1234 не совпадает (если только общий оверлей жирного кода не будет одновременно исполняться как IBM PC, так и Atari ST).

Тома MSX-DOS в формате FAT12 имеют очень похожую структуру загрузочного сектора:

Смещение байтаДлина (байты)СОДЕРЖАНИЕ
0x0003Фиктивная инструкция перехода (например, 0xEB 0xFE 0x90 ).
0x0038OEM-имя (заполнено пробелами 0x20 ).
0x00B19DOS 3.0 BPB
0x01Eварьируется (2)Точка входа кода MSX-DOS 1 для процессоров Z80 в загрузочный код MSX. Это то место, куда машины MSX-DOS 1 переходят при передаче управления загрузочному сектору. Это расположение перекрывается с форматами BPB, начиная с DOS 3.2, или с кодом загрузочного сектора, совместимым с x86, для загрузочных секторов, совместимых с IBM PC, и приведет к сбою на компьютере MSX, если не будут приняты особые меры предосторожности, такие как застревание ЦП здесь (opstring 0x18 0xFE для JR 0x01E ).
0x0206Подпись тома MSX-DOS 2 ” VOL_ID“.
0x0261Флаг восстановления MSX-DOS 2 (по умолчанию: 0x00 . Если VOL_IDподпись ” ” присутствует со смещением сектора 0x020 , этот флаг указывает, содержит ли том удаленные файлы, которые можно восстановить (см. Смещение 0x0C в записях каталога).
0x0274Серийный номер диска MSX-DOS 2 (по умолчанию: 0x00000000 ). Если VOL_IDподпись присутствует при смещении сектора 0x020 , MSX-DOS 2 сохраняет здесь серийный номер тома для обнаружения смены носителя.
0x02B5зарезервированный
0x030варьируется (2)Точка входа кода MSX-DOS 2 для процессоров Z80 в загрузочный код MSX. Это то место, куда машины MSX-DOS 2 переходят при передаче управления загрузочному сектору. Это расположение перекрывается с форматами EBPB, начиная с DOS 4.0 / OS / 2 1.2, или с кодом загрузочного сектора, совместимым с x86, для загрузочных секторов, совместимых с IBM PC, и приведет к сбою на компьютере MSX, если не будут приняты особые меры предосторожности, такие как застревание процессора в здесь жесткий цикл (opstring 0x18 0xFE для JR 0x030 ).
0x1FE2Подпись

Исключения

Версии DOS до 3.2 полностью или частично полагались на байт дескриптора носителя в BPB или байт идентификатора FAT в кластере 0 первой FAT для определения форматов дискет FAT12, даже если присутствует BPB. В зависимости от найденного FAT ID и обнаруженного типа диска они по умолчанию используют один из следующих прототипов BPB вместо значений, фактически хранящихся в BPB.

Первоначально FAT ID должен был быть битовым флагом со всеми установленными битами, за исключением бита 2, очищенного для указания формата 80 дорожек (против 40 дорожек), бит 1 очищен, чтобы указать формат 9 секторов (против 8 секторов), и бит 0 очищен, чтобы указать односторонний формат (по сравнению с двусторонним), но эта схема не соблюдалась всеми OEM-производителями и устарела с появлением жестких дисков и форматов высокой плотности. Кроме того, различные 8-дюймовые форматы, поддерживаемые 86-DOS и MS-DOS, не подходят для этой схемы.

FAT ID (сравните с идентификатором носителя при смещении BPB 0x0A )0xFF0xFE0xFD0xFC0xFB0xFA0xF90xF80xF00xED0xE5
Размер8 “5,25 “8 “8 “5,25 “8 “8 “5,25 “5,25 “5,25 дюйма / 3,5 дюйма5,25 дюйма / 3,5 дюйма5,25 “3,5 дюйма3,5 дюйма5,25 “5,25 дюйма / 3,5 дюйма3,5 дюйма3,5 дюйма3,5 дюйма5,25 “8 ”
Плотность?DD 48tpiSDDDDD 48tpiSDSDDD 48tpiDD 48tpi??HD 96 точек на дюймDD 135tpiHD 135 точек на дюймQD 96tpi?DDHD 135 точек на дюймEDQD 96tpiSD
Модуляция?MFMFMMFMMFMFMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMFM
Форматированная емкость (КБ)?320250 («старый»)1200160250 («новый»)5003601806403201200720144072036036014402880720243/250
Цилиндры (CHS)774077774077774040808080808080808080808077
Физические секторы / дорожка
(смещение BPB 0x0D )
?8268826269988159189 (8)9918369 (8)26
Количество головок
(смещение BPB 0x0F )
?212 (1)11221212222112221
Байт полезной нагрузки / физический сектор?5121281024512128128512512512512512512512512512512512512512128
Байт / логический сектор
(смещение BPB 0x00 )
?5121281024512128128512512512512512512512512512512512512512128
Логические секторы / кластер
(смещение BPB 0x02 )
?2411442121 (2?)121?2?12?4
Зарезервированные логические секторы
(смещение BPB 0x03 )
?111144111111 (2)111111?1
Количество файлов FAT
(смещение BPB 0x05 )
?22222222222222222222
Записи корневого каталога
(смещение BPB 0x06 )
?112 (7 секторов)68 (17 секторов)192 (6 секторов)64 (4 сектора)68 (17 секторов)68 (17 секторов)112 (7 секторов)64 (4 сектора)112 (7 секторов)112 (7 секторов)224 (14 секторов)112 (7 секторов)224 (14 секторов)?112 (7 секторов)?224 (14 секторов)240 (15 секторов)?64 (16 секторов)
Всего логических секторов
(смещение BPB 0x08 )
?6402002 г.1232 (616)3202002 г.40047203601280640240014402880?720?28805760?2002 г.
Логические секторы / FAT
(смещение BPB 0x0B )
?162166?2222 (1?)739 (7)?2?99?1
Скрытые секторы
(смещение BPB 0x11 )
?03 (0)0000000000000000?0
Общее количество кластеров?3154971227313?997?354351??23717132847????28472863??
Логический порядок секторов?????????????????????
Отображение секторов?

сектор голова дорожка

сектор голова дорожка

сектор голова дорожка

сектор голова дорожка

сектор дорожка

сектор голова дорожка

сектор голова дорожка

сектор голова дорожка

сектор голова дорожка

сектор дорожка

сектор голова дорожка

сектор голова дорожка

сектор голова дорожка

?

сектор дорожка

сектор дорожка

сектор голова дорожка

сектор голова дорожка

?

сектор дорожка

Первый физический сектор (CHS)?11111111??111?1?11?1
DRIVER.SYS /F:n?0340?300??127???79?3
Наличие BPB???????????дадада???дада??
Служба поддержки?

DOS 1.1

DOS 1.0

DOS 2.0

DOS 1.0

?

DOS 2.0

DOS 2.0

DOS 2.0

??

DOS 3.0

DOS 3.2

Только DOS 3.2;
(DR-DOS)


Только Sanyo 55x DS-DOS 2.11

MS-DOS 3.1

MSX-DOS

DOS 3.3

DOS 5.0

Только Tandy 2000

Только DR-DOS

Microsoft рекомендует различать два 8-дюймовых формата для FAT ID 0xFE , пытаясь прочитать адресную метку с одинарной плотностью. Если это приводит к ошибке, среда должна быть двойной плотности.

В таблице не указан ряд несовместимых форматов 8-дюймовых и 5,25-дюймовых гибких дисков FAT12, поддерживаемых 86-DOS , которые различаются либо размером записей каталога (16 байтов против 32 байтов), либо размером зарезервированного область секторов (несколько целых дорожек против только одного логического сектора).

Реализация одностороннего формата FAT12 размером 315 КБ, используемого в MS-DOS для ПК Apricot и F1e, имела разную компоновку загрузочного сектора для соответствия BIOS этого компьютера, не совместимого с IBM. Команда перехода и имя OEM были опущены, а параметры MS-DOS BPB (смещения 0x00B – 0x017 в стандартном загрузочном секторе) были расположены по смещению 0x050 .

Портативное , F1 , дуэт ПК и Си FD поддерживают нестандартный двухсторонние 720 КБ формата FAT12 вместо этого. Различия в макете загрузочного сектора и идентификаторах носителей сделали эти форматы несовместимыми со многими другими операционными системами. Параметры геометрии для этих форматов:

  • 315 КБ: байт на логический сектор: 512 байт, логических секторов на кластер: 1, зарезервированных логических секторов: 1, количество файлов FAT: 2, записей корневого каталога: 128, всего логических секторов: 630, идентификатор FAT: 0xFC , логических секторов на FAT: 2, физических секторов на дорожку: 9, количество головок: 1.
  • 720 КБ: байтов на логический сектор: 512 байтов, логических секторов на кластер: 2, зарезервированных логических секторов: 1, количество файлов FAT: 2, записей корневого каталога: 176, всего логических секторов: 1440, FAT ID: 0xFE , логических секторов на FAT: 3, физических секторов на дорожку: 9, количество головок: 2.

В более поздних версиях Apricot MS-DOS появилась возможность читать и записывать диски со стандартным загрузочным сектором в дополнение к дискам с Apricot. Эти форматы также поддерживались DOS Plus 2.1e / g для серии Apricot ACT.

Адаптация DOS Plus для BBC Master 512 поддерживала два формата FAT12 на 80-дорожечных двусторонних 5,25-дюймовых накопителях с двойной плотностью, которые вообще не использовали обычные загрузочные секторы. одна копия FAT. Первый байт перемещенной FAT в логическом секторе 0 использовался для определения емкости диска.

640 КБ загрузочные диски начинались с миниатюрной файловой системы ADFS, содержащей загрузчик, за которой следовала одна FAT. формат 640 КБ отличался использованием физических номеров секторов CHS, начинающихся с 0 (а не 1, как обычно), и увеличения секторов в порядке сектор-заголовок (а не сектор-заголовок-дорожка, как обычно).

  • 800 КБ: байт на логический сектор: 1024 байта, логических секторов на кластер: 1, зарезервированных логических секторов: 0, количество FAT: 1, записей корневого каталога: 192, всего логических секторов: 800, FAT ID: 0xFD , логических секторов на FAT: 2, физических секторов на дорожку: 5, количество головок: 2.
  • 640 КБ: байтов на логический сектор: 256 байтов, логических секторов на кластер: 8, зарезервированных логических секторов: 16, количество файлов FAT: 1, записей корневого каталога: 112, всего логических секторов: 2560, FAT ID: 0xFF , логических секторов на FAT: 2, физических секторов на дорожку: 16, количество головок: 2.

DOS Plus для Master 512 может также получить доступ к стандартным дискам ПК, отформатированным до 180 или 360 КБ , используя первый байт FAT в логическом секторе 1 для определения емкости.

DEC Rainbow 100 (все варианты) поддерживал один формат FAT12 на 80-дорожечных односторонних 5,25-дюймовых накопителях с четырехканальной плотностью. Первые две дорожки были зарезервированы для загрузчика, но не содержали MBR или BPB ( MS-DOS вместо этого использовала статический BPB в памяти).

Загрузочный сектор (дорожка 0, сторона 0, сектор 1) представлял собой код Z80, начинающийся с DI 0xF3 . Загрузочная программа 8088 была загружена Z80. Дорожка 1, сторона 0, сектор 2 начинается с байта 0xFA идентификатора Media / FAT ID.

На неформатированных дисках вместо него используется 0xE5 . Файловая система начинается с дорожки 2, сторона 0, сектор 1. В корневом каталоге есть 2 копии FAT и 96 записей. представляет собой сопоставление физических и логических дорожек для осуществления чередования секторов 2: 1.

Примечания

  1. ^ a b Это причина, по которой 0xE5 имел особое значение в записях каталога.
  2. ^ a b c Одной из утилит, предоставляющих возможность указать желаемое значение заполнения формата для жестких дисков, является FDISK R2.31 DR-DOS с дополнительным параметром очистки /W:246. В отличие от других утилит FDISK , DR-DOS FDISK является не только инструментом для создания разделов, но также может форматировать только что созданные разделы как FAT12 , FAT16 или FAT32 . Это снижает риск случайного форматирования неправильных томов.
  3. ^ a b c Для максимальной совместимости с MS-DOS / PC DOS и DR-DOS операционные системы, пытающиеся определить формат гибкого диска, должны тестировать все упомянутые последовательности опкодов со смещением сектора 0x000 в дополнение к поиску действительного байта дескриптора носителя в смещение сектора 0x015 до предположения о наличии BPB . Хотя гибкие диски PC DOS 1.0 не содержат BPB, они также начинаются с 0xEB , но не показывают 0x90 по смещению 0x002 . Дискеты PC DOS 1.10 даже начинаются с 0xEB 0x ?? 0x90 , хотя они по-прежнему не поддерживают BPB. В обоих случаях проверка действительного дескриптора носителя по смещению 0x015 завершится неудачно (значение 0x00 вместо действительных дескрипторов носителя 0xF0 и выше). Если эти тесты терпят неудачу, DOS проверяет наличие байта дескриптора носителя в первом байте первой FAT в секторе, следующем за загрузочным сектором (логический сектор 1 на дискетах FAT12 / FAT16).
  4. ^ a b c d e Подпись по смещению 0x1FE в загрузочных секторах – 0x55 0xAA , то есть 0x55 по смещению 0x1FE и 0xAA по смещению 0x1FF . Поскольку прямой порядок байтов представление должно быть принято в контексте IBM PC совместимых машин, это можно записать в виде 16-битного слова 0xAA55 в программах для x86 процессоров (обратите внимание на выгружена порядок), в то время как она должна была бы быть написана как 0x55AA в программах для других архитектур ЦП, использующих представление с прямым порядком байтов . Поскольку это много раз было перепутано в книгах и даже в исходных справочных документах Microsoft, в этой статье используется побайтовое представление на диске на основе смещения, чтобы избежать любого возможного неправильного толкования.
  5. ^ a b c Запись контрольной суммы в загрузочных секторах Atari содержит значение выравнивания, а не само магическое значение . Магическое значение 0x1234 нигде на диске не хранится. В отличие от процессоров Intel x86, процессоры Motorola 680×0 , используемые в машинах Atari, используют представление памяти с прямым порядком байтов, и поэтому при вычислении контрольной суммы необходимо использовать представление с прямым порядком байтов. Как следствие этого, для кода проверки контрольной суммы, запущенного на машинах x86, пары байтов должны быть заменены местами перед 16-битным сложением.
  6. ^ DR-DOS может загружаться с логических секторных носителей FAT12 / FAT16 с размером логических секторов до 1024 байтов.
  7. ^ a b Следующие функции DOS возвращают эти значения регистров: INT 21h / AH = 2Ah Возвращаемые значения «Получить системную дату»: CX = год ( 1980 .. 2099 ), DH = месяц (1..12), DL = день ( 1..31). INT 21h / AH = 2Ch Возвращаемые значения «Получить системное время»: CH = час (0..23), CL = минута (0..59), DH = секунда (0..59), DL = 1/100 секунды. (0..99).
  8. ^ Было замечено, что Windows XP создает такие гибридные диски при переформатировании дисков ZIP-100, отформатированных с FAT16B, в формат FAT32. Полученные тома были FAT32 по формату, но по-прежнему использовали FAT16B EBPB. (Непонятно, как Windows определяет расположение корневого каталога на томах FAT32, если использовалась только FAT16 EBPB.)
  9. ^ Для поддержки сосуществования DR-DOS с PC DOS и нескольких параллельных установок DR-DOS, расширение имениIBMBIO␠␠COMзагрузочного файлапо умолчанию “” может быть изменено с помощьюSYS /DR:extпараметра, где ext представляет новое расширение. Другие потенциальные имена файлов загрузки DR-DOS, которые можно ожидать в особых сценариях, – это “DRBIOS␠␠SYS“, “DRDOS␠␠␠SYS“, “IO␠␠␠␠␠␠SYS“, “JO␠␠␠␠␠␠SYS“.
  10. ^ Если флаг грязного завершения работы тома все еще сброшен при запуске, том не был правильно размонтирован. Это, например, заставит Windows 98 WIN.COM запустить SCANDISK для проверки и исправления потенциальных логических ошибок файловой системы. Если флаг сбойного сектора снят, то также будет выполнено сканирование поверхности. Это можно отключить, установив AUTOSCAN = 0 в разделе [OPTIONS]файла MSDOS.SYS .
  11. ^ a b c d См. другие ссылки для ознакомления с особыми мерами предосторожности в отношении появления значения кластера 0xFF0 на томах FAT12 под MS-DOS / PC DOS 3.3 и выше.
  12. ^ a b Некоторые версии FORMAT, начиная с MS-DOS 1.25 и PC DOS 2.0, поддерживали опцию /O(для старых ) для заполнения первого байта всех записей каталога с помощью 0xE5 вместо использования маркера конца 0x00 . Тем самым. объем оставался доступным под PC DOS 1.01.1 , в то время как форматирование взяло несколько длиннее и более новые версии DOS не может воспользоваться значительным Ускорить вызванное использование конечных маркеров 0x00 .
  13. ^ a b Чтобы избежать потенциальной неправильной интерпретации меток томов каталогов с записями VFAT LFN операционными системами, не поддерживающими VFAT, известно, что инструменты FDISK и FORMAT DR-DOS 7.07 явно записывают фиктивные ” NO␠NAME␠␠␠␠” метки томов каталогов, если пользователь пропускает ввод тома. метка. Операционная система по умолчанию будет возвращать ту же строку, если метка тома каталога не может быть найдена в корне тома, но без реальной метки тома, сохраненной в качестве первой записи (после записей каталога), более старые операционные системы могут ошибочно выбрать вместо этого используйте записи VFAT LFN.
  14. ^ Это IBM 4680 OS и 4690 OS распределения типа атрибут должен иметь значение бита на диске 0качестве файлов попадают обратно к этому типукогда атрибуты теряются случайно.
Читайте также:  Crypto Pro Sam Bankman-Fried Warns Against Traditional Portfolio Hedges During Inflation
Оцените статью
ЭЦП Эксперт
Добавить комментарий