mirror of
https://github.com/systemd/systemd.git
synced 2024-12-01 06:13:38 +08:00
Add multiple initrd file support to kernel-install
Instead of having just a single INITRD field, add support for all additional parameters being INITRD fields in order. Signed-off-by: Mike Auty <mike.auty@gmail.com>
This commit is contained in:
parent
72de945726
commit
0912c0b80e
@ -29,7 +29,7 @@
|
|||||||
<arg choice="plain">COMMAND</arg>
|
<arg choice="plain">COMMAND</arg>
|
||||||
<arg choice="plain"><replaceable>KERNEL-VERSION</replaceable></arg>
|
<arg choice="plain"><replaceable>KERNEL-VERSION</replaceable></arg>
|
||||||
<arg choice="plain"><replaceable>KERNEL-IMAGE</replaceable></arg>
|
<arg choice="plain"><replaceable>KERNEL-IMAGE</replaceable></arg>
|
||||||
<arg choice="opt"><replaceable>INITRD-FILE</replaceable></arg>
|
<arg choice="opt" rep="repeat"><replaceable>INITRD-FILE</replaceable></arg>
|
||||||
</cmdsynopsis>
|
</cmdsynopsis>
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
|
|
||||||
@ -62,7 +62,7 @@
|
|||||||
<para>The following commands are understood:</para>
|
<para>The following commands are understood:</para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><command>add <replaceable>KERNEL-VERSION</replaceable> <replaceable>KERNEL-IMAGE</replaceable> [<replaceable>INITRD-FILE</replaceable>]</command></term>
|
<term><command>add <replaceable>KERNEL-VERSION</replaceable> <replaceable>KERNEL-IMAGE</replaceable> [<replaceable>INITRD-FILE</replaceable> ...]</command></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>This command expects a kernel version string and a path to a kernel image file as
|
<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
|
arguments. <command>kernel-install</command> creates the directory
|
||||||
@ -70,7 +70,7 @@
|
|||||||
and calls the executables from <filename>/usr/lib/kernel/install.d/*.install</filename> and
|
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:
|
<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> <replaceable>INITRD-FILE</replaceable></programlisting>
|
<programlisting>add <replaceable>KERNEL-VERSION</replaceable> <filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/</filename> <replaceable>KERNEL-IMAGE</replaceable> [<replaceable>INITRD-FILE</replaceable> ...]</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>Two default plugins execute the following operations in this case:</para>
|
<para>Two default plugins execute the following operations in this case:</para>
|
||||||
@ -84,9 +84,9 @@
|
|||||||
<listitem><para><filename>90-loaderentry.install</filename> copies <replaceable>KERNEL-IMAGE</replaceable>
|
<listitem><para><filename>90-loaderentry.install</filename> copies <replaceable>KERNEL-IMAGE</replaceable>
|
||||||
to
|
to
|
||||||
<filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/linux</filename>.
|
<filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/linux</filename>.
|
||||||
If <replaceable>INITRD-FILE</replaceable> is provided, it also copies <replaceable>INITRD-FILE</replaceable>
|
If an <replaceable>INITRD-FILE</replaceable> is provided, it also copies <replaceable>INITRD-FILE</replaceable>
|
||||||
to
|
to
|
||||||
<filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL_VERSION</replaceable>/initrd</filename>.
|
<filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL_VERSION</replaceable>/<replaceable>INITRD-FILE</replaceable></filename>.
|
||||||
It also creates a boot loader entry according to the <ulink
|
It also creates a boot loader entry according to the <ulink
|
||||||
url="https://systemd.io/BOOT_LOADER_SPECIFICATION">Boot Loader Specification</ulink> in
|
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>.
|
<filename>/boot/loader/entries/<replaceable>MACHINE-ID</replaceable>-<replaceable>KERNEL-VERSION</replaceable>.conf</filename>.
|
||||||
|
@ -6,7 +6,7 @@ COMMAND="$1"
|
|||||||
KERNEL_VERSION="$2"
|
KERNEL_VERSION="$2"
|
||||||
BOOT_DIR_ABS="$3"
|
BOOT_DIR_ABS="$3"
|
||||||
KERNEL_IMAGE="$4"
|
KERNEL_IMAGE="$4"
|
||||||
INITRD_FILE="$5"
|
INITRD_OPTIONS_START="5"
|
||||||
|
|
||||||
if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then
|
if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then
|
||||||
exit 0
|
exit 0
|
||||||
@ -83,14 +83,17 @@ cp "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" &&
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ -f "${INITRD_FILE}" ]]; then
|
for initrd in "${@:${INITRD_OPTIONS_START}}"; do
|
||||||
cp "${INITRD_FILE}" "$BOOT_DIR_ABS/initrd" &&
|
if [[ -f "${initrd}" ]]; then
|
||||||
chown root:root "$BOOT_DIR_ABS/initrd" &&
|
initrd_basename="$(basename ${initrd})"
|
||||||
chmod 0644 "$BOOT_DIR_ABS/initrd" || {
|
cp "${initrd}" "$BOOT_DIR_ABS/${initrd_basename}" &&
|
||||||
echo "Could not copy '$INITRD_FILE' to '$BOOT_DIR_ABS/initrd'." >&2
|
chown root:root "$BOOT_DIR_ABS/${initrd_basename}" &&
|
||||||
exit 1
|
chmod 0644 "$BOOT_DIR_ABS/${initrd_basename}" || {
|
||||||
}
|
echo "Could not copy '${initrd}' to '$BOOT_DIR_ABS/${initrd_basename}'." >&2
|
||||||
fi
|
exit 1
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
mkdir -p "${LOADER_ENTRY%/*}" || {
|
mkdir -p "${LOADER_ENTRY%/*}" || {
|
||||||
echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2
|
echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2
|
||||||
@ -103,8 +106,10 @@ mkdir -p "${LOADER_ENTRY%/*}" || {
|
|||||||
echo "machine-id $MACHINE_ID"
|
echo "machine-id $MACHINE_ID"
|
||||||
echo "options ${BOOT_OPTIONS[*]}"
|
echo "options ${BOOT_OPTIONS[*]}"
|
||||||
echo "linux $BOOT_DIR/linux"
|
echo "linux $BOOT_DIR/linux"
|
||||||
[[ -f $BOOT_DIR_ABS/initrd ]] && \
|
for initrd in "${@:${INITRD_OPTIONS_START}}"; do
|
||||||
echo "initrd $BOOT_DIR/initrd"
|
[[ -f $BOOT_DIR_ABS/$(basename ${initrd}) ]] && \
|
||||||
|
echo "initrd $BOOT_DIR/$(basename ${initrd})"
|
||||||
|
done
|
||||||
:
|
:
|
||||||
} > "$LOADER_ENTRY" || {
|
} > "$LOADER_ENTRY" || {
|
||||||
echo "Could not create loader entry '$LOADER_ENTRY'." >&2
|
echo "Could not create loader entry '$LOADER_ENTRY'." >&2
|
||||||
|
@ -24,7 +24,7 @@ SKIP_REMAINING=77
|
|||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
echo "Usage:"
|
echo "Usage:"
|
||||||
echo " $0 add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE]"
|
echo " $0 add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE ...]"
|
||||||
echo " $0 remove KERNEL-VERSION"
|
echo " $0 remove KERNEL-VERSION"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ fi
|
|||||||
|
|
||||||
KERNEL_VERSION="$1"
|
KERNEL_VERSION="$1"
|
||||||
KERNEL_IMAGE="$2"
|
KERNEL_IMAGE="$2"
|
||||||
INITRD_FILE="$3"
|
INITRD_OPTIONS_START="3"
|
||||||
|
|
||||||
if [[ -f /etc/machine-id ]]; then
|
if [[ -f /etc/machine-id ]]; then
|
||||||
read MACHINE_ID < /etc/machine-id
|
read MACHINE_ID < /etc/machine-id
|
||||||
@ -124,7 +124,7 @@ case $COMMAND in
|
|||||||
|
|
||||||
for f in "${PLUGINS[@]}"; do
|
for f in "${PLUGINS[@]}"; do
|
||||||
if [[ -x $f ]]; then
|
if [[ -x $f ]]; then
|
||||||
"$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" "$KERNEL_IMAGE" "$INITRD_FILE"
|
"$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" "$KERNEL_IMAGE" "${@:${INITRD_OPTIONS_START}}"
|
||||||
x=$?
|
x=$?
|
||||||
if [[ $x == $SKIP_REMAINING ]]; then
|
if [[ $x == $SKIP_REMAINING ]]; then
|
||||||
ret=0
|
ret=0
|
||||||
|
Loading…
Reference in New Issue
Block a user