在UDF格式的CD / DVD / Blu-Ray上使用cfdisk进行检查可能很简单,但是我手边都没有。
我已经在USB硬盘驱动器上创建了UDF格式的分区,以便在Linux和Windows计算机之间共享数据(FAT无法处理4GB文件,NTFS访问权限支持在Linux下不稳定)。我现在只有一个问题-Windows将文件系统类型ID设置为“ 83”(“ Linux”)时拒绝挂载该分区。我已经看了很多遍,找不到应该放在那里的数字?
(后续:“ 我应使用哪种工具将硬盘驱动器格式化为UDF? ”)
在UDF格式的CD / DVD / Blu-Ray上使用cfdisk进行检查可能很简单,但是我手边都没有。
我已经在USB硬盘驱动器上创建了UDF格式的分区,以便在Linux和Windows计算机之间共享数据(FAT无法处理4GB文件,NTFS访问权限支持在Linux下不稳定)。我现在只有一个问题-Windows将文件系统类型ID设置为“ 83”(“ Linux”)时拒绝挂载该分区。我已经看了很多遍,找不到应该放在那里的数字?
(后续:“ 我应使用哪种工具将硬盘驱动器格式化为UDF? ”)
Answers:
答案是分区类型06(FAT16)。不要问我为什么,请问Microsoft。
事实证明,没有用于UDF的分区表,也没有分配分区ID。该文件系统必须跨整个磁盘才能被Windows识别。将硬盘驱动器格式化为UDF不会触及现有的分区表(请注意-它将包含过时的信息,并且如果使用它来安装驱动器,则会破坏数据!)。
出于好奇,UDF 2.5和更高版本为元数据创建了单独的分区(每个磁盘一个或两个)。但是,这些分区在标准DOS分区表中也不可见。
简短答案:我建议使用MBR ID 对UDF分区 0x07。
长答案:
Linux并不关心MBR分区ID,而忽略它(*)。
当且仅当IsRecognizedPartition(PartitionType)为true时,Windows 2000及更高版本才能将驱动器号分配给ID为PartitionType的某个分区。此外,对于非FT分区,必须保留IsFTPartition(PartitionType)为false(否则分区检测为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 有一些建议:
而且还意味着微软:
在Wikipedia上也可以找到一些建议:
要完成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磁盘中的分区。仅在前8GB磁盘中为0x06。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 ID 0x05、0x0F和0x85用于检测扩展的MBR分区。
(**)这两个调用的定义可以在WinIoCtl.h文件中找到,因为它们被声明为C宏。
(***)BIOS INT 13h扩展意味着使用LBA代替CHS。
在我处理的CD和DVD上,没有分区表。在USB硬盘驱动器上,您已将分区表写入媒体。我怀疑如果将整个驱动器格式化为不带分区表的UDF磁盘,Windows将不会出现问题。
您没有说出USB驱动器的大小,并且您可能不愿意将整个驱动器指定为UDF,您可以尝试将分区类型设置为fdisk为NTFS或其他MS“受支持”类型之一。
我有同样的问题。我的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版本。Windows XP及更高版本可以读取1.5和1.5。Linux当然可以正确读取它。Windows却感到困惑。它将分区识别为NTFS,然后假定它是原始分区。
我在pendrive上对UDF进行的实验表明,系统倾向于将UDF与FAT相混淆。他们将UDF解释为FAT。它必须具有很大的相似性,因为我可以看到随机字符的目录结构。Linux说该磁盘已损坏,但它不拒绝使用它。
我认为USB驱动器不很好地支持UDF(至少1.5版)。