I attach a patch for CPU detection when Debian Live uses grub2 as its bootloader.

Please advise how to improve it so that it gets included upstream.

Thank you.

adrian15
--
Support free software. Donate to Super Grub Disk. Apoya el software libre. Dona a Super Grub Disk. http://www.supergrubdisk.org/donate/
diff -urN original/usr/lib/live/build/binary_grub2 
fork_cpu64bit_detection_grub2/usr/lib/live/build/binary_grub2
--- original/usr/lib/live/build/binary_grub2    2014-08-15 20:05:54.774035184 
+0000
+++ fork_cpu64bit_detection_grub2/usr/lib/live/build/binary_grub2       
2014-08-15 22:08:29.721746736 +0000
@@ -60,6 +60,16 @@
 Install_package
 
 # Local functions
+Grub_live_entry_commands ()
+{
+       KERNEL="${1}"
+       INITRD="${2}"
+       APPEND="${3}"
+
+       LINUX_LIVE="${LINUX_LIVE}\nlinux\t\t/${KERNEL} ${INITFS:+boot=${INITFS} 
}config LB_BOOTAPPEND_LIVE ${APPEND}"
+       LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}"
+}
+
 Grub_live_entry ()
 {
        LABEL="${1}"
@@ -68,8 +78,25 @@
        APPEND="${4}"
 
        LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {"
-       LINUX_LIVE="${LINUX_LIVE}\nlinux\t\t/${KERNEL} ${INITFS:+boot=${INITFS} 
}config LB_BOOTAPPEND_LIVE ${APPEND}"
-       LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}"
+       Grub_live_entry_commands "${KERNEL}" "${INITRD}" "${APPEND}"
+       LINUX_LIVE="${LINUX_LIVE}\n}"
+}
+
+Grub_live_autodetect_entry ()
+{
+       LABEL="${1}"
+       AMD64_KERNEL="${2}"
+       AMD64_INITRD="${3}"
+       _486_KERNEL="${4}"
+       _486_INITRD="${5}"
+       APPEND="${6}"
+
+       LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {"
+       LINUX_LIVE="${LINUX_LIVE}\nif cpuid -l ; then"
+       Grub_live_entry_commands "${AMD64_KERNEL}" "${AMD64_INITRD}" "${APPEND}"
+       LINUX_LIVE="${LINUX_LIVE}\nelse"
+       Grub_live_entry_commands "${_486_KERNEL}" "${_486_INITRD}" "${APPEND}"
+       LINUX_LIVE="${LINUX_LIVE}\nfi"
        LINUX_LIVE="${LINUX_LIVE}\n}"
 }
 
@@ -158,6 +185,29 @@
 
 # Assembling kernel configuration
 
+_AMD64_486_NUMBER="0"
+
+for _FLAVOUR in ${LB_LINUX_FLAVOURS}
+do
+       if [ "${_FLAVOUR}" = "amd64" -o "${_FLAVOUR}" = "486" ] ; then
+               _AMD64_486_NUMBER="$((${_AMD64_486_NUMBER} + 1))"
+       fi
+done
+
+if [ "${_AMD64_486_NUMBER}" -ge 2 ] ; then
+       # Default entries
+       AMD64_KERNEL="$(basename chroot/boot/vmlinuz-*amd64)"
+       AMD64_INITRD="initrd.img-$(echo ${AMD64_KERNEL} | sed -e 
's|vmlinuz-||')"
+       _486_KERNEL="$(basename chroot/boot/vmlinuz-*486)"
+       _486_INITRD="initrd.img-$(echo ${_486_KERNEL} | sed -e 's|vmlinuz-||')"
+
+       Grub_live_autodetect_entry "live (autodetect)" \
+               "$(basename ${DESTDIR_LIVE})/${AMD64_KERNEL}" \
+               "$(basename ${DESTDIR_LIVE})/${AMD64_INITRD}" \
+               "$(basename ${DESTDIR_LIVE})/${_486_KERNEL}" \
+               "$(basename ${DESTDIR_LIVE})/${_486_INITRD}"
+fi
+
 # Default entries
 DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
 DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})"

Reply via email to