# HG changeset patch # User "Jeremy Katz " # Node ID d7782f96c70b28f65395d5dd8dd1d703e270ba72 # Parent 097e7c02a863c5f73fd366c05f52de12e1561109 instead of knowing about pygrub's entry configs, allow options to be set by hand and deprecate the bootentry option. this makes things more flexible for other bootloaders (eg, domUloader) diff -r 097e7c02a863 -r d7782f96c70b tools/python/xen/xend/XendBootloader.py --- a/tools/python/xen/xend/XendBootloader.py Tue May 02 17:09:34 2006 -0400 +++ b/tools/python/xen/xend/XendBootloader.py Tue May 02 18:15:55 2006 -0400 @@ -19,13 +19,13 @@ from XendLogging import log from XendLogging import log from XendError import VmError -def bootloader(blexec, disk, quiet = 0, entry = None): +def bootloader(blexec, disk, quiet = 0, blargs = None): """Run the boot loader executable on the given disk and return a config image. @param blexec Binary to use as the boot loader @param disk Disk to run the boot loader on. @param quiet Run in non-interactive mode, just booting the default. - @param entry Default entry to boot.""" + @param blargs Arguments to pass to the bootloader.""" if not os.access(blexec, os.X_OK): msg = "Bootloader isn't executable" @@ -48,8 +48,8 @@ def bootloader(blexec, disk, quiet = 0, if quiet: args.append("-q") args.append("--output=%s" %(fifo,)) - if entry is not None: - args.append("--entry=%s" %(entry,)) + if blargs is not None: + args.extend(blargs.split()) args.append(disk) try: diff -r 097e7c02a863 -r d7782f96c70b tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Tue May 02 17:09:34 2006 -0400 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue May 02 18:15:55 2006 -0400 @@ -132,6 +132,7 @@ ROUNDTRIPPING_CONFIG_ENTRIES = [ ('memory', int), ('maxmem', int), ('bootloader', str), + ('bootloader_args', str), ('features', str), ] @@ -571,6 +572,7 @@ class XendDomainInfo: defaultInfo('memory', lambda: 0) defaultInfo('maxmem', lambda: 0) defaultInfo('bootloader', lambda: None) + defaultInfo('bootloader_args', lambda: None) defaultInfo('backend', lambda: []) defaultInfo('device', lambda: []) defaultInfo('image', lambda: None) @@ -1630,7 +1632,8 @@ class XendDomainInfo: if disk is None: continue fn = blkdev_uname_to_file(disk) - blcfg = bootloader(self.info['bootloader'], fn, 1) + blcfg = bootloader(self.info['bootloader'], fn, 1, + self.info['bootloader_args']) break if blcfg is None: msg = "Had a bootloader specified, but can't find disk" diff -r 097e7c02a863 -r d7782f96c70b tools/python/xen/xm/create.py --- a/tools/python/xen/xm/create.py Tue May 02 17:09:34 2006 -0400 +++ b/tools/python/xen/xm/create.py Tue May 02 18:15:55 2006 -0400 @@ -122,9 +122,13 @@ gopts.var('bootloader', val='FILE', fn=set_value, default=None, use="Path to bootloader.") +gopts.var('bootargs', val='NAME', + fn=set_value, default=None, + use="Arguments to pass to boot loader") + gopts.var('bootentry', val='NAME', fn=set_value, default=None, - use="Entry to boot via boot loader") + use="DEPRECATED. Entry to boot via boot loader. Use bootargs.") gopts.var('kernel', val='FILE', fn=set_value, default=None, @@ -620,8 +624,13 @@ def run_bootloader(vals): (uname, dev, mode, backend) = vals.disk[0] file = blkif.blkdev_uname_to_file(uname) + if vals.bootentry: + warn("The bootentry option is deprecated. Use bootargs and pass " + "--entry= directly.") + vals.bootargs = "--entry=%s" %(vals.bootentry,) + return bootloader(vals.bootloader, file, not vals.console_autoconnect, - vals.bootentry) + vals.bootargs) def make_config(vals): """Create the domain configuration. @@ -654,8 +663,10 @@ def make_config(vals): config.append(['backend', ['tpmif']]) if vals.bootloader: + config_image = run_bootloader(vals) config.append(['bootloader', vals.bootloader]) - config_image = run_bootloader(vals) + if vals.bootargs: + config.append(['bootloader_args'], vals.bootargs) else: config_image = configure_image(vals) config.append(['image', config_image])