2018-07-03 00:15:39 +03:00
<?xml version='1.0'?>
2013-02-22 20:18:47 +04:00
< !DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2015-06-18 20:47:44 +03:00
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
2013-02-22 20:18:47 +04:00
<!--
2017-11-18 19:22:32 +03:00
SPDX-License-Identifier: LGPL-2.1+
2013-02-22 20:18:47 +04:00
-->
<refentry id= "kernel-install" >
<refentryinfo >
<title > kernel-install</title>
<productname > systemd</productname>
</refentryinfo>
<refmeta >
<refentrytitle > kernel-install</refentrytitle>
<manvolnum > 8</manvolnum>
</refmeta>
<refnamediv >
<refname > kernel-install</refname>
<refpurpose > Add and remove kernel and initramfs images to and from /boot</refpurpose>
</refnamediv>
<refsynopsisdiv >
<cmdsynopsis >
2013-05-03 08:55:20 +04:00
<command > kernel-install</command>
<arg choice= "plain" > COMMAND</arg>
<arg choice= "plain" > <replaceable > KERNEL-VERSION</replaceable> </arg>
<arg choice= "opt" > <replaceable > KERNEL-IMAGE</replaceable> </arg>
2013-02-22 20:18:47 +04:00
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 >
<title > Description</title>
<para >
<command > kernel-install</command> is used to install and remove kernel and
initramfs images to and from <filename > /boot</filename> .
</para>
2013-05-03 08:55:20 +04:00
<para > <command > kernel-install</command> will execute the files
located in the directory <filename > /usr/lib/kernel/install.d/</filename>
2013-02-22 20:18:47 +04:00
and the local administration directory <filename > /etc/kernel/install.d/</filename> .
2013-05-03 08:55:20 +04:00
All files are collectively sorted and executed in lexical order, regardless of the directory in
2013-06-27 23:51:44 +04:00
which they live. However, files with identical filenames replace each other.
2013-02-22 20:18:47 +04:00
Files in <filename > /etc/kernel/install.d/</filename> take precedence over files with the same name
in <filename > /usr/lib/kernel/install.d/</filename> . This can be used to override a system-supplied
executables with a local file if needed; a symbolic link in <filename > /etc/kernel/install.d/</filename>
with the same name as an executable in <filename > /usr/lib/kernel/install.d/</filename> ,
2016-09-24 16:03:54 +03:00
pointing to <filename > /dev/null</filename> , disables the executable entirely. Executables must have the
2013-07-02 07:44:04 +04:00
extension <literal > .install</literal> ; other extensions are ignored.</para>
2013-02-22 20:18:47 +04:00
2016-09-24 16:03:54 +03:00
<para > An executable should return <constant > 0</constant> on success. It may also
return <constant > 77</constant> to cause the whole operation to terminate
(executables later in lexical order will be skipped).</para>
2013-02-22 20:18:47 +04:00
</refsect1>
<refsect1 >
<title > Commands</title>
<para > The following commands are understood:</para>
<variablelist >
<varlistentry >
2013-05-03 08:55:20 +04:00
<term > <command > add <replaceable > KERNEL-VERSION</replaceable> <replaceable > KERNEL-IMAGE</replaceable> </command> </term>
2013-02-22 20:18:47 +04:00
<listitem >
2018-06-22 19:14:22 +03:00
<para > This command expects a kernel version string and a path to a kernel image file as
arguments. <command > kernel-install</command> creates the directory
2013-04-30 20:01:47 +04:00
<filename > /boot/<replaceable > MACHINE-ID</replaceable> /<replaceable > KERNEL-VERSION</replaceable> /</filename>
2018-06-22 19:14:22 +03:00
and calls the executables from <filename > /usr/lib/kernel/install.d/*.install</filename> and
<filename > /etc/kernel/install.d/*.install</filename> with the following arguments:
<programlisting > add <replaceable > KERNEL-VERSION</replaceable> <filename > /boot/<replaceable > MACHINE-ID</replaceable> /<replaceable > KERNEL-VERSION</replaceable> /</filename> <replaceable > KERNEL-IMAGE</replaceable> </programlisting>
2013-05-03 08:55:20 +04:00
</para>
2018-06-22 19:14:22 +03:00
<para > Two default plugins execute the following operations in this case:</para>
<itemizedlist >
<listitem > <para > <filename > 50-depmod.install</filename> runs
<citerefentry > <refentrytitle > depmod</refentrytitle> <manvolnum > 8</manvolnum> </citerefentry> for the
<replaceable > KERNEL-VERSION</replaceable> .</para> </listitem>
<listitem > <para > <filename > 90-loaderentry.install</filename> copies <replaceable > KERNEL-IMAGE</replaceable>
to
<filename > /boot/<replaceable > MACHINE-ID</replaceable> /<replaceable > KERNEL-VERSION</replaceable> /linux</filename> .
It also creates a boot loader entry according to the <ulink
url="https://systemd.io/BOOT_LOADER_SPECIFICATION">Boot Loader Specification</ulink> in
<filename > /boot/loader/entries/<replaceable > MACHINE-ID</replaceable> -<replaceable > KERNEL-VERSION</replaceable> .conf</filename> .
The title of the entry is the <replaceable > PRETTY_NAME</replaceable> parameter specified in
<filename > /etc/os-release</filename> or <filename > /usr/lib/os-release</filename> (if the former is
missing), or "Linux <replaceable > KERNEL-VERSION</replaceable> ", if unset. If the file
<filename > initrd</filename> is found next to the kernel image file, the initrd will be added to the
configuration.</para> </listitem>
</itemizedlist>
2013-02-22 20:18:47 +04:00
</listitem>
</varlistentry>
<varlistentry >
2013-04-30 20:01:47 +04:00
<term > <command > remove <replaceable > KERNEL-VERSION</replaceable> </command> </term>
2013-05-03 08:55:20 +04:00
<listitem >
2018-06-22 19:14:22 +03:00
<para > This command expects a kernel version string as single argument. This calls executables from
<filename > /usr/lib/kernel/install.d/*.install</filename> and
<filename > /etc/kernel/install.d/*.install</filename> with the following arguments:
2014-02-14 18:56:19 +04:00
<programlisting > remove <replaceable > KERNEL-VERSION</replaceable> <filename > /boot/<replaceable > MACHINE-ID</replaceable> /<replaceable > KERNEL-VERSION</replaceable> /</filename> </programlisting>
2013-05-03 08:55:20 +04:00
</para>
2018-06-22 19:14:22 +03:00
<para > Afterwards, <command > kernel-install</command> removes the directory
<filename > /boot/<replaceable > MACHINE-ID</replaceable> /<replaceable > KERNEL-VERSION</replaceable> /</filename>
and its contents.</para>
<para > Two default plugins execute the following operations in this case:</para>
<itemizedlist >
<listitem > <para > <filename > 50-depmod.install</filename> removes the files generated by <command > depmod</command> for this kernel again.</para> </listitem>
<listitem > <para > <filename > 90-loaderentry.install</filename> removes the file
<filename > /boot/loader/entries/<replaceable > MACHINE-ID</replaceable> -<replaceable > KERNEL-VERSION</replaceable> .conf</filename> .</para> </listitem>
</itemizedlist>
2013-04-30 20:01:47 +04:00
2013-02-22 20:18:47 +04:00
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 >
<title > Exit status</title>
2016-11-04 15:40:58 +03:00
<para > If every executable returns 0 or 77, 0 is returned, and a non-zero failure code otherwise.</para>
2013-02-22 20:18:47 +04:00
</refsect1>
<refsect1 >
<title > Files</title>
<variablelist >
<varlistentry >
<term >
<filename > /usr/lib/kernel/install.d/*.install</filename>
<filename > /etc/kernel/install.d/*.install</filename>
</term>
<listitem >
2013-07-02 07:44:04 +04:00
<para > Drop-in files which are executed by kernel-install.</para>
2013-02-22 20:18:47 +04:00
</listitem>
</varlistentry>
2013-02-25 22:29:16 +04:00
<varlistentry >
<term >
<filename > /etc/kernel/cmdline</filename>
<filename > /proc/cmdline</filename>
</term>
<listitem >
2018-06-22 19:14:22 +03:00
<para > Read by <filename > 90-loaderentry.install</filename> . The content of the file
<filename > /etc/kernel/cmdline</filename> specifies the kernel command line to use. If that file does not
exist, <filename > /proc/cmdline</filename> is used.</para>
</listitem>
</varlistentry>
<varlistentry >
<term >
<filename > /etc/kernel/tries</filename>
</term>
<listitem >
<para > Read by <filename > 90-loaderentry.install</filename> . 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
<filename > /boot/loader/entries/<replaceable > MACHINE-ID</replaceable> -<replaceable > KERNEL-VERSION</replaceable> +<replaceable > TRIES</replaceable> .conf</filename> . This
is useful for boot loaders such as
<citerefentry > <refentrytitle > systemd-boot</refentrytitle> <manvolnum > 7</manvolnum> </citerefentry> which
implement boot attempt counting with a counter embedded in the entry file name.</para>
2013-02-25 22:29:16 +04:00
</listitem>
</varlistentry>
<varlistentry >
<term >
<filename > /etc/machine-id</filename>
</term>
<listitem >
2013-05-03 08:55:20 +04:00
<para > The content of the file specifies the machine identification <replaceable > MACHINE-ID</replaceable> .</para>
2013-02-25 22:29:16 +04:00
</listitem>
</varlistentry>
<varlistentry >
<term >
<filename > /etc/os-release</filename>
2014-06-13 21:45:52 +04:00
<filename > /usr/lib/os-release</filename>
2013-02-25 22:29:16 +04:00
</term>
<listitem >
2013-04-30 20:01:47 +04:00
<para > The content of the file specifies the operating system title <replaceable > PRETTY_NAME</replaceable> .</para>
2013-02-25 22:29:16 +04:00
</listitem>
</varlistentry>
2013-02-22 20:18:47 +04:00
</variablelist>
</refsect1>
<refsect1 >
<title > See Also</title>
<para >
2013-02-25 22:29:16 +04:00
<citerefentry > <refentrytitle > machine-id</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > os-release</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> ,
2018-06-22 19:14:22 +03:00
<citerefentry > <refentrytitle > depmod</refentrytitle> <manvolnum > 8</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > systemd-boot</refentrytitle> <manvolnum > 7</manvolnum> </citerefentry> ,
2018-10-12 15:00:20 +03:00
<ulink url= "https://systemd.io/BOOT_LOADER_SPECIFICATION" > Boot Loader Specification</ulink>
2013-02-22 20:18:47 +04:00
</para>
</refsect1>
</refentry>