我有一个笔式驱动器和一个分区:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part /
sdb 8:16 1 7.5G 0 disk
└─sdb1 8:17 1 7.5G 0 part
我已经用命令格式化了:
# mkfs.fat -n A /dev/sdb
而且效果很好。
但在那之后,我浏览了 mkfs 的手册页:
mkfs is used to build a Linux filesystem on a device, usually a hard
disk partition. The device argument is either the device name (e.g.
/dev/hda1, /dev/sdb2), or a regular file that shall contain the
filesystem. The size argument is the number of blocks to be used for
the filesystem.
它说mkfs
应该与分区号一起使用。我的问题是为什么我的操作没有错误提示?
答案1
在整个磁盘而不是分区上创建文件系统是可能的,但不常见。该文档仅明确提到分区,因为这是最常见的情况(它确实说通常)。您可以在任何类似于固定大小文件的文件系统上创建文件系统,即如果您在某个位置写入数据并从同一位置读回,那么您将得到相同的数据。这包括整个磁盘、磁盘分区和其他类型的磁盘块设备,以及常规文件(磁盘映像)。
执行此操作后mkfs.fat -n A /dev/sdb
,该磁盘上不再有分区。请注意,内核仍然认为磁盘有分区,因为它将分区表缓存在内存中。但你不应该再尝试使用/dev/sdb1
,因为它不再存在;写入它会损坏您创建的文件系统,/dev/sdb
因为它/dev/sdb1
是其中的一部分/dev/sdb
(除了开头的几百个字节之外的所有内容)。以 root 身份运行该命令partprobe
,告诉内核重新读取分区表。
虽然可以在整个磁盘上创建文件系统,但我不推荐这样做。某些操作系统可能会出现问题(我认为 Windows 可以处理,但某些设备(例如相机)可能不会),并且您将失去创建其他分区的可能性。也可以看看无分区文件系统的优点
答案2
如果您不打算在设备上拥有多个文件系统,通常可以将文件系统放在整个设备上,而不是对分区进行分区和格式化。你只需要保持一致即可;由于您将文件系统放在sda
而不是 上sda1
,因此您也必须挂载sda
,因为sda1
根本不存在。
您问题中的设备似乎是 FAT 格式的可移动驱动器:如果它将与嵌入式设备一起使用,这些设备可能对如何安装文件系统有或多或少的详细概念,那么可能值得测试它们在事实上支持没有分区表的整个设备文件系统。 (例如,相机倾向于创建单个分区并对其进行格式化;它们完全有可能声明无分区存储卡不可用。)