diff --git a/man/kernel-install.xml b/man/kernel-install.xml
index 84204df150..50e1320105 100644
--- a/man/kernel-install.xml
+++ b/man/kernel-install.xml
@@ -29,7 +29,7 @@
COMMAND
KERNEL-VERSION
KERNEL-IMAGE
- INITRD-FILE
+ INITRD-FILE
@@ -62,7 +62,7 @@
The following commands are understood:
- add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE]
+ add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE ...]
This command expects a kernel version string and a path to a kernel image file as
arguments. kernel-install creates the directory
@@ -70,7 +70,7 @@
and 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
+ add KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ KERNEL-IMAGE [INITRD-FILE ...]
Two default plugins execute the following operations in this case:
@@ -84,9 +84,9 @@
90-loaderentry.install copies KERNEL-IMAGE
to
/boot/MACHINE-ID/KERNEL-VERSION/linux.
- If INITRD-FILE is provided, it also copies INITRD-FILE
+ If an INITRD-FILE is provided, it also copies INITRD-FILE
to
- /boot/MACHINE-ID/KERNEL_VERSION/initrd.
+ /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.
diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install
index 3437bb3cbc..e5fb232f35 100644
--- a/src/kernel-install/90-loaderentry.install
+++ b/src/kernel-install/90-loaderentry.install
@@ -6,7 +6,7 @@ COMMAND="$1"
KERNEL_VERSION="$2"
BOOT_DIR_ABS="$3"
KERNEL_IMAGE="$4"
-INITRD_FILE="$5"
+INITRD_OPTIONS_START="5"
if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then
exit 0
@@ -83,14 +83,17 @@ cp "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" &&
exit 1
}
-if [[ -f "${INITRD_FILE}" ]]; then
- cp "${INITRD_FILE}" "$BOOT_DIR_ABS/initrd" &&
- chown root:root "$BOOT_DIR_ABS/initrd" &&
- chmod 0644 "$BOOT_DIR_ABS/initrd" || {
- echo "Could not copy '$INITRD_FILE' to '$BOOT_DIR_ABS/initrd'." >&2
- exit 1
- }
-fi
+for initrd in "${@:${INITRD_OPTIONS_START}}"; do
+ if [[ -f "${initrd}" ]]; then
+ initrd_basename="$(basename ${initrd})"
+ cp "${initrd}" "$BOOT_DIR_ABS/${initrd_basename}" &&
+ chown root:root "$BOOT_DIR_ABS/${initrd_basename}" &&
+ chmod 0644 "$BOOT_DIR_ABS/${initrd_basename}" || {
+ echo "Could not copy '${initrd}' to '$BOOT_DIR_ABS/${initrd_basename}'." >&2
+ exit 1
+ }
+ fi
+done
mkdir -p "${LOADER_ENTRY%/*}" || {
echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2
@@ -103,8 +106,10 @@ mkdir -p "${LOADER_ENTRY%/*}" || {
echo "machine-id $MACHINE_ID"
echo "options ${BOOT_OPTIONS[*]}"
echo "linux $BOOT_DIR/linux"
- [[ -f $BOOT_DIR_ABS/initrd ]] && \
- echo "initrd $BOOT_DIR/initrd"
+ for initrd in "${@:${INITRD_OPTIONS_START}}"; do
+ [[ -f $BOOT_DIR_ABS/$(basename ${initrd}) ]] && \
+ echo "initrd $BOOT_DIR/$(basename ${initrd})"
+ done
:
} > "$LOADER_ENTRY" || {
echo "Could not create loader entry '$LOADER_ENTRY'." >&2
diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
index 7240df904c..7973818bca 100644
--- a/src/kernel-install/kernel-install
+++ b/src/kernel-install/kernel-install
@@ -24,7 +24,7 @@ SKIP_REMAINING=77
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"
}
@@ -72,7 +72,7 @@ fi
KERNEL_VERSION="$1"
KERNEL_IMAGE="$2"
-INITRD_FILE="$3"
+INITRD_OPTIONS_START="3"
if [[ -f /etc/machine-id ]]; then
read MACHINE_ID < /etc/machine-id
@@ -124,7 +124,7 @@ case $COMMAND in
for f in "${PLUGINS[@]}"; do
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=$?
if [[ $x == $SKIP_REMAINING ]]; then
ret=0