UDF 的分区 ID / 文件系统类型是什么?

UDF 的分区 ID / 文件系统类型是什么?

使用 UDF 格式的 CD/DVD/Blu-Ray 上的 cfdisk 检查这可能很简单,但我手头没有。

我在 USB 硬盘上创建了一个 UDF 格式的分区,用于在 Linux 和 Windows 计算机之间共享数据(FAT 无法处理 4GB 文件,NTFS 访问权限支持在 Linux 下不稳定)。我现在只有一个问题 - Windows 拒绝挂载该分区,因为文件系统类型 ID 设置为“83”(“Linux”)。我仔细查看了一番,还是找不到应该在那里放什么数字?

(跟进: ”我应该使用什么工具将硬盘格式化为 UDF?“)

答案1

答案是分区类型 06 (FAT16)。不要问我为什么,问微软吧。

答案2

事实证明没有分区表自定义函数并且没有为其分配分区 ID。此文件系统必须跨越整个磁盘才能被 Windows 识别。将硬盘格式化为 UDF 不会触及现有分区表(请小心 - 它将包含过时的信息,如果您使用它安装驱动器,您将破坏数据!)。

令人好奇的是,UDF 2.5 及更新版本为元数据创建了单独的分区(每个磁盘一个或两个)。但是,这些分区在标准 DOS 分区表中也是不可见的。

答案3

简短回答:我建议使用 MBR id0x07用于 UDF 分区。


长答案:

Linux 不关心 MBR 分区 ID 并将其忽略 (*)。

Windows 2000 及更新版本可以为具有 id 的某些分区分配驱动器号分区类型当且仅当IsRecognizedPartition(分区类型)是正确的。此外,对于非 FT 分区,必须满足IsFTPpartition(分区类型)为假(否则该分区被检测为 FT 而不是普通的 FAT/NTFS/UDF/...)。

健康)状况IsRecognizedPartition(分区类型)&& !IsFTPPartition(分区类型)申请这些 MBR 分区 ID:0x01、0x04、0x06、0x07、0x0B、0x0C、0x0E(**)。这意味着如果 MBR 分区 ID 是其中之一,Windows 2000(及更高版本)可以识别和使用 UDF 分区。可能没有其他限制,任何受支持的文件系统都接受具有任何这些 MBR ID 的分区。这意味着这些 MBR ID 不用于检测文件系统。

但有些推荐由 Microsoft 在特定情况下分区类型应使用:

  • 0x01 - FAT12 主分区或逻辑驱动器(卷中少于 32,680 个扇区)
  • 0x04 - FAT16 分区或逻辑驱动器(32,680–65,535 个扇区或 16 MB–33 MB)
  • 0x06 - BIGDOS FAT16 分区或逻辑驱动器 (33 MB–4 GB)
  • 0x07-可安装文件系统(NTFS 分区或逻辑驱动器)
  • 0x0B——FAT32 分区或逻辑驱动器
  • 0x0C——使用 BIOS INT 13h 扩展的 FAT32 分区或逻辑驱动器(***)
  • 0x0E-BIGDOS FAT16 分区或逻辑驱动器使用 BIOS INT 13h 扩展(***)

并且意义由微软提供:

  • 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 MB 中的主分区...(否则使用 0x06 代替)
  • 0x04 - CHS/LBA - DOS 3.0+ - FAT16 少于 65536 个扇区(32 MB)...(否则使用 0x06 代替)
  • 0x06 - CHS/LBA - DOS 3.31+ - 具有 65536 个或更多扇区的 FAT16B。它必须位于磁盘的第一个物理 8 GB 中...(否则改用 0x0E)。如果主分区中的 FAT12 和 FAT16 卷不在磁盘的第一个物理 32 MB 中,也可用于它们。
  • 0x07 - CHS/LBA - OS/2 1.2+,Windows NT/CE - IFS/HPFS/NTFS/exFAT/QNX
  • 0x0B - CHS/LBA - DOS 7.1+ - 带 CHS 寻址的 FAT32
  • 0x0C - LBA - DOS 7.1+ - 带 LBA 的 FAT32
  • 0x0E - LBA - DOS 7.0+ - 带 LBA 的 FAT16B

为了完成 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 识别 GPT 数据分区EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(Microsoft Basic Data Partition),它是GPT唯一可能的选择。

资料来源:

(*) 有一个例外:MBR Ids 0x05、0x0F 和 0x85 用于检测扩展 MBR 分区。
(**) 这两个调用的定义可以在 WinIoCtl.h 文件中找到,因为它们被声明为 C 宏。
(***) BIOS INT 13h 扩展意味着使用 LBA 而不是 CHS。

答案4

我也有同样的问题。我的 USB 硬盘是 320GB。分区表如下所示:

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 版本 1.5,Windows XP 及以上版本应该可以读取。Linux 当然可以正确读取它。但是 Windows 却搞不清楚。它将分区识别为 NTFS,然后假定它是原始分区。

我对 UDF 在 U 盘上的实验表明,系统往往会将 UDF 误认为 FAT。它们将 UDF 解释为 FAT。它们之间的相似性一定很大,因为我可以看到随机字符的目录结构。Linux 说磁盘已损坏,但它不会拒绝使用它。

我认为 UDF(至少 rev 1.5)在 USB 驱动器上得不到很好的支持。

相关内容