kernel-install: support full set of config files and drop-ins

This brings the handling of config for kernel-install in line with most of
systemd, i.e. we search the set of paths for the main config file, and the full
set of drop-in paths for drop-ins.

This mirrors what 07f5e35fe7 did for udev.conf.
That change worked out fine, so I hope this one will too.

The update in the man page is minimal. I think we should split out a separate
page for the config file later on.

One motivating use case is to allow a drop-in to be created for temporary
config overrides and then removed after the operation is done.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2024-03-07 19:14:36 +01:00
parent b83a59f8a7
commit db26d8025e
3 changed files with 65 additions and 54 deletions
+16 -3
View File
@@ -510,8 +510,12 @@
<para><varname>$KERNEL_INSTALL_CONF_ROOT</varname> can be set to override the location of the
configuration files read by <command>kernel-install</command>. When set,
<filename>install.conf</filename>, <filename>entry-token</filename>, and other files will be
read from this directory.</para>
<filename>install.conf</filename>, <filename>entry-token</filename>, and other files will be read from
this directory only. Note that this path is relative to the host, and in particular <emphasis>symlinks
in this directory are resolved relative to the host</emphasis>, even if
<option>--root=<replaceable>root</replaceable></option> is used. This means that it is generally
<emphasis>not</emphasis> correct to use this variable to specify a directory underneath
<replaceable>root</replaceable> if symlinks are used there.</para>
<para><varname>$KERNEL_INSTALL_PLUGINS</varname> can be set to override the list of plugins executed by
<command>kernel-install</command>. The argument is a whitespace-separated list of paths.
@@ -639,14 +643,23 @@
</varlistentry>
<varlistentry>
<term><filename>/etc/kernel/install.conf</filename></term>
<term><filename>/run/kernel/install.conf</filename></term>
<term><filename>/usr/local/lib/kernel/install.conf</filename></term>
<term><filename>/usr/lib/kernel/install.conf</filename></term>
<term><filename>/etc/kernel/install.conf.d/*.conf</filename></term>
<term><filename>/run/kernel/install.conf.d/*.conf</filename></term>
<term><filename>/usr/local/lib/kernel/install.conf.d/*.conf</filename></term>
<term><filename>/usr/lib/kernel/install.conf.d/*.conf</filename></term>
<listitem>
<para>Configuration file with options for <command>kernel-install</command>, as a series of
<varname>KEY=</varname><replaceable>VALUE</replaceable> assignments, compatible with shell syntax,
following the same rules as described in
<citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>. The
first of the files that is found will be used. <varname>$KERNEL_INSTALL_CONF_ROOT</varname> may be
used to override the search path; see below for details.</para>
used to override the search path; see below for details. Drop-in files may also be used
to extend the configuration with overrides, see
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para>
<para>Currently, the following keys are supported:
<varname>MACHINE_ID=</varname>,