我的计算机上安装了 Arch Linux 和 Windows 10。当我安装 Linux 时,我只为文件系统提供了 35GB 空间,现在我不再使用 Windows,我想调整分区大小。我启动到 Arch live USB 棒并删除了 linux 分区。仅Linux文件系统分区之前有可用空间。即我的分区表看起来像这样
Free space 1000000 1500000
/dev/sda6 1500000 2000000 Linux filesystem
/dev/sda7 2000000 2000400 Boot sector
不,我在扇区 1000000-2000000 上创建了新的 Linux 文件系统分区,但我不知道如何将文件系统移回来,以便 Grub 找到操作系统的入口点...
是否可以这样做或者我应该重新安装 Arch ?
谢谢!
编辑
我尝试按照本教程进行操作http://positon.org/resize-an-ext3-ext4-partition 但 resize2fs 只给了我“尝试打开 /dev/sda6 时超级块中的错误幻数”
答案1
好的,我明白了!所以我丢失了文件系统的入口点,但我知道分区结束的扇区。我把之前制作的分区缩小到36GB,因为它原来是35GB。然后我执行了 ext2scan这发帖寻找超级块。然后我创建了一个分区,从 ext2scan 找到的扇区开始,到我知道它必须结束的扇区结束。然后 dumpe2fs 找到了超级块和我的文件系统。最后我启动到 grub-resque 并修复了它。
答案2
您的说法是正确的,仅更改分区表不会删除任何内容。但是,据我所知,没有任何工具可以更改文件系统。假设可用空间足够大以容纳您的 Linux 文件系统,您可以采取以下措施来解决该问题:
- 备份您的系统。
- 将分区表恢复到原来的状态。基本上,您想要的是将 Linux 分区从其应该的位置开始,以便可以访问 ext4 超级块。
- 在可用空间中创建一个新分区,并在其上放置相同的文件系统类型。
- 将文件复制
sda6
到新的文件系统中。您可以使用tar
。 - 删除旧的和新的 Linux 分区,并在其位置创建一个新分区,该新分区从新分区开始的位置开始,到旧分区结束的位置结束。使用您的示例:1000000 到 2000000
- 使用
growfs
这样您的新 Linux 文件系统就可以利用现在更大的分区。 - 更新 GRUB 配置,以便它查找新分区。不仅分区发生了变化,文件系统标识符也发生了变化。
答案3
因此,您删除了 Linux 文件系统(扇区 1000000-2000000),然后在其上创建了另一个分区。现在您想要恢复旧的文件系统吗?
如果您有机械硬盘驱动器,则可以撤消您所做的操作,但是不要尝试在新分区上写入任何数据如果你想让他们回来。