所以,很奇怪。我在 5 月初安装了 RPI2b 20.04-32,NFS 挂载在启动时运行正常。现在我得到了一个 RPI4b 并尝试了 20.04-64/32,同样的 NFS 挂载在启动时失败了。
我有一台 Synology NAS,启动后可以正常挂载共享,sudo mount -a
我在 fstab 中输入了我的条目,但失败了。当 systemd 尝试在启动时挂载时,网络似乎不可用。我试过了,但_netdevs, x-systemd.after=network-online.target
无济于事。fstab 条目直接指向本地 IP 地址,因此无需解析,也不涉及外部网络。
所以我转到 Pi-Image 一个干净的 20.04-32,然后从头开始。更新 apt、升级、安装 nfs-common、尝试手动挂载,成功了。向 fstab 添加与 RPI2b 上相同的条目,shell 的自动挂载成功,重新启动后再次失败。
所以我深入研究了 syslog 和 systemctl。
cat /var/log/syslog | grep -C 5 "remote-fs.target"
May 30 20:34:55 ubuntu mount[1222]: mount.nfs: Network is unreachable
May 30 20:34:55 ubuntu systemd[1]: media-nas-emulation.mount: Mount process exited, code=exited, status=32/n/a
May 30 20:34:55 ubuntu systemd[1]: media-nas-emulation.mount: Failed with result 'exit-code'.
May 30 20:34:55 ubuntu systemd[1]: Failed to mount /media/nas/emulation.
May 30 20:34:55 ubuntu systemd[1]: Dependency failed for Remote File Systems.
May 30 20:34:55 ubuntu systemd[1]: remote-fs.target: Job remote-fs.target/start failed with result 'dependency'.
...
因此,从表面上看,remote-fs.target 失败了。它应该在启动期间的某个时刻被调用,但事实并非如此。启动后立即调用:
ubuntu@ubuntu:~$ sudo systemctl | grep remote-fs
remote-fs-pre.target loaded active active Remote File Systems (Pre)
所以我手动启动并再次检查
ubuntu@ubuntu:~$ sudo systemctl start remote-fs.target
ubuntu@ubuntu:~$ sudo systemctl | grep remote-fs
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
因此,手动启动目标是可行的,并且 NFS 挂载随后会自动可用。
因此,似乎确实出了问题,即使网络已启动,也从未调用 remote-fs.target。在装有 20.04 32b 的 RPi2b 上,NFS 仅在启动期间挂载,systemd 报告成功。
有人知道哪里出了问题以及/或者如何解决它吗?