diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in index 859c2e8..c754dd7 100644 --- a/util/grub-mkconfig.in +++ b/util/grub-mkconfig.in @@ -242,6 +242,8 @@ export GRUB_DEFAULT \ GRUB_THEME \ GRUB_GFXPAYLOAD_LINUX \ GRUB_DISABLE_OS_PROBER \ + GRUB_COLOR_NORMAL \ + GRUB_COLOR_HIGHLIGHT \ GRUB_INIT_TUNE \ GRUB_SAVEDEFAULT \ GRUB_ENABLE_CRYPTODISK \ diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in index d9bcc15..a93dcb7 100644 --- a/util/grub.d/00_header.in +++ b/util/grub.d/00_header.in @@ -100,6 +100,14 @@ cat </dev/null || true`" = xbtrfs ]; then @@ -65,7 +65,9 @@ linux_entry () version="$2" recovery="$3" args="$4" - if ${recovery} ; then + if [ -n "$5" ] ; then + title="$(gettext_quoted "%s, with Linux %s") $5" + elif ${recovery} ; then title="$(gettext_quoted "%s, with Linux %s (recovery mode)")" else title="$(gettext_quoted "%s, with Linux %s")" @@ -113,7 +115,9 @@ EOF fi printf '%s\n' "${prepare_boot_cache}" fi + message="$(gettext_printf "Loading Linux %s ..." ${version})" + cat << EOF echo '$message' linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} @@ -132,11 +136,11 @@ EOF case x`uname -m` in xi?86 | xx86_64) - list=`for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do + list=`for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* /boot/vmlinuz26-* ; do if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi done` ;; *) - list=`for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do + list=`for i in /boot/vmlinuz* /boot/vmlinux* /vmlinuz* /vmlinux* /boot/kernel-* ; do if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi done` ;; esac @@ -151,16 +155,19 @@ while [ "x$list" != "x" ] ; do dirname=`dirname $linux` rel_dirname=`make_system_path_relative_to_its_root $dirname` version=`echo $basename | sed -e "s,^[^0-9]*-,,g"` - alt_version=`echo $version | sed -e "s,\.old$,,g"` + base_init=`echo $basename | sed -e "s,vmlinuz,initramfs,g"` + alt_version="${base_init}-fallback" linux_root_device_thisversion="${LINUX_ROOT_DEVICE}" 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" \ "initrd-${alt_version}" "initramfs-${alt_version}.img" \ "initramfs-genkernel-${version}" \ - "initramfs-genkernel-${alt_version}"; do + "initramfs-genkernel-${alt_version}" \ + "${basename/vmlinuz/initramfs}.img" "${basename/vmlinuz/kernel}.img"; do if test -e "${dirname}/${i}" ; then initrd="$i" break @@ -190,6 +197,16 @@ while [ "x$list" != "x" ] ; do linux_entry "${OS}" "${version}" false \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" + for i in "initramfs-${version}-fallback.img" \ + "${basename/vmlinuz/initramfs}-fallback.img" "${basename/vmlinuz/kernel}-fallback.img"; do + if test -e "${dirname}/${i}"; then + initrd="$i" + linux_entry "${OS}" "${version}" true \ + "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" Fallback + break + fi + done + if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then linux_entry "${OS}" "${version}" true \ "single ${GRUB_CMDLINE_LINUX}"