为什么 Linux 系统使用一个内核配置从 fstab 挂载分区,而不是另一个?

为什么 Linux 系统使用一个内核配置从 fstab 挂载分区,而不是另一个?

我有一个由 Buildroot 使用 BusyBox init 和 eudev 制作的 Linux ROM 映像。该映像有一个 /etc/fstab,它将 /dev/mmcblk0p1 挂载到 /boot,将 /dev/mmcblk0p2 挂载到 /mnt/var.rw(/var 的上层文件系统),并将 /var 作为可写的 unionfs。

我自定义了内核配置以删除我不需要的功能,包括设备映射器、一些随机驱动程序(我不使用的文件系统、网络、无线、IOMMU……相当多),现在当我启动设备时,/boot 和其他文件系统未挂载。如果我运行mount -a,它们会正确挂载。

我使用主板的 defconfig 重建了内核,没有进行任何其他更改,并且分区在再次启动时成功挂载。

dmesg 中似乎没有任何信息表明无法挂载任何文件系统。此外,在没有挂载上层文件系统的情况下挂载了 overlayfs,所以我知道正在读取 fstab。

哪些内核配置选项可能会导致这种行为?

编辑:进一步缩小问题范围后,我发现这是由于将 UnionFS 构建到内核中而导致的。将其构建为模块可消除此行为。有人能解释一下可能导致此行为的原因吗?

相关内容