随手记一下今天折腾 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。系统重新启动之后,这两个报错就不见了。