Назад | Перейти на главную страницу

Какой идентификатор раздела / тип файловой системы для UDF?

Вероятно, это тривиально проверить с помощью cfdisk на CD / DVD / Blu-Ray в формате UDF, но у меня нет ни одного из них под рукой.

Я создал раздел в формате UDF на жестком диске USB для обмена данными между компьютерами Linux и Windows (FAT не обрабатывает файлы размером 4 ГБ, поддержка прав доступа NTFS нестабильна в Linux). У меня сейчас только одна проблема - Windows отказывается монтировать раздел, так как идентификатор типа файловой системы установлен на «83» («Linux»). Я искал довольно подробно и не могу найти, какой номер мне поставить?

(следовать за: "С помощью какого инструмента я должен отформатировать жесткий диск как UDF?")

Ответ - тип раздела 06 (FAT16). Не спрашивайте меня, почему, спросите Microsoft.

Оказывается нет таблицы разделов для UDF и ему не назначен идентификатор раздела. Эта файловая система должна охватывать весь диск, чтобы Windows могла ее распознать. Форматирование жесткого диска как UDF не затрагивает существующую таблицу разделов (будьте осторожны - она ​​будет содержать устаревшую информацию, и если вы смонтируете свой диск, используя ее, вы уничтожите данные!).

Любопытно - UDF 2.5 и новее создает отдельные разделы (один или два на диск) для метаданных. Однако эти разделы также не видны в стандартной таблице разделов DOS.

Краткий ответ: я бы предложил использовать идентификатор MBR 0x07 для перегородок UDF.


Длинный ответ:

Linux не заботится об идентификаторах разделов MBR и игнорирует их (*).

Windows 2000 и новее может присвоить букву диска разделу с идентификатором. PartitionType если и только если IsRecognizedPartition (Тип раздела) правда. Более того, для разделов без FT должно выполняться IsFTPartition (Тип раздела) ложно (иначе этот раздел определяется как FT, а не как обычный FAT / NTFS / UDF / ...).

Состояние IsRecognizedPartition (Тип раздела) &&! IsFTPartition (Тип раздела) подать заявку на эти идентификаторы разделов MBR: 0x01, 0x04, 0x06, 0x07, 0x0B, 0x0C, 0x0E (**). Это означает, что Windows 2000 (и новые версии) может распознавать и использовать раздел UDF, если идентификатор раздела MBR является одним из них. Вероятно, нет других ограничений, и любая поддерживаемая файловая система принимает разделы с любым из этих идентификаторов MBR. Это означает, что эти идентификаторы MBR не используются для обнаружения файловой системы.

Но есть некоторые рекомендация Microsoft, когда PartitionType должен быть использован:

  • 0x01 - основной раздел FAT12 или логический диск (менее 32 680 секторов в томе)
  • 0x04 - раздел FAT16 или логический диск (32 680–65 535 секторов или 16–33 МБ)
  • 0x06 - раздел или логический диск BIGDOS FAT16 (33–4 ГБ)
  • 0x07 - Устанавливаемая файловая система (раздел NTFS или логический диск)
  • 0x0B - раздел FAT32 или логический диск
  • 0x0C - раздел FAT32 или логический диск с использованием расширений BIOS INT 13h (***)
  • 0x0E - раздел или логический диск BIGDOS FAT16 с использованием расширений BIOS INT 13h (***)

А также смысл от Microsoft:

  • 0x01 - указывает раздел с 12-битными записями FAT.
  • 0x04 - указывает раздел с 16-битными записями FAT.
  • 0x06 - указывает огромный раздел MS-DOS V4.
  • 0x07 - указывает раздел IFS.
  • 0x0B - указывает раздел FAT32.
  • 0x0C - Windows 95/98: указывает раздел, который использует расширенные службы INT 13.

В Википедии можно найти также несколько рекомендаций:

  • 0x01 - CHS / LBA - DOS 2.0+ - FAT12 в качестве основного раздела в первых физических 32 МБ диска ... (вместо этого используйте 0x06)
  • 0x04 - CHS / LBA - DOS 3.0+ - FAT16 с менее чем 65536 секторов (32 МБ) ... (вместо этого используйте 0x06)
  • 0x06 - CHS / LBA - DOS 3.31+ - FAT16B с 65536 или более секторами. Он должен находиться на первых 8 ГБ физического диска ... (вместо этого используйте 0x0E). Также используется для томов FAT12 и FAT16 в первичных разделах, если они не находятся на первых физических 32 МБ диска.
  • 0x07 - CHS / LBA - OS / 2 1.2+, Windows NT / CE - IFS / HPFS / NTFS / exFAT / QNX
  • 0x0B - CHS / LBA - DOS 7.1+ - FAT32 с адресацией CHS
  • 0x0C - LBA - DOS 7.1+ - FAT32 с LBA
  • 0x0E - LBA - DOS 7.0+ - FAT16B с LBA

