[virt-tools-list] Emulating raspberry pi (arm1136-r2) in virt-manager?
Martin Kletzander
mkletzan at redhat.com
Mon Feb 18 10:22:15 UTC 2013
On 02/15/2013 08:47 PM, Simon Lambourn wrote:
>
> This is looking a bit more complicated than I thought... I now
> understand that I can't simply define the ARM machine in xml and define
> it using virsh, as the CPU type (arm1136-r2) is rejected by libvirt
> which can't test if it's valid or not.
>
> So I think what Cole and Martin are suggesting is that I define a dummy
> emulator (the wrapper script) which plays with the arguments passed by
> libvirt and then calls the real emulator qemu-system-arm. I had a quick
> go at this but I couldn't work out where to put the wrapper script. I
> tried putting a wrapper (qemu-system-pi - written in python) in
> /usr/bin, but virsh define couldn't find it.
>
libvirt might not find the executable by default, but you can specify
the path like this:
<domain type='kvm'>
...
<devices>
<emulator>/path/to/your/script</emulator>
...
</devices>
</domain>
The easiest script I just tried right now does:
#!/bin/bash
echo "Running QEMU as '$@'"
exec qemu-system-x86_64 "$@"
The point is exec-ing the qemu binary at the end, which will then take
care of everything libvirt needs to get the "hypervisor info".
To see some python wrapper script, you can have a look (instead of
googling) at for example 'vdsm-hook-faqemu' package in fedora (no
dependencies), which has two interesting files inside:
1) /usr/libexec/vdsm/hooks/before_vm_start/10_faqemu -- a pre-start
hook that modifies the XML, just in case you'll need it in the future,
but no need for that right now.
2) /usr/libexec/vdsm/vdsm-faqemu -- *this is what you want* -- this
script does something very similar to the thing you want, i.e. changes
the command line. I think it's pretty well readable, so that why I
suggested it.
> I also get the impression that libvirt calls the wrapper during define,
> to validate the arguments? So these calls also have to be caught and
> passed to the real emulator.
>
Already covered by the 'exec-ing'.
> Overall I am tempted to stick with my original method of simply issuing
> the qemu-system-arm command directly from a script, but if anyone can
> suggest how I can get the wrapper to be found - or point me to an
> example of one - then I will keep trying. Thanks for all the help and
> encouragement so far.
>
I know it seems like shooting yourself in a foot before the race, but I
saw it working, so it is definitely possible. OTOH, the only thing
you'll use libvirt for will probably be just starting/stopping the
machine and maybe attaching some usb devices. And since you won't be
migrating, changing memory on-the-fly etc., you probably don't need it
that much. I'll be happy to see you succeed and use it in virt-manager,
though, so good luck!
Hope this helps,
Martin
More information about the virt-tools-list
mailing list