qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] RFC: Qemu Guest Tools ISO
@ 2011-06-22 18:55 Michael Roth
  2011-06-23  9:29 ` Alon Levy
  2011-06-23 11:14 ` Ronen Hod
  0 siblings, 2 replies; 15+ messages in thread
From: Michael Roth @ 2011-06-22 18:55 UTC (permalink / raw)
  To: qemu-devel@nongnu.org Developers; +Cc: bsarathy, Anthony Liguori, pmyers, agl

Goal:

Provide a mechanism, similar to vmware and virtualbox guest tools ISOs, 
that allows us to easily distribute guest tools (and potentially 
drivers) for linux and windows guests.

Advantages (rough list to start the discussion, feel free to add/comment):

- Simplify deployment of guest additions. ISO-installable additions can 
be pulled from QEMU/KVM/virtio/etc upstream or external projects as 
needed rather than worked into distros as independent packages. Users do 
not need to worry about installing lists of packages for full support. 
Pre-made ISOs can be pulled into QEMU/KVM in a manner similar to 
BIOSs/option roms.

- Reduce complexity involved with needing to manage guests with 
outdated/missing tools or drivers. No need to rely on distros to pull 
drivers/features/bug fixes from upstream before relying on them; we can 
assume these fixes/features are immediately available from an upstream 
perspective, and distros can still maintain compatibility within a 
distro-centric environment by shipping specific versions of the guest 
tools ISO (hopefully the version committed to qemu.git at time of rebase 
or newer)

- Simplify updates: Hypervisor can push guest tools updates by building 
QMP/guest agent interfaces around an ISO.

- Extend support to older guests (and windows) where new repo packages 
are not a realistic option.

- ?

Disadvantages:

- Need to test changes to tools against supported distros/platforms 
rather than punting to / or leveraging distro maintainers. KVM Autotest 
would likely be a big part of this.

- Potentially less integration from a distro-centric perspective. 
Upstream mandates guest tools, distros need to keep up or rebase to 
remain in sync. Can still elect to support specific versions of a guest 
tools ISO, however.

- ?

Implementation:

I hope to follow-up in fairly short order with a basic prototype of the 
tools/workflow to create/install a guest additions ISO. A rough overview 
of the approach I'm currently pursuing:

- Use PyInstaller (built around pye2exe, linux/windows compatible, with 
logic to pull in required shared libs and windows/tcl/cmd.exe support as 
needed) to generate executables from python scripts.

- Each project exists as a free-form directory with source code, or 
32/64 bit pre-compiled binaries, windows-based installers, etc. To add 
to an ISO a symlink to this directory would be added along with a python 
installer script which accepts arch/distro as arguments. 
install/update/uninstall logic handled completely by this install script.

- Top-level installer will iterate through guest additions projects and 
execute installers in turn. (some basic dependency support or explicit 
ordered may be needed).

- Install scripts (top-level and per-project) will be run through a set 
of scripts built around PyInstaller to generate a group of executable 
installers for linux as well as for windows (installers can be 
do-nothings for unsupported platforms, or simply call out to other 
binaries if using, say, an MSI windows installer). Both will co-exist on 
the same ISO, and share the top-level projects directory containing the 
individual code/binaries for individual projects.

Thoughts?

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-22 18:55 [Qemu-devel] RFC: Qemu Guest Tools ISO Michael Roth
@ 2011-06-23  9:29 ` Alon Levy
  2011-06-23 11:08   ` Stefan Hajnoczi
                     ` (2 more replies)
  2011-06-23 11:14 ` Ronen Hod
  1 sibling, 3 replies; 15+ messages in thread
From: Alon Levy @ 2011-06-23  9:29 UTC (permalink / raw)
  To: Michael Roth
  Cc: bsarathy, Anthony Liguori, pmyers, agl,
	qemu-devel@nongnu.org Developers

On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
> Goal:
> 
> Provide a mechanism, similar to vmware and virtualbox guest tools
> ISOs, that allows us to easily distribute guest tools (and
> potentially drivers) for linux and windows guests.

What would be the advantage for linux guests, with their package managers already
handling this task? I see how it would make testing easier with various linux
distributions, but for management I wonder if it won't be easier to use the
package management system to update the guests same as the hosts.

> 
> Advantages (rough list to start the discussion, feel free to add/comment):
> 
> - Simplify deployment of guest additions. ISO-installable additions
> can be pulled from QEMU/KVM/virtio/etc upstream or external projects
> as needed rather than worked into distros as independent packages.
> Users do not need to worry about installing lists of packages for
> full support. Pre-made ISOs can be pulled into QEMU/KVM in a manner
> similar to BIOSs/option roms.
> 
> - Reduce complexity involved with needing to manage guests with
> outdated/missing tools or drivers. No need to rely on distros to
> pull drivers/features/bug fixes from upstream before relying on
> them; we can assume these fixes/features are immediately available
> from an upstream perspective, and distros can still maintain
> compatibility within a distro-centric environment by shipping
> specific versions of the guest tools ISO (hopefully the version
> committed to qemu.git at time of rebase or newer)
> 
> - Simplify updates: Hypervisor can push guest tools updates by
> building QMP/guest agent interfaces around an ISO.
> 
> - Extend support to older guests (and windows) where new repo
> packages are not a realistic option.
> 