Чтобы завершить список идентификаторов, вот некоторая информация о старых системах, которые не поддерживают разделы жесткого диска в формате UDF.

Windows NT 4.0 и старше могут назначать букву диска только разделам с идентификатором MBR: 0x01, 0x04, 0x06, 0x07.

Windows на базе DOS (95, 98 и ME) может назначать букву диска только разделам с идентификаторами MBR: 0x01, 0x04, 0x06, 0x0B, 0x0C, 0x0E. Сама MS-DOS может обращаться только к разделам с идентификаторами MBR: 0x01, 0x04, 0x06. Обратите внимание, что эти системы используют идентификатор раздела MBR для обнаружения файловой системы. Идентификатор раздела MBR должен совпадать с файловой системой раздела.

Вывод:

Посмотрите на размер раздела: 0x01 и 0x04 следует использовать только для разделов в первых 32 МБ диска. 0x06 только в первых 8 ГБ диска. 0x0B предназначен для адресации CHS, которая имеет ограничение для дисков 8 ГБ. Таким образом, без таких ограничений остаются только идентификаторы: 0x07, 0x0C и 0x0E. Поскольку 0x0C и 0x0E используются для разделов FAT, я бы предложил выбрать 0x07. Это означает для разделов IFS (устанавливаемая файловая система) и, согласно Википедии, Microsoft добавила поддержку UDF в Windows 2000 IFS API. Использование 0x0C или 0x0E приведет к тому, что системы на основе DOS будут отображать этот раздел как FAT, даже если он будет отформатирован как UDF. Разделы с идентификатором MBR 0x07 в этих системах скрыты. Они не поддерживают UDF, поэтому лучше выбрать 0x0C или 0x0E.

GPT:

О структуре разделов GPT не может быть и речи, но она имеет ту же проблему, что и MBR. Для UDF не назначен GUID раздела (эквивалент GPT для идентификатора MBR). Поскольку Windows XP x64 поддерживает UDF и может распознавать раздел данных GPT только с GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft Basic Data Partition), это единственно возможный выбор для GPT.

Источники:

(*) За одним исключением: идентификаторы MBR 0x05, 0x0F и 0x85 используются для обнаружения расширенных разделов MBR.
(**) Определения этих двух вызовов можно найти в файле WinIoCtl.h, поскольку они объявлены как макросы C.
(***) Расширение BIOS INT 13h означает использование LBA вместо CHS.

На компакт-дисках и DVD, с которыми я имею дело, нет таблицы разделов. На жестком диске USB вы записали на носитель таблицу разделов. Я подозреваю, что если вы отформатируете весь диск как UDF-диск без таблицы разделов, у Windows не возникнет проблем с его монтированием.

Вы не говорите, какой размер у вас USB-накопитель, и вы можете неохотно выделять весь диск как UDF, вы можете попробовать установить тип раздела с помощью fdisk как NTFS или один из других типов, поддерживаемых MS.

У меня такая же проблема. Мой жесткий диск USB составляет 320 ГБ. Таблица разделов выглядит так:

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x44fdfe06

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       27963   224612766    c  W95 FAT32 (LBA)
/dev/sda2           27964       38913    87955875    5  Extended
/dev/sda5           27964       33366    43399566    7  HPFS/NTFS
/dev/sda6           33367       38913    44556246   83  Linux

Раздел sda5 - это UDF rev. 1.5 и должны быть доступны для чтения в Windows XP и выше. Linux, конечно, правильно его читает. Однако Windows запуталась. Он распознает раздел как NTFS, а затем предполагает, что это необработанный раздел.

Мой эксперимент с UDF на флеш-накопителе показал мне, что системы часто принимают UDF за FAT. Они интерпретируют UDF как FAT. Должно быть довольно большое сходство, потому что я могу видеть структуру каталогов случайных символов. Linux говорит, что диск поврежден, но не отказывается его использовать.

Я думаю, что UDF (по крайней мере, версия 1.5) плохо поддерживается на USB-накопителях.