我正在开发一个基于 stm32 的定制板,运行使用 buildroot 构建的 Linux 发行版。系统可以从 SD 卡或 eMMC 闪存启动。
SystemD 已安装。 rootfs 以只读模式挂载,因此应用程序可以将数据保存到 eMMC 上的读写分区。
仅当从 eMMC 闪存启动时才会挂载此数据分区。为了实现这一目标,我创建了一个名为的 systemd 文件data.mount
,以便我可以添加一个条件来在需要时使用ConditionKernelCommandLine
.
[Unit]
Description=Mount persistent data partition in operating mode
Before=local-fs.target
DefaultDependencies=no
ConditionKernelCommandLine=device=emmc
[Mount]
What=/dev/disk/by-label/data
Where=/data
Type=ext4
Options=defaults,noatime
如果主板从 SD 卡启动,则不会安装数据分区,但仍由 systemd-fsck 检查。systemd-fsck@dev-disk-by\x2dlabel-data.service
执行隐式服务。
问题是当 eMMC 中不存在该分区时,systemd-fsck 会等待该分区出现。它等待90年代。
由于我期望的条件,甚至 fsck 依赖项也没有执行。
使用内核命令,我可以禁用 systemd-fsck,但我只想在数据分区不存在时禁用它。
任何想法 ?