我有一个全新的闪存驱动器,插入树莓派。我想将内容写入驱动器,然后在 macOS、Windows 或其他 Linux 发行版上轻松读取。
我应该如何使用 cli 工具将此驱动器格式化为每个系统都可以轻松使用的大文件系统?
我们现在可以忽略确保数据全部写入驱动器/干净卸载的问题,但最好谈谈这一点。对热拔出有弹性的答案的奖励积分。
虽然我过去在 linux only 驱动器上成功地使用了没有分区表的驱动器,但我知道分区表对于在其他操作系统上的易用性很有用。
应该使用标准 BIOS 分区/MBR ( fdisk
/ cfdisk
) 吗?还是我们想用 GPT 格式化?
我假设将一个“主”分区设置为最大大小fdisk
是标准方法,但是应该使用什么“分区类型”?83
肯定不是默认的吗?
至于文件系统,是 FAT32(mkfs.fat
[对吗?])、VFAT(mkfs.vfat
)还是其他“标准”?微软现在正在推动 exFAT( mkfs.exfat
) 用于更大的驱动器(我的驱动器是 128GB),对吧?但是,我听说某些 Linux 发行版(在我的情况下为 Raspbian)上的内核不支持 exFAT。最好不需要使用 FUSE 来挂载,我知道这是用于 exFAT 的。
很可能它已经以标准方式格式化(FAT32 用于小型驱动器,exFAT 用于大型驱动器)。
虽然内部磁盘通常是完全空白的(由于多种分区布局),但可移动媒体作为开箱即用的可用介质出售,因为实际上每个人都想要一个巨大的分区。
小型可移动媒体传统上使用 MBR,有时甚至根本不分区(又称“超级软盘”模式——软盘总是如此,但过去也常用于 U 盘)。
许多通用操作系统可以毫无问题地识别 U 盘上的 GPT(Windows Vista 及更高版本在 x86 上支持 GPT),但许多嵌入式设备(电视、游戏机等)不会,因此 MBR 仍然是通常的选择.
请注意,
fdisk
截至 2010 年,Linux 确实支持 GPT,尽管这种支持需要几年时间才能到达 Debian。坚持通常的 Windows 分区类型,例如
0c
FAT32 和07
exFAT 或 NTFS。如果有疑问,请在 Windows 上对其进行格式化,然后检查生成的分区表是什么样的。
mkfs.fat
是标准工具,它与mkfs.vfat
只是在一个新名称下是一样的。Linux 中的“VFAT”仅表示“支持长文件名的 FAT12/16/32”。所以你可以使用任何一个(或者甚至
mkdosfs
是同一个工具),你最终会得到相同的文件系统类型——对于任何大分区,它都是 FAT32。它将与除了古老的 MS-DOS 之外的几乎所有东西兼容。(GNU mtools中还有一个 FAT 格式工具,但它适用于 FAT12 软盘,使用不寻常的参数,例如更小的根目录大小,并且不太可能为 U 盘提供良好的结果。)
exFAT 目前需要 FUSE,但这可能很快就会改变(
staging/
v5.4 已经有一个驱动程序,很快就会有更好的驱动程序取代它)。但是,FUSE 驱动程序运行良好,您不需要任何特殊命令即可使用它:它是一样的mount -t exfat
,或者就像mount
libblkid 将其识别为 exFAT 而与驱动程序无关。NTFS 也是如此:内核有一个驱动程序,但基于 FUSE 的 NTFS-3g 工作得更好一些,而且也是无缝的(接管
mount -t ntfs
)。umount
总会做正确的事。Linux FAT 驱动程序接受
flush
挂载选项,该选项将在每次写入后关闭文件时尝试同步更改,这 - 就像在 Windows 上一样 - 应该让你在驱动器空闲时立即拔掉它。(尽管这样做仍然会在任何情况下在文件系统上设置“脏”标志。)