On Thu, Jan 16, 2020 at 01:49:09PM +0100, Michal Privoznik wrote:
On 1/16/20 1:27 PM, Pino Toscano wrote:
> Starting with 5.2.0, libvirt has a way to select the firmware by
> specifying its type, provided configuration files for the firmware are
> shipped. Currently we start the appliance as UEFI if any of the firmware
> are found, so instead we can try to just set the firmware type iff:
> - the libvirt autoselection works
> - the 'efi' firmware is available
>
> The only behaviour change is that the default firmware may be a
> non-debug version, so we get no debug messages even when running in
> verbose mode. This most probably will need an addition in libvirt to
> select this feature among the available firmwares.
Firmware autoselection parses JSON files at well defined locations giving
each file precedence over others based on the path it's found under and it's
name.
The file name precedence is based on alphabetical ordering. That is why file
names usually consists of two leading numbers, e.g. 40-bios.json,
50-ovmf-sb.json, 60-ovmf.json and so on. Now, the default, distro wide path
where these files live is /usr/share/qemu/firmware/ and has the least
precedence. If a sysadmin wants to alter config of some FW blob, instead of
fighting with package manager and overwriting files under /usr/.. they can
put changed versions under /etc/qemu/firmware which takes precedence over
the former path. For instance, if 40-bios.json is found under both paths,
only the one from /etc is considered and the other is not even parsed. If
you would apply this logic one more time, you will get
$HOME/.config/qemu/firmware which allows non-root users to override their
sysadmin's config and have their private FW blobs with the highest priority.
So if libguestfs wants libvirt to select certain FW image it can install its
own JSON descriptor somewhere into a suitable path and if the file has the
correct content it will direct libvirt into using FW blob with debug
messages enabled.
I not sure we should encourage applications / libraries to do this.
Installing a JSON descriptor into any of the directories mentioned above
will affect *all* applications on the host using libvirt, which is not
appropriate IMHO.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|