我有一个自定义的 Linux 发行版(基于 Debian),它有很多自定义工具,例如更改系统配置(如网络等)。
这些配置文件是 .json 文件,它们并不特别适合 Linux,并且是从自定义生成器中检索的,这些生成器从相应的 Linux 配置中的配置文件中生成值。这些生成器是 systemd 单元,它们在系统初始化目标。
/etc/fstab 中有一个默认条目,该条目正在被生成器覆盖。之后,我执行sudo -o remount /tmp
以正确大小重新安装 tmpfs。有时它可以工作,但有时它不起作用并显示一条错误消息:"not mounted or bad option."
我猜这是一个时间问题。
我还读到,这只能通过使用 systemd (tmp.mount) 来实现。这适用于我的特定用例吗?是否可以在启动过程中生成 tmp.mount 的单元文件,以便以正确的大小安装 tmpfs?
一切都必须自动化。系统不允许人工拦截。
答案1
我有一个默认条目 [for
/tmp
],/etc/fstab
其中正在被生成器覆盖。之后,我正在执行sudo -o remount /tmp
以正确大小重新安装 tmpfs。这有时似乎有效,但其他时候重新安装会失败并显示以下内容error: not mounted or bad option
。我想这是一个时间问题。
一种方法是确保您的发电机仅在/tmp
已安装时运行。您可以使用RequiresMountsFor=
服务单元的 systemd 单元文件中的依赖关系:
[Unit]
RequiresMountsFor=/tmp
...
另一种方法是使用标志设置默认/占位符条目,/tmp
然后仅在生成器设置了所需大小后才明确挂载。即,在当前使用重新挂载的地方运行挂载命令。/etc/fstab
noauto
/tmp
第三种选择是完全取消输入/tmp
,/etc/fstab
让生成器脚本生成并执行systemd-mount [OPTIONS...] --tmpfs [NAME] WHERE
命令行挂载/tmp
为 tmpfs。