]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
firstboot: adjust what systemd.firstboot=no on the kernel cmdline does
authorLennart Poettering <lennart@poettering.net>
Thu, 30 Nov 2023 17:25:53 +0000 (18:25 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 18 Dec 2023 10:10:47 +0000 (11:10 +0100)
So far by setting systemd.firstboot=no simply short-cut the whole tool
and made it exit early. This is against what the docs say though: they
just claim the user isn't asked for questions anymore. Let's change
behaviour so that the code actually matches the docs, or more
specifically: if credentials are passed into firstboot, then honour
them, regardless of the kernel cmdline option.

After all, if we get explicit data passed in we should operate on it,
and then leave systemd.firstboot=no just affect the interactivity.

I think this was actually mostly a bug introduced because the credential
stuff was added after the kernel cmdline option, hence this just catches
up with the new addition.

src/firstboot/firstboot.c

index 17d344e98037800875ba4ee1d70c37dd55325d61..129b73c80c56a89ed98bd85715de9e8a54fe23c5 100644 (file)
@@ -1655,8 +1655,8 @@ static int run(int argc, char *argv[]) {
                 if (r < 0)
                         return log_error_errno(r, "Failed to parse systemd.firstboot= kernel command line argument, ignoring: %m");
                 if (r > 0 && !enabled) {
-                        log_debug("Found systemd.firstboot=no kernel command line argument, terminating.");
-                        return 0; /* disabled */
+                        log_debug("Found systemd.firstboot=no kernel command line argument, turning off all prompts.");
+                        arg_prompt_locale = arg_prompt_keymap = arg_prompt_timezone = arg_prompt_hostname = arg_prompt_root_password = arg_prompt_root_shell = false;
                 }
         }