解决双系统启动 Ubuntu 进入 initramfs 问题

在我的电脑上,安装了 Kunbutu 17.04 和 Windows 10 两个系统。启动时通过 grub 来选择进入 Kubuntu 还是 Windows Boot Manager。之前使用一直正常,直到最近重装了一次 Kubuntu 之后发现,在进入 Windows 并重新启动之后,再进入 Kubuntu 的时候一定会进入 initramfs 命令提示符不能正常启动。一种解决办法是通过命令 e2fsck -y -f /dev/nvme0n1p5nvme0n1p5 是我的 Kubuntu 系统所在分区)来修复磁盘错误,然后重启即可正常进入 Kubuntu。但是每次都这样输入命令修复错误太麻烦了,而且问题一定出在 Windows 上。经过一番搜索,发现是 ext2fsd 这个程序还不能很好的支持 ext4 分区格式,将其卸载之后问题永久解决,没有再出现过进入 initramfs 的情况。

但是之前我安装 Kubuntu 16.04 就没有出现这种情况,这是为什么呢?经过一番搜索,发现 ext2fsprogs 从 1.43 版本开始(Ubuntu 16.10),在新建 ext4 分区的时候,会默认启用 64 位和 metadata_csum 功能,而 ext2fsd 目前的版本(0.69)还不能完美支持这两个特性,所以在使用 Kubuntu 17.04 安装之后,每次启动 Windows 都会对 ext4 分区造成破坏,也就导致了分区不能正常被挂载,从而启动失败,进入到 initramfs

因此,除了卸载 ext2fsd 还有另外一种办法,那就是使用 Live CD 启动,然后执行下面的命令禁用掉那两个特性即可:

sudo tune2fs -O ^metadata_csum,^64bit /dev/[Ubuntu 所在的分区]

参考链接:https://askubuntu.com/questions/849872/how-can-i-prevent-windows-10-from-corrupting-the-ext4-superblock-every-time