我正在使用 systemd 版本 241 运行 debian。我的 rootfs 有一个 nand flash ubifs 分区,我已将其分成两个卷(/dev/ubi0_1 用于 rootfs,/dev/ubi0_2 用于 var):
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 中也看到了类似的问题。
答案1
事实证明,在我的构建(Debian Buster)中,/tmp 没有被自动设置为 tmpfs。于是我在systemd中开启了tmp挂载,如下:
cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount
Journalctl 和resolved 都需要对/tmp 的写访问权限