Up till here the BIOS/UEFI configuration knobs are generic enough to beimplemented by majority (if not all) firmwares out there. However, from now onnot every single setting makes sense to all firmwares. For instance,rebootTimeout doesn't make sense for UEFI, useserial might not be usablewith a BIOS firmware that doesn't produce any output onto serial line, etc.Moreover, firmwares don't usually export their capabilities for libvirt (orusers) to check. And the set of their capabilities can change with every newrelease. Hence users are advised to try the settings they use before relying onthem in production.
This element has attribute useserial with possible values yes orno. It enables or disables Serial Graphics Adapter which allows users tosee BIOS messages on a serial port. Therefore, one needs to have Serial portdefined. Since 0.9.4 . Since0.10.2 (QEMU only) there is another attribute, rebootTimeout thatcontrols whether and after how long the guest should start booting again incase the boot fails (according to BIOS). The value is in milliseconds withmaximum of 65535 and special value -1 disables the reboot.
The contents of this element specify arguments to be passed to the kernel (orinstaller) at boot time. This is often used to specify an alternate primaryconsole (eg serial port), or the installation media source / kickstart file
Configure ibs (Indirect Branch Speculation) availability for pSeries guests.Possible values for the value attribute are broken (no protection),workaround (count cache flush), fixed-ibs (fixed by serializingindirect branches), fixed-ccd (fixed by disabling the cache count) andfixed-na (fixed in hardware - no longer applicable). If theattribute is not defined, the hypervisor default will be used. Since6.3.0 (QEMU/KVM only)
If present, this specify serial number of virtual hard drive. For example, itmay look like WD-WMAP9A966149. Not supported forscsi-block devices, that is those using disk type 'block' usingdevice 'lun' on bus 'scsi'. Since 0.7.1
Note that depending on hypervisor and device type the serial number may betruncated silently. IDE/SATA devices are commonly limited to 20 characters.SCSI devices depending on hypervisor version are limited to 20, 36 or 247characters.
Hypervisors may also start rejecting overly long serials instead oftruncating them in the future so it's advised to avoid the implicittruncation by testing the desired serial length range with the desired deviceand hypervisor combination.
Each controller has a mandatory attribute type, which must be one of 'ide','fdc', 'scsi', 'sata', 'usb', 'ccid', 'virtio-serial' or 'pci', and a mandatoryattribute index which is the decimal integer describing in which order thebus controller is encountered (for use in controller attributes of elements). Since 1.3.5 the index is optional; if notspecified, it will be auto-assigned to be the lowest unused index for the givencontroller type. Some controller types have additional attributes that controlspecific features, such as:
The virtio-serial controller has two additional optional attributesports and vectors, which control how many devices can be connectedthrough the controller. Since 5.2.0 , it supports an optionalattribute model which can be 'virtio', 'virtio-transitional', or'virtio-non-transitional'. See Virtio transitional devices for more details.
The redirdev element is the main container for describing redirecteddevices. bus must be "usb" for a USB device. An additional attributetype is required, matching one of the supported serial device types(See Consoles, serial, parallel & channel devices), to describe the hostside of the tunnel; type='tcp' or type='spicevmc' (which uses theusbredir channel of a SPICE graphics device (See Graphical framebuffers))are typical.
Rather than having the hypervisor directly communicate with the host, it ispossible to tunnel all requests through a secondary character device to athird-party provider (which may in turn be talking to a smartcard or usingthree certificate files). In this mode of operation, an additional attributetype is required, matching one of the supported serial device types(See Consoles, serial, parallel & channel devices),to describe the host side of the tunnel;type='tcp' or type='spicevmc' (which uses the smartcard channel of aSPICE graphics device (See Graphical framebuffers)) are typical. Furthersub-elements, such as , may be required according to the giventype, although a sub-element is not required (since the consumerof the character device is the hypervisor itself, rather than a devicevisible in the guest).
A character device provides a way to interact with the virtual machine.Paravirtualized consoles, serial ports, parallel ports and channels are allclassed as character devices and so represented using the same syntax.
The target element can have an optional port attribute, which specifiesthe port number (starting from 0), and an optional type attribute: validvalues are, since 1.0.2 , isa-serial (usable with x86 guests),usb-serial (usable whenever USB support is available) and pci-serial(usable whenever PCI support is available); since 3.10.0 ,spapr-vio-serial (usable with ppc64/pseries guests), system-serial(usable with aarch64/virt and, since 4.7.0 , riscv/virt guests),sclp-serial (usable with s390 and s390x guests) are available as welland since 8.1.0 isa-debug (usable with x86 guests).
Since 3.10.0 , the target element can have an optional modelsubelement; valid values for its name attribute are: isa-serial (usablewith the isa-serial target type); usb-serial (usable with theusb-serial target type); pci-serial (usable with the pci-serialtarget type); spapr-vty (usable with the spapr-vio-serial target type);pl011 and, since 4.7.0 , 16550a (usable with thesystem-serial target type); sclpconsole and sclplmconsole (usablewith the sclp-serial target type). Since: 8.1.0, isa-debugcon(usable with the isa-debug target type); provides a virtual console forreceiving debug messages from the firmware on x86 platforms.Providing a target model is usually unnecessary: libvirt will automaticallypick one that's suitable for the chosen target type, and overriding thatvalue is generally not recommended.
Most target types support configuring the guest-visible device address asdocumented in the Device Addresses section; more specifically, acceptable addresstypes are isa (for isa-serial), usb (for usb-serial), pci(for pci-serial) and spapr-vio (for spapr-vio-serial). Thesystem-serial and sclp-serial target types don't support specifying anaddress.
The console element is used to represent interactive serial consoles.Depending on the type of guest in use and the specifics of the configuration,the console element might represent the same device as an existingserial element or a separate device.
A target subelement is supported and works the same way as with theserial element (See Serial port for details). Validvalues for the type attribute are: serial (described below); virtio(usable whenever VirtIO support is available); xen, lxc and openvz(available when the corresponding hypervisor is in use). sclp and sclplm(usable for s390 and s390x QEMU guests) are supported for compatibility reasonsbut should not be used for new guests: use the sclpconsole andsclplmconsole target models, respectively, with the serial elementinstead.
Of the target types listed above, serial is special in that it doesn'trepresents a separate device, but rather the same device as the first serialelement. Due to this, there can only be a single console element with targettype serial per guest.
In general, both elements are used to configure one or more serial consoles tobe used for interacting with the guest. The main difference between the two isthat serial is used for emulated, usually native, serial consoles, whereasconsole is used for paravirtualized ones.
will work on any platform and will result in one emulated serial console forearly boot logging / interactive / recovery use, and one paravirtualized serialconsole to be used eg. as a side channel. Most people will be fine with havingjust the first console element in their configuration, but if a specificconfiguration is desired then both elements should be specified.
Paravirtualized virtio channel. Channel is exposed in the guest under/dev/vport*, and if the optional element name is specified,/dev/virtio-ports/$name (for more info, please see ). The optional elementaddress can tie the channel to a particular type='virtio-serial'controller, as documented in the Device Addresses section. With qemu, if nameis "org.qemu.guest_agent.0", then libvirt can interact with a guest agentinstalled in the guest, for actions such as guest shutdown or file systemquiescing. Since 0.7.7, guest agent interaction since 0.9.10Moreover, since 1.0.6 it is possible to have source path autogenerated for virtio unix channels. This is very useful in case of a qemuguest agent, where users don't usually care about the source path since it'slibvirt who talks to the guest agent. In case users want to utilize thisfeature, they should leave element out. Since 1.2.11the active XML for a virtio channel may contain an optional stateattribute that reflects whether a process in the guest is active on thechannel. This is an output-only attribute. Possible values for the stateattribute are connected and disconnected.
Paravirtualized SPICE channel. The domain must also have a SPICE server as agraphics device (See Graphical framebuffers), at which point the host piggy-backsmessages across the main channel. The target element must be present,with attribute type='virtio'; an optional attribute name controls howthe guest will have access to the channel, and defaults toname='com.redhat.spice.0'. The optional address element can tie thechannel to a particular type='virtio-serial' controller. Since0.8.8
Paravirtualized qemu vdagent channel. This channel implements the SPICEvdagent protocol, but is handled internally by qemu and therefore does notrequire a SPICE graphics device. Like the spicevmc channel, the targetelement must be present, with attribute type='virtio'; an optionalattribute name controls how the guest will have access to the channel,and defaults to name='com.redhat.spice.0'. The optional addresselement can tie the channel to a particular type='virtio-serial'controller. Certain vdagent protocol features can by enabled or disabledusing the source element. 2b1af7f3a8