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


11

我对fdiskmkfs有点困惑。

所以-这是典型的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

我的问题是:

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

只是想了解它为何以其工作方式运行:)

Answers:


9

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


5

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

您应该尝试切换到partedgParted。对于某些文件系统类型,它可以在同一工具内创建分区并在其中创建文件系统。(不过,对于某些文件系统,您仍然必须mkfs分开。)


3

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

mkfs创建实际的文件系统。它不知道您正在使用哪种类型的文件系统,因此它不能只是猜测。您需要准确告诉它您要创建哪种文件系统,以便它知道该怎么做。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.