个人工具

UbuntuHelp:KVM/FAQ

来自Ubuntu中文

跳转至: 导航, 搜索
  1. title KVM FAQ

<<Include(KVM/Header)>>

Frequently Asked Questions

How to prevent Virtualbox and KVM from conflicting?

Installing kvm loads the module kvm (or kvm-intel in my case) which does not allow other virtualization software to run, e.g. virtualbox. The good news is that you can disable kvm and unload its modules. So you simply: 1. Make sure you've completely shut down and powered off all your kvm virtual machines (using virt-manager or otherwise). 2. Unload all of its modules:

$ sudo invoke-rc.d kvm stop

In Karmic use

$ sudo invoke-rc.d qemu-kvm stop

instead. In Lucid use

$ sudo service qemu-kvm stop

instead.

How to boot Dapper, Edgy, Feisty or Gutsy ISO?

  • Q: I'm on Intel hardware, and I'm trying to boot Dapper, Edgy, Feisty, or Gutsy, but kvm fails immediately.
  • A: Yes, this is rather unfortunate. The issue is a limitation in Intel's virtualisation extensions that don't interact very well with gfxboot. The evil, hacky workaround is to modify the ISO to disable gfxboot. The following has worked for me, but it might kill your cat or make your coffee go cold or make other unpleasantries happen to you. You've been warned!
$ sed -e 's/GFXBOOT bootlogo/#FXBOOT bootlogo/g' < ubuntu-7.10-server-amd64.iso > ubuntu-7.10-server-amd64-nogfxboot.iso

/!\ Don't change the above command! The length of the string mustn't change or you will have knackered the filesystem on the CD. A slightly safer way is to download gfxboot-disable from [1] and then run:

$ gfxboot-disable ubuntu-7.10-server-amd64.iso

How to boot a VM into single mode?

A VM has a complete BIOS, and also runs GRUB. Bad point is, it disappears after a couple of seconds, most of the time you won't even have time to connect using virt-viewer. There is a small trick here: shutdown the VM, run virt-viewer with the argument --wait (that way it will wait for the VM to start and pop up directly after that), and then start the VM; this should give you a good 2 seconds time to enter the bios or access grub. If you are running a VM built with ubuntu-vm-builder, there is a small bug that will prevent you from logging in; in grub, select the recovery line and press "e"; select the line beginning with kernel, press "e" again. At the end of the line, add "init=/bin/sh" (without the quotes). Confirm with enter, and press b to boot the kernel with these settings.

How to convert VMware machines to virt-manager?

To use the VMware machine from within virt-manager, the .vmx file must be converted to libvirt's .xml. vmware2libvirt was created to help with this. It's available in Intrepid/Jaunty, install package 'virt-goodies'. After installing it can be used like so:

$ vmware2libvirt -f ./file.vmx > file.xml
$ virsh -c qemu:///system define file.xml

The first command converts the VMware 'file.vmx' file to the libvirt compatible 'file.xml'. See man vmware2libvirt for details. The second command imports file.xml into libvirt. The imported .xml files are stored in /etc/libvirt/qemu.

Caveats

While vmware2libvirt works well on simple virtual machines, there are limitations because .vmx files don't always contain enough information, and also because vmware2libvirt tries not to make too many assumptions about what it finds. A couple of things to look out for:

  1. While vmware2libvirt attempts to detect a 64-bit guest, be sure that your 64-bit guest has in its .xml file:
    <os>
     <type arch='x86_64' machine='pc'>hvm</type>
     ...
    </os>
    
  2. vmware2libvirt only detects and uses the first ethernet interface found. Additional interfaces can be added from within virt-manager.
  3. Currently the first scsi disk is used if found, otherwise the first ide disk. Additional disks can be added from within virt-manager.
  4. The converted virtual machine is hard-coded to use 1 cpu. This can be changed with:
    <vcpu>2</vcpu>
    
  5. vmware2libvirt does not (and cannot) convert anything that was VMware-specific within the guest. See 'Guest Notes' below for more details.

Using and Converting VMWar'e virtual Disk Files

kvm has the ability to use VMWare's .vmdk disk files directly, as long as the disk is wholly contained in a single vmdk file. But VMWare also allows splitting a disk into smaller, usually 2 GB, vmdk files. kvm can't use these. You can convert these files into a single virtual disk file using vmware-vdiskmanager. It is e.g. included in VMWare Server (freely available).

$ vmware-vdiskmanager -r <Name of splitted vmdk base file> -t 0 <Name of new single vmdk file>

Modify the virtual machines xml file in /etc/libvirt/qemu:

 ...
 <disk type='file' device='disk'>
      <source file='/var/lib/libvirt/images/diskname.vmdk'/>
      <target dev='hda' bus='ide'/>
 </disk>
 ...

and redefine it:

$ virsh -c qemu:///system define NameOfMachine.xml

IMPORTANT: keep in mind that while the .vmx file is converted to .xml, the disks are used as is. Please make backups, especially if you want to use the virtual machine in VMWare later. kvm is not able to make snapshots when using vmdk disk files. So I recommend to convert the virtual disk file in qemu's format qcow2. Package qemu contains a utility qemu-img to do this:

qemu-img convert diskname.vmdk -O qcow2 diskname.qcow2

change the machines xml file and redefine it (see above).

Should VMWare Tools be kept after conversion?

If converting from vmware to libvirt, be sure to remove vmware-tools if you have it installed (otherwise it will overwrite xorg.conf on reboot)

How to convert physical Machines to virt-manager

If you want to convert a Windows (XP) physical machine you first may have to enable IDE in the registry. Start the machine and execute mergeide.reg. See Microsoft KB Article 314082.

using VMWare Converter

VMWare Converter is a free tool to migrate a physical machine to VMWare. So the first step is to migrate the physical machine to a VMware image. The second step is to follow the howto "How to convert VMWare Machines to virt-manager" (see above).

using linux tools

See the german book about qemu physical to virtual. There is a link to translate it in english.

Should ntp be used for time synchronisation?

Guests should not use ntp to synchronize the clock, so be sure to remove/disable ntpd

Which driver should be used for Xorg?

Video

Linux guests with Xorg should be using the 'cirrus' video driver. To use, adjust /etc/X11/xorg.conf to have:
Section "Device"
        Identifier      "Configured Video Device"
        Driver          "cirrus"
EndSection
then be sure that your Screen section uses 'Configured Video Device' for its Device.

Mouse

Linux guests with Xorg should be using the 'vmmouse' driver (not available on Ubuntu Dapper). To use, perform within the guest:
aptitude install xserver-xorg-input-vmmouse
then adjust /etc/X11/xorg.conf to have (the Identifier line should not change, and you should have only an Identifier line and Driver line for the mouse):

Section "InputDevice"

       Identifier      "Configured Mouse"
       Driver          "vmmouse"

EndSection

How to set up guest resolution in Xorg ?

Linux guests with Xorg need to adjust the resolution for Xorg in /etc/X11/xorg.conf. Look for the Screen section, and make sure each of the 'Modes' lines has a reasonable resolution for your system (due to bug #193456 the resolution in the guest's resolution needs to be smaller than the host). Eg:
Section "Screen"
        ...
        SubSection "Display"
                Depth           16
                Modes           "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth           24
                Modes           "800x600" "640x480"
        EndSubSection
EndSection

<<Anchor(systemadjustments)>>

What system specific adjustments are recommended?

Windows (<Vista)

Windows (other than Vista) virtual machines should substitute in the .xml file:
<features>
  <acpi/>
</features>
with:

<features/>

Windows Vista

Windows Vista virtual machines should add this to the xml file:
<domain type='kvm'>
...
  <features>
    <acpi/>
  </features>
</domain>

Debian Sarge

Debian Sarge (oldstable) may write /boot/grub/menu.lst incorrectly, resulting in the following on boot:
pivot_root: no such file or directory
/sbin/init: 432: cannot open dev/console: no such file
Kernel panic: Attempted to kill init!
The fix is at the grub menu, press 'e' and adjust root=/dev/hdb1 to be root=/dev/hda1. After a successful boot, you will need to update /boot/grub/menu.lst to have:
  1. kopt=root=/dev/hda1 ro
and run:
  1. update-grub

OpenBSD 4.1 (and others?)

OpenBSD 4.1 (and probably others) when using the rtl8139 network driver may realize poor network performance and see this message on the console:
re0: watchdog timeout
The fix is to use another NIC (e1000 appears to work well). See 'Changing the Network Card Model' above.

OpenBSD 4.5 and later

A change in the OpenBSD kernel causes it to hang on boot at "setting tty flags". If this affects you, follow the instructions on http://scie.nti.st/2009/10/4/running-openbsd-4-5-in-kvm-on-ubuntu-linux-9-04 <<Include(KVM/Header)>>