Ces*_*arB 76 usb operating-systems filesystems udf usb-flash-drive
在无法将大于 4G 的文件复制到我的 8G USB 闪存驱动器后,我将其格式化为 ext3。虽然到目前为止这对我来说工作正常,但如果我想用它来将文件复制到不使用 Linux 的人,它会导致问题。
我正在考虑将其格式化为UDF,我希望它可以在三种最流行的操作系统(Windows、MacOS 和 Linux)上读取(甚至可能写入),而无需安装任何额外的驱动程序。但是,从我在网上找到的内容来看,似乎有几个与用于创建文件系统的参数有关的小问题,这会降低兼容性(但我发现的大多数页面都是关于光学媒体,而不是USB闪存驱动器)。
我想知道:
mkudffsand genisoimage,而且mkudffs似乎是最好的选择。)Ces*_*arB 57
首先,在创建 UDF 文件系统之前,我将驱动器完全归零:
dd if=/dev/zero of=/dev/sdx bs=512
Run Code Online (Sandbox Code Playgroud)
这是为了避免任何剩余的超级块或其他可能会混淆操作系统文件系统类型检测的元数据(至少应该需要将第一个扇区清零,以消除分区表;UDF 不使用前几个扇区,以及剩余的分区表真的很容易混淆)。您还可以使用count=1dd 命令上的开关,以便更快地将驱动器的前 512 个字节(MBR 通常位于其中)归零,尽管这尚未经过测试。
要创建文件系统,我使用的命令是:
mkudffs --media-type=hd --blocksize=512 /dev/sdx
Run Code Online (Sandbox Code Playgroud)
mkudffs安装udftools软件包后,命令将在基于 Debian 的 Linux 发行版(例如 Ubuntu)上可用:
sudo apt-get install udftools
Run Code Online (Sandbox Code Playgroud)
默认块大小为mkudffs2048,这对于 USB 闪存驱动器(使用 512 字节扇区)是错误的。由于块大小用于查找文件系统元数据,因此使用错误的块大小可能会使其无法识别为 UDF 文件系统(因为锚点将不是文件系统驱动程序期望的位置)。请注意,mkudffs手册页是错误的;512 是块大小的有效值(并且代码明确接受它)。
我还使用了整个驱动器而不是分区;这应该更兼容。
到目前为止我的测试结果:
bs=512选择mount,因为它错误地使用了 2048 而不是设备扇区大小(已在提交 1197e4d 中修复)。虽然到目前为止我还没有尝试在其中创建大于 4G 的文件,但我认为没有理由它不起作用。
鉴于它在所有最新的操作系统上都能完美运行(只需要在 Linux 上手动挂载,一旦 Ubuntu 9.10 和 Fedora 12 发布就不再需要了),并且在 Windows XP 中以只读方式运行(这是一个惊喜对我来说;我原以为它根本无法识别文件系统),在大型 USB 闪存驱动器中使用 UDF 而不是 FAT32 或 NTFS 似乎是个好主意。
CesarB 在解决问题的关键方面做得很好。不能强调的一件事是在格式化 UDF 时使用正确的块大小是多么重要。
受 CesarB 的帖子(以及我的其他研究/测试)的启发,我编写了一个脚本来自动化 UDF 中的格式化过程——使用正确检测到的扇区大小。请参阅GitHub 上的 format-udf。显着特点:
因为最后一点,我写的这个脚本不能在windows上使用。但是,该脚本将在 OS X 和 Linux 上运行。这样做之后,Windows 应该能够神奇地检测到新格式化的 UDF 驱动器。
要直接回答发布的问题,format-udf 将:
| 归档时间: |
|
| 查看次数: |
39760 次 |
| 最近记录: |