我应使用什么工具将硬盘驱动器格式化为UDF?


32

(这是“ UDF的分区ID /文件系统类型是什么? ” 的后续内容

我知道两种将硬盘驱动器格式化为UDF的方法:

  • Windows Vista或更高版本:“ format x: /fs:UDF”(请勿使用/q!)
  • Linux:mkudffs --media-type=hd --blocksize=512 /dev/sdx

问题在于,“其他”操作系统根本无法识别磁盘是否格式化:无论我尝试执行什么命令,它都只是拒绝挂载该磁盘。

如何将硬盘驱动器格式化为UDF,以便Windows和Linux都可以使用它?

编辑:更新了命令,现在结果应该可以在任何一个OS中工作。


UDF是为光学媒体设计的,也许这是问题所在吗?
斩波器

1
您提供的命令在Linux上效果很好。我在Karmic上进行格式化,并且可以在Windows 7和Karmic下读写。
马特·乔纳

4
不要忘记将MBR首先清零(dd if = / dev / zero of = / dev / sdx bs = 512 count = 1),以避免与任何剩余的分区表混淆(因为UDF不使用第一个扇区)。
CesarB 2010年


1
感谢Skolima,这太好了。再见,FAT32。我只需要小心使用UDF 2.01版和512块大小,并且我拥有在Linux和Windows上共享的完美硬盘分区。
MarcH 2011年

Answers:


17

事实证明,使用/qWindows上的开关是罪魁祸首:它启用了“快速格式化”,即,每次写入磁盘时,格式化过程都会在后台继续进行。一旦完成,该驱动器就可以由Linux处理了。


另一方面,使用Linux的mkudffs进行格式化似乎可以在几秒钟内成功完成。
MarcH 2011年

在Linux中使用mkudffs创建文件系统后,实际上我必须在Win7中进行快速格式化。没有这些,Windows只是一直想格式化驱动器。无论出于何种原因,最终在驱动器的末尾创建了5MB的空白空间。但是至少现在它在两种操作系统中都可以使用。
DanMan

自我答复:在最近的UDF版本中,这5MB可能是元数据块。
DanMan 2013年

1
完全错误!快速格式化不是“在后台继续格式化”。它只是文件系统的初始化,不格式化轨道。
Anixx

6

格式化UDF时,要强调的一件事是格式化UDF时使用适当的块大小是多么重要。正如解释在这里,用配置的块大小不匹配的物理扇区大小可能意味着某些操作系统将无法检测到该驱动器作为有效UDF。

受以上链接的答案(以及其他研究/测试)的启发,我编写了一个脚本,使用正确检测到的扇区大小来自动化UDF格式化过程。请参阅GitHub上的format-udf。显着特点:

  • 以通用磁盘格式(UDF)格式化块驱动器(硬盘驱动器或闪存驱动器)
    • UDF版本2.01用于最大程度的兼容性
    • 首先将4096个扇区清零以擦除任何现有的MBR(正确检测UDF所需)
  • 可以跨多个操作系统家族(Windows,OS X和Linux)读取/写入结果文件系统
  • 在具有Bash环境的任何OS上运行

由于最后一点,我编写的此脚本无法在Windows上使用。但是,该脚本将在OS X和Linux上运行。这样做之后,Windows应该能够神奇地检测到新格式化的UDF驱动器。

要直接回答发布的问题,format-udf将:

  • 选择适当的工具以根据操作系统和环境进行格式化(mkudffs在Linux上)
  • 自动检测并填充格式化所需的所有参数(包括blocksize
  • 最大化操作系统兼容性(有关兼容性表,请参见GitHub页面)
  • 产生请求者正在寻找的最大功能集(和最小限制)

5

您如何使用该Windows命令(“ format x:/ fs:UDF”)协调在上一个问题(应该在整个磁盘而不是分区上创建UDF文件系统)中的发现?在我的尝试中,Windows仅将驱动器号提供给分区。

至于格式化的兼容性,我认为关键在于块的大小。由于大多数硬盘驱动器和USB闪存棒的块大小为512字节,因此在创建该块大小的FS时,我具有最大的兼容性。我认为format.com正在使用该块大小,并且mkudffs具有用于更改块大小的命令开关。当我使用512字节块时,只能获得OS X和Windows来挂载文件系统。较早版本的Linux假定块大小为2048,但始终可以使用“ -o bs = 512”进行安装。

整个磁盘与分区的问题仍然会导致兼容性问题。当我格式化整个磁盘时,Windows不会挂载,而OS X在确定其文件系统时看起来不会超出分区的类型号,这迫使我手动挂载它。只要我给它指定了适当的设备名称(sda vs sda1),Linux就不会在乎。

总而言之,我发现最兼容的设置是类型为06(FAT16)的单一分区,使用UDF格式化,块大小为512。在Windows上自动运行,在Linux和OS X上进行少量手动干预。


3
我尝试了另一个实验。这次我使用USB闪存棒而不是硬盘驱动器。格式为“ mkudffs --media-type = hd --blocksize = 512 / dev / sda”,可在Linux,OS X和Vista上轻松运行。太糟糕的Windows似乎允许USB记忆棒上的无分区格式,但不允许硬盘驱动器上的无分区格式。
西蒙(Simon)

您绝对希望保持相同的块大小,以避免过早磨损闪存,请参阅:lwn.net/Articles/428584
MarcH 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.