Features/GuestAgent/ISO

From QEMU
Revision as of 17:44, 9 March 2011 by AnthonyLiguori (talk | contribs) (→‎Implementation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Summary

Package the guest agent in an ISO that is built by QEMU to install the latest version of the guest agent automatically.

Owner

Detailed Summary

Other hypervisors provide easy-to-use mechanisms to install and update guest tools. Since QEMU is providing a standard guest tool package, QEMU should provide this mechanism.

Implementation

The QEMU build should build the guest agent binary for 32-bit and 64-bit (on a 64-bit host). If mingw32 is available with appropriate libraries, a Windows version should also be built. The three binaries should be copied into a separate directory along with the necessary DLL dependencies for Windows. Autorun scripts should be added to install the packages automatically. Finally, mkisofs should be used to create an ISO image. The ISO image should be shipped in /usr/share/qemu in the same manner as our firmware.

New QMP commands should be added to support this feature. Here's proposed commands:

{ 'GuestAddonInfo': { 'version': 'str', 'auto-update-enabled': 'bool' } }
{ 'GUEST_ADDONS_AVAILABLE': { 'info': 'GuestAddonInfo' } }

[ 'addons-install', {}, 'none' ]

{ 'AddonInfo': { 'enabled': 'bool', '*info': 'GuestAddonInfo' } }
[ 'query-addons', {}, 'AddonInfo' ]

virtio-win Drivers

If possible, we should also include the virtio-win drivers in this ISO. We can potentially support this by downloading the virtio-win drivers from fedorahosted.org. The guest-agent should provide an interface to advertise the presence of virtio-win drivers in Windows.

This notification can allow libvirt to automatically switch from using IDE/e1000 to virtio-blk/virtio-net for the next reboot.