]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bootctl: add "system-options" verb 13246/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 1 Aug 2019 15:15:59 +0000 (17:15 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 16 Sep 2019 16:08:54 +0000 (18:08 +0200)
man/bootctl.xml
man/kernel-command-line.xml
src/boot/bootctl.c

index 822d07a606b8e325d83435bfae1fe8c4e8113ed0..7ce41b70f99e043a0877543400881f270175adf2 100644 (file)
         and the firmware's boot loader list.</para></listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><option>is-installed</option></term>
+
+        <listitem><para>Checks whether <command>systemd-boot</command> is installed in the ESP. Note that a
+        single ESP might host multiple boot loaders; this hence checks whether
+        <command>systemd-boot</command> is one (of possibly many) installed boot loaders — and neither
+        whether it is the default nor whether it is registered in any EFI variables.</para></listitem>
+      </varlistentry>
+
       <varlistentry>
         <term><option>random-seed</option></term>
 
       </varlistentry>
 
       <varlistentry>
-        <term><option>is-installed</option></term>
+        <term><option>system-options</option> <optional><replaceable>VALUE</replaceable></optional></term>
 
-        <listitem><para>Checks whether <command>systemd-boot</command> is installed in the ESP. Note that a
-        single ESP might host multiple boot loaders; this hence checks whether
-        <command>systemd-boot</command> is one (of possibly many) installed boot loaders — and neither
-        whether it is the default nor whether it is registered in any EFI variables.</para></listitem>
+        <listitem><para>When called without the optional argument, prints the current value of the
+        <literal>SystemdOptions</literal> EFI variable. When called with an argument, sets the
+        variable to that value. See
+        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+        for the meaning of that variable.</para></listitem>
       </varlistentry>
 
       <varlistentry>
index a79be5997dcb6d9ec64a860e90ce4308cb3c4bd4..848f5ec4435e36c68e2797335b728081bd13cb4b 100644 (file)
         <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-firstboot.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+        <citerefentry><refentrytitle>systemd-firstboot.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+        <citerefentry><refentrytitle>bootctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
       </para>
   </refsect1>
 
index 097c796a4e553e66e6057c50db4de903e8aba9dd..2c8163360fac47253e523bd2c6fe3e5c1754c7a1 100644 (file)
@@ -1052,8 +1052,9 @@ static int help(int argc, char *argv[], void *userdata) {
                "     install           Install systemd-boot to the ESP and EFI variables\n"
                "     update            Update systemd-boot in the ESP and EFI variables\n"
                "     remove            Remove systemd-boot from the ESP and EFI variables\n"
-               "     random-seed       Initialize random seed in ESP and EFI variables\n"
                "     is-installed      Test whether systemd-boot is installed in the ESP\n"
+               "     random-seed       Initialize random seed in ESP and EFI variables\n"
+               "     system-options    Query or set system options string in EFI variable\n"
                "\nBoot Loader Entries Commands:\n"
                "     list              List boot loader entries\n"
                "     set-default ID    Set default boot loader entry\n"
@@ -1710,18 +1711,40 @@ static int verb_random_seed(int argc, char *argv[], void *userdata) {
         return 0;
 }
 
+static int verb_system_options(int argc, char *argv[], void *userdata) {
+        int r;
+
+        if (argc == 1) {
+                _cleanup_free_ char *line = NULL;
+
+                r = efi_systemd_options_variable(&line);
+                if (r < 0)
+                        return log_error_errno(r, "Failed to query SystemdOptions EFI variable: %m");
+
+                printf("SystemdOptions: %s\n", line);
+
+        } else {
+                r = efi_set_variable_string(EFI_VENDOR_SYSTEMD, "SystemdOptions", argv[1]);
+                if (r < 0)
+                        return log_error_errno(r, "Failed to set SystemdOptions EFI variable: %m");
+        }
+
+        return 0;
+}
+
 static int bootctl_main(int argc, char *argv[]) {
         static const Verb verbs[] = {
-                { "help",         VERB_ANY, VERB_ANY, 0,            help              },
-                { "status",       VERB_ANY, 1,        VERB_DEFAULT, verb_status       },
-                { "install",      VERB_ANY, 1,        0,            verb_install      },
-                { "update",       VERB_ANY, 1,        0,            verb_install      },
-                { "remove",       VERB_ANY, 1,        0,            verb_remove       },
-                { "random-seed",  VERB_ANY, 1,        0,            verb_random_seed  },
-                { "is-installed", VERB_ANY, 1,        0,            verb_is_installed },
-                { "list",         VERB_ANY, 1,        0,            verb_list         },
-                { "set-default",  2,        2,        0,            verb_set_default  },
-                { "set-oneshot",  2,        2,        0,            verb_set_default  },
+                { "help",           VERB_ANY, VERB_ANY, 0,            help                },
+                { "status",         VERB_ANY, 1,        VERB_DEFAULT, verb_status         },
+                { "install",        VERB_ANY, 1,        0,            verb_install        },
+                { "update",         VERB_ANY, 1,        0,            verb_install        },
+                { "remove",         VERB_ANY, 1,        0,            verb_remove         },
+                { "is-installed",   VERB_ANY, 1,        0,            verb_is_installed   },
+                { "list",           VERB_ANY, 1,        0,            verb_list           },
+                { "set-default",    2,        2,        0,            verb_set_default    },
+                { "set-oneshot",    2,        2,        0,            verb_set_default    },
+                { "random-seed",    VERB_ANY, 1,        0,            verb_random_seed    },
+                { "system-options", VERB_ANY, 2,        0,            verb_system_options },
                 {}
         };