我正在使用 systemd 版本 241 运行 debian。我的 rootfs 有一个 nand flash ubifs 分区,我已将其分成两个卷(rootfs 为 /dev/ubi0_1,var 为 /dev/ubi0_2):
ubi0:rootfs on / type ubifs (ro,relatime,assert=read-only,ubi=0,vol=1)
/dev/ubi0_2 on /var type ubifs (rw,relatime,assert=read-only,ubi=0,vol=2)
systemd-timesyncd 在启动时给我以下错误:
[FAILED] Failed to start Network Time Synchronization.
See 'systemctl status systemd-timesyncd.service' for details.
journalctl 给出以下内容:
Mar 13 22:46:45 nelson systemd[1]: Stopped Network Time Synchronization.
Mar 13 22:46:45 nelson systemd[1]: systemd-timesyncd.service: Failed to run 'start' task: Read-only file system
Mar 13 22:46:45 nelson systemd[1]: systemd-timesyncd.service: Failed with result 'resources'.
如果我将 rootfs 切换到 rw,那么错误就会消失。
这是 ls -l /var/lib/systemd/timesync/clock 的输出:
-rw-r--r-- 1 systemd-timesync systemd-timesync 0 Mar 13 21:09 /var/lib/systemd/timesync/clock
我也看到 systemd-resolved 的类似问题。
事实证明,在我的构建(Debian Buster)中,/tmp 没有被自动设置为 tmpfs。于是我在systemd中开启了tmp挂载,如下:
journalctl 和 resolved 都需要对 /tmp 的写入权限