Wait for Network Ping for fstab mount
There are cases where it is absolute requirement to have working networking to be able to mount a remote folder. CIFS mounts are examples of that, even more so when a virtual bridge is involved since they appear to take longer to be available and working (either that or systemd services may not be properly waiting for it to be ready before continuing).
The steps below will create a new systemd service that can be set as required service to be active (here we will ping a certain local IP) before attempting to mount that folder.
-
Create the
/etc/systemd/system/wait-for-ping.servicefile with the following contents. The10.0.0.1can be replaced with any IP address, even public ones if you need to wait for the internet to be reachable.[Unit] Description=Wait for a successful ping After=network-online.target [Service] ExecStartPre=/usr/bin/bash -c "while ! ping -c1 10.0.0.1; do sleep 1; done" ExecStart=/usr/bin/bash -c "Ping successful. Network is reachable." RemainAfterExit=yes [Install] WantedBy=multi-user.target -
Reload systemctl config files
sudo systemctl daemon-reload -
Enable and start (with the
--nowflag) our new service.sudo systemctl enable --now wait-for-ping.service -
Edit
/etc/fstaband addx-systemd.after=wait-for-ping.servicein the mount options to entries of your choosing. For example, for a CIFS mount this would look like this://10.0.0.100/data /mnt/foobar cifs x-systemd.after=wait-for-ping.service,uid=1001,gid=1001,dir_mode=0775,file_mode=0664,credentials=/root/creds,iocharset=utf8 0 0