summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-12-09 01:11:42 +0100
committerLennart Poettering <lennart@poettering.net>2016-12-20 20:00:09 +0100
commitf582cbca0029d3867620dfa7df86534d2a241275 (patch)
treefb4125bbbb485b1f35685206106aa6bb52b0e201
parent710028b473c39446954b72c0d9dadb76cc7f81f8 (diff)
firstboot: add kernel cmdline option to disable firstboot wizard
If booting with systemd.firstboot=0 the wizard will be skipped.
-rw-r--r--man/kernel-command-line.xml12
-rw-r--r--man/systemd-firstboot.xml14
-rw-r--r--src/firstboot/firstboot.c13
3 files changed, 38 insertions, 1 deletions
diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
index 1fa31a14b7..c86e45265f 100644
--- a/man/kernel-command-line.xml
+++ b/man/kernel-command-line.xml
@@ -353,6 +353,15 @@
<citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><varname>systemd.firstboot=</varname></term>
+
+ <listitem><para>Takes a boolean argument, defaults to on. If off,
+ <citerefentry><refentrytitle>systemd-firstboot.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ will not query the user for basic system settings, even if the system boots up for the first time and the
+ relevant settings are not initialized yet.</para></listitem>
+ </varlistentry>
</variablelist>
</refsect1>
@@ -376,7 +385,8 @@
<citerefentry><refentrytitle>systemd-modules-load.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-backlight@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-rfkill.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd-firstboot.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
</para>
</refsect1>
diff --git a/man/systemd-firstboot.xml b/man/systemd-firstboot.xml
index b269e48113..4e3b1a3a81 100644
--- a/man/systemd-firstboot.xml
+++ b/man/systemd-firstboot.xml
@@ -241,6 +241,20 @@
</refsect1>
<refsect1>
+ <title>Kernel Command Line</title>
+
+ <variablelist class='kernel-commandline-options'>
+ <varlistentry>
+ <term><varname>systemd.firstboot=</varname></term>
+
+ <listitem><para>Takes a boolean argument, defaults to on. If off <filename>systemd-firstboot.service</filename>
+ won't interactively query the user for basic settings at first boot, even if if the settings are not
+ initialized yet.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
index c9e8e54ee3..7c615abbc5 100644
--- a/src/firstboot/firstboot.c
+++ b/src/firstboot/firstboot.c
@@ -33,6 +33,7 @@
#include "mkdir.h"
#include "parse-util.h"
#include "path-util.h"
+#include "proc-cmdline.h"
#include "random-util.h"
#include "string-util.h"
#include "strv.h"
@@ -825,6 +826,7 @@ static int parse_argv(int argc, char *argv[]) {
}
int main(int argc, char *argv[]) {
+ _cleanup_free_ char *enabled = NULL;
int r;
r = parse_argv(argc, argv);
@@ -837,6 +839,17 @@ int main(int argc, char *argv[]) {
umask(0022);
+ r = get_proc_cmdline_key("systemd.firstboot=", &enabled);
+ if (r < 0)
+ return r;
+ if (r > 0) {
+ r = parse_boolean(enabled);
+ if (r == 0)
+ goto finish;
+ if (r < 0)
+ log_warning_errno(r, "Failed to parse systemd.firstboot= kernel command line argument, ignoring: %s", enabled);
+ }
+
r = process_locale();
if (r < 0)
goto finish;