当我使用创建 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,因此区分两者可能有点棘手。