使用 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唯一可能的选择。
资料来源:
- https://technet.microsoft.com/en-us/library/cc976786.aspx
- https://technet.microsoft.com/en-us/library/cc768180.aspx
- https://technet.microsoft.com/en-us/sysinternals/ff563751
- https://technet.microsoft.com/en-us/sysinternals/aa363990
- https://www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/resguide/diskover.mspx
- https://en.wikipedia.org/wiki/Partition_type
- https://en.wikipedia.org/wiki/Installable_file_system
- 文件 Ntdddisk.h(WinDDK 的一部分)
- 文件 WinIoCtl.h(WinSDK 的一部分)
(*) 有一个例外: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 驱动器上得不到很好的支持。