Deprecate efivar SystemdOptions

As mentioned in the NEWS entry, it seems to see very little use, but adds
complexity in our code. It was added mainly with the goal of making it easier
for people using grub2 to modify their boot configuration, but grub2 is gaining
support for BLS snippets. On the systemd side, we now have credentials. So
let's deprecate this, and if there's no outcry, remove it in a few releases.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2023-07-17 20:55:47 +02:00
parent 96d384ca4f
commit 7e90814f0a
4 changed files with 20 additions and 3 deletions

7
NEWS
View File

@@ -23,6 +23,13 @@ CHANGES WITH 254 in spe:
*now* to include a native systemd unit file instead of a legacy
System V script to retain compatibility with future systemd releases.
* Support for the SystemdOptions EFI variable is deprecated.
'bootctl systemd-efi-options' will emit a warning when used. It seems
that this feature is little-used and it is better to use alternative
approaches like credentials and confexts. The plan is to drop support
altogether at a later point, but this might be revisited based on
user feedback.
* EnvironmentFile= now treats the line following a comment line
trailing with escape as a non comment line. For details, see:
https://github.com/systemd/systemd/issues/27975

View File

@@ -77,7 +77,10 @@
<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>
meaning of that variable.</para>
<para>Note: use of <literal>SystemdOptions</literal> and this command is deprecated.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@@ -769,8 +769,11 @@
the command line arguments passed to systemd itself, next to any of the command line options listed in
the Options section above. If run outside of Linux containers, these arguments are parsed from
<filename>/proc/cmdline</filename> and from the <literal>SystemdOptions</literal> EFI variable
(on EFI systems) instead. Options from <filename>/proc/cmdline</filename> have higher priority. The
following variables are understood:</para>
(on EFI systems) instead. Options from <filename>/proc/cmdline</filename> have higher priority.</para>
<para>Note: use of <literal>SystemdOptions</literal> is deprecated.</para>
<para>The following variables are understood:</para>
<variablelist class='kernel-commandline-options'>
<varlistentry>

View File

@@ -1,12 +1,16 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bootctl.h"
#include "bootctl-systemd-efi-options.h"
#include "efi-loader.h"
int verb_systemd_efi_options(int argc, char *argv[], void *userdata) {
int r;
if (!arg_quiet)
log_notice("Use of the SystemdOptions EFI variable is deprecated.");
if (argc == 1) {
_cleanup_free_ char *line = NULL, *new = NULL;