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

Bug#757697: CPU detection patch for grub2 attached



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 to: