关于文件系统:systemd忽略了overlayFS的服务

systemd ignores services from overlayFS

我想用另一个分区(应用程序文件系统)上的应用程序构建系统。属于该应用程序的所有二进制文件,配置文件和服务文件都应位于app-fs中。

我正在使用以下版本:内核4.9.x,systemd v234。

应用程序分区安装在/ opt上,其中包括以下文件:

1
2
3
/opt/usr/bin/app-binary  
/opt/etc/systemd/system/multiuser.target/link_2_app.service  
/opt/lib/systemd/system/app.service

以下是服务文件:

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=The application description.
After=syslog.target basic.target

[Service]
ExecStart=/opt/usr/bin/app-binary
Type=simple

[Install]
WantedBy=multi-user.target

要与rootfilesystem同步文件,我创建了2个覆盖图,可能是/ etc / fstab条目(对不起,格式,一行无效):

1
2
3
/dev/app-partition /opt auto defaults,x-systemd.mount 0 2
overlay /etc overlay defaults,x-systemd.mount, x-systemd.after=opt.mount,lowerdir=/etc,upperdir=/opt/etc,workdir=/work/etc 0 2
overlay /lib/systemd/system overlay defaults,x-systemd.mount,x-systemd.after=opt.mount,lowerdir=/lib/systemd/system,upperdir=/opt/lib/systemd/system,workdir=/work/lib 0 2

这是在到达local-fs.target之前处理的。

结果

我可以成功启动应用程序,但可以使用systemctl start app.service手动启动。状态为" systemctl status app.service"的状态表示已启用。但是该应用程序不是在启动时启动的。 Systemd没有提供有关尝试启动该应用程序的消息。

问题

是否有一种方法可以调试此行为? systemd何时检查服务文件?有没有办法再次触发它?还有其他方法可以通过systemd处理此用例吗?


systemctl守护程序重新加载

我测试这不起作用。

以我的情况。我使用systemd-networked,并覆盖


systemd在启动时会检查一次单位文件,这是一个初始化脚本,该脚本在systemd启动之前可以处理此用例。

另一个想法(但未经测试)是:systemctl daemon-reload