本周去某公司调试系统,他们硬件测试部分送来了一台系统无法进入的机器,他们也不知道怎么弄得,让我看下是系统原因还是 SSD 硬件有问题。

拿到机器开机后,没有正常的进入系统,直接进入了 initramfs mode 并有 filesystem invalid superblock checksum error 的错误提示,遂告诉他们是系统的 filesystem 挂了,然后开始查找修复方法,最后找到了方法并修复了机器,在此记录一下。

修复方法

下面的命令都是在 initramfs shell 中执行的。

先确定你系统所在的分区

可以执行 lsblk 来查看分区信息,然后确定,假如是 /dev/sdaX

列出分区的 superblock 备份信息

执行命令 mke2fs -n /dev/sdaX ,将会看到以下输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
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 继续恢复,然后重启,直至成功。