kernel-installsystemdkernel-install8kernel-installAdd and remove kernel and initramfs images to and from /bootkernel-installCOMMANDOPTIONSKERNEL-VERSIONKERNEL-IMAGEINITRD-FILEDescriptionkernel-install is used to install and remove kernel and initramfs images to and
from the boot loader partition, referred to as $BOOT here. It will usually be one of
/boot/, /efi/, or /boot/efi/, see below.
kernel-install will execute the files
located in the directory /usr/lib/kernel/install.d/
and the local administration directory /etc/kernel/install.d/.
All files are collectively sorted and executed in lexical order, regardless of the directory in
which they live. However, files with identical filenames replace each other.
Files in /etc/kernel/install.d/ take precedence over files with the same name
in /usr/lib/kernel/install.d/. This can be used to override a system-supplied
executables with a local file if needed; a symbolic link in /etc/kernel/install.d/
with the same name as an executable in /usr/lib/kernel/install.d/,
pointing to /dev/null, disables the executable entirely. Executables must have the
extension .install; other extensions are ignored.An executable should return 0 on success. It may also
return 77 to cause the whole operation to terminate
(executables later in lexical order will be skipped).CommandsThe following commands are understood:add KERNEL-VERSIONKERNEL-IMAGE [INITRD-FILE ...]This command expects a kernel version string and a path to a kernel image file as
arguments. kernel-install calls the executables from
/usr/lib/kernel/install.d/*.install and
/etc/kernel/install.d/*.install with the following arguments:
add KERNEL-VERSION$BOOT/MACHINE-ID/KERNEL-VERSION/KERNEL-IMAGE [INITRD-FILE ...]Two default plugins execute the following operations in this case:kernel-install creates
$BOOT/MACHINE-ID/KERNEL-VERSION,
if enabled (see $KERNEL_INSTALL_LAYOUT=).50-depmod.install runs
depmod8 for the
KERNEL-VERSION.90-loaderentry.install
copies KERNEL-IMAGE to
$BOOT/MACHINE-ID/KERNEL-VERSION/linux.
If INITRD-FILEs are provided, it also copies them to
$BOOT/MACHINE-ID/KERNEL_VERSION/INITRD-FILE.
It also creates a boot loader entry according to the Boot Loader Specification in
$BOOT/loader/entries/MACHINE-ID-KERNEL-VERSION.conf.
The title of the entry is the PRETTY_NAME parameter specified in
/etc/os-release or /usr/lib/os-release (if the former is
missing), or "Linux KERNEL-VERSION", if unset.If $KERNEL_INSTALL_LAYOUT= is not "bls", this plugin does nothing.remove KERNEL-VERSIONThis command expects a kernel version string as single argument. This calls executables from
/usr/lib/kernel/install.d/*.install and
/etc/kernel/install.d/*.install with the following arguments:
remove KERNEL-VERSION$BOOT/MACHINE-ID/KERNEL-VERSION/Afterwards, kernel-install removes the directory
$BOOT/MACHINE-ID/KERNEL-VERSION/
and its contents.Two default plugins execute the following operations in this case:50-depmod.install removes the files generated by depmod for this kernel again.90-loaderentry.install removes the file
$BOOT/loader/entries/MACHINE-ID-KERNEL-VERSION.conf.kernel-install removes
$BOOT/MACHINE-ID/KERNEL-VERSION,
if enabled (see $KERNEL_INSTALL_LAYOUT=).The $BOOT partitionThe partition where the kernels and Boot
Loader Specification snippets are located is called $BOOT.
kernel-install determines the location of this partition by checking
/efi/, /boot/, and /boot/efi/
in turn. The first location where $BOOT/loader/entries/ or
$BOOT/$MACHINE_ID/ exists is used.OptionsThe following options are understood:Output additional information about operations being performed.Environment variablesIf is used, $KERNEL_INSTALL_VERBOSE=1 will be set for
the plugins. They may output additional logs in this case.If MACHINE_ID= is set and not empty, it will be used as MACHINE-ID,
overriding any automatic detection attempts. The value must be a valid machine ID (32 hexadecimal characters).KERNEL_INSTALL_MACHINE_ID= is set for the plugins to the desired MACHINE-ID –
either 32 hexadecimal characters or the special value Default.KERNEL_INSTALL_BOOT_ROOT= is set for the plugins to the root directory (mount point, usually) of the hierarchy
where boot-loader entries, kernel images, and associated resources should be placed. Can be overridden by setting BOOT_ROOT=.KERNEL_INSTALL_LAYOUT=bls|other|... is set for the plugins to specify the installation layout.
Defaults to if $BOOT/MACHINE-ID exists, or otherwise.
Additional layout names may be defined by convention. If a plugin uses a special layout,
it's encouraged to declare its own layout name and configure layout= in install.conf upon initial installation.KERNEL_INSTALL_INITRD_GENERATOR=... is set for plugins to select the initrd generator.
This should be configured as initrd_generator= in install.conf.
KERNEL_INSTALL_STAGING_AREA=... is set for plugins to a path to a directory.
Plugins may drop files in that directory, and they will be installed as part of the loader entry, based
on the file name and extension.blsStandard Boot Loader Specification layout,
compatible with systemd-boot7: entries in
$BOOT/loader/entries/MACHINE-ID-KERNEL-VERSION[+TRIES].conf,
kernel and initrds under $BOOT/MACHINE-ID/KERNEL-VERSION/Provided by 90-loaderentry.install.otherSome other layout not understood natively by kernel-install.Exit statusIf every executable returns 0 or 77, 0 is returned, and a non-zero failure code otherwise.Files/usr/lib/kernel/install.d/*.install/etc/kernel/install.d/*.installDrop-in files which are executed by kernel-install./usr/lib/kernel/cmdline/etc/kernel/cmdline/proc/cmdlineRead by 90-loaderentry.install. The content of the file
/etc/kernel/cmdline specifies the kernel command line to use. If that file does not
exist, /usr/lib/kernel/cmdline is used. If that also does not exist,
/proc/cmdline is used./etc/kernel/triesRead by 90-loaderentry.install. If this file exists a numeric value is read from
it and the naming of the generated entry file is slightly altered to include it as
$BOOT/loader/entries/MACHINE-ID-KERNEL-VERSION+TRIES.conf. This
is useful for boot loaders such as
systemd-boot7 which
implement boot attempt counting with a counter embedded in the entry file name./etc/machine-idThe content of this file specifies the machine identification
MACHINE-ID. If /etc/machine-id
cannot be read or is temporary (backed by a file on tmpfs),
kernel-install will use Default instead./etc/machine-infoIf this file contains the KERNEL_INSTALL_MACHINE_ID variable,
kernel-install will use it as MACHINE-ID instead of
the contents of /etc/machine-id. If the variable is not found in
/etc/machine-info, kernel-install will try to save the
machine ID it uses to install to $BOOT to this file./etc/os-release/usr/lib/os-releaseRead by 90-loaderentry.install.
If available, PRETTY_NAME is read from these files and used as the title of the boot menu entry.
Otherwise, Linux KERNEL-VERSION will be used./usr/lib/kernel/install.conf/etc/kernel/install.confConfiguration options for kernel-install,
as a series of KEY=VALUE assignments,
compatible with shell syntax.
See the Environment variables section for supported keys.See Alsomachine-id5,
os-release5,
depmod8,
systemd-boot7,
Boot Loader Specification