/etc/fstab 挂载得太晚,导致某些守护进程失败

/etc/fstab 挂载得太晚,导致某些守护进程失败

我在中写了一些条目/etc/fstab,例如 Mounting on /tmp

/etc/fstab在一些守护进程(例如 Xorg)已经启动之后,systemd 似乎挂载条目太晚了。

Xorg.X11-unix在 中创建/tmp,然后 systemd 挂载在 上/tmp,因此已经在 中的文件/tmp消失。这会导致某些程序无法与 X 通信。

如何让/etc/fstab条目提前挂载?或者我应该使用除 之外的其他东西/etc/fstab

答案1

这表明启动 Xorg 的单元文件没有足够的依赖项,因此systemd最终过早运行它。

至少在 Debian 中,本地文件系统挂载自动具有顺序依赖性Before=local-fs.target,并且需要local-fs.target负责sysinit.target早期系统初始化,因此所有本地文件系统都应在sysinit.target完成后挂载。

除非启动 Xorg 的单元具有 ,否则DefaultDependencies=no它会隐式具有Requires=sysinit.targetAfter=sysinit.target,因此它应该仅在sysinit.target完成后启动。只有负责低级系统初始化的单元才应具有DefaultDependencies=no.

但是,如果您/tmp是远程文件系统,则可能需要向After=remote-fs.target启动 Xorg 的单元添加依赖项。最简单的方法是使用systemctl edit编辑它,从而systemctl自动创建一个包含您的更改(仅)在/etc/systemd/system/<name of the Xorg-starting unit>.d/.

您应该指出您的 Linux 发行版的名称和版本,这样,如果该特定版本的systemd配置中有一些特定的怪癖,了解这些怪癖的人可能会给您更有针对性的答案。

相关内容