syslinux patch for xen flavour

2008-12-26 Thread Satoru KURASHIKI
hi,

To boot xen dom0 from debian-live, I tweak lh_binary_syslinux.
I'm glad if someone check and integrate it.

regards,
-- 
KURASHIKI Satoru
diff --git a/helpers/lh_binary_syslinux b/helpers/lh_binary_syslinux
index 2d7cf33..ef5d962 100755
--- a/helpers/lh_binary_syslinux
+++ b/helpers/lh_binary_syslinux
@@ -94,6 +94,22 @@ Syslinux_live_entry ()
 	INITRD="${4}"
 	APPEND="${5}"
 
+	# Check xen-flavour
+	if [ "$(echo ${KERNEL} | grep 'xen-')" != "" ]
+	then
+		# prepare multiboot module
+		case "${LH_CHROOT_BUILD}" in
+			enabled)
+cp chroot/usr/lib/syslinux/mboot.c32 ${DATA_PATH}
+;;
+			disabled)
+cp /usr/lib/syslinux/mboot.c32 ${DATA_PATH}
+;;
+		esac
+		XEN_KERNEL="$(basename chroot/boot/xen-*)"
+
+	fi
+
 	case "${LH_BINARY_IMAGES}" in
 		iso|usb-hdd)
 			NUMBER="$(ls -1 ${KERNEL_PATH} | grep 'vmlinuz[0-9]\+$' | wc -l)"
@@ -108,6 +124,14 @@ Syslinux_live_entry ()
 		;;
 	esac
 
+	# Xen kernel
+	if [ -f ${DATA_PATH}/mboot.c32 ]
+	then
+		LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL} Xen\n"
+		LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_DATA_PATH}/mboot.c32\n"
+		LINUX_LIVE="${LINUX_LIVE}\tappend ${LIVE_KERNEL_PATH}/${XEN_KERNEL} dom0_mem=256M --- ${LIVE_KERNEL_PATH}/${KERNEL} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} --- ${LIVE_KERNEL_PATH}/${INITRD}\n"
+	fi
+
 	# Regular kernel
 	LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}\n"
 
@@ -496,6 +520,11 @@ then
 	mv binary/${INITFS}/vmlinuz* ${KERNEL_PATH}
 	mv binary/${INITFS}/initrd* ${KERNEL_PATH}
 
+	if [ "$(echo ${LH_LINUX_FLAVOURS} | grep 'xen-')" != "" ]
+	then
+		mv binary/${INITFS}/xen* ${KERNEL_PATH}
+	fi
+
 	if [ "${LH_MEMTEST}" != "disabled" ] && [ "${LH_MEMTEST}" != "none" ]
 	then
 		mv binary/${INITFS}/memtest ${KERNEL_PATH}


Re: syslinux patch for xen flavour

2008-12-29 Thread Satoru KURASHIKI
hi,

Thanks for your comments.

>> Useless use of test:
>>
>>   if echo ${KERNEL} | grep -q 'xen-'
>
> For completeness, you actually want `grep -qs` here, for various
> portability reasons.

If portability matters, grep(1) suggests `grep ... > /dev/null 2>&1`.
As live-helper will run on Debian systems, `grep -q` seems to be sufficient.

And, also, `mv` xen kernel doesn't work, it should be fixed...

> Will this work on USB stick boot and netboot also??

USB stick boot works, which is my target.
(Acording to DebianWiki, xen requires grub to boot, and usb-hdd requires
 syslinux to boot. I want to use xen with usb-hdd.)

> Is that guaranteed to be the only xen kernel there?

No, that picks (alphabetically) first from installed xen kernels.
(And I assumed to be customized menu.cfg after created.)

--
I will try to improve these problems. Which way below is suitable
for live-helper?

1. Xen kernel is one of kernel images. All installed kernels will be
detected and configured automatically.

2. Xen needs special configuration like LH_XEN_*. lh_binary_syslinux
will have new functions for xen.

regards,
-- 
KURASHIKI Satoru


-- 
To UNSUBSCRIBE, email to debian-live-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: syslinux patch for xen flavour

2009-01-02 Thread Satoru KURASHIKI
hi,

How about this workaround?

- lh_binary_linux-image moves xen kernels if exist
- lh_binary_syslinux:
  it detects xen-flavour and xen kernels, and create syslinux multiboot entry
  for every xen kernels.

Netboot is not tested (I don't have netboot environment), and xen boot
parameters
are hardcoded.

regards,
-- 
KURASHIKI Satoru
diff --git a/helpers/lh_binary_linux-image b/helpers/lh_binary_linux-image
index 7fe2986..8d5136e 100755
--- a/helpers/lh_binary_linux-image
+++ b/helpers/lh_binary_linux-image
@@ -79,6 +79,11 @@ mkdir -p "${DESTDIR}"
 cp chroot/boot/"${LINUX}"-* "${DESTDIR}"
 cp chroot/boot/initrd.img-* "${DESTDIR}"
 
+# Instaling xen kernel
+if echo ${LH_LINUX_FLAVOURS} | grep -q 'xen\-'
+	cp chroot/boot/xen-* "${DESTDIR}"
+fi
+
 # Including boot parameter documentation
 if [ "${LH_BINARY_IMAGES}" != "net" ]
 then
diff --git a/helpers/lh_binary_syslinux b/helpers/lh_binary_syslinux
index 2d7cf33..9414afb 100755
--- a/helpers/lh_binary_syslinux
+++ b/helpers/lh_binary_syslinux
@@ -8,6 +8,7 @@
 # under certain conditions; see COPYING for details.
 
 set -e
+set -x
 
 # Including common functions
 LH_BASE="${LH_BASE:-/usr/share/live-helper}"
@@ -97,32 +98,46 @@ Syslinux_live_entry ()
 	case "${LH_BINARY_IMAGES}" in
 		iso|usb-hdd)
 			NUMBER="$(ls -1 ${KERNEL_PATH} | grep 'vmlinuz[0-9]\+$' | wc -l)"
-			NUMBER="$((${NUMBER} +1))"
 
-			# Note: ISOLINUX will not find the kernel if the name ends in ".img".
-			mv ${KERNEL_PATH}/${KERNEL} ${KERNEL_PATH}/vmlinuz${NUMBER}
-			mv ${KERNEL_PATH}/${INITRD} ${KERNEL_PATH}/initrd${NUMBER}.img
+			if [ -f "${KERNEL_PATH}/${KERNEL}" ]
+			then
+NUMBER="$((${NUMBER} +1))"
+
+# Note: ISOLINUX will not find the kernel if the name ends in ".img".
+mv ${KERNEL_PATH}/${KERNEL} ${KERNEL_PATH}/vmlinuz${NUMBER}
+mv ${KERNEL_PATH}/${INITRD} ${KERNEL_PATH}/initrd${NUMBER}.img
+			fi
 
 			KERNEL=vmlinuz${NUMBER}
 			INITRD=initrd${NUMBER}.img
 		;;
 	esac
 
-	# Regular kernel
-	LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}\n"
+	if echo ${LABEL} | grep -q '\-xen'
+	then
+		# Xen kernel
+		LH_XEN_BOOTAPPEND="dom0_mem=256M vga=gfx-1024x768x16 console=vga"
+		LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL} ${XEN_KERNEL}\n"
+		LINUX_LIVE="${LINUX_LIVE}\nMENU LABEL ${MENULABEL} ${XEN_KERNEL}\n"
+		LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_DATA_PATH}/mboot.c32\n"
+		LINUX_LIVE="${LINUX_LIVE}\tappend ${LIVE_KERNEL_PATH}/${XEN_KERNEL} ${LH_XEN_BOOTAPPEND} --- ${LIVE_KERNEL_PATH}/${KERNEL} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} --- ${LIVE_KERNEL_PATH}/${INITRD}\n"
+	else
+		# Regular kernel
+		LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}\n"
 
-	# Write the menu label if the syslinux menu is being use
-	LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL}\n"
-	LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n"
-	LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND}\n"
+		# Write the menu label if the syslinux menu is being use
+		LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL}\n"
+		LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n"
+		LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND}\n"
 
-	# Failsafe kernel
-	LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}failsafe\n"
+		# Failsafe kernel
+		LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}failsafe\n"
 
-	# Write the menu label if the syslinux menu is being use
-	LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL} (fail-safe mode)\n"
-	LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n"
-	LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} ${FAILSAFE}\n"
+		# Write the menu label if the syslinux menu is being use
+		LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL} (fail-safe mode)\n"
+		LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n"
+		LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} ${FAILSAFE}\n"
+	fi
 }
 
 Syslinux_install_entry ()
@@ -496,6 +511,11 @@ then
 	mv binary/${INITFS}/vmlinuz* ${KERNEL_PATH}
 	mv binary/${INITFS}/initrd* ${KERNEL_PATH}
 
+	if echo ${LH_LINUX_FLAVOURS} | grep -q 'xen\-'
+	then
+		mv binary/${INITFS}/xen-* ${KERNEL_PATH}
+	fi
+
 	if [ "${LH_MEMTEST}" != "disabled" ] && [ "${LH_MEMTEST}" != "none" ]
 	then
 		mv binary/${INITFS}/memtest ${KERNEL_PATH}
@@ -507,7 +527,26 @@ DEFAULT_FLAVOUR="$(echo ${LH_LINUX_FLAVOURS} | awk '{ print $1 }')"
 DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})"
 DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')"
 
-Syslinux_live_entry "live" "${LH_SYSLINUX_MENU_LIVE_ENTRY}" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}"
+if echo ${DEFAULT_FLAVOUR} | grep -q 'xen-'
+then
+	# prepare multiboot module
+	case "${LH_CHROOT_BUILD}" in
+		enabled)
+			cp chroot/usr/lib/syslinux/mboot.c32 ${DATA_PATH}
+			;;
+		di