Sta*_*ann 16 filesystems partition fdisk
我对fdisk和mkfs有点困惑。
所以 - 这是典型的 USB 闪存驱动器分区和格式化:
umount /dev/sdb
fdisk fdisk /dev/sdb
Command (m for help): d
Selected partition 1
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-960, default 1): ?
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-960, default 960): ?
Using default value 960
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)
Command (m for help): a
Partition number (1-4): 1
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
mkfs -t vfat /dev/sdb1
Run Code Online (Sandbox Code Playgroud)
我的问题是:
为什么我们在执行fdisk步骤时甚至必须使用t选项来指定分区类型?它如何影响一切?它是否在 USB 驱动器上创建了一些标记,意味着只有 vfat 分区?或者完全跳过t步骤是否安全?AFAIK - 分区只是将磁盘分成多个区域 - 不是吗?
只是想了解为什么它会以这种方式工作:)
psu*_*usi 11
因为 mkfs 不知道也不关心分区表。你可以在任何你想要的块设备上使用它,包括那些与硬盘无关的块设备,因此是分区。fdisk 放在 msdos 分区表中的分区类型代码只是一个提示,非 Microsoft 操作系统几乎会忽略它。
分区类型适用于需要知道在该分区上放置什么类型的文件系统的设备。Linux 似乎足够聪明,可以忽略类型,并且无论如何都知道文件系统是什么。但是,有些设备仅当文件系统类型与您放置在磁盘上的实际文件系统匹配时才能够读取您的磁盘。
mkfs创建实际的文件系统。它不知道你将该文件系统放在什么类型的东西上,所以它不能只是猜测。您需要准确地告诉它您正在尝试创建哪种类型的文件系统,以便它知道要做什么。
我最近发现为什么文件系统类型很重要。我设置了一个 USB 记忆棒来将歌曲放在媒体播放器中使用,但是我没有正确设置文件系统类型,即使实际的文件系统是 vfat。音乐播放器不知道如何读取驱动器,一旦分区类型设置正确,它就可以工作。我在 Mac 上也遇到了同样的问题,即使实际文件系统正常,也无法读取分区类型错误的 USB 记忆棒。