mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-19 18:11:31 +00:00
conf: Extend <loader/> and introduce <nvram/>
Up to now, users can configure BIOS via the <loader/> element. With the upcoming implementation of UEFI this is not enough as BIOS and UEFI are conceptually different. For instance, while BIOS is ROM, UEFI is programmable flash (although all writes to code section are denied). Therefore we need new attribute @type which will differentiate the two. Then, new attribute @readonly is introduced to reflect the fact that some images are RO. Moreover, the OVMF (which is going to be used mostly), works in two modes: 1) Code and UEFI variable store is mixed in one file. 2) Code and UEFI variable store is separated in two files The latter has advantage of updating the UEFI code without losing the configuration. However, in order to represent the latter case we need yet another XML element: <nvram/>. Currently, it has no additional attributes, it's just a bare element containing path to the variable store file. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
a1c0180d0e
commit
68bf13dbef
@ -102,7 +102,8 @@
|
||||
...
|
||||
<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'/>
|
||||
@ -129,7 +130,21 @@
|
||||
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
|
||||
|
@ -242,6 +242,27 @@
|
||||
<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>
|
||||
|
@ -780,6 +780,11 @@ VIR_ENUM_IMPL(virDomainDiskMirrorState, VIR_DOMAIN_DISK_MIRROR_STATE_LAST,
|
||||
"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)
|
||||
@ -2013,6 +2018,17 @@ virDomainPanicDefFree(virDomainPanicDefPtr panic)
|
||||
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;
|
||||
@ -2118,7 +2134,7 @@ void virDomainDefFree(virDomainDefPtr def)
|
||||
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);
|
||||
|
||||
@ -11715,6 +11731,42 @@ virDomainDefMaybeAddHostdevSCSIcontroller(virDomainDefPtr def)
|
||||
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,
|
||||
@ -12755,12 +12807,22 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
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")) {
|
||||
@ -17841,6 +17903,23 @@ virDomainHugepagesFormat(virBufferPtr buf,
|
||||
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)
|
||||
@ -18161,8 +18240,8 @@ virDomainDefFormatInternal(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",
|
||||
|
@ -1628,6 +1628,26 @@ struct _virDomainBIOSDef {
|
||||
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;
|
||||
@ -1647,7 +1667,7 @@ struct _virDomainOSDef {
|
||||
char *cmdline;
|
||||
char *dtb;
|
||||
char *root;
|
||||
char *loader;
|
||||
virDomainLoaderDefPtr loader;
|
||||
char *bootloader;
|
||||
char *bootloaderArgs;
|
||||
int smbios_mode;
|
||||
|
@ -314,6 +314,9 @@ virDomainLifecycleTypeFromString;
|
||||
virDomainLifecycleTypeToString;
|
||||
virDomainListFree;
|
||||
virDomainLiveConfigHelperMethod;
|
||||
virDomainLoaderDefFree;
|
||||
virDomainLoaderTypeFromString;
|
||||
virDomainLoaderTypeToString;
|
||||
virDomainLockFailureTypeFromString;
|
||||
virDomainLockFailureTypeToString;
|
||||
virDomainMemballoonModelTypeFromString;
|
||||
|
@ -7528,7 +7528,7 @@ qemuBuildCommandLine(virConnectPtr conn,
|
||||
|
||||
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
|
||||
@ -11359,7 +11359,8 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
|
||||
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();
|
||||
|
@ -1006,8 +1006,8 @@ get_files(vahControl * ctl)
|
||||
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++) {
|
||||
|
@ -988,7 +988,12 @@ vboxSetBootDeviceOrder(virDomainDefPtr def, vboxGlobalData *data,
|
||||
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);
|
||||
|
||||
|
@ -1430,7 +1430,8 @@ xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
|
||||
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;
|
||||
}
|
||||
|
@ -1065,7 +1065,8 @@ xenParseOS(virConfPtr conf, virDomainDefPtr def)
|
||||
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)
|
||||
@ -1738,8 +1739,8 @@ xenFormatOS(virConfPtr conf, virDomainDefPtr def)
|
||||
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++) {
|
||||
|
@ -93,13 +93,15 @@ xenParseSxprOS(const struct sexpr *node,
|
||||
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;
|
||||
@ -128,7 +130,7 @@ xenParseSxprOS(const struct sexpr *node,
|
||||
/* 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 */
|
||||
@ -2280,9 +2282,9 @@ xenFormatSxpr(virConnectPtr conn,
|
||||
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)
|
||||
|
40
tests/qemuxml2argvdata/qemuxml2argv-bios-nvram.xml
Normal file
40
tests/qemuxml2argvdata/qemuxml2argv-bios-nvram.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<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>
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -396,6 +396,8 @@ mymain(void)
|
||||
DO_TEST_DIFFERENT("numatune-memnode");
|
||||
DO_TEST("numatune-memnode-no-memory");
|
||||
|
||||
DO_TEST("bios-nvram");
|
||||
|
||||
virObjectUnref(driver.caps);
|
||||
virObjectUnref(driver.xmlopt);
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user