...
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader readonly='on' type='rom'>/usr/lib/xen/boot/hvmloader</loader>
+ <nvram>/var/lib/libvirt/nvram/guest_VARS.fd</nvram>
<boot dev='hd'/>
<boot dev='cdrom'/>
<bootmenu enable='yes' timeout='3000'/>
used to assist the domain creation process. It is used by Xen
fully virtualized domains as well as setting the QEMU BIOS file
path for QEMU/KVM domains. <span class="since">Xen since 0.1.0,
- QEMU/KVM since 0.9.12</span></dd>
+ QEMU/KVM since 0.9.12</span> Then, <span class="since">since
+ 1.2.8</span> it's possible for the element to have two
+ optional attributes: <code>readonly</code> (accepted values are
+ <code>yes</code> and <code>no</code>) to reflect the fact that the
+ image should be writable or read-only. The second attribute
+ <code>type</code> accepts values <code>rom</code> and
+ <code>pflash</code>. It tells the hypervisor where in the guest
+ memory the file should be mapped. For instance, if the loader
+ path points to an UEFI image, <code>type</code> should be
+ <code>pflash</code>.</dd>
+ <dt><code>nvram</code></dt>
+ <dd>Some UEFI firmwares may want to use a non-volatile memory to store
+ some variables. In the host, this is represented as a file and the
+ path to the file is stored in this element. <span class="since">Since
+ 1.2.8</span></dd>
<dt><code>boot</code></dt>
<dd>The <code>dev</code> attribute takes one of the values "fd", "hd",
"cdrom" or "network" and is used to specify the next boot device
<interleave>
<optional>
<element name="loader">
+ <optional>
+ <attribute name="readonly">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>rom</value>
+ <value>pflash</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="absFilePath"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="nvram">
<ref name="absFilePath"/>
</element>
</optional>
"abort",
"pivot")
+VIR_ENUM_IMPL(virDomainLoader,
+ VIR_DOMAIN_LOADER_TYPE_LAST,
+ "rom",
+ "pflash")
+
/* Internal mapping: subset of block job types that can be present in
* <mirror> XML (remaining types are not two-phase). */
VIR_ENUM_DECL(virDomainBlockJob)
VIR_FREE(panic);
}
+void
+virDomainLoaderDefFree(virDomainLoaderDefPtr loader)
+{
+ if (!loader)
+ return;
+
+ VIR_FREE(loader->path);
+ VIR_FREE(loader->nvram);
+ VIR_FREE(loader);
+}
+
void virDomainDefFree(virDomainDefPtr def)
{
size_t i;
VIR_FREE(def->os.cmdline);
VIR_FREE(def->os.dtb);
VIR_FREE(def->os.root);
- VIR_FREE(def->os.loader);
+ virDomainLoaderDefFree(def->os.loader);
VIR_FREE(def->os.bootloader);
VIR_FREE(def->os.bootloaderArgs);
return 0;
}
+static int
+virDomainLoaderDefParseXML(xmlNodePtr node,
+ virDomainLoaderDefPtr loader)
+{
+ int ret = -1;
+ char *readonly_str = NULL;
+ char *type_str = NULL;
+
+ readonly_str = virXMLPropString(node, "readonly");
+ type_str = virXMLPropString(node, "type");
+ loader->path = (char *) xmlNodeGetContent(node);
+
+ if (readonly_str &&
+ (loader->readonly = virTristateBoolTypeFromString(readonly_str)) <= 0) {
+ virReportError(VIR_ERR_XML_DETAIL,
+ _("unknown readonly value: %s"), readonly_str);
+ goto cleanup;
+ }
+
+ if (type_str) {
+ int type;
+ if ((type = virDomainLoaderTypeFromString(type_str)) < 0) {
+ virReportError(VIR_ERR_XML_DETAIL,
+ _("unknown type value: %s"), type_str);
+ goto cleanup;
+ }
+ loader->type = type;
+ }
+
+ ret = 0;
+ cleanup:
+ VIR_FREE(readonly_str);
+ VIR_FREE(type_str);
+ return ret;
+}
+
static virDomainDefPtr
virDomainDefParseXML(xmlDocPtr xml,
xmlNodePtr root,
if (STREQ(def->os.type, "xen") ||
STREQ(def->os.type, "hvm") ||
STREQ(def->os.type, "uml")) {
+ xmlNodePtr loader_node;
+
def->os.kernel = virXPathString("string(./os/kernel[1])", ctxt);
def->os.initrd = virXPathString("string(./os/initrd[1])", ctxt);
def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt);
def->os.dtb = virXPathString("string(./os/dtb[1])", ctxt);
def->os.root = virXPathString("string(./os/root[1])", ctxt);
- def->os.loader = virXPathString("string(./os/loader[1])", ctxt);
+ if ((loader_node = virXPathNode("./os/loader[1]", ctxt))) {
+ if (VIR_ALLOC(def->os.loader) < 0)
+ goto error;
+
+ if (virDomainLoaderDefParseXML(loader_node, def->os.loader) < 0)
+ goto error;
+
+ def->os.loader->nvram = virXPathString("string(./os/nvram[1])", ctxt);
+ }
}
if (STREQ(def->os.type, "hvm")) {
virBufferAddLit(buf, "</hugepages>\n");
}
+static void
+virDomainLoaderDefFormat(virBufferPtr buf,
+ virDomainLoaderDefPtr loader)
+{
+ const char *readonly = virTristateBoolTypeToString(loader->readonly);
+ const char *type = virDomainLoaderTypeToString(loader->type);
+
+ virBufferAddLit(buf, "<loader");
+
+ if (loader->readonly)
+ virBufferAsprintf(buf, " readonly='%s'", readonly);
+
+ virBufferAsprintf(buf, " type='%s'>", type);
+
+ virBufferEscapeString(buf, "%s</loader>\n", loader->path);
+ virBufferEscapeString(buf, "<nvram>%s</nvram>\n", loader->nvram);
+}
static bool
virDomainDefHasCapabilitiesFeatures(virDomainDefPtr def)
for (i = 0; def->os.initargv && def->os.initargv[i]; i++)
virBufferEscapeString(buf, "<initarg>%s</initarg>\n",
def->os.initargv[i]);
- virBufferEscapeString(buf, "<loader>%s</loader>\n",
- def->os.loader);
+ if (def->os.loader)
+ virDomainLoaderDefFormat(buf, def->os.loader);
virBufferEscapeString(buf, "<kernel>%s</kernel>\n",
def->os.kernel);
virBufferEscapeString(buf, "<initrd>%s</initrd>\n",
int rt_delay;
};
+typedef enum {
+ VIR_DOMAIN_LOADER_TYPE_ROM = 0,
+ VIR_DOMAIN_LOADER_TYPE_PFLASH,
+
+ VIR_DOMAIN_LOADER_TYPE_LAST
+} virDomainLoader;
+
+VIR_ENUM_DECL(virDomainLoader)
+
+typedef struct _virDomainLoaderDef virDomainLoaderDef;
+typedef virDomainLoaderDef *virDomainLoaderDefPtr;
+struct _virDomainLoaderDef {
+ char *path;
+ int readonly; /* enum virTristateBool */
+ virDomainLoader type;
+ char *nvram; /* path to non-volatile RAM */
+};
+
+void virDomainLoaderDefFree(virDomainLoaderDefPtr loader);
+
/* Operating system configuration data & machine / arch */
typedef struct _virDomainOSDef virDomainOSDef;
typedef virDomainOSDef *virDomainOSDefPtr;
char *cmdline;
char *dtb;
char *root;
- char *loader;
+ virDomainLoaderDefPtr loader;
char *bootloader;
char *bootloaderArgs;
int smbios_mode;
virDomainLifecycleTypeToString;
virDomainListFree;
virDomainLiveConfigHelperMethod;
+virDomainLoaderDefFree;
+virDomainLoaderTypeFromString;
+virDomainLoaderTypeToString;
virDomainLockFailureTypeFromString;
virDomainLockFailureTypeToString;
virDomainMemballoonModelTypeFromString;
if (def->os.loader) {
virCommandAddArg(cmd, "-bios");
- virCommandAddArg(cmd, def->os.loader);
+ virCommandAddArg(cmd, def->os.loader->path);
}
/* Set '-m MB' based on maxmem, because the lower 'memory' limit
goto error;
} else if (STREQ(arg, "-bios")) {
WANT_VALUE();
- if (VIR_STRDUP(def->os.loader, val) < 0)
+ if (VIR_ALLOC(def->os.loader) < 0 ||
+ VIR_STRDUP(def->os.loader->path, val) < 0)
goto error;
} else if (STREQ(arg, "-initrd")) {
WANT_VALUE();
if (vah_add_file(&buf, ctl->def->os.dtb, "r") != 0)
goto cleanup;
- if (ctl->def->os.loader && ctl->def->os.loader)
- if (vah_add_file(&buf, ctl->def->os.loader, "r") != 0)
+ if (ctl->def->os.loader && ctl->def->os.loader->path)
+ if (vah_add_file(&buf, ctl->def->os.loader->path, "r") != 0)
goto cleanup;
for (i = 0; i < ctl->def->ngraphics; i++) {
VIR_DEBUG("def->os.initrd %s", def->os.initrd);
VIR_DEBUG("def->os.cmdline %s", def->os.cmdline);
VIR_DEBUG("def->os.root %s", def->os.root);
- VIR_DEBUG("def->os.loader %s", def->os.loader);
+ if (def->os.loader) {
+ VIR_DEBUG("def->os.loader->path %s", def->os.loader->path);
+ VIR_DEBUG("def->os.loader->readonly %d", def->os.loader->readonly);
+ VIR_DEBUG("def->os.loader->type %d", def->os.loader->type);
+ VIR_DEBUG("def->os.loader->nvram %s", def->os.loader->nvram);
+ }
VIR_DEBUG("def->os.bootloader %s", def->os.bootloader);
VIR_DEBUG("def->os.bootloaderArgs %s", def->os.bootloaderArgs);
VIR_FREE(boot_policy);
goto error;
}
- if (VIR_STRDUP(defPtr->os.loader, "pygrub") < 0) {
+ if (VIR_ALLOC(defPtr->os.loader) < 0 ||
+ VIR_STRDUP(defPtr->os.loader->path, "pygrub") < 0) {
VIR_FREE(boot_policy);
goto error;
}
if (STREQ(def->os.type, "hvm")) {
const char *boot;
- if (xenConfigCopyString(conf, "kernel", &def->os.loader) < 0)
+ if (VIR_ALLOC(def->os.loader) < 0 ||
+ xenConfigCopyString(conf, "kernel", &def->os.loader->path) < 0)
return -1;
if (xenConfigGetString(conf, "boot", &boot, "c") < 0)
if (xenXMConfigSetString(conf, "builder", "hvm") < 0)
return -1;
- if (def->os.loader &&
- xenXMConfigSetString(conf, "kernel", def->os.loader) < 0)
+ if (def->os.loader && def->os.loader->path &&
+ xenXMConfigSetString(conf, "kernel", def->os.loader->path) < 0)
return -1;
for (i = 0; i < def->os.nBootDevs; i++) {
int hvm)
{
if (hvm) {
- if (sexpr_node_copy(node, "domain/image/hvm/loader", &def->os.loader) < 0)
+ if (VIR_ALLOC(def->os.loader) < 0)
goto error;
- if (def->os.loader == NULL) {
- if (sexpr_node_copy(node, "domain/image/hvm/kernel", &def->os.loader) < 0)
+ if (sexpr_node_copy(node, "domain/image/hvm/loader", &def->os.loader->path) < 0)
+ goto error;
+ if (def->os.loader->path == NULL) {
+ if (sexpr_node_copy(node, "domain/image/hvm/kernel", &def->os.loader->path) < 0)
goto error;
- if (def->os.loader == NULL) {
+ if (def->os.loader->path == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("domain information incomplete, missing HVM loader"));
return -1;
/* If HVM kenrel == loader, then old xend, so kill off kernel */
if (hvm &&
def->os.kernel &&
- STREQ(def->os.kernel, def->os.loader)) {
+ STREQ(def->os.kernel, def->os.loader->path)) {
VIR_FREE(def->os.kernel);
}
/* Drop kernel argument that has no value */
if (hvm) {
char bootorder[VIR_DOMAIN_BOOT_LAST+1];
if (def->os.kernel)
- virBufferEscapeSexpr(&buf, "(loader '%s')", def->os.loader);
+ virBufferEscapeSexpr(&buf, "(loader '%s')", def->os.loader->path);
else
- virBufferEscapeSexpr(&buf, "(kernel '%s')", def->os.loader);
+ virBufferEscapeSexpr(&buf, "(kernel '%s')", def->os.loader->path);
virBufferAsprintf(&buf, "(vcpus %u)", def->maxvcpus);
if (def->vcpus < def->maxvcpus)
--- /dev/null
+<domain type='qemu'>
+ <name>test-bios</name>
+ <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid>
+ <memory unit='KiB'>1048576</memory>
+ <currentMemory unit='KiB'>1048576</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
+ <nvram>/usr/share/OVMF/OVMF_VARS.fd</nvram>
+ <boot dev='hd'/>
+ <bootmenu enable='yes'/>
+ </os>
+ <features>
+ <acpi/>
+ </features>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='usb' index='0'/>
+ <controller type='ide' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <serial type='pty'>
+ <target port='0'/>
+ </serial>
+ <console type='pty'>
+ <target type='serial' port='0'/>
+ </console>
+ <input type='tablet' bus='usb'/>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-1.4'>hvm</type>
- <loader>/usr/share/seabios/bios.bin</loader>
+ <loader type='rom'>/usr/share/seabios/bios.bin</loader>
<boot dev='hd'/>
</os>
<features>
DO_TEST_DIFFERENT("numatune-memnode");
DO_TEST("numatune-memnode-no-memory");
+ DO_TEST("bios-nvram");
+
virObjectUnref(driver.caps);
virObjectUnref(driver.xmlopt);
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>2</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<kernel>/var/lib/xen/vmlinuz.2Dn2YT</kernel>
<initrd>/var/lib/xen/initrd.img.0u-Vhq</initrd>
<cmdline> method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os </cmdline>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader&test</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader&test</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='xenfv'>hvm</type>
- <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>