ok, this is relevant to linux guests too.

> - ?
> 
> Disadvantages:
> 
> - Need to test changes to tools against supported distros/platforms
> rather than punting to / or leveraging distro maintainers. KVM
> Autotest would likely be a big part of this.
> 
> - Potentially less integration from a distro-centric perspective.
> Upstream mandates guest tools, distros need to keep up or rebase to
> remain in sync. Can still elect to support specific versions of a
> guest tools ISO, however.
> 
> - ?
> 
> Implementation:
> 
> I hope to follow-up in fairly short order with a basic prototype of
> the tools/workflow to create/install a guest additions ISO. A rough
> overview of the approach I'm currently pursuing:
> 
> - Use PyInstaller (built around pye2exe, linux/windows compatible,
> with logic to pull in required shared libs and windows/tcl/cmd.exe
> support as needed) to generate executables from python scripts.
> 
> - Each project exists as a free-form directory with source code, or
> 32/64 bit pre-compiled binaries, windows-based installers, etc. To
> add to an ISO a symlink to this directory would be added along with
> a python installer script which accepts arch/distro as arguments.
> install/update/uninstall logic handled completely by this install
> script.
> 
> - Top-level installer will iterate through guest additions projects
> and execute installers in turn. (some basic dependency support or
> explicit ordered may be needed).

I'm not sure all drivers have installers. sometimes it will need to install
from inf I think. Should look at how the REHV-M iso does this.

> 
> - Install scripts (top-level and per-project) will be run through a
> set of scripts built around PyInstaller to generate a group of
> executable installers for linux as well as for windows (installers
> can be do-nothings for unsupported platforms, or simply call out to
> other binaries if using, say, an MSI windows installer). Both will
> co-exist on the same ISO, and share the top-level projects directory
> containing the individual code/binaries for individual projects.
> 
> Thoughts?
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23  9:29 ` Alon Levy
@ 2011-06-23 11:08   ` Stefan Hajnoczi
  2011-06-23 11:38     ` Daniel P. Berrange
  2011-06-23 12:00     ` Avi Kivity
  2011-06-23 11:31   ` Jan Kiszka
  2011-06-23 14:41   ` Michael Roth
  2 siblings, 2 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2011-06-23 11:08 UTC (permalink / raw)
  To: Michael Roth, qemu-devel@nongnu.org Developers, bsarathy,
	Anthony Liguori, pmyers, agl

On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy <alevy@redhat.com> wrote:
> On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
>> Goal:
>>
>> Provide a mechanism, similar to vmware and virtualbox guest tools
>> ISOs, that allows us to easily distribute guest tools (and
>> potentially drivers) for linux and windows guests.
>
> What would be the advantage for linux guests, with their package managers already
> handling this task? I see how it would make testing easier with various linux
> distributions, but for management I wonder if it won't be easier to use the
> package management system to update the guests same as the hosts.

If the guest tools come from the host QEMU we don't need complicated
compatibility testing and fallbacks.  Guest and host will be in sync
and support the same features.

I'm not sure how we can update guest tools when the QEMU on the host
is updated though.

Stefan

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-22 18:55 [Qemu-devel] RFC: Qemu Guest Tools ISO Michael Roth
  2011-06-23  9:29 ` Alon Levy
@ 2011-06-23 11:14 ` Ronen Hod
  1 sibling, 0 replies; 15+ messages in thread
From: Ronen Hod @ 2011-06-23 11:14 UTC (permalink / raw)
  To: qemu-devel

