为什么我们需要在 fdisk 中指定分区类型,然后在 mkfs 中再次指定分区类型?

为什么我们需要在 fdisk 中指定分区类型,然后在 mkfs 中再次指定分区类型?

我有点困惑磁盘驱动器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

我的问题是:

为什么我们甚至必须使用t执行时指定分区类型的选项磁盘驱动器步?它如何影响一切?它是否会在 USB 驱动器上创建一些标记,意味着只有 vfat 分区?或者跳过是否安全t完全步骤? AFAIK - 分区只是将磁盘分成多个区域 - 不是吗?

只是想了解为什么它会这样工作:)

答案1

因为mkfs不知道也不关心分区表。您可以在任何您想要的块设备上使用它,包括那些与硬盘无关的块设备,因此也与分区无关。 fdisk 放入 msdos 分区表中的分区类型代码只是一个提示,非 Microsoft 操作系统几乎会忽略它。

答案2

分区类型不如文件系统类型具体。大多数“本机”Linux 文件系统使用分区类型 83,例如:所有ext*变体、ReiserFS、XFS 等。

你应该尝试切换到parted或者gParted。对于某些文件系统类型,它可以在同一个工具中创建分区并在其中创建文件系统。 (不过,对于某些文件系统,您仍然需要mkfs单独进行。)

答案3

分区类型适用于需要知道在该分区上放置什么类型的文件系统的设备。 Linux 似乎足够聪明,可以忽略类型,并且无论如何都知道文件系统是什么。但是,有些设备仅当文件系统类型与您放置在磁盘上的实际文件系统匹配时才能够读取您的磁盘。

mkfs创建实际的文件系统。它不知道你将该文件系统放在什么类型的东西上,所以它不能只是猜测。您需要准确地告诉它您正在尝试创建哪种类型的文件系统,以便它知道要做什么。

我最近发现为什么文件系统类型很重要。我设置了一个 USB 记忆棒来将歌曲放在媒体播放器中使用,但是我没有正确设置文件系统类型,即使实际的文件系统是 vfat。音乐播放器不知道如何读取驱动器,一旦分区类型设置正确,它就可以工作。我在 Mac 上也遇到了同样的问题,即使实际文件系统正常,也无法读取分区类型错误的 USB 记忆棒。

相关内容