总的来说,我对 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)。
第三,我安装了新分区。
4th 我在新分区上创建了一个新的 ext4 文件系统。
然后我关闭了我的电脑,当我今天启动它时,它让我直接进入了紧急情况
我已经尝试过:
mount /dev/nvme0n1p4 / (in the recovery shell, same Error).
mount /dev/nvme0n1p4 /media/nvme (from a live usb stick, same Error).
有谁知道为什么会出现这个错误以及我如何拯救我的数据?
如果您在使用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
行,然后挂载新文件系统。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句