Hi, Since the netboot-bigmem flavour was named netboot-xen I thought perhaps it made sense to tidy up the files in the output directory. All the pxelinux.{0/cfg} stuff is not necessary for Xen, only the kernel, initrd and perhaps a Xen configuration file are required. I've attached a patch which implements this and would appreciate any comments. In particular I'm pretty sure dumping xm-debian.cfg into build/config/i386 is not the right place -- any suggestions? Xen doesn't currently produce a udeb and I'm reluctant to add a build-dep on a Xen package to pull the file from just for this. The output with the patch is: installer/build/dest/netboot/xen/ installer/build/dest/netboot/xen/initrd.gz installer/build/dest/netboot/xen/vmlinuz installer/build/dest/netboot/xen/xm-debian.cfg The URLs in xm-debian.cfg are subject to finalisation still but ultimately I hope users will be able to use a command like: xm create xm-debian.cfg install=true install-mirror=http://ftp.XX.debian.org which will grab the installer from a mirror and start it. Once the images start building I plan to update http://wiki.debian.org/Xen and/or http://wiki.debian.org/DebianInstaller/Xen with details on how to use it. If there is anywhere else (release notes?) where this could/should be mentioned I'd appreciate a pointer. Ian. -- Ian Campbell I prefer the most unjust peace to the most righteous war. -- Cicero Even peace may be purchased at too high a price. -- Poor Richard
Index: installer/build/config/i386.cfg =================================================================== --- installer/build/config/i386.cfg (revision 54526) +++ installer/build/config/i386.cfg (working copy) @@ -1,4 +1,4 @@ -MEDIUM_SUPPORTED = cdrom netboot netboot-gtk hd-media # netboot-xen #floppy #monolithic +MEDIUM_SUPPORTED = cdrom netboot netboot-gtk netboot-xen hd-media #floppy #monolithic # The version of the kernel to use. BASEVERSION = 2.6.25-2 Index: installer/build/config/i386/netboot-xen.cfg =================================================================== --- installer/build/config/i386/netboot-xen.cfg (revision 54526) +++ installer/build/config/i386/netboot-xen.cfg (working copy) @@ -5,3 +5,8 @@ MANIFEST-NETBOOT_DIR = "PXE boot directory for tftp server (Xen)" MANIFEST-NETBOOT_TAR = "tarball of PXE boot directory (Xen)" MANIFEST-MINIISO = "tiny CD image that boots the netboot installer (Xen)" +XENCFG = $(SOME_DEST)/$(EXTRANAME)xm-debian.cfg +TARGET = $(INITRD) $(KERNEL) $(XENCFG) + +$(XENCFG): config/i386/xm-debian.cfg + cp $< $@ Index: installer/build/config/i386/xm-debian.cfg =================================================================== --- installer/build/config/i386/xm-debian.cfg (revision 0) +++ installer/build/config/i386/xm-debian.cfg (revision 0) @@ -0,0 +1,174 @@ +# -*- mode: python; -*- +#============================================================================ +# Example Python setup script for Debian guest installation. +#============================================================================ +# +# Standard options are configured as normal. Only a subset are included below. +# See /usr/share/doc/xen-utils-common/examples for full examples. +# +# After standard options are configure use +# xm create xm-debian.cfg install=true" +# to start the Debian Installer. +# +# In the installation case the following additional variables exist: +# install-arch: which architecture to install. e.g. i386 or amd64 +# install-suite: which Debian version to install. e.g. lenny or sid +# install-mirror: which Debian mirror to use e.g. http://ftp.uk.debian.org/debian +# install-installer: where to obtain the Debian Installer bits, by +# default these are located under install-mirror. To use a nightly +# snapshot: http://people.debian.org/~joeyh/d-i/images/daily/ +# install-extra: extra command line arguments +#============================================================================ + + +#---------------------------------------------------------------------------- +# Standard variables + +# Initial memory allocation (in megabytes) for the new domain. +memory = 128 + +# A name for your domain. All domains must have different names. +name = "ExampleDomain" + +# 128-bit UUID for the domain. The default behavior is to generate a new UUID +# on each call to 'xm create'. +#uuid = "06ed00fe-1162-4fc4-b5d8-11993ee4a8b9" + +# List of which CPUS this domain is allowed to use, default Xen picks +#cpus = "" # leave to Xen to pick +#cpus = "0" # all vcpus run on CPU0 +#cpus = "0-3,5,^1" # run on cpus 0,2,3,5 + +# Number of Virtual CPUS to use, default is 1 +#vcpus = 1 + +#---------------------------------------------------------------------------- +# Define network interfaces. + +# By default, no network interfaces are configured. You may have one created +# with sensible defaults using an empty vif clause: +# +# vif = [ '' ] +# +# or optionally override backend, bridge, ip, mac, script, type, or vifname: +# +# vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0' ] +# +# or more than one interface may be configured: +# +# vif = [ '', 'bridge=xenbr1' ] + +vif = [ '' ] + +#---------------------------------------------------------------------------- +# Define the disk devices you want the domain to have access to, and +# what you want them accessible as. +# Each disk entry is of the form phy:UNAME,DEV,MODE +# where UNAME is the device, DEV is the device name the domain will see, +# and MODE is r for read-only, w for read-write. + +disk = [ 'phy:hda1,hda1,w' ] + +#---------------------------------------------------------------------------- +# Define frame buffer device. +# +# By default, no frame buffer device is configured. +# +# To create one using the SDL backend and sensible defaults: +# +# vfb = [ 'type=sdl' ] +# +# This uses environment variables XAUTHORITY and DISPLAY. You +# can override that: +# +# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ] +# +# To create one using the VNC backend and sensible defaults: +# +# vfb = [ 'type=vnc' ] +# +# The backend listens on 127.0.0.1 port 5900+N by default, where N is +# the domain ID. You can override both address and N: +# +# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=1' ] +# +# Or you can bind the first unused port above 5900: +# +# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vnunused=1' ] +# +# You can override the password: +# +# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ] +# +# Empty password disables authentication. Defaults to the vncpasswd +# configured in xend-config.sxp. + + +#============================================================================ +# +global var_check_boot_with_default +def var_check_bool_with_default(default,var,val): + if type(val) == bool: + return val + elif type(val) == str: + if val.lower in ["t", "tr", "tru", "true"]: + return True + else: + return False + else: + return default +global var_check_with_default +def var_check_with_default(default,var,val): + if val: return val + else: return default + +xm_vars.var('install', use='Install Debian, default: false', + check=lambda var, val: var_check_bool_with_default(False, var, val)) + +xm_vars.var("install-arch", use='Debian mirror to install from (default: i386)', + check=lambda var, val: var_check_with_default('i386', var, val)) +xm_vars.var("install-mirror", use='Debian mirror to install from (default: http://ftp.debian.org/debian)', + check=lambda var, val: var_check_with_default('http://ftp.debian.org/debian', var, val)) +xm_vars.var("install-suite", use='Debian suite to install (default: lenny)', + check=lambda var, val: var_check_with_default("lenny", var, val)) +xm_vars.var("install-installer", use='Debian installer to use (default: uses install-mirror)', + check=lambda var, val: var_check_with_default(None, var, val)) +xm_vars.var("install-extra", use='Extra command line options (default: None)', + check=lambda var, val: var_check_with_default(None, var, val)) +xm_vars.check() + +if not xm_vars.env['install']: + bootloader="pygrub" +else: + import os.path + print "Install Mirror: %s" % xm_vars.env['install-mirror'] + print "Install Suite: %s" % xm_vars.env['install-suite'] + if xm_vars.env['install-installer']: + installer = xm_vars.env['install-installer'] + else: + installer = os.path.join(xm_vars.env['install-mirror'],"dists",xm_vars.env['install-suite'],"main","installer-"+xm_vars.env['install-arch'], + "current","images") + print "Installer: %s" % installer + + import urllib + (kernel,_) = urllib.urlretrieve(os.path.join(installer, "netboot", "xen", "debian-installer", xm_vars.env['install-arch'], "linux")) + (ramdisk,_) = urllib.urlretrieve(os.path.join(installer, "netboot", "xen", "debian-installer", xm_vars.env['install-arch'], "initrd.gz")) + + if xm_vars.env['install-extra']: + extras=[xm_vars.env['install-extra']] + else: + extras=[] + + # Reboot will just restart the installer since this file is not + # reparsed, so halt and restart that way. + extras.append("debian-installer/exit/always_halt=true") + extras.append("--") + extras.append("quiet") + + try: + vfb + except NameError, e: + extras.append("console=hvc0") + + extra = str.join(" ", extras) + print "command line is \"%s\"" % extra
Attachment:
signature.asc
Description: This is a digitally signed message part