[virt-tools-list] virt-manger: KVM is not available.

Cole Robinson crobinso at redhat.com
Thu May 5 14:21:13 UTC 2011


On 05/04/2011 01:38 PM, Florian Lindner wrote:
> Am Dienstag 03 Mai 2011, 17:19:48 schrieb Cole Robinson:
>> On 05/02/2011 03:25 PM, Florian Lindner wrote:
>>> Am Montag 02 Mai 2011, 16:23:10 schrieb Cole Robinson:
>>>> On 05/01/2011 05:26 PM, Florian Lindner wrote:
>>>>> Hello!
>>>>>
>>>>> I have a problem with virt-manage saying my KVM wasn't available.
>>>>>
>>>>> System is Archlinux, libvirtd 0.9.0, Kernel 2.6.38.
>>>>> CPU is a Phenom X4, supports virtualization.
>>>>>
>>>>> modprobe kvm and kvm-amd works fine:
>>>>>
>>>>> May  1 23:19:48 localhost kernel: [  750.262215] kvm: Nested
>>>>> Virtualization enabled
>>>>> May  1 23:19:48 localhost kernel: [  750.262218] kvm: Nested Paging
>>>>> enabled
>>>>>
>>>>> starting up libvirtd:
>>>>>
>>>>> May  1 23:21:23 localhost kernel: [  844.527695] Bridge firewalling
>>>>> registered May  1 23:21:23 localhost kernel: [  844.537781] tun:
>>>>> Universal TUN/TAP device driver, 1.6
>>>>> May  1 23:21:23 localhost kernel: [  844.537784] tun: (C) 1999-2004 Max
>>>>> Krasnyansky <maxk at qualcomm.com>
>>>>> May  1 23:21:23 localhost avahi-daemon[1370]: Withdrawing workstation
>>>>> service for .
>>>>> May  1 23:21:23 localhost avahi-daemon[1370]: Withdrawing workstation
>>>>> service for virbr0.
>>>>> May  1 23:21:23 localhost kernel: [  844.737116] ip_tables: (C)
>>>>> 2000-2006 Netfilter Core Team
>>>>> May  1 23:21:23 localhost kernel: [  844.752760] ip6_tables: (C)
>>>>> 2000-2006 Netfilter Core Team
>>>>>
>>>>>
>>>>> start virt-manager as user but granting root priviliges when asked on
>>>>> startup. When creating a new VM it says that KVM is not available.
>>>>>
>>>>> qemu -enable-kvm has worked fine so far.
>>>>>
>>>>> Why is that error message?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Florian
>>>>
>>>> That error means that libvirt did not detect KVM support. Libvirt checks
>>>> for a /usr/bin/qemu* binary, /dev/kvm, and proper permissions to run
>>>> both.
>>>
>>> Permissions should be fine:
>>>
>>> florian at horus ~ % groups
>>> sys kvm scanner florian
>>>
>>> florian at horus ~ % ll /dev/kvm
>>> crw-rw----+ 1 root kvm 10, 232  2. Mai 21:04 /dev/kvm
>>>
>>> florian at horus ~ % ll /usr/bin/qemu*
>>> -rwxr-xr-x 1 root root 2961888 21. Feb 21:10 /usr/bin/qemu*
>>> [...]
>>> -rwxr-xr-x 1 root root 3033280 21. Feb 21:10 /usr/bin/qemu-system-x86_64*
>>> -rwxr-xr-x 1 root root 2055048 21. Feb 21:10 /usr/bin/qemu-x86_64*
>>>
>>>> What's the output of virsh --connect qemu:///session capabilities | grep
>>>> kvm and virsh --connect qemu:///system capabilities | grep kvm ?
>>>
>>> They both return nothing, run as user as well as being run as root. When
>>> run as user the second commands asks for root priviliges which are
>>> granted.
>>
>> Hmm, full output of virsh --connect qemu:///system capabilities (as
>> root) and qemu-system-x86_64 -help would be interesting.
> 
> Hey!
> 
> both commands outputs are below.
> 
> Thanks!
> 
> Florian
> 


Ah okay. The issue is that libvirt only advertises KVM if it finds a
file named qemu-kvm or kvm, so it won't by default allow using kvm with
a stock qemu release. You can probably work around this by symlinking
/usr/bin/qemu-kvm to /usr/bin/qemu-system-x86_64. Might want to file a
bug with your distro to do the same (or have them actually ship the
forked qemu that is distributed with KVM upstream, since it's generally
what receives the most testing).

