[ale] systemd - howto wait for _all_ fsck's to finish before starting system
Phil Turmel
philip at turmel.org
Fri Dec 1 09:59:07 EST 2023
Hi Steve,
The tool you need is a dependency on the mount in the affected services.
If you do
# systemctl list-units
you should find the precise name of your home directory's dynamic mount
unit (automatically generated), typically "home.mount".
Create a supplement for cron with:
# systemctl edit cron.service
and put this in the supplement (aka override):
> [Unit]
> Requires=home.mount
Then your cron service won't start until /home is mounted.
Do similar to any other services affected.
On 12/1/23 08:00, Steve Tynor via Ale wrote:
> Ubuntu Server 22.04 LTS. I have a fairly large file system (/home) that
> I wish to fsck at boot. /etc/fstab has:
>
> /dev/disk/by-uuid/b4d368cd-e22e-4c85-b261-c0d785de344e /boot ext4
> defaults 0 1
> /dev/md/ricotta:1 /home ext4 defaults,nofail,discard 0 2
>
> On boot, the /boot filesystem get's fsck'd and then systemd seems to
> immediately start the rest of the system in parallel with fsck'ing
> /home. This is a problem since I have some cron jobs, docker
> containers and other services that rely on directories in /home. Those
> services don't startup nicely if the fsck hasn't finished.
>
> I'm guessing I could add [Wants] annotation to various .service files
> (if I could figure out what base service to target), but 1) it seems
> like this should work "out of the box", 2) editing half a dozen system
> provided .service files seems fiddly and error prone.
>
> I've not found any ready-made advice via google. Which surprises me -
> surely wanting to check _all_ file systems before starting the rest of
> the system is not _that_ uncommon?
>
> (please don't let this devolve into a systemd bashing thread - I don't
> like systemd, but I've chosen to use Ubuntu and want to live within its
> expectations...)
>
> Thanks for any advice!
>
> Steve
More information about the Ale
mailing list