我正在使用 Yocto 进行嵌入式 Linux 构建。我的目标是在每次系统启动期间强制执行文件检查。我修改了该/etc/default/rcS
文件并设置了ENABLE_ROOTFS_FSCK=yes
和FSCKFIX=yes
。fsck
尝试检查 rootfs 但出现以下错误:
e2fsck 1.46.2 (28-Feb-2021)
fsck.ext2: No such file or directory while trying to open /dev/root
Possibly non-existent device?
fsck failed. Please repair manually and reboot. Please note that the root filesystem is currently mounted read-only. To remount it read-write:
# mount -n -o remount,rw /
CONTROL-D will exit from this shell and REBOOT the system.
我在这里看到两个问题。首先,为什么e2fsck
无法检查文件系统?其次,为什么e2fsck
调用fsck.ext2
检查ext4文件系统?当我fsck -n <partition>
正常启动后使用时,效果很好。我得到以下日志:
e2fsck 1.46.2 (28-Feb-2021)
Warning! <partition> is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
<partition> clean
预先感谢您的任何帮助。
编辑:我使用使用 Yocto 构建的 Linux,内核为 3.18 和 systemVinit。还有一些方法可以在启动过程中强制进行 fsck,但它们似乎适用于带有 systemd 的系统。我想 e2fsck 不知道应该检查哪个分区。它尝试检查 /dev/root 而不是我的物理分区 /dev/mmcblk0p2。