%general-entities; ]> $LastChangedBy:$ $Date:$ qemu-kvm-&qemu-kvm-version; qemu-kvm Introduction to qemu-kvm qemu-kvm is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). Package Information Download (HTTP): Download (FTP): Download MD5 sum: &qemu-kvm-md5sum; Download size: &qemu-kvm-size; Estimated disk space required: &qemu-kvm-buildsize; Estimated build time: &qemu-kvm-time; Qt Dependencies Required , , , and Optional , , , , , , and . Note that this optional dependencies list is not comprehensive. See the output of ./configure --help for a more complete list. User Notes: KVM Prerequsites Before building qemu-kvm, check to see if your processor supports Virtualization Technology (VT): egrep '^flags.*(vmx|svm)' /proc/cpuinfo If you get any output, you have VT technology (vmx for Intel processors and svm for AMD processors). You then need to go into your system BIOS and ensure it is enabled. After enabing, reboot back to your LFS instance. Kernel Configuration Enable the following options in the kernel configuration and recompile the kernel if necessary: Virtualization: Y Kernel-based Virtual Machine (KVM) support: M or Y KVM for Intel processors support: M or Y KVM for AMD processors support: M or Y kvm-qemu The Intel or AMD settings are not both required, but the one matching your system processor is required. For networking, check that the settings CONFIG_BRIDGE, CONFIG_STP, CONFIG_TUN are enabled and is installed. Installation of qemu-kvm If xorg is not installed in /usr, then the linker needs to be told where it is. For example: export LIBRARY_PATH=/opt/xorg/lib Install qemu-kvm by running the following commands: ./configure --prefix=/usr && make Testing the results is not automated. To run individual tests, change to the tests/ directory, and examine the Makefile. Each test may be run individually with make run-<test name>. Now, as the root user: make install The main program qemu-system-x86_64 doesn't make a distinction between i386 and x86_64 so even on an i386 system you should use qemu-system-x86_64 For convenience you may want to create a symbolic link to run qemu-system-x86_64: ln -sv qemu-system-x86_64 /usr/bin/qemu Configuring qemu-kvm To generate an image, run: qemu-img create -f qcow2 vdisk.img 10G Adjust the virtual disk size and image filename as desired. The actual size of the file will be less than specified, but will expand as it is used. The following instructions assume you have created the optional symbolic link, qemu. Additionally, you must run qemu as the root user command from an X-Windows based terminal. To install an operating system, download an iso of your choice or use a pre-intalled cdrom device. For the purposes of this example, we will use Fedora 16 that is downloaded as Fedora-16-x86_64-Live-LXDE.iso in the current directory. Run the following: qemu -hda vdisk.img \ -cdrom Fedora-16-x86_64-Live-LXDE.iso \ -boot d \ -m 384 Follow the normal installation procedures for the chosen distribution. The -boot option specifies the boot order of drives as a string of drive letters. Valid drive letters are: a, b (floppy 1 and 2), c (first hard disk), d (first CD-ROM). The -m option is the amount of memory to use for the virtual machine. If you have sufficient memory (2G or more), 1G is a reasonable value. For computers with 512MB of RAM it's safe to use -m 192, or even -m 128 (the default). To run the newly installed operating system, run: qemu vdisk.img -m 384 To add networking to the instance add "-net nic -net user" to the command above. qemu provides a DHCP server for the VM and, depending on the client system, sets up networking though the host. One problem with the above networking solution is that it does not provide the ability to connect with the local network. To do that, there are several additional steps that need to be done, all as the root user: Set up bridging with . Allow the host system to forward IP packets. sysctl -w net.ipv4.ip_forward=1 To make this permanent, add the command to /etc/syssysctl.conf: cat >> /etc/sysctl.conf << EOF net.ipv4.ip_forward=1 EOF Create scripts for qemu to attach the client network device, usually visible as tap0, to the host bridge. cat >> /etc/qemu-ifup << EOF #!/bin/bash switch=br0 if [ -n "$1" ]; then # Add new tap0 interface to bridge /sbin/ip link set $1 up sleep 0.5s /usr/sbin/brctl addif $switch $1 else echo "Error: no interface specified" exit 1 fi exit 0 EOF cat >> /etc/qemu-ifdown << EOF #!/bin/bash switch=br0 if [ -n "$1" ]; then # Remove tap0 interface from bridge /usr/sbin/brctl delif $switch $1 else echo "Error: no interface specified" exit 1 fi exit 0 EOF Start qemu with "-net nic -net tap" options. If a connection, such as ssh, from the local network to the client VM is desired, the client should probably be configured with a static IP address. Contents Installed Program Installed Libraries Installed Directories qemu-ga, qemu-img, qemu-io, qemu-nbd, qemu-system-x86_64 None /etc/qemu, /usr/share/qemu, /usr/share/doc/qemu Short Description qemu-ga implements support for QMP (QEMU Monitor Protocol) commands and events that terminate and originate respectively within the guest using an agent built as part of QEMU. qemu-ga qemu-img provides commands to manage QEMU disk images. qemu-img qemu-io is a diagnostic and manipulation program for (virtual) memory media. It is still at an early stage of development. qemu-io qemu-nbd exports Qemu disk images using the QEMU Disk Network Block Device (NBD) protocol. qemu-nbd qemu-system-x86_64 is the QEMU PC System emulator. qemu-system-x86_64