On 06/22/2011 09:55 PM, Michael Roth wrote:
> Goal:
>
> Provide a mechanism, similar to vmware and virtualbox guest tools 
> ISOs, that allows us to easily distribute guest tools (and potentially 
> drivers) for linux and windows guests.
>
> Advantages (rough list to start the discussion, feel free to 
> add/comment):
>
> - Simplify deployment of guest additions. ISO-installable additions 
> can be pulled from QEMU/KVM/virtio/etc upstream or external projects 
> as needed rather than worked into distros as independent packages. 
> Users do not need to worry about installing lists of packages for full 
> support. Pre-made ISOs can be pulled into QEMU/KVM in a manner similar 
> to BIOSs/option roms.
>
> - Reduce complexity involved with needing to manage guests with 
> outdated/missing tools or drivers. No need to rely on distros to pull 
> drivers/features/bug fixes from upstream before relying on them; we 
> can assume these fixes/features are immediately available from an 
> upstream perspective, and distros can still maintain compatibility 
> within a distro-centric environment by shipping specific versions of 
> the guest tools ISO (hopefully the version committed to qemu.git at 
> time of rebase or newer)
>
> - Simplify updates: Hypervisor can push guest tools updates by 
> building QMP/guest agent interfaces around an ISO.
>
> - Extend support to older guests (and windows) where new repo packages 
> are not a realistic option.
>
> - ?
>
> Disadvantages:
>
> - Need to test changes to tools against supported distros/platforms 
> rather than punting to / or leveraging distro maintainers. KVM 
> Autotest would likely be a big part of this.
>
> - Potentially less integration from a distro-centric perspective. 
> Upstream mandates guest tools, distros need to keep up or rebase to 
> remain in sync. Can still elect to support specific versions of a 
> guest tools ISO, however.
>
> - ?
>
> Implementation:
>
> I hope to follow-up in fairly short order with a basic prototype of 
> the tools/workflow to create/install a guest additions ISO. A rough 
> overview of the approach I'm currently pursuing:
>
> - Use PyInstaller (built around pye2exe, linux/windows compatible, 
> with logic to pull in required shared libs and windows/tcl/cmd.exe 
> support as needed) to generate executables from python scripts.
>
> - Each project exists as a free-form directory with source code, or 
> 32/64 bit pre-compiled binaries, windows-based installers, etc. To add 
> to an ISO a symlink to this directory would be added along with a 
> python installer script which accepts arch/distro as arguments. 
> install/update/uninstall logic handled completely by this install script.
>
> - Top-level installer will iterate through guest additions projects 
> and execute installers in turn. (some basic dependency support or 
> explicit ordered may be needed).
>
> - Install scripts (top-level and per-project) will be run through a 
> set of scripts built around PyInstaller to generate a group of 
> executable installers for linux as well as for windows (installers can 
> be do-nothings for unsupported platforms, or simply call out to other 
> binaries if using, say, an MSI windows installer). Both will co-exist 
> on the same ISO, and share the top-level projects directory containing 
> the individual code/binaries for individual projects.
>
> Thoughts?
>
The windows drivers are an issue. You do not want to compile them since 
you need the hard-to-get Microsoft certification. Now that you have to 
provide them in binary mode, the question is whether it makes sense to 
treat the Windows agent differently.
Other than building the windows drivers, I don't see an issue.
Ronen.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23  9:29 ` Alon Levy
  2011-06-23 11:08   ` Stefan Hajnoczi
@ 2011-06-23 11:31   ` Jan Kiszka
  2011-06-23 14:41   ` Michael Roth
  2 siblings, 0 replies; 15+ messages in thread
From: Jan Kiszka @ 2011-06-23 11:31 UTC (permalink / raw)
  To: Michael Roth, qemu-devel@nongnu.org Developers, bsarathy,
	Anthony Liguori, pmyers, agl

