summarylogtreecommitdiffstats
path: root/grub-10_linux-detect-archlinux-initramfs.patch
blob: 18d9d520c4845c6dc5425fff03a91b290153c7c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
From b470ffd22e43acc7c11231180187a720efd88de1 Mon Sep 17 00:00:00 2001
From: Keshav Amburay <the.ridikulus.rat@gmail.com>
Date: Sat, 5 Apr 2014 20:40:51 -0400
Subject: [PATCH] 10_linux: Detect Arch Linux main and fallback initramfs
 images

---
 util/grub.d/10_linux.in | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index 00d1931..7d4086b 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -81,6 +81,8 @@ linux_entry ()
       case $type in
 	  recovery)
 	      title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;;
+	  fallback)
+	      title="$(gettext_printf "%s, with Linux %s (fallback initramfs)" "${os}" "${version}")" ;;
 	  *)
 	      title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
       esac
@@ -180,7 +182,7 @@ while [ "x$list" != "x" ] ; do
   basename=`basename $linux`
   dirname=`dirname $linux`
   rel_dirname=`make_system_path_relative_to_its_root $dirname`
-  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+  version=`echo $basename | sed -e "s,vmlinuz-,,g"`
   alt_version=`echo $version | sed -e "s,\.old$,,g"`
   linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
 
@@ -236,6 +238,18 @@ while [ "x$list" != "x" ] ; do
 
   linux_entry "${OS}" "${version}" advanced \
               "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+  
+  if test -e "${dirname}/initramfs-${version}-fallback.img" ; then
+    initrd="initramfs-${version}-fallback.img"
+    
+    if test -n "${initrd}" ; then
+      gettext_printf "Found fallback initramfs image: %s\n" "${dirname}/${initrd}" >&2
+    fi
+    
+    linux_entry "${OS}" "${version}" fallback \
+    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+  fi
+  
   if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
     linux_entry "${OS}" "${version}" recovery \
                 "single ${GRUB_CMDLINE_LINUX}"
-- 
1.9.1