安装:/new_root:文件系统类型错误、/dev/nvme0n1p4 上的超级块错误、缺少代码页或帮助程序或其他错误

安装:/new_root:文件系统类型错误、/dev/nvme0n1p4 上的超级块错误、缺少代码页或帮助程序或其他错误

总的来说,我对 Linux 还很陌生,但我可以使用命令行来做一些基本的事情。目前我正在使用 Manjaro KDE。昨天我跟着书《Linux from Scratch》学习了更多关于Linux的知识。我做的最后一件事是将主分区缩小了 25 GB 并创建了一个新分区(使用 cfdisk)。一切都很好,没想到当我今天登录 Manjaro 时,我收到了错误:

mount: /new_root: wrong fs type, bad superblock on /dev/nvme0n1p4, missing codepage or helper program, or other error.

sh: can't access tty: job control turned off

并被扔进紧急外壳。正如我所说,我可以使用命令行来创建、复制和编辑文件,但这对我来说看起来太高级了。

编辑

在一切崩溃之前我做的最后一件事是:

第一次我使用 cfdisk 将主分区缩小了 25.6 GB。

第二,我使用 cfdisk 创建了一个新分区(20 GB)。

第三,我安装了新分区。

第四,我在新分区上创建了一个新的 ext4 文件系统。

然后我关闭了电脑,今天启动时,它直接进入了紧急 shell

我已经尝试过:

mount /dev/nvme0n1p4 / (in the recovery shell, same Error).
mount /dev/nvme0n1p4 /media/nvme (from a live usb stick, same Error).

有谁知道为什么会发生此错误以及如何挽救我的数据?

答案1

如果在使用收缩文件系统所在分区之前没有使用resize2fs收缩文件系统,则会导致文件系统的尾部被切断。cfdisk系统现在检测到文件系统声称大于其所在的分区,这是一个错误。

虽然 ext2/3/4 文件系统可以放大的当它被使用时,缩小仍然需要先卸载它。它看起来像是/dev/nvme0n1p4你的根文件系统,它不能轻易地卸载,/并且需要特殊的步骤来安装/(将其安装到其他地方,最小化正在运行的进程数量,并使用pivot_root切换到新的根文件系统),因此机会太高,您没有使用正确的程序来调整您的大小文件系统。

调整根文件系统大小的最简单方法是从外部实时媒体启动,并在完全卸载时使用它来调整已安装操作系统的根文件系统的大小。另一种选择是确保文件系统大小调整工具存在于 中initramfs,然后使用引导选项在 initramfs 引导阶段中断引导,同时根文件系统尚未安装,并在生成的紧急 shell 中缩小文件系统。

现在的问题是,调整文件系统的大小首先要求它没有错误。暴力切断文件系统的一部分绝对是一个错误。

您需要从实时媒体启动系统,然后使用它来安装和备份您创建的新分区(如果有)的内容,然后删除该分区并将分区恢复/dev/nvme0n1p4到其原始大小。然后您应该能够运行e2fsck -C0 /dev/nvme0n1p4它来检查错误(并希望修复可能由文件系统尾部部分覆盖引起的任何错误)。

然后,仍然在实时媒体环境中,将根文件系统挂载到临时位置

mkdir /media/nvme
mount /dev/nvme0n1p4 /media/nvme

并使用它来编辑/etc/fstab已安装操作系统的(现在位于/media/nvme/etc/fstab),以暂时注释掉对您创建的新分区的任何引用。

然后您可以退出实时媒体并验证您安装的操作系统再次正常启动。

然后再次使用实时媒体启动以正确调整根文件系统的大小:

1.) 首先用于resize2fs /dev/nvme0n1p4 <new-size>调整分区内文件系统的大小。如果您知道调整大小后分区将具有的确切扇区数,则可以使用该值作为值<new-size>。否则,您应该稍微缩小文件系统较小大小比您打算将分区缩小到的大小,以防止单位转换中的舍入(以及基数 2 与基数 10)错误。

2.) 然后收缩包含文件系统的分区。作为此步骤的一部分,您还可以使用可用空间创建新分区。

3.) 退出实时媒体并启动到已安装的操作系统以确认其仍然正常工作。如果您将文件系统的大小调整为小于新分区大小,您现在可以使用resize2fs /dev/nvme0n1p4自动检测当前分区大小并扩展文件系统以使其完全匹配。 (是的,您可以在安装文件系统时执行此操作。)

4.) 现在您可以继续在新分区上创建文件系统,取消注释/添加该/etc/fstab行,然后安装新文件系统。

相关内容