Signed-off-by: Christian Hesse <m...@eworm.de> --- docs/grub.texi | 6 ++++++ util/grub-mkconfig.in | 1 + util/grub.d/10_linux.in | 19 +++++++++++++------ 3 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 0afdd8c..f65647c 100644 --- a/docs/grub.texi +++ b/docs/grub.texi @@ -1398,6 +1398,12 @@ for all respectively normal entries. The values of these options replace the values of @samp{GRUB_CMDLINE_LINUX} and @samp{GRUB_CMDLINE_LINUX_DEFAULT} for Linux and Xen menu entries. +@item GRUB_CUSTOM_INITRD +Give custom initrd images to be loaded in addition to the initrd image +found for the kernel. One use case is to load Intel ucode image. + +This expects a space separated list of initrd images in @samp{/boot}. + @item GRUB_DISABLE_LINUX_UUID Normally, @command{grub-mkconfig} will generate menu entries that use universally-unique identifiers (UUIDs) to identify the root filesystem to diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in index 3183744..bbe9e62 100644 --- a/util/grub-mkconfig.in +++ b/util/grub-mkconfig.in @@ -211,6 +211,7 @@ export GRUB_DEFAULT \ GRUB_CMDLINE_NETBSD \ GRUB_CMDLINE_NETBSD_DEFAULT \ GRUB_CMDLINE_GNUMACH \ + GRUB_CUSTOM_INITRD \ GRUB_TERMINAL_INPUT \ GRUB_TERMINAL_OUTPUT \ GRUB_SERIAL_COMMAND \ diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in index 5a78513..39bd854 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -136,10 +136,12 @@ EOF if test -n "${initrd}" ; then # TRANSLATORS: ramdisk isn't identifier. Should be translated. message="$(gettext_printf "Loading initial ramdisk ...")" - sed "s/^/$submenu_indentation/" << EOF - echo '$(echo "$message" | grub_quote)' - initrd ${rel_dirname}/${initrd} -EOF + printf ' %s\n' "echo '$(echo "$message" | grub_quote)'" | sed "s/^/$submenu_indentation/" + printf ' %s ' 'initrd' | sed "s/^/$submenu_indentation/" + for i in ${initrd}; do + printf ' %s/%s' "${rel_dirname}" "${i}" + done + printf '\n' fi sed "s/^/$submenu_indentation/" << EOF } @@ -189,6 +191,11 @@ while [ "x$list" != "x" ] ; do linux_root_device_thisversion="${LINUX_ROOT_DEVICE}" initrd= + for i in ${GRUB_CUSTOM_INITRD}; do + if test -e "${dirname}/${i}" ; then + initrd+=" ${i}" + fi + done for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \ "initrd-${version}" "initramfs-${version}.img" \ "initrd.img-${alt_version}" "initrd-${alt_version}.img" \ @@ -198,7 +205,7 @@ while [ "x$list" != "x" ] ; do "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do if test -e "${dirname}/${i}" ; then - initrd="$i" + initrd+=" $i" break fi done @@ -217,7 +224,7 @@ while [ "x$list" != "x" ] ; do fi if test -n "${initrd}" ; then - gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2 + gettext_printf "Found initrd image(s) in %s:%s\n" "${dirname}" "${initrd}" >&2 elif test -z "${initramfs}" ; then # "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's # no initrd or builtin initramfs, it can't work here. -- 2.7.1 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel