本周去某公司调试系统,他们硬件测试部分送来了一台系统无法进入的机器,让我看下是系统原因还是 SSD
硬件有问题。
拿到机器开机后,没有正常的进入系统,直接进入了initramfs mode
, 并有filesystem invalid superblock checksum error
的错误提示,遂告诉他们是系统的 filesystem
挂了。
然后开始查找修复方法,最后找到了方法并修复了机器,在此记录一下。
修复方法
下面的命令都是在initramfs shell
中执行的。
- 先确定你系统所在的分区
可以执行 lsblk
来查看分区信息,然后确定,假设是 /dev/sdaX
- 列出分区的
superblock
备份信息
执行命令 mke2fs -n /dev/sdaX
,将会看到以下输出:
mke2fs 1.44.2 (14-May-2018)
/dev/sda7 有一个 ext4 文件系统
上一次挂载于 /, 时间 Thu May 17 17:15:32 2018
Proceed anyway? (y,N) y
创建含有 7864320 个块(每块 4k)和 1966080 个inode的文件系统
文件系统UUID:dd407bb8-e38a-42f8-ae3f-38081af46323
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000
输出中最后的那些数字就是用来恢复的。
- 从备份中恢复
先使用备份中列块的第一个 number
进行恢复,命令:e2fsck -b 32768 /dev/sdaX -y
, 执行完成后重启。
如果重启还是进不了系统,就换一个 列块 number
继续恢复,然后重启,直至成功。