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

[PATCH/RFC] Enable Xen PVHVM installation from ISO



Hi,

In the Squeeze release we added support for Xen PV installation from
certain ISO images which have the Xen variant enabled in Debian CD (the
multiarch x86 ISOs) which includes a suitable installer image as well as
the kernel binaries (686-bigmem flavour on i386).

Since then the kernel has grown additional functionality which allows
the PV drivers to be used for disk and network in an HVM (fully
virtualised) guest, in Xen-land we call this PVHVM.

For various reasons this PVHVM support is contingent on Xen PV support
also being enabled in the kernel and hence it is limited to the
686-bigmem flavour on i386 as well. Long term we hope to address this
but I don't think it will happen too soon...

The following patches to d-i and debian-cd add a menu item to the
isolinux menu for images with the Xen variant enabled e.g. it simply
creates an entry for images when the appropriate installer + kernel is
already present anyway.

I think manually duplicating the entire non-Xen menu hierarchy by hand
would be a terrible idea, and although I think I could probably make
something work automatically by processing the existing cfg files (e.g.
with sed or something) I suspect the result would be rather fragile, so
I've just implemented the basic install menu item for 32 and 64 bit.
Anyone got any cunning ideas on how to do this better?

Any opinions on where to put the Xen toplevel menu etc? I put it in the
first screen but I could see an argument for putting it under advanced
for example.

Ian.

PS: Is there some trick to quickly testing the isolinux menus? I've been
doing:
        #!/bin/sh
        
        set -ex
        
        export PATH=util:${PATH}:/usr/sbin:/sbin
        
        rm -rf tmp/cdrom_isolinux/cd_info tmp/cdrom_gtk/cd_info
        make SUBARCH= MEDIUM=cdrom FLAVOUR=isolinux dest/cdrom/debian-cd_info.tar.gz
        
        ARCH=`dpkg --print-architecture`
        
        cp -v dest/cdrom/debian-cd_info.tar.gz ~/development/debian/debian-installer/dest/${ARCH}/cdrom/debian-cd_info.tar.gz
for both amd64 and i386 and then rebuilding a BC image against that
installer, which takes several minutes and is a bit fiddly.

-- 
Ian Campbell

Immature artists imitate, mature artists steal.
		-- Lionel Trilling
diff --git a/tools/boot/wheezy/boot-x86 b/tools/boot/wheezy/boot-x86
index a7ea2c2..547ad97 100644
--- a/tools/boot/wheezy/boot-x86
+++ b/tools/boot/wheezy/boot-x86
@@ -252,6 +252,9 @@ if variant_enabled "xen" ; then
 	extra_image xen/vmlinuz         "../vmlinuz   ../gtk/vmlinuz"
 	extra_image xen/initrd.gz       "../initrd.gz ../gtk/initrd.gz"
 	extra_image xen/xm-debian.cfg
+else
+	# Remove Xen configuration is Xen is not enabled
+	rm -f boot$N/isolinux/*xen.cfg
 fi
 
 # Modify win32-loader.ini for the "current" arch
diff --git a/build/boot/x86/amdtxt.cfg b/build/boot/x86/amdtxt.cfg
index e347679..afd9e48 100644
--- a/build/boot/x86/amdtxt.cfg
+++ b/build/boot/x86/amdtxt.cfg
@@ -1,6 +1,4 @@
-default64 amd64-install
 label amd64-install
 	menu label ^64 bit install
-	menu default64
 	kernel ${AMD_KERNEL}
 	append desktop=%desktop% ${VIDEO_MODE} initrd=${AMD_INITRD} -- quiet ${CONSOLE}
diff --git a/build/boot/x86/amdtxtxen.cfg b/build/boot/x86/amdtxtxen.cfg
new file mode 100644
index 0000000..25a091f
--- /dev/null
+++ b/build/boot/x86/amdtxtxen.cfg
@@ -0,0 +1,4 @@
+label amd64-install-xen
+	menu label ^64 bit Xen PVHVM install
+	kernel ${AMD_KERNEL_XEN}
+	append desktop=%desktop% ${VIDEO_MODE} initrd=${AMD_INITRD_XEN} -- quiet ${CONSOLE}
diff --git a/build/boot/x86/menu.cfg b/build/boot/x86/menu.cfg
index f1be77f..e030043 100644
--- a/build/boot/x86/menu.cfg
+++ b/build/boot/x86/menu.cfg
@@ -7,6 +7,7 @@ include ${SYSDIR}txt.cfg
 include ${SYSDIR}amdtxt.cfg
 include ${SYSDIR}gtk.cfg
 include ${SYSDIR}amdgtk.cfg
+include ${SYSDIR}menuxen.cfg
 menu begin advanced
 	menu title Advanced options
 	include ${SYSDIR}stdmenu.cfg
diff --git a/build/boot/x86/menuxen.cfg b/build/boot/x86/menuxen.cfg
new file mode 100644
index 0000000..6ab4000
--- /dev/null
+++ b/build/boot/x86/menuxen.cfg
@@ -0,0 +1,10 @@
+menu begin xen
+	menu title Xen PVHVM options
+	include ${SYSDIR}stdmenu.cfg
+	label mainmenu
+		menu label ^Back..
+		menu exit
+	include ${SYSDIR}txtxen.cfg
+	# Truncated due to 8.3...
+	include ${SYSDIR}amdtxtxe.cfg
+menu end
diff --git a/build/boot/x86/txtxen.cfg b/build/boot/x86/txtxen.cfg
new file mode 100644
index 0000000..5ae0708
--- /dev/null
+++ b/build/boot/x86/txtxen.cfg
@@ -0,0 +1,4 @@
+label install-xen
+	menu label ^Xen PVHVM install
+	kernel ${KERNEL_XEN}
+	append desktop=%desktop% ${VIDEO_MODE} initrd=${INITRD_XEN} -- quiet ${CONSOLE}
diff --git a/build/config/x86.cfg b/build/config/x86.cfg
index c95cd30..e231a28 100644
--- a/build/config/x86.cfg
+++ b/build/config/x86.cfg
@@ -178,11 +178,15 @@ arch_cd_info_dir: x86_syslinux
 			DEBIAN_VERSION "$(DEBIAN_VERSION)" \
 			BUILD_DATE "$(BUILD_DATE)" \
 			KERNEL /%install%/vmlinuz \
+			KERNEL_XEN /%install%/xen/vmlinuz \
 			INITRD /%install%/initrd.gz \
 			INITRD_GTK /%install%/gtk/initrd.gz \
+			INITRD_XEN /%install%/xen/initrd.gz \
 			AMD_KERNEL /%install-amd%/vmlinuz \
+			AMD_KERNEL_XEN /%install-amd%/xen/vmlinuz \
 			AMD_INITRD /%install-amd%/initrd.gz \
 			AMD_INITRD_GTK /%install-amd%/gtk/initrd.gz \
+			AMD_INITRD_XEN /%install-amd%/xen/initrd.gz \
 			VIDEO_MODE $(VIDEO_MODE) \
 			VIDEO_MODE_GTK $(VIDEO_MODE_GTK) \
 			BEEP "$$beep" \

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: