grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 1/1] support loading of custom initrd images


From: Christian Hesse
Subject: [PATCH 1/1] support loading of custom initrd images
Date: Fri, 5 Feb 2016 11:43:00 +0100

From: Christian Hesse <address@hidden>

Signed-off-by: Christian Hesse <address@hidden>
---
 docs/grub.texi          |  6 ++++++
 util/grub-mkconfig.in   |  1 +
 util/grub.d/10_linux.in | 16 +++++++++-------
 3 files changed, 16 insertions(+), 7 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.
 
address@hidden 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..8e060c5 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 "address@hidden"; do
+       printf ' %s/%s' "${rel_dirname}" "${I}"
+    done
+    printf '\n'
   fi
   sed "s/^/$submenu_indentation/" << EOF
 }
@@ -188,7 +190,7 @@ while [ "x$list" != "x" ] ; do
   alt_version=`echo $version | sed -e "s,\.old$,,g"`
   linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
 
-  initrd=
+  initrd=(${GRUB_CUSTOM_INITRD})
   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 +200,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 +219,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.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]