[-- Attachment #1: Type: text/plain, Size: 1460 bytes --]

On 2011-06-23 11:29, Alon Levy wrote:
>> Implementation:
>>
>> I hope to follow-up in fairly short order with a basic prototype of
>> the tools/workflow to create/install a guest additions ISO. A rough
>> overview of the approach I'm currently pursuing:
>>
>> - Use PyInstaller (built around pye2exe, linux/windows compatible,
>> with logic to pull in required shared libs and windows/tcl/cmd.exe
>> support as needed) to generate executables from python scripts.
>>
>> - Each project exists as a free-form directory with source code, or
>> 32/64 bit pre-compiled binaries, windows-based installers, etc. To
>> add to an ISO a symlink to this directory would be added along with
>> a python installer script which accepts arch/distro as arguments.
>> install/update/uninstall logic handled completely by this install
>> script.
>>
>> - Top-level installer will iterate through guest additions projects
>> and execute installers in turn. (some basic dependency support or
>> explicit ordered may be needed).
> 
> I'm not sure all drivers have installers. sometimes it will need to install
> from inf I think. Should look at how the REHV-M iso does this.

Back in my old days, I wrote a tiny add-on for NSIS to install also
device drivers. Not sure if it still works, but it used to up to XP.
Someone create a wiki page with more information:

http://nsis.sourceforge.net/InstDrv_plug-in

In general, I liked NSIS a lot.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 11:08   ` Stefan Hajnoczi
@ 2011-06-23 11:38     ` Daniel P. Berrange
  2011-06-23 14:46       ` Michael Roth
  2011-06-23 12:00     ` Avi Kivity
  1 sibling, 1 reply; 15+ messages in thread
From: Daniel P. Berrange @ 2011-06-23 11:38 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: agl, Michael Roth, qemu-devel@nongnu.org Developers,
	Anthony Liguori, pmyers, bsarathy

On Thu, Jun 23, 2011 at 12:08:26PM +0100, Stefan Hajnoczi wrote:
> On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy <alevy@redhat.com> wrote:
> > On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
> >> Goal:
> >>
> >> Provide a mechanism, similar to vmware and virtualbox guest tools
> >> ISOs, that allows us to easily distribute guest tools (and
> >> potentially drivers) for linux and windows guests.
> >
> > What would be the advantage for linux guests, with their package managers already
> > handling this task? I see how it would make testing easier with various linux
> > distributions, but for management I wonder if it won't be easier to use the
> > package management system to update the guests same as the hosts.
> 
> If the guest tools come from the host QEMU we don't need complicated
> compatibility testing and fallbacks.  Guest and host will be in sync
> and support the same features.
> 
> I'm not sure how we can update guest tools when the QEMU on the host
> is updated though.

While an ISO is a good option for the initial deployment, since it can
be used to provide both the virtio drivers + agents together, once you
have the virtio stuff installed in the guest, it might be worth exposing
updated tools via a 9p filesystem mount. For Linux guest the 9p fs
exposed could include a YUM repo (or equiv) which the guest update tool
would automatically see and pull updates from, since 9pfs is "live"
unlike an ISO.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 11:08   ` Stefan Hajnoczi
  2011-06-23 11:38     ` Daniel P. Berrange
@ 2011-06-23 12:00     ` Avi Kivity
  2011-06-23 14:54       ` Michael Roth
  2011-06-23 15:25       ` Anthony Liguori
  1 sibling, 2 replies; 15+ messages in thread
From: Avi Kivity @ 2011-06-23 12:00 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: agl, Michael Roth, qemu-devel@nongnu.org Developers,
	Anthony Liguori, pmyers, bsarathy

On 06/23/2011 02:08 PM, Stefan Hajnoczi wrote:
> On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy<alevy@redhat.com>  wrote:
> >  On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
> >>  Goal:
> >>
> >>  Provide a mechanism, similar to vmware and virtualbox guest tools
> >>  ISOs, that allows us to easily distribute guest tools (and
> >>  potentially drivers) for linux and windows guests.
> >
> >  What would be the advantage for linux guests, with their package managers already
> >  handling this task? I see how it would make testing easier with various linux
> >  distributions, but for management I wonder if it won't be easier to use the
> >  package management system to update the guests same as the hosts.
>
> If the guest tools come from the host QEMU we don't need complicated
> compatibility testing and fallbacks.  Guest and host will be in sync
> and support the same features.
>

Even building the tools would be very hard.  In general if you build 
against libc version y, you cannot expect your code to work against libc 
version y-1, unless you take special measures.  With other libraries the 
"special measures" may not even be possible.

(I'm assuming statically linking the binaries is out of the question)

-- 
error compiling committee.c: too many arguments to function

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23  9:29 ` Alon Levy
  2011-06-23 11:08   ` Stefan Hajnoczi
  2011-06-23 11:31   ` Jan Kiszka
@ 2011-06-23 14:41   ` Michael Roth
  2 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2011-06-23 14:41 UTC (permalink / raw)
  To: qemu-devel@nongnu.org Developers, bsarathy, Anthony Liguori,
	pmyers, agl

On 06/23/2011 04:29 AM, Alon Levy wrote:
> On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
>> Goal:
>>
>> Provide a mechanism, similar to vmware and virtualbox guest tools
>> ISOs, that allows us to easily distribute guest tools (and
>> potentially drivers) for linux and windows guests.
>
> What would be the advantage for linux guests, with their package managers already
> handling this task? I see how it would make testing easier with various linux
> distributions, but for management I wonder if it won't be easier to use the
> package management system to update the guests same as the hosts.
>

The advantages listed below are in comparison to distro-managed 
packaging. The main one I think would be the support matrix for upstream 
code:

Certain versions of QEMU ship with certain versions of the ISO, and 
support guests with that particular version of the ISO installed.

This is a very enabling assumption to be able to make when working on 
new features (or deprecating old ones), and it's simply not one that can 
be made for distro-managed tools since there are a number of reasons why 
a distro won't update tools in a reasonable timeframe: maintaining 
compatability with a down-level host stack they support, distro-specific 
additions to various tools, support/packaging policies, etc.

Ideally we maintain backward compatibility with older versions the 
ISO/guest tools, but we can elect to break them if need be since we 
don't need to worry about supporting guests with older tools that 
haven't been updated by the distro; the hypervisor can push required 
updates/tools with minimal guest participation beyond the initial guest 
tools installation (updates can get pushed automatically from that point 
forward).

>>
>> Advantages (rough list to start the discussion, feel free to add/comment):
>>
>> - Simplify deployment of guest additions. ISO-installable additions
>> can be pulled from QEMU/KVM/virtio/etc upstream or external projects
>> as needed rather than worked into distros as independent packages.
>> Users do not need to worry about installing lists of packages for
>> full support. Pre-made ISOs can be pulled into QEMU/KVM in a manner
>> similar to BIOSs/option roms.
>>
>> - Reduce complexity involved with needing to manage guests with
>> outdated/missing tools or drivers. No need to rely on distros to
>> pull drivers/features/bug fixes from upstream before relying on
>> them; we can assume these fixes/features are immediately available
>> from an upstream perspective, and distros can still maintain
>> compatibility within a distro-centric environment by shipping
>> specific versions of the guest tools ISO (hopefully the version
>> committed to qemu.git at time of rebase or newer)
>>
>> - Simplify updates: Hypervisor can push guest tools updates by
>> building QMP/guest agent interfaces around an ISO.
>>
>> - Extend support to older guests (and windows) where new repo
>> packages are not a realistic option.
>>
>
> ok, this is relevant to linux guests too.
>
>> - ?
>>
>> Disadvantages:
>>
>> - Need to test changes to tools against supported distros/platforms
>> rather than punting to / or leveraging distro maintainers. KVM
>> Autotest would likely be a big part of this.
>>
>> - Potentially less integration from a distro-centric perspective.
>> Upstream mandates guest tools, distros need to keep up or rebase to
>> remain in sync. Can still elect to support specific versions of a
>> guest tools ISO, however.
>>
>> - ?
>>
>> Implementation:
>>
>> I hope to follow-up in fairly short order with a basic prototype of
>> the tools/workflow to create/install a guest additions ISO. A rough
>> overview of the approach I'm currently pursuing:
>>
>> - Use PyInstaller (built around pye2exe, linux/windows compatible,
>> with logic to pull in required shared libs and windows/tcl/cmd.exe
>> support as needed) to generate executables from python scripts.
>>
>> - Each project exists as a free-form directory with source code, or
>> 32/64 bit pre-compiled binaries, windows-based installers, etc. To
>> add to an ISO a symlink to this directory would be added along with
>> a python installer script which accepts arch/distro as arguments.
>> install/update/uninstall logic handled completely by this install
>> script.
>>
>> - Top-level installer will iterate through guest additions projects
>> and execute installers in turn. (some basic dependency support or
>> explicit ordered may be needed).
>
> I'm not sure all drivers have installers. sometimes it will need to install
> from inf I think. Should look at how the REHV-M iso does this.
>

By installers I mean the python install script you include with the 
project, so it's pretty free-form: you can simply copy files over, 
install an rpm/deb, execute a binary, make/make install, etc.

>>
>> - Install scripts (top-level and per-project) will be run through a
>> set of scripts built around PyInstaller to generate a group of
>> executable installers for linux as well as for windows (installers
>> can be do-nothings for unsupported platforms, or simply call out to
>> other binaries if using, say, an MSI windows installer). Both will
>> co-exist on the same ISO, and share the top-level projects directory
>> containing the individual code/binaries for individual projects.
>>
>> Thoughts?
>>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 11:38     ` Daniel P. Berrange
@ 2011-06-23 14:46       ` Michael Roth
  0 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2011-06-23 14:46 UTC (permalink / raw)
  To: Daniel P. Berrange
  Cc: agl, Stefan Hajnoczi, qemu-devel@nongnu.org Developers,
	Anthony Liguori, pmyers, bsarathy

On 06/23/2011 06:38 AM, Daniel P. Berrange wrote:
> On Thu, Jun 23, 2011 at 12:08:26PM +0100, Stefan Hajnoczi wrote:
>> On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy<alevy@redhat.com>  wrote:
>>> On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
>>>> Goal:
>>>>
>>>> Provide a mechanism, similar to vmware and virtualbox guest tools
>>>> ISOs, that allows us to easily distribute guest tools (and
>>>> potentially drivers) for linux and windows guests.
>>>
>>> What would be the advantage for linux guests, with their package managers already
>>> handling this task? I see how it would make testing easier with various linux
>>> distributions, but for management I wonder if it won't be easier to use the
>>> package management system to update the guests same as the hosts.
>>
>> If the guest tools come from the host QEMU we don't need complicated
>> compatibility testing and fallbacks.  Guest and host will be in sync
>> and support the same features.
>>
>> I'm not sure how we can update guest tools when the QEMU on the host
>> is updated though.
>
> While an ISO is a good option for the initial deployment, since it can
> be used to provide both the virtio drivers + agents together, once you
> have the virtio stuff installed in the guest, it might be worth exposing
> updated tools via a 9p filesystem mount. For Linux guest the 9p fs
> exposed could include a YUM repo (or equiv) which the guest update tool
> would automatically see and pull updates from, since 9pfs is "live"
> unlike an ISO.
>
> Regards,
> Daniel

Definitely, or at least some form of automating the install beyond the 
initial one. One approach would be extending the guest RPC agent that 
would ship with the ISO to be able to kick off a future update. 
Implementing in would be pretty simple too:

Guest agent: add RPC will execute the ISO installer
QMP: add command that will mount latest ISO as a cdrom then initiate the 
update via the guest agent RPC.

We could even take the ISO out of the equation after the initial 
install, since files can be pushed to the guest via guest 
agent/virtio-serial

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 12:00     ` Avi Kivity
@ 2011-06-23 14:54       ` Michael Roth
  2011-06-23 15:09         ` Avi Kivity
  2011-06-23 15:25       ` Anthony Liguori
  1 sibling, 1 reply; 15+ messages in thread
From: Michael Roth @ 2011-06-23 14:54 UTC (permalink / raw)
  To: Avi Kivity
  Cc: agl, Stefan Hajnoczi, qemu-devel@nongnu.org Developers,
	Anthony Liguori, pmyers, bsarathy

On 06/23/2011 07:00 AM, Avi Kivity wrote:
> On 06/23/2011 02:08 PM, Stefan Hajnoczi wrote:
>> On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy<alevy@redhat.com> wrote:
>> > On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
>> >> Goal:
>> >>
>> >> Provide a mechanism, similar to vmware and virtualbox guest tools
>> >> ISOs, that allows us to easily distribute guest tools (and
>> >> potentially drivers) for linux and windows guests.
>> >
>> > What would be the advantage for linux guests, with their package
>> managers already
>> > handling this task? I see how it would make testing easier with
>> various linux
>> > distributions, but for management I wonder if it won't be easier to
>> use the
>> > package management system to update the guests same as the hosts.
>>
>> If the guest tools come from the host QEMU we don't need complicated
>> compatibility testing and fallbacks. Guest and host will be in sync
>> and support the same features.
>>
>
> Even building the tools would be very hard. In general if you build
> against libc version y, you cannot expect your code to work against libc
> version y-1, unless you take special measures. With other libraries the
> "special measures" may not even be possible.

Nvidia/ATI driver installers might be a good (or bad) precedent, I 
believe they ship a generic blob....need to confirm. We'd want to have a 
controlled environment that's used for building the tools we add to the 
ISO though.

>
> (I'm assuming statically linking the binaries is out of the question)
>

Not totally, but the build environment would need to be carefully 
crafted, and for something like the guest agent which pulls in glib/curl 
I'm not sure how viable that is.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 14:54       ` Michael Roth
@ 2011-06-23 15:09         ` Avi Kivity
  2011-06-23 15:50           ` Michael Roth
  0 siblings, 1 reply; 15+ messages in thread
From: Avi Kivity @ 2011-06-23 15:09 UTC (permalink / raw)
  To: Michael Roth
  Cc: agl, Stefan Hajnoczi, qemu-devel@nongnu.org Developers,
	Anthony Liguori, pmyers, bsarathy

On 06/23/2011 05:54 PM, Michael Roth wrote:
> On 06/23/2011 07:00 AM, Avi Kivity wrote:
>> On 06/23/2011 02:08 PM, Stefan Hajnoczi wrote:
>>> On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy<alevy@redhat.com> wrote:
>>> > On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
>>> >> Goal:
>>> >>
>>> >> Provide a mechanism, similar to vmware and virtualbox guest tools
>>> >> ISOs, that allows us to easily distribute guest tools (and
>>> >> potentially drivers) for linux and windows guests.
>>> >
>>> > What would be the advantage for linux guests, with their package
>>> managers already
>>> > handling this task? I see how it would make testing easier with
>>> various linux
>>> > distributions, but for management I wonder if it won't be easier to
>>> use the
>>> > package management system to update the guests same as the hosts.
>>>
>>> If the guest tools come from the host QEMU we don't need complicated
>>> compatibility testing and fallbacks. Guest and host will be in sync
>>> and support the same features.
>>>
>>
>> Even building the tools would be very hard. In general if you build
>> against libc version y, you cannot expect your code to work against libc
>> version y-1, unless you take special measures. With other libraries the
>> "special measures" may not even be possible.
>
> Nvidia/ATI driver installers might be a good (or bad) precedent, I 
> believe they ship a generic blob....need to confirm.

The kernel keeps breaking it and they keep fixing it.  They're solving a 
much more difficult problem though (an explicitly unstable API).

> We'd want to have a controlled environment that's used for building 
> the tools we add to the ISO though.

I'm not even sure that such a least-common-denominator exists.

-- 
error compiling committee.c: too many arguments to function

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 12:00     ` Avi Kivity
  2011-06-23 14:54       ` Michael Roth
@ 2011-06-23 15:25       ` Anthony Liguori
  2011-06-23 15:52         ` Avi Kivity
  1 sibling, 1 reply; 15+ messages in thread
From: Anthony Liguori @ 2011-06-23 15:25 UTC (permalink / raw)
  To: Avi Kivity
  Cc: agl, Stefan Hajnoczi, Michael Roth,
	qemu-devel@nongnu.org Developers, Anthony Liguori, pmyers,
	bsarathy

On 06/23/2011 07:00 AM, Avi Kivity wrote:
> On 06/23/2011 02:08 PM, Stefan Hajnoczi wrote:
>> On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy<alevy@redhat.com> wrote:
>> > On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
>> >> Goal:
>> >>
>> >> Provide a mechanism, similar to vmware and virtualbox guest tools
>> >> ISOs, that allows us to easily distribute guest tools (and
>> >> potentially drivers) for linux and windows guests.
>> >
>> > What would be the advantage for linux guests, with their package
>> managers already
>> > handling this task? I see how it would make testing easier with
>> various linux
>> > distributions, but for management I wonder if it won't be easier to
>> use the
>> > package management system to update the guests same as the hosts.
>>
>> If the guest tools come from the host QEMU we don't need complicated
>> compatibility testing and fallbacks. Guest and host will be in sync
>> and support the same features.
>>
>
> Even building the tools would be very hard. In general if you build
> against libc version y, you cannot expect your code to work against libc
> version y-1, unless you take special measures. With other libraries the
> "special measures" may not even be possible.

Good libraries provide strong ABI compatibility.

Something like glib clearly documents what version of the library 
functions are available in, if you still to responsibly common 
functions, ABI compatibility should be much of an issue.

Regards,

Anthony Liguori

>
> (I'm assuming statically linking the binaries is out of the question)
>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 15:09         ` Avi Kivity
@ 2011-06-23 15:50           ` Michael Roth
  0 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2011-06-23 15:50 UTC (permalink / raw)
  To: Avi Kivity
  Cc: agl, Stefan Hajnoczi, qemu-devel@nongnu.org Developers,
	Anthony Liguori, pmyers, bsarathy

On 06/23/2011 10:09 AM, Avi Kivity wrote:
> On 06/23/2011 05:54 PM, Michael Roth wrote:
>> On 06/23/2011 07:00 AM, Avi Kivity wrote:
>>> On 06/23/2011 02:08 PM, Stefan Hajnoczi wrote:
>>>> On Thu, Jun 23, 2011 at 10:29 AM, Alon Levy<alevy@redhat.com> wrote:
>>>> > On Wed, Jun 22, 2011 at 01:55:25PM -0500, Michael Roth wrote:
>>>> >> Goal:
>>>> >>
>>>> >> Provide a mechanism, similar to vmware and virtualbox guest tools
>>>> >> ISOs, that allows us to easily distribute guest tools (and
>>>> >> potentially drivers) for linux and windows guests.
>>>> >
>>>> > What would be the advantage for linux guests, with their package
>>>> managers already
>>>> > handling this task? I see how it would make testing easier with
>>>> various linux
>>>> > distributions, but for management I wonder if it won't be easier to
>>>> use the
>>>> > package management system to update the guests same as the hosts.
>>>>
>>>> If the guest tools come from the host QEMU we don't need complicated
>>>> compatibility testing and fallbacks. Guest and host will be in sync
>>>> and support the same features.
>>>>
>>>
>>> Even building the tools would be very hard. In general if you build
>>> against libc version y, you cannot expect your code to work against libc
>>> version y-1, unless you take special measures. With other libraries the
>>> "special measures" may not even be possible.
>>
>> Nvidia/ATI driver installers might be a good (or bad) precedent, I
>> believe they ship a generic blob....need to confirm.
>
> The kernel keeps breaking it and they keep fixing it. They're solving a
> much more difficult problem though (an explicitly unstable API).
>

Yup, and their userspace stuff has some pretty complex library 
dependencies (pthreads, X11) that work well-enough for most. I'm sure 
we'll run into some issues, but if we limit ourselves to stable 
interfaces where possible they should be minimal, and if need be we can 
ship different binaries for certain arch/distro combos (though that can 
get out of hand fairly quickly and should be avoided)

>> We'd want to have a controlled environment that's used for building
>> the tools we add to the ISO though.
>
> I'm not even sure that such a least-common-denominator exists.
>

I mean mostly just to avoid having different guest tools in the ISO that 
were all built in different environments, since that might exacerbate 
library mismatches.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 15:25       ` Anthony Liguori
@ 2011-06-23 15:52         ` Avi Kivity
  2011-06-27  0:24           ` Natalia Portillo
  0 siblings, 1 reply; 15+ messages in thread
From: Avi Kivity @ 2011-06-23 15:52 UTC (permalink / raw)
  To: Anthony Liguori
  Cc: agl, Stefan Hajnoczi, Michael Roth,
	qemu-devel@nongnu.org Developers, Anthony Liguori, pmyers,
	bsarathy

On 06/23/2011 06:25 PM, Anthony Liguori wrote:
>> Even building the tools would be very hard. In general if you build
>> against libc version y, you cannot expect your code to work against libc
>> version y-1, unless you take special measures. With other libraries the
>> "special measures" may not even be possible.
>
>
> Good libraries provide strong ABI compatibility.
>
> Something like glib clearly documents what version of the library 
> functions are available in, if you still to responsibly common 
> functions, ABI compatibility should be much of an issue.

I don't know about glib, but glibc only guarantees backward 
compatibility, not forward compatibility.  If you build against a newer 
glibc, your executable may not run with an older glibc, even if the 
symbols exist in both.

See [1] which touches on the issue; I don't have a better reference.

[1] ftp://ftp.kernel.org/pub/software/libs/glibc/hjl/compat/index.html

-- 
error compiling committee.c: too many arguments to function

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] RFC: Qemu Guest Tools ISO
  2011-06-23 15:52         ` Avi Kivity
@ 2011-06-27  0:24           ` Natalia Portillo
  0 siblings, 0 replies; 15+ messages in thread
From: Natalia Portillo @ 2011-06-27  0:24 UTC (permalink / raw)
  To: Avi Kivity
  Cc: Anthony Liguori, agl, Stefan Hajnoczi, Michael Roth,
	qemu-devel@nongnu.org Developers, Anthony Liguori, pmyers,
	bsarathy

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Ok you're forgetting one thing:

90% of the devices we emulate are real physical ones.
The drivers for those devices in non-opensource guests already exist, and most of the times prevent we distributing them (read the EULA).

I think a "guest tools" with binary drivers for binary platforms (Windows, OS/2, NeXT, DOS) is a good idea.
One with binary drivers for open-source platforms (Linux, *BSD) is really stupid, will create hundreds of conflicts.
One with source drivers for open-source platforms is reinventing the wheel. The distros and systems already take care about drivers, including even drivers for other VMs.

So for any kind of usefulness we need to ask Creative Labs, Intel, AMD, VMWare, Realtek, so on, permissions to distribute their drivers.
I'm not sure they will allow us (pretty sure the VMWare video one will not be allowed ever).

In the case they allow us and create the guest tools disc, we can create a false device that a dormant process (TSR in DOS world) hears off.
That's what VMWare does, writes in that device requesting guest tools version (if none installed, noone answers), and if the provided one is better informs the user and offers to automount it.

Regards

El 23/06/2011, a las 16:52, Avi Kivity escribió:

> On 06/23/2011 06:25 PM, Anthony Liguori wrote:
>>> Even building the tools would be very hard. In general if you build
>>> against libc version y, you cannot expect your code to work against libc
>>> version y-1, unless you take special measures. With other libraries the
>>> "special measures" may not even be possible.
>> 
>> 
>> Good libraries provide strong ABI compatibility.
>> 
>> Something like glib clearly documents what version of the library functions are available in, if you still to responsibly common functions, ABI compatibility should be much of an issue.
> 
> I don't know about glib, but glibc only guarantees backward compatibility, not forward compatibility.  If you build against a newer glibc, your executable may not run with an older glibc, even if the symbols exist in both.
> 
> See [1] which touches on the issue; I don't have a better reference.
> 
> [1] ftp://ftp.kernel.org/pub/software/libs/glibc/hjl/compat/index.html
> 
> -- 
> error compiling committee.c: too many arguments to function
> 
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org

iF4EAREIAAYFAk4HzaQACgkQv/wfOsykIRTVoQD/SgniEhqOCIf5FIiBz7RT0GAc
g8aA4FGWdKQB6jrfbwwA/igtLCAjhCpF/lFJ6o+0dUU2r3tT+gvDdZeURG82Xr5Z
=2Z/r
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2011-06-27  0:24 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-22 18:55 [Qemu-devel] RFC: Qemu Guest Tools ISO Michael Roth
2011-06-23  9:29 ` Alon Levy
2011-06-23 11:08   ` Stefan Hajnoczi
2011-06-23 11:38     ` Daniel P. Berrange
2011-06-23 14:46       ` Michael Roth
2011-06-23 12:00     ` Avi Kivity
2011-06-23 14:54       ` Michael Roth
2011-06-23 15:09         ` Avi Kivity
2011-06-23 15:50           ` Michael Roth
2011-06-23 15:25       ` Anthony Liguori
2011-06-23 15:52         ` Avi Kivity
2011-06-27  0:24           ` Natalia Portillo
2011-06-23 11:31   ` Jan Kiszka
2011-06-23 14:41   ` Michael Roth
2011-06-23 11:14 ` Ronen Hod

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).