I think the main problem you are running into is the DefaultDependencies
option. When this is set to on, several default dependencies are being
enforced which make sure that at least a basic system is up and running
before anything else is started. When you want to start something before
the basic system is up and running and want, for example, just to be
sure that all the filesystems are mounted, you can do something like this:
[Unit]
DefaultDependencies=no
After=local-fs.service
Before=dependent_service1.service dependent_service2.service
Conflicts=shutdown.target initrd-switch-root.target
[Service]
Type=oneshot
TimeoutStartSec=600
RemainAfterExit=yes
ExecStart=<your startup script>
[Install]
WantedBy=sysinit.target
Best regards,
Jan Hugo Prins
Op 26-09-2023 om 12:50 schreef Mark Rogers:
I'm sure this is trivial but I've gone round in circles without success.
I have a script which reads from an SQLite database and generates
various system configuration files - at the moment these are
dhcpcd.conf and wpa_supplicant.conf but this might grow in future.
As such the only dependency the script has is that the filesystem is
up and running. But the script must complete before anything that the
script manages the configuration file for.
My current unit looks like this:
[Unit]
Before=networking.service
After=local-fs.target
[Service]
Type=oneshot
ExectStart=/path/to/script
[Install]
RequiredBy=network.target
Where am I going wrong and what is the right way to do this?
I've also tried Before=network-pre.target and Wants=network-pre.target
without success - it was that not working that set me off trying to
fix it.
--
Mark Rogers