systemd:禁用无用的 tmpfs

systemd:禁用无用的 tmpfs

上下文:嵌入式系统,带覆盖的只读 MMC tmpfs。所有内容都写入 RAM 并在重启时消失。

systemd坚持创建大量的tmpfs挂载(至少/run /run/lock /run/shm/tmp我看来,也许还有其他的),但这些挂载完全没用,因为整个只读文件系统已经被tmpfs.

问题:这是一个相当受限的嵌入式系统,每个 RAM 字节都很重要。我想避免tmpfs在不同位置管理多个内存的开销,只需将所有内容放在主tmpfs覆盖层中即可。

不幸的是到目前为止我只设法禁用/tmpsystemctl mask systemd-tmpfiles*)但它对/run层次结构没有任何作用。

知道这些设置隐藏在哪里吗?

答案1

我首先想到的是:

必需的:

/sys/fs/cgroup无法禁用,因为 systemd 的标准功能依赖于 cgroups。

/dev不能和不应该被禁用,因为它不是常规的 tmpfs – 它是一个 devtmpfs,内核会自动为热插拔设备创建节点。(即使没有 udev 也可以工作。)

难的:

/run无法禁用;你可以修补来自 systemd 中的表src/core/mount-setup.c,但只有当该位置仍然提供相同的 tmpfs 类属性时才这样做。

/run/shm也无法禁用,因为 glibc 需要它来实现 POSIX 共享内存。同样,src/core/mount-setup.c只要位置保持不变,您就可以将其从 中修补出来tmpfs。请记住,此路径是自定义分发补丁 – 传统上,此文件系统位于/dev/shm

选修的:

/dev/mqueue/dev/hugepages按照其.mount单元文件进行挂载,这些单元文件可以被删除。

/run/lock默认情况下实际上不是 tmpfs。如果您看到在该位置安装了某些东西,则它一定是您的发行版的自定义添加,并且很可能可以通过删除该run-lock.mount单元来禁用它。

/tmp是可选的,根据tmp.mount单元安装。您可以删除该单元文件。


如果 tmpfs 挂载的成本高于内存页,我会感到非常惊讶。

相关内容