[libvirt] hvm/x86_64 combination not allowed
Laine Stump
laine at laine.org
Tue Jan 19 02:46:59 UTC 2010
On 01/18/2010 04:59 PM, Matthias Bolte wrote:
> 2010/1/18 Steve Brown<sbrown25 at gmail.com>:
>
>>>> $ sudo virsh capabilities
>>>> <capabilities>
>>>> <host>
>>>> <cpu>
>>>> <arch>x86_64</arch>
>>>> </cpu>
>>>> <migration_features>
>>>> <live/>
>>>> <uri_transports>
>>>> <uri_transport>tcp</uri_transport>
>>>> </uri_transports>
>>>> </migration_features>
>>>> </host>
>>>> <guest>
>>>> <os_type>hvm</os_type>
>>>> <arch name='i686'>
>>>> <wordsize>32</wordsize>
>>>> <emulator>/usr/bin/qemu</emulator>
>>>> <machine>pc-0.11</machine>
>>>> <machine canonical='pc-0.11'>pc</machine>
>>>> <machine>pc-0.10</machine>
>>>> <machine>isapc</machine>
>>>> <domain type='qemu'>
>>>> </domain>
>>>> </arch>
>>>> <features>
>>>> <pae/>
>>>> <nonpae/>
>>>> <acpi default='on' toggle='yes'/>
>>>> <apic default='on' toggle='no'/>
>>>> </features>
>>>> </guest>
>>>> </capabilities>
>>>>
>>> Ok, this confirms your host OS is x86_64, but it only shows a single
>>> guest entry for i386. This is because the 'qemu' binar is the 32-bit
>>> emulator. To make x86_64 guests work, you need to install the
>>> qemu-system-x86_64 binary, or a KVM binary called 'kvm' or 'qemu-kvm'.
>>>
>>> Once those are installed, you should see another<guest> appear in
>>> that capabilities XML
>>>
>> Unfortunately, I already have the 64bit emulator installed:
>>
>> $ which qemu-system-x86_64
>> /usr/local/bin/qemu-system-x86_64
>> $ ls -l /usr/local/bin/qemu-*
>> -rwxr-xr-x 1 root root 217184 Jan 14 14:00 /usr/local/bin/qemu-img
>> -rwxr-xr-x 1 root root 229120 Jan 14 14:00 /usr/local/bin/qemu-io
>> -rwxr-xr-x 1 root root 210968 Jan 14 14:00 /usr/local/bin/qemu-nbd
>> -rwxr-xr-x 1 root root 2323328 Jan 14 14:01 /usr/local/bin/qemu-system-x86_64
>>
>> This was done by building the qemu-kvm-0.12.1.1 package from source.
>> I am able to run this vm just fine using the qemu-system-x86_64
>> binary. I've tried rebuilding libvirt several times to make it aware
>> that the proper binaries are installed, but it can't seem to find them
>> for some reason.
>>
>>
> libvirt expects the QEMU binaries in /usr/bin. e.g. it explicitly
> checks for /usr/bin/qemu-system-x86_64. Try symlinking
> /usr/local/bin/qemu-system-x86_64 to /usr/bin/qemu-system-x86_64.
>
That's not enough. I have a locally-built qemu-system-x86_64 installed
in /usr/bin, and the only way I could get it to work properly was copy
/usr/bin/qemu-system-x86_64 to /usr/bin/qemu-kvm (a symlink would likely
do the job just as well). There is a bit of code just doesn't happen
unless /usr/bin/qemu-kvm or /usr/bin/kvm exist and are executable,
although I have to say that once I solved my own problem by making a
copy of the file with the proper name, I stopped trying to understood
exactly what was happening in that code :-)
More information about the libvir-list
mailing list