(这是“ UDF 的分区 id / 文件系统类型是什么? ”的后续内容)
我知道将硬盘驱动器格式化为 UDF 的两种方法:
- Windows Vista 或更高版本:“
format x: /fs:UDF
”(请勿使用/q
!) - Linux:“
mkudffs --media-type=hd --blocksize=512 /dev/sdx
”
问题是“其他”操作系统根本无法识别磁盘已格式化:无论我尝试什么命令,它都拒绝安装它。
如何将硬盘驱动器格式化为 UDF,以便 Windows 和 Linux 都可以使用它?
编辑:更新了命令,现在结果应该可以在任一操作系统中使用。
事实证明,使用
/q
Windows 上的开关是罪魁祸首:它启用了“快速格式化”,即格式化过程在后台继续进行,每次写入磁盘。一旦完成,驱动器就可以由 Linux 处理。在格式化 UDF 时,有一点需要注意,那就是在格式化 UDF 时使用正确的块大小是多么重要。如此处所述,使用与物理扇区大小不匹配的配置块大小可能意味着某些操作系统将无法将驱动器检测为有效的 UDF。
受上面链接的答案(以及我的其他研究/测试)的启发,我编写了一个脚本来自动化 UDF 中的格式化过程——使用正确检测到的扇区大小。请参阅GitHub 上的 format-udf。显着特点:
由于最后一点,我写的这个脚本不能在 Windows 上使用。但是,该脚本将在 OS X 和 Linux 上运行。这样做之后,Windows 应该能够神奇地检测到新格式化的 UDF 驱动器。
要直接回答发布的问题,format-udf 将:
mkudffs
Linux上)blocksize
)您如何将您在上一个问题中的发现(UDF 文件系统应该在整个磁盘上创建,而不是在分区上创建)与那个 Windows 命令(“format x: /fs:UDF”)相协调?在我的尝试中,Windows 只为分区提供驱动器号。
至于兼容性的格式化,我认为关键在于块大小。由于大多数硬盘驱动器和 USB 闪存棒的块大小为 512 字节,因此我在创建该块大小的 FS 时具有最大的兼容性。我认为 format.com 正在使用该块大小,而 mkudffs 有一个用于更改块大小的命令开关。当我使用 512 字节块时,我只能让 OS X 和 Windows 挂载文件系统。旧版本的 Linux 假定块大小为 2048,但您始终可以使用“-o bs=512”进行挂载。
整个磁盘与分区问题仍然会导致兼容性问题。当我格式化整个磁盘时,Windows 不会挂载,而 OS X 在确定其文件系统时不会超出分区的类型编号,这迫使我手动挂载它。Linux 不在乎,只要我给它适当的设备名称(sda vs sda1)。
总之,我发现最兼容的设置是类型为 06(FAT16)的单个分区,使用 UDF 格式化,块大小为 512。在 Windows 上自动运行,在 Linux 和 OS X 上进行少量手动干预。