在 UDF 格式的 CD/DVD/Blu-Ray 上使用 cfdisk 检查可能很简单,但我手头都没有。
我在 USB 硬盘驱动器上创建了一个 UDF 格式的分区,用于在 Linux 和 Windows 计算机之间共享数据(FAT 不处理 4GB 文件,NTFS 访问权限支持在 Linux 下不稳定)。我现在只有一个问题 - Windows 拒绝挂载分区,因为文件系统类型 ID 设置为“83”(“Linux”)。我已经看得很广泛,找不到应该放什么号码?
(后续:“我应该用什么工具将硬盘格式化为UDF? ”)
答案是分区类型 06 (FAT16)。不要问我为什么,问微软。
事实证明,没有UDF的分区表,也没有分配给它的分区 ID。该文件系统必须跨越整个磁盘才能被 Windows 识别。将硬盘格式化为 UDF 不会触及现有的分区表(请注意 - 它会包含陈旧的信息,如果您使用它安装驱动器,则会破坏数据!)。
出于好奇 - UDF 2.5 和更新版本为元数据创建单独的分区(每个磁盘一个或两个)。但是,这些分区在标准 DOS 分区表中也不可见。
简短回答:我建议将 MBR id 0x07用于 UDF 分区。
长答案:
Linux 不关心 MBR 分区 ID 并忽略它 (*)。
当且仅当IsRecognizedPartition(PartitionType)为真时,Windows 2000 和更新版本才能将驱动器号分配给 id PartitionType的某个分区。此外,对于非 FT 分区必须保持IsFTPartition(PartitionType)为假(否则该分区被检测为 FT 而不是普通的 FAT/NTFS/UDF/...)。
条件IsRecognizedPartition(PartitionType) && !IsFTPartition(PartitionType)适用于这些 MBR 分区 id:0x01、0x04、0x06、0x07、0x0B、0x0C、0x0E (**)。这意味着如果 MBR 分区 ID 是其中之一,Windows 2000(和新的)可以识别和使用 UDF 分区。可能没有其他限制,并且任何受支持的文件系统都接受具有任何这些 MBR id 的分区。这意味着这些 MBR id 不用于检测文件系统。
但是当使用特定的PartitionType时,Microsoft有一些建议:
还有微软的意思:
在维基百科上也可以找到一些建议:
要完成 id 列表,这里有一些关于不支持 UDF 格式硬盘分区的旧系统的信息。
Windows NT 4.0 和更早版本只能将驱动器号分配给具有 MBR id 的分区:0x01、0x04、0x06、0x07。
基于 DOS 的 Windows(95、98 和 ME)只能将驱动器号分配给具有 MBR id 的分区:0x01、0x04、0x06、0x0B、0x0C、0x0E。MS-DOS 本身只能访问具有 MBR id 的分区:0x01、0x04、0x06。请注意,这些系统使用 MBR 分区 ID 来检测文件系统。MBR 分区 id 必须与分区上的文件系统匹配。
结论:
查看分区大小:0x01 和 0x04 应仅用于磁盘前 32MB 的分区。0x06 仅在前 8GB 磁盘中。0x0B 用于 CHS 寻址,它对 8GB 磁盘有限制。所以没有这些限制的只有 id:0x07、0x0C 和 0x0E。由于 0x0C 和 0x0E 用于 FAT 分区,我建议选择0x07。这意味着 IFS(可安装文件系统)分区,根据 Wikipedia,Microsoft 在 Windows 2000 IFS API 中添加了对 UDF 的支持。使用 0x0C 或 0x0E 会导致基于 DOS 的系统将该分区显示为 FAT,即使它会被格式化为 UDF。MBR id 0x07 的分区在这些系统上是隐藏的。它们不支持 UDF,因此最好选择 0x0C 或 0x0E。
GPT:
GPT 分区布局不在这个问题范围内,但它与 MBR 有类似的问题。没有为 UDF 分配分区 GUID(MBR id 的 GPT 等效项)。由于 Windows XP x64 支持 UDF,并且只能通过 GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(Microsoft 基本数据分区)识别 GPT 数据分区,因此它是 GPT 唯一可能的选择。
资料来源:
(*) 有一个例外:MBR Ids 0x05、0x0F 和 0x85 用于检测扩展 MBR 分区。
(**) 这两个调用的定义可以在 WinIoCtl.h 文件中找到,因为它们被声明为 C 宏。
(***) BIOS INT 13h 扩展意味着使用 LBA 而不是 CHS。
在我处理的 CD 和 DVD 上,没有分区表。在您的 USB 硬盘驱动器上,您已将分区表写入媒体。我怀疑如果您将整个驱动器格式化为没有分区表的 UDF 磁盘,Windows 安装它不会有问题。
您没有说您的 USB 驱动器的大小,并且您可能不愿意将整个驱动器专用为 UDF,您可以尝试使用 fdisk 将分区类型设置为 NTFS 或其他 MS“支持”类型之一。
我有同样的问题。我的 USB 硬盘是 320GB。分区表如下所示:
分区 sda5 是 UDF 版本。1.5 并且应该可以被 Windows XP 及更高版本读取。Linux 当然可以正确读取它。然而,Windows 很困惑。它将分区识别为 NTFS,然后假定它是原始分区。
我在 pendrive 上使用 UDF 的实验表明,系统倾向于将 UDF 误认为是 FAT。他们将 UDF 解释为 FAT。它一定有很大的相似之处,因为我可以看到随机字符的目录结构。Linux 说磁盘已损坏,但它不会拒绝使用它。
我认为 UDF(至少 rev 1.5)在 USB 驱动器上没有得到很好的支持。