随手记一下折腾 Gentoo 遇到的两个问题

随手记一下今天折腾 Gentoo 遇到的两个问题。

Couldn't mount as ext3 due to feature incompatibilities

系统启动完成后,在 dmesg 中看到一条报错信息:

EXT4-fs (sda4): couldn't mount as ext3 due to feature incompatibilities

虽然系统最终成功启动,root 分区(ext4)也成功挂载,但这条红色的报错信息有些刺眼。

从网上找到了这样一篇文章:Filesystem with huge files cannot be mounted read-write without CONFIG_LBDAF 。原来开启了 huge_file 属性的文件系统无法被内核正常挂载,而 makefs.ext4 实用工具会自动为文件系统打开这个属性。

解决办法有两个。第一个是使用下面的命令关闭该属性:

$ tune2fs -O ^huge_file /dev/sda4 fsck /dev/sda4

第二个是修改内核启动的命令行参数,强制指定内核以 ext4 格式挂载文件系统。将下面的内容添加到 /etc/default/grub 文件中:

GRUB_CMDLINE_LINUX_DEFAULT="rootfstype=ext4"

更新 Grub:

$ grub-mkconfig -o /boot/grub/grub.cfg

Hibernation image not present or could not be loaded

这个错误也是从 dmesg 中报出来的:

PM: Hibernation image not present or could not be loaded

Hibernation 是电源管理模块中的一个特性,可以显著地降低设备的能耗。Hibernation特性需要交换分区的参与,那么这个错误的产生是和电源管理模块找不到交换分区有关吗?

在 Superuser 上发现有人遇到过 相同的问题。解决办法是将交换分区的 UUID 添加到内核启动的命令行参数中。

首先,使用下面的命令找到交换分区的 UUID(可能需要 root 权限):

$ blkid | grep sda3
/dev/sda3: UUID="edbc48e5-8a64-42cb-84a0-631196cc7aaa" TYPE="swap"

接着像第一个问题中描述的那样修改 /etc/default/grub 文件:

GRUB_CMDLINE_LINUX_DEFAULT="... resume=/dev/disk/by-uuid/edbc48e5-8a64-42cb-84a0-631196cc7aaa"

然后更新 Grub。系统重新启动之后,这两个报错就不见了。

推荐阅读更多精彩内容