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
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.serviceAfter=local-fs.target
[Service]Type=oneshotExectStart=/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