]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: disable "update" units in the initramfs 19837/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 7 Jun 2021 11:29:19 +0000 (13:29 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 7 Jun 2021 11:40:08 +0000 (13:40 +0200)
Initially I wanted to add ConditionPathExists=!/etc/initrd-release in various
units (ldconfig.service, systemd-sysusers.service, systemd-hwdb-update.service,
systemd-journal-catalog-update, systemd-update-done.service), but I think it's
better to just disable the mechanism in the initrd altogether. Initrd images
are put together in a very particular way, and there is not need to do
post-update steps on them. If a unit from some other package winds up in the
initrd, we wouldn't want to invoke it either.

Also, any modifications are ephemeral, so any update would happen on every
use. And finally, initrd images are all about speed, and we shouldn't invoke
any unneeded services.

src/shared/condition.c

index d4d9eacc4bd11c5f8ea8522655cd8327b8cd290e..b86312548d06191ea987325c5de4f46fc5ea021e 100644 (file)
@@ -675,6 +675,11 @@ static int condition_test_needs_update(Condition *c, char **env) {
         if (r > 0)
                 return b;
 
+        if (in_initrd()) {
+                log_debug("We are in an initrd, not doing any updates.");
+                return false;
+        }
+
         if (!path_is_absolute(c->parameter)) {
                 log_debug("Specified condition parameter '%s' is not absolute, assuming an update is needed.", c->parameter);
                 return true;