前因后果

实验室师姐需要在win10下挂载ext3分区,我就百度了一下发现了一个叫Ext2Fsd的神器,能够在windows下挂载ext2,3,4分区,我就下载了最新的Ext2Fsd-0.69在自己的机子上试试效果。我使用了实验室的电脑,安装了win10,移动硬盘上安装了Deepin作为平时工作使用的Linux系统,安装后运行Ext2Fsd果真能挂载移动硬盘中的ext4分区并能够读写。

当我打算进入Deepin工作的时候悲剧发生了,系统无法挂载我在win10中挂载的分区。开机进入initramfs并且显示superblock checksum does match 的错误。系统里还有很多资料和最近项目的数据呢。

Baidu Google稍微搜索了一下,问题在于Ext4分区在被win10挂载时它的metadata_csum功能会出错。具体原理我懒也没仔细看,可能就像windows和linux双系统系统时间总要差6小时那样。在别的linux下挂载损坏的两个分区也显示superblock错误。(神奇的是win10下使用Ext2Fsd能够挂载,虽然并没卵用!!)最终找到了能够修复分区的方法,Save my data!!

解决方法

  1. 首先,由于原系统已经无法进入,我们需要一个可用于维护的Linux系统,我安装Deepin系统到U盘中用于维护。
  2. 打开维护系统的终端,输入sudo fdisk -lu查看分区表,通过分区大小判断是哪些分区出错了,我的情况是sda2,sda6
    img
  3. 输入sudo tune2fs -l /dev/sda2查看是否开启了metadata_csum功能,输出了一长列数字即是开启了此功能。
  4. 输入sudo fsck.ext4 -p -b 884736 -B 4096 /dev/sda2尝试修复sda2分区,也可以使用fsck -t ext4 /dev/sda2修复,出现提示就一直按y就好了。
  5. sudo reboot

多说一句

就结果来说还是不错的,但是以后都不敢用Ext2Fsd这类工具了,折中的办法就是在为Linux系统分区时分一部分格式化为NTFS作为共享分区,windows和Linux可以通过这个分区来交换数据。

参考

How can I prevent Windows 10 from corrupting the ext4 superblock every time?
(完美解决)linux 开机进入initramfs无法开机