The proper fix though is to have libvirt advertise KVM for upstream qemu
binaries if it finds the correct CLI arguments. We will probably need to
do this anyways when the KVM qemu fork is fully merged upstream.

- Cole

> root at horus /home/florian # virsh --connect qemu:///system capabilities
> <capabilities>
> 
>   <host>
>     <uuid>30303234-3144-4437-3039-3942ffffffff</uuid>
>     <cpu>
>       <arch>x86_64</arch>
>       <model>Opteron_G3</model>
>       <vendor>AMD</vendor>
>       <topology sockets='1' cores='4' threads='1'/>
>       <feature name='wdt'/>
>       <feature name='skinit'/>
>       <feature name='osvw'/>
>       <feature name='3dnowprefetch'/>
>       <feature name='cr8legacy'/>
>       <feature name='extapic'/>
>       <feature name='cmp_legacy'/>
>       <feature name='3dnow'/>
>       <feature name='3dnowext'/>
>       <feature name='pdpe1gb'/>
>       <feature name='fxsr_opt'/>
>       <feature name='mmxext'/>
>       <feature name='ht'/>
>       <feature name='vme'/>
>     </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.14</machine>
>       <machine canonical='pc-0.14'>pc</machine>
>       <machine>pc-0.13</machine>
>       <machine>pc-0.12</machine>
>       <machine>pc-0.11</machine>
>       <machine>pc-0.10</machine>
>       <machine>isapc</machine>
>       <domain type='qemu'>
>       </domain>
>     </arch>
>     <features>
>       <cpuselection/>
>       <deviceboot/>
>       <pae/>
>       <nonpae/>
>       <acpi default='on' toggle='yes'/>
>       <apic default='on' toggle='no'/>
>     </features>
>   </guest>
> 
>   <guest>
>     <os_type>hvm</os_type>
>     <arch name='x86_64'>
>       <wordsize>64</wordsize>
>       <emulator>/usr/bin/qemu-system-x86_64</emulator>
>       <machine>pc-0.14</machine>
>       <machine canonical='pc-0.14'>pc</machine>
>       <machine>pc-0.13</machine>
>       <machine>pc-0.12</machine>
>       <machine>pc-0.11</machine>
>       <machine>pc-0.10</machine>
>       <machine>isapc</machine>
>       <domain type='qemu'>
>       </domain>
>     </arch>
>     <features>
>       <cpuselection/>
>       <deviceboot/>
>       <acpi default='on' toggle='yes'/>
>       <apic default='on' toggle='no'/>
>     </features>
>   </guest>
> 
>   <guest>
>     <os_type>hvm</os_type>
>     <arch name='arm'>
>       <wordsize>32</wordsize>
>       <emulator>/usr/bin/qemu-system-arm</emulator>
>       <machine>integratorcp</machine>
>       <machine>syborg</machine>
>       <machine>musicpal</machine>
>       <machine>mainstone</machine>
>       <machine>n800</machine>
>       <machine>n810</machine>
>       <machine>cheetah</machine>
>       <machine>sx1</machine>
>       <machine>sx1-v1</machine>
>       <machine>tosa</machine>
>       <machine>akita</machine>
>       <machine>spitz</machine>
>       <machine>borzoi</machine>
>       <machine>terrier</machine>
>       <machine>connex</machine>
>       <machine>verdex</machine>
>       <machine>lm3s811evb</machine>
>       <machine>lm3s6965evb</machine>
>       <machine>realview-eb</machine>
>       <machine>realview-eb-mpcore</machine>
>       <machine>realview-pb-a8</machine>
>       <machine>realview-pbx-a9</machine>
>       <machine>versatilepb</machine>
>       <machine>versatileab</machine>
>       <domain type='qemu'>
>       </domain>
>     </arch>
>     <features>
>       <deviceboot/>
>     </features>
>   </guest>
> 
>   <guest>
>     <os_type>hvm</os_type>
>     <arch name='mips'>
>       <wordsize>32</wordsize>
>       <emulator>/usr/bin/qemu-system-mips</emulator>
>       <machine>malta</machine>
>       <machine>mipssim</machine>
>       <machine>magnum</machine>
>       <machine>pica61</machine>
>       <machine>mips</machine>
>       <domain type='qemu'>
>       </domain>
>     </arch>
>     <features>
>       <deviceboot/>
>     </features>
>   </guest>
> 
>   <guest>
>     <os_type>hvm</os_type>
>     <arch name='mipsel'>
>       <wordsize>32</wordsize>
>       <emulator>/usr/bin/qemu-system-mipsel</emulator>
>       <machine>malta</machine>
>       <machine>mipssim</machine>
>       <machine>magnum</machine>
>       <machine>pica61</machine>
>       <machine>mips</machine>
>       <domain type='qemu'>
>       </domain>
>     </arch>
>     <features>
>       <deviceboot/>
>     </features>
>   </guest>
> 
>   <guest>
>     <os_type>hvm</os_type>
>     <arch name='sparc'>
>       <wordsize>32</wordsize>
>       <emulator>/usr/bin/qemu-system-sparc</emulator>
>       <machine>SS-5</machine>
>       <machine>leon3_generic</machine>
>       <machine>SS-10</machine>
>       <machine>SS-600MP</machine>
>       <machine>SS-20</machine>
>       <machine>Voyager</machine>
>       <machine>LX</machine>
>       <machine>SS-4</machine>
>       <machine>SPARCClassic</machine>
>       <machine>SPARCbook</machine>
>       <machine>SS-1000</machine>
>       <machine>SS-2000</machine>
>       <machine>SS-2</machine>
>       <domain type='qemu'>
>       </domain>
>     </arch>
>   </guest>
> 
>   <guest>
>     <os_type>hvm</os_type>
>     <arch name='ppc'>
>       <wordsize>32</wordsize>
>       <emulator>/usr/bin/qemu-system-ppc</emulator>
>       <machine>g3beige</machine>
>       <machine>virtex-ml507</machine>
>       <machine>mpc8544ds</machine>
>       <machine canonical='bamboo-0.13'>bamboo</machine>
>       <machine>bamboo-0.13</machine>
>       <machine>bamboo-0.12</machine>
>       <machine>ref405ep</machine>
>       <machine>taihu</machine>
>       <machine>mac99</machine>
>       <machine>prep</machine>
>       <domain type='qemu'>
>       </domain>
>     </arch>
>     <features>
>       <deviceboot/>
>     </features>
>   </guest>
> 
> </capabilities>
> 
> 
> ----------------------------------------------------
> 
> root at horus /home/florian # qemu-system-x86_64 -help 
> QEMU emulator version 0.14.0, Copyright (c) 2003-2008 Fabrice Bellard
> usage: qemu [options] [disk_image]
> 
> 'disk_image' is a raw hard disk image for IDE hard disk 0
> 
> Standard options:
> -h or -help     display this help and exit
> -version        display version information and exit
> -M machine      select emulated machine (-M ? for list)
> -cpu cpu        select CPU (-cpu ? for list)
> -smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
>                 set the number of CPUs to 'n' [default=1]
>                 maxcpus= maximum number of total cpus, including
>                 offline CPUs for hotplug, etc
>                 cores= number of CPU cores on one socket
>                 threads= number of threads on one CPU core
>                 sockets= number of discrete sockets in the system
> -numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
> -fda/-fdb file  use 'file' as floppy disk 0/1 image
> -hda/-hdb file  use 'file' as IDE hard disk 0/1 image
> -hdc/-hdd file  use 'file' as IDE hard disk 2/3 image
> -cdrom file     use 'file' as IDE cdrom image (cdrom is ide1 master)
> -drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
>        [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
>        [,cache=writethrough|writeback|none|unsafe][,format=f]
>        [,serial=s][,addr=A][,id=name][,aio=threads|native]
>        [,readonly=on|off]
>                 use 'file' as a drive image
> -set group.id.arg=value
>                 set <arg> parameter for item <id> of type <group>
>                 i.e. -set drive.$id.file=/path/to/image
> -global driver.property=value
>                 set a global default for a driver property
> -mtdblock file  use 'file' as on-board Flash memory image
> -sd file        use 'file' as SecureDigital card image
> -pflash file    use 'file' as a parallel flash image
> -boot [order=drives][,once=drives][,menu=on|off]
>                 'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
> -snapshot       write to temporary files instead of disk image files
> -m megs         set virtual RAM size to megs MB [default=128]
> -mem-path FILE  provide backing storage for guest RAM
> -mem-prealloc   preallocate guest memory (use with -mem-path)
> -k language     use keyboard layout (for example 'fr' for French)
> -audio-help     print list of audio drivers and their options
> -soundhw c1,... enable audio support
>                 and only specified sound cards (comma separated list)
>                 use -soundhw ? to get the list of supported cards
>                 use -soundhw all to enable all of them
> -usb            enable the USB driver (will be the default soon)
> -usbdevice name add the host or guest USB device 'name'
> -device driver[,prop[=value][,...]]
>                 add device (based on driver)
>                 prop=value,... sets driver properties
>                 use -device ? to print all possible drivers
>                 use -device driver,? to print all possible properties
> File system options:
> -fsdev local,id=id,path=path,security_model=[mapped|passthrough|none]
> Virtual File system pass-through options:
> -virtfs local,path=path,mount_tag=tag,security_model=[mapped|passthrough|none]
> 
> -name string1[,process=string2]
>                 set the name of the guest
>                 string1 sets the window title and string2 the process name (on 
> Linux)
> -uuid %08x-%04x-%04x-%04x-%012x
>                 specify machine UUID
> 
> Display options:
> -nographic      disable graphical output and redirect serial I/Os to console
> -curses         use a curses/ncurses interface instead of SDL
> -no-frame       open SDL window without a frame and window decorations
> -alt-grab       use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
> -ctrl-grab      use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
> -no-quit        disable SDL window close capability
> -sdl            enable SDL
> -spice <args>   enable spice
> -portrait       rotate graphical output 90 deg left (only PXA LCD)
> -vga [std|cirrus|vmware|qxl|xenfb|none]
>                 select video card type
> -full-screen    start in full screen
> -g WxH[xDEPTH]  Set the initial graphical resolution and depth
> -vnc display    start a VNC server on display
> 
> i386 target only:
> -win2k-hack     use it when installing Windows 2000 to avoid a disk full bug
> -no-fd-bootchk  disable boot signature checking for floppy disks
> -no-acpi        disable ACPI
> -no-hpet        disable HPET
> -balloon none   disable balloon device
> -balloon virtio[,addr=str]
>                 enable virtio balloon device (default)
> -acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n]
> [,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]
>                 ACPI table description
> -smbios file=binary
>                 load SMBIOS entry from binary file
> -smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
>                 specify SMBIOS type 0 fields
> -smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
>               [,uuid=uuid][,sku=str][,family=str]
>                 specify SMBIOS type 1 fields
> 
> Network options:
> -net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
>                 create a new Network Interface Card and connect it to VLAN 'n'
> -net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=y|n]
>          [,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
>          [,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
>                 connect the user mode network stack to VLAN 'n', configure its
>                 DHCP server and enabled optional services
> -net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file]
> [,downscript=dfile][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h]
> [,vhostforce=on|off]
>                 connect the host TAP network interface to VLAN 'n' and use the
>                 network scripts 'file' (default=/etc/qemu-ifup)
>                 and 'dfile' (default=/etc/qemu-ifdown)
>                 use '[down]script=no' to disable script execution
>                 use 'fd=h' to connect to an already opened TAP interface
>                 use 'sndbuf=nbytes' to limit the size of the send buffer (the
>                 default is disabled 'sndbuf=0' to enable flow control set 
> 'sndbuf=1048576')
>                 use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag
>                 use vnet_hdr=on to make the lack of IFF_VNET_HDR support an 
> error condition
>                 use vhost=on to enable experimental in kernel accelerator
>                     (only has effect for virtio guests which use MSIX)
>                 use vhostforce=on to force vhost on for non-MSIX virtio guests
>                 use 'vhostfd=h' to connect to an already opened vhost net 
> device
> -net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port]
> [,connect=host:port]
>                 connect the vlan 'n' to another VLAN using a socket connection
> -net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port[,localaddr=addr]]
>                 connect the vlan 'n' to multicast maddr and port
>                 use 'localaddr=addr' to specify the host address to send 
> packets from
> -net vde[,vlan=n][,name=str][,sock=socketpath][,port=n][,group=groupname]
> [,mode=octalmode]
>                 connect the vlan 'n' to port 'n' of a vde switch running
>                 on host and listening for incoming connections on 
> 'socketpath'.
>                 Use group 'groupname' and mode 'octalmode' to change default
>                 ownership and permissions for communication port.
> -net dump[,vlan=n][,file=f][,len=n]
>                 dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
> -net none       use it alone to have zero network devices. If no -net option
>                 is provided, the default is '-net nic -net user'
> -netdev [user|tap|vde|socket],id=str[,option][,option][,...]
> 
> Character device options:
> -chardev null,id=id[,mux=on|off]
> -chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
>          [,server][,nowait][,telnet][,mux=on|off] (tcp)
> -chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix)
> -chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
>          [,localport=localport][,ipv4][,ipv6][,mux=on|off]
> -chardev msmouse,id=id[,mux=on|off]
> -chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
>          [,mux=on|off]
> -chardev file,id=id,path=path[,mux=on|off]
> -chardev pipe,id=id,path=path[,mux=on|off]
> -chardev pty,id=id[,mux=on|off]
> -chardev stdio,id=id[,mux=on|off][,signal=on|off]
> -chardev tty,id=id,path=path[,mux=on|off]
> -chardev parport,id=id,path=path[,mux=on|off]
> 
> Bluetooth(R) options:
> -bt hci,null    dumb bluetooth HCI - doesn't respond to commands
> -bt hci,host[:id]
>                 use host's HCI with the given name
> -bt hci[,vlan=n]
>                 emulate a standard HCI in virtual scatternet 'n'
> -bt vhci[,vlan=n]
>                 add host computer to virtual scatternet 'n' using VHCI
> -bt device:dev[,vlan=n]
>                 emulate a bluetooth device 'dev' in scatternet 'n'
> 
> Linux/Multiboot boot specific:
> -kernel bzImage use 'bzImage' as kernel image
> -append cmdline use 'cmdline' as kernel command line
> -initrd file    use 'file' as initial ram disk
> 
> Debug/Expert options:
> -serial dev     redirect the serial port to char device 'dev'
> -parallel dev   redirect the parallel port to char device 'dev'
> -monitor dev    redirect the monitor to char device 'dev'
> -qmp dev        like -monitor but opens in 'control' mode
> -mon chardev=[name][,mode=readline|control][,default]
> -debugcon dev   redirect the debug console to char device 'dev'
> -pidfile file   write PID to 'file'
> -singlestep     always run in singlestep mode
> -S              freeze CPU at startup (use 'c' to start execution)
> -gdb dev        wait for gdb connection on 'dev'
> -s              shorthand for -gdb tcp::1234
> -d item1,...    output log to /tmp/qemu.log (use -d ? for a list of log items)
> -hdachs c,h,s[,t]
>                 force hard disk 0 physical geometry and the optional BIOS
>                 translation (t=none or lba) (usually qemu can guess them)
> -L path         set the directory for the BIOS, VGA BIOS and keymaps
> -bios file      set the filename for the BIOS
> -enable-kvm     enable KVM full virtualization support
> -xen-domid id   specify xen guest domain id
> -xen-create     create domain using xen hypercalls, bypassing xend
>                 warning: should not be used when xend is in use
> -xen-attach     attach to existing xen domain
>                 xend will use this when starting qemu
> -no-reboot      exit instead of rebooting
> -no-shutdown    stop before shutdown
> -loadvm [tag|id]
>                 start right away with a saved state (loadvm in monitor)
> -daemonize      daemonize QEMU after initializing
> -option-rom rom load a file, rom, into the option ROM space
> -clock          force the use of the given methods for timer alarm.
>                 To see what timers are available use -clock ?
> -rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]
>                 set the RTC base and clock, enable drift fix for clock ticks 
> (x86 only)
> -icount [N|auto]
>                 enable virtual instruction counter with 2^N clock ticks per
>                 instruction
> -watchdog i6300esb|ib700
>                 enable virtual hardware watchdog [default=none]
> -watchdog-action reset|shutdown|poweroff|pause|debug|none
>                 action when watchdog fires [default=reset]
> -echr chr       set terminal escape character instead of ctrl-a
> -virtioconsole c
>                 set virtio console
> -show-cursor    show cursor
> -tb-size n      set TB size
> -incoming p     prepare for incoming migration, listen on port p
> -nodefaults     don't create default devices
> -chroot dir     chroot to dir just before starting the VM
> -runas user     change to user id user just before starting the VM
> -prom-env variable=value
>                 set OpenBIOS nvram variables
> -semihosting    semihosting mode
> -old-param      old param mode
> -readconfig <file>
> -writeconfig <file>
>                 read/write config file
> -nodefconfig
>                 do not load default config files at startup
> 
> During emulation, the following keys are useful:
> ctrl-alt-f      toggle full screen
> ctrl-alt-n      switch to virtual console 'n'
> ctrl-alt        toggle mouse and keyboard grab
> 
> When using -nographic, press 'ctrl-a h' to get some help.
> 
> 
> 
> 




More information about the virt-tools-list mailing list