使用 parting 更改 GPT 分区文件系统类型

使用 parting 更改 GPT 分区文件系统类型

当我使用创建 GPT 分区时parted,我ext2以前使用的文件系统类型:

$ parted /dev/sdc print | grep ^12 
12      961GB   1118GB  157GB   ext2               msftdata

现在我想将其更改为ext4,因此我用来mkfs.ext4 /dev/sdc12重新格式化分区,但是当我parted /dev/sdc print按照上述操作时,它仍然显示ext2为文件系统类型。

我读了一些资料,似乎parted接触文件系统类型的唯一方法是mkpartfs命令,参考:http://www.thegeekstuff.com/2011/09/parted-command-examples/。是吗?我真的不喜欢使用命令mkpartfs来更改文件系统类型,因为我不想再次重新创建分区。这会弄乱我的分区编号(例如,sdc12 将被命名为 sdc19)。有没有更好的方法?

编辑:

再次遇到同样的问题,并再次在这里找到了我自己的问题的答案。因此,记录一下我认为有必要更改分区文件系统类型的原因:

% mount $bootdev
mount: wrong fs type, bad option, bad superblock on /dev/sdb2,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

% fsck  $bootdev
fsck from util-linux 2.20.1
e2fsck 1.42.8 (20-Jun-2013)
GptLive: clean, 21/1024000 files, 74309/4096000 blocks

% mount $bootdev
mount: wrong fs type, bad option, bad superblock on /dev/sdb2,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

即,我新创建了一个/dev/sdb2条目,类型为auto/etc/fstab但是,mount就是无法挂载它。但是:

% mount $bootdev /mnt/GptLive

% mount | grep $bootdev
/dev/sdb2 on /mnt/GptLive type ext2 (rw)

即,当mount $dev不起作用时,mount $dev /mnt/place就可以正常工作。

我不知道为什么,也无法解释修复方法,但只是记录下这就是我寻找解决方案的原因,以及我如何“固定的”它。

谢谢

答案1

GParted 和parted程序对分区表类型代码信息的控制非常有限。最多,一些类型代码被翻译成“标志”。这就是msftdata标志的含义——它表示 Microsoft Basic Data 分区(GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7;参见维基百科 GPT 类型代码列表)。您可以通过调整标志来更改某些类型代码,但 Linux 会忽略这些代码(某些有限情况除外),因此在仅 Linux 的系统上,您不需要处理它们。但在双启动系统上,您应该不是使用 Microsoft Basic Data 类型代码设置 Linux 分区;参见我关于这个主题的页面了解为什么这是一个坏主意。

文件系统是否为 ext2parted是由检查数据的程序确定的之内分区。如果你在分区中创建了一个新的 ext4 文件系统,那么parted 应该可以正确识别它;但 的识别中可能存在错误parted。如果是这样,我不会担心。您可能希望通过使用blkid(如sudo blkid /dev/sdc12)或使用 -- 检查技术细节来验证分区是否确实包含 ext4 文件系统dumpe2fs,但后者需要相当多的专业知识才能解释。事实上,ext4fs 基本上是具有额外功能的 ext2fs,因此区分两者可能有点棘手。

相关内容