diff -r abbe3df33774 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Tue Nov 8 17:39:58 2005 +++ b/tools/python/xen/xend/XendDomainInfo.py Wed Nov 9 17:03:51 2005 @@ -1098,9 +1098,6 @@ self.info['image'], self.info['device']) - if self.info['bootloader']: - self.image.handleBootloading() - xc.domain_setcpuweight(self.domid, self.info['cpu_weight']) m = self.image.getDomainMemory(self.info['memory_KiB']) @@ -1122,6 +1119,9 @@ self.introduceDomain() self.createDevices() + + if self.info['bootloader']: + self.image.cleanupBootloading() self.info['start_time'] = time.time() @@ -1287,6 +1287,7 @@ False if it is to be destroyed. """ + self.configure_bootloader() config = self.sxpr() if self.readVm(RESTART_IN_PROGRESS): @@ -1389,8 +1390,9 @@ # FIXME: this assumes the disk is the first device and # that we're booting from the first disk blcfg = None + config = self.sxpr() # FIXME: this assumes that we want to use the first disk - dev = sxp.child_value(self.config, "device") + dev = sxp.child_value(config, "device") if dev: disk = sxp.child_value(dev, "uname") fn = blkdev_uname_to_file(disk) @@ -1400,7 +1402,7 @@ msg = "Had a bootloader specified, but can't find disk" log.error(msg) raise VmError(msg) - self.config = sxp.merge(['vm', ['image', blcfg]], self.config) + self.info['image'] = sxp.to_string(blcfg) def send_sysrq(self, key): diff -r abbe3df33774 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Tue Nov 8 17:39:58 2005 +++ b/tools/python/xen/xend/image.py Wed Nov 9 17:03:51 2005 @@ -95,7 +95,7 @@ ("image/ramdisk", self.ramdisk)) - def handleBootloading(self): + def cleanupBootloading(self): self.unlink(self.kernel) self.unlink(self.ramdisk) diff -r abbe3df33774 tools/python/xen/xm/create.py --- a/tools/python/xen/xm/create.py Tue Nov 8 17:39:58 2005 +++ b/tools/python/xen/xm/create.py Wed Nov 9 17:03:51 2005 @@ -564,7 +564,7 @@ file = blkif.blkdev_uname_to_file(uname) return bootloader(vals.bootloader, file, not vals.console_autoconnect, - vals.vcpus, vals.blentry) + vals.vcpus, vals.bootentry) def make_config(vals): """Create the domain configuration. @@ -780,7 +780,7 @@ vals.extra = vnc + ' ' + vals.extra def preprocess(vals): - if not vals.kernel: + if not vals.kernel and not vals.bootloader: err("No kernel specified") preprocess_disk(vals) preprocess_pci(vals)