KVM: Difference between revisions

From Q
Jump to navigation Jump to search
Tgurr (talk | contribs)
No edit summary
Tgurr (talk | contribs)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Description ==
== Description ==
Setting up the Kernel-based Virtual Machine including network configuration and beeing able to create and run new machines as a normal user without requiring root privileges.
Setting up the Kernel-based Virtual Machine including network configuration and being able to create and run new machines as a normal user without requiring root privileges.


== Packages ==
== Packages ==
{{Box Code|emerge kvm -pv|
{{Code|cave resolve qemu-kvm|
<pre>
<pre>
[ebuild  N   ] net-misc/vde-2.2.2  461 kB
* media-libs/libsndfile [N 1.0.20]
[ebuild  N    ] media-sound/alsa-headers-1.0.19  2,829 kB
    Reasons: *net-wireless/bluez-4.39-r2:0::gentoo
[ebuild  N   ] media-libs/alsa-lib-1.0.19  USE="midi python -alisp -debug -doc" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" 775 kB
    alsa -jack -minimal -sqlite build_options: -optional_tests -split strip -trace
[ebuild  N   ] app-text/texi2html-1.78  443 kB
    "A C library for reading and writing files containing sampled sound"
[ebuild  N    ] app-emulation/kvm-kmod-85  296 kB
    905.69 kBytes to download
[ebuild  N    ] media-libs/libsdl-1.2.13-r1  USE="X alsa audio joystick opengl video xinerama xv -aalib -arts -custom-cflags -dga -directfb -esd -fbcon -ggi -libcaca -nas -oss -pulseaudio (-svga)" 3,295 kB
* dev-libs/libnl [N 1.1-r2]
[ebuild  N   ] app-emulation/kvm-85-r1  USE="alsa modules ncurses sdl vde -esd -gnutls -havekernel -pulseaudio -test" 4,192 kB
    Reasons: *net-wireless/bluez-4.39-r2:0::gentoo
    build_options: -optional_tests -split strip -trace
    "A library for applications dealing with netlink socket"
    282.16 kBytes to download
* net-wireless/bluez [N 4.39-r2]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    alsa consolekit cups -debug -doc -gstreamer -old-daemons -test-programs usb build_options: -optional_tests -split strip -trace
    "Bluetooth Tools and System Daemons for Linux"
    974.81 kBytes to download
* media-libs/libsdl [N 1.2.14]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    X -aalib alsa audio -custom-cflags -dga -directfb -fbcon -ggi joystick -libcaca -nas opengl -oss (-ps3) -pulseaudio (-svga) -tslib video -xinerama xv build_options: -optional_tests -split strip -trace
    "Simple Direct Media Layer"
* net-misc/vde [N 2.2.3]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    -pcap ssl build_options: -optional_tests -split strip -trace
    "vde2 is a virtual distributed ethernet emulator for emulators like qemu, bochs, and uml."
    511.71 kBytes to download
* app-text/texi2html [N 1.78]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    build_options: -optional_tests -split strip -trace
    "Perl script that converts Texinfo to HTML"
    442.60 kBytes to download
* app-emulation/qemu-kvm [N 0.11.0] <target>
    alsa bluetooth -esd -gnutls ncurses -pulseaudio -sasl sdl vde QEMU_SOFTMMU_TARGETS: -arm -cris i386 -m68k -mips -mips64 -mips64el -mipsel -ppc -ppc64 -ppcemb -sh4 -sh4eb -sparc x86_64 QEMU_USER_TARGETS: -alpha -arm -armeb -cris i386 -m68k -mips -mips64 -mips64el -mipsel -ppc -ppc64 -ppc64abi32 -sh4 -sh4eb -sparc -sparc32plus -sparc64 x86_64 build_options: -split strip -trace
    "QEMU + Kernel-based Virtual Machine userland tools"
    4.18 MBytes to download
</pre>
</pre>
}}
}}


{{Box Code|emerge iptables bridge-utils usermode-utilities -pv|
{{Code|cave resolve iptables bridge-utils usermode-utilities|
<pre>
<pre>
[ebuild  N    ] net-firewall/iptables-1.4.3.2  423 kB
* net-firewall/iptables [N 1.4.5] <target>
[ebuild  N    ] net-misc/bridge-utils-1.4 32 kB
    ipv6 build_options: -optional_tests -split strip -trace
[ebuild  N   ] sys-fs/fuse-2.7.4  495 kB
    "Linux kernel (2.4+) firewall, NAT and packet mangling tools"
[ebuild  N    ] sys-apps/usermode-utilities-20070815  49 kB
    450.66 kBytes to download
* net-misc/bridge-utils [N 1.4] <target>
    build_options: -optional_tests -split strip -trace
    "Tools for configuring the Linux kernel 802.1d Ethernet Bridge"
    31.89 kBytes to download
* sys-fs/fuse [N 2.8.1]
    Reasons: *sys-apps/usermode-utilities-20070815:0::gentoo
    build_options: -optional_tests -split strip -trace
    "An interface for filesystems implemented in userspace."
    481.32 kBytes to download
* sys-apps/usermode-utilities [N 20070815] <target>
    build_options: -optional_tests -split strip -trace
    "Tools for use with Usermode Linux virtual machines"
    48.98 kBytes to download
</pre>
</pre>
}}
}}


== USE-Flags ==
== USE-Flags ==
{{Box File|/etc/portage/package.use|
{{File|/etc/paludis/use.conf|
<pre>
<pre>
app-emulation/kvm -esd vde
*/* QEMU_SOFTMMU_TARGETS: -* i386 x86_64
*/* QEMU_USER_TARGETS: -* i386 x86_64
app-emulation/qemu-kvm vde
</pre>
</pre>
}}
}}


== Installation ==
== Installation ==
{{Root|# emerge kvm}}
{{Root|cave resolve qemu-kvm}}


== Kernel Configuration ==
== Kernel Configuration ==
{{Box Kernel|KVM Kernel Configuration|
Please see: [[Kernel#KVM_host|KVM Kernel Configuration for a KVM Host]]
<pre>
[*] Networking  support --->
  Networking options  --->
    [*] 802.1d Ethernet Bridging
Device Drivers  --->
  [*] Network device support  --->
    <*>  Universal TUN/TAP device driver support
[*] Virtualization  --->
  <*>  Kernel-based Virtual Machine (KVM) support
 
Enable once kvm is fixed for VT-D-Support:
 
Bus options (PCI etc.)  --->
  [ ] Support for DMA Remapping Devices (EXPERIMENTAL)
</pre>
}}


== Network configuration ==
== Network configuration ==
{{Box File|/etc/conf.d/net|
{{File|/etc/conf.d/net|
<pre>
<pre>
config_eth0=( "null" )
config_eth0=( "null" )
Line 70: Line 95:
}}
}}


{{Root|# /etc/init.d/}}
{{Root|/etc/init.d/}}


{{Root|# ln -s net.lo net.br0}}
{{Root|ln -s net.lo net.br0}}


{{Root|# ln -s net.lo net.tap0}}
{{Root|ln -s net.lo net.tap0}}


{{Root|# rc-update add net.br0 default}}
{{Root|rc-update add net.br0 default}}


{{Root|# rc-update add net.tap0 default}}
{{Root|rc-update add net.tap0 default}}


{{Box File|/etc/conf.d/vde|
{{File|/etc/conf.d/vde|
<pre>
<pre>
VDE_MODPROBE_TUN="no"
VDE_MODPROBE_TUN="no"
Line 86: Line 111:
}}
}}


{{Root|# rc-update add vde default}}
{{Root|rc-update add vde default}}




== Add user to the necessary groups ==
== Add existing user to the necessary groups ==


{{Root|# usermod -a -G kvm,qemu username}}
{{Root|usermod -a -G kvm,qemu username}}


== Usage ==
== Usage ==
=== Generate random MAC adresses ===
=== Generate random MAC adresses ===
{{Command|# echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done}}
{{Command|<nowiki>echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done</nowiki>}}




Line 101: Line 126:




{{Command|# mkdir -p /mnt/kvm}}
{{Root|mkdir -p /mnt/kvm}}




{{Box File|/etc/fstab|
{{File|/etc/fstab|
<pre>
<pre>
/dev/sda4              /mnt/kvm        ext4            defaults,auto,user 0 1
/dev/sda4              /mnt/kvm        ext4            defaults,auto,user 0 1
Line 111: Line 136:




{{Root|# chown -R root:kvm /mnt/kvm}}
{{Root|chown -R root:kvm /mnt/kvm}}


{{Root|# chmod -R g+w /mnt/kvm}}
{{Root|chmod -R g+w /mnt/kvm}}


{{Command|# kvm-img create -f qcow2 /mnt/kvm/linux-test.img 15G}}
{{Command|qemu-img create -f qcow2 /mnt/kvm/linux-test.img 15G}}


{{Command|<nowiki># vdeq kvm /mnt/kvm/linux-test.img -cdrom /dev/cdrom -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:FF:15:33 -net vde,vlan=0,sock=/var/run/vde.ctl</nowiki>}}
{{Command|<nowiki>vdeq qemu /mnt/kvm/linux-test.img -cdrom /dev/cdrom -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:FF:15:33 -net vde,vlan=0,sock=/var/run/vde.ctl</nowiki>}}




{{Command|# kvm-img create -f qcow2 /mnt/kvm/windows-test.img 15G}}
{{Command|qemu-img create -f qcow2 /mnt/kvm/windows-test.img 15G}}


{{Command|<nowiki># vdeq kvm /mnt/kvm/windows-test.img -cdrom /dev/cdrom -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:EF:14:32 -net vde,vlan=0,sock=/var/run/vde.ctl</nowiki>}}
{{Command|<nowiki>vdeq qemu /mnt/kvm/windows-test.img -cdrom /dev/cdrom -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:EF:14:32 -net vde,vlan=0,sock=/var/run/vde.ctl</nowiki>}}


Once done installing and after enabling the remote desktop access in Windows you can add the -nographic switch and start the kvm machine via a login script for example.
Once done installing and after enabling the remote desktop access in Windows you can add the -nographic switch and start the kvm machine via a login script for example.


{{Command|<nowiki># vdeq kvm /mnt/kvm/windows-test.img -nographic -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:EF:14:32 -net vde,vlan=0,sock=/var/run/vde.ctl</nowiki>}}
{{Command|<nowiki>vdeq qemu /mnt/kvm/windows-test.img -nographic -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:EF:14:32 -net vde,vlan=0,sock=/var/run/vde.ctl</nowiki>}}


You really want to use an RDP session to connect to your Windows Boxes since the mouse movement is horrible slow and laggy when using the SDL client.
You really want to use an RDP session to connect to your Windows Boxes since the mouse movement is horrible slow and laggy when using the SDL client.

Latest revision as of 13:40, 6 July 2012

Description

Setting up the Kernel-based Virtual Machine including network configuration and being able to create and run new machines as a normal user without requiring root privileges.

Packages

Code: cave resolve qemu-kvm
* media-libs/libsndfile [N 1.0.20]
    Reasons: *net-wireless/bluez-4.39-r2:0::gentoo
    alsa -jack -minimal -sqlite build_options: -optional_tests -split strip -trace
    "A C library for reading and writing files containing sampled sound"
    905.69 kBytes to download
* dev-libs/libnl [N 1.1-r2]
    Reasons: *net-wireless/bluez-4.39-r2:0::gentoo
    build_options: -optional_tests -split strip -trace
    "A library for applications dealing with netlink socket"
    282.16 kBytes to download
* net-wireless/bluez [N 4.39-r2]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    alsa consolekit cups -debug -doc -gstreamer -old-daemons -test-programs usb build_options: -optional_tests -split strip -trace
    "Bluetooth Tools and System Daemons for Linux"
    974.81 kBytes to download
* media-libs/libsdl [N 1.2.14]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    X -aalib alsa audio -custom-cflags -dga -directfb -fbcon -ggi joystick -libcaca -nas opengl -oss (-ps3) -pulseaudio (-svga) -tslib video -xinerama xv build_options: -optional_tests -split strip -trace
    "Simple Direct Media Layer"
* net-misc/vde [N 2.2.3]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    -pcap ssl build_options: -optional_tests -split strip -trace
    "vde2 is a virtual distributed ethernet emulator for emulators like qemu, bochs, and uml."
    511.71 kBytes to download
* app-text/texi2html [N 1.78]
    Reasons: *app-emulation/qemu-kvm-0.11.0:0::gentoo
    build_options: -optional_tests -split strip -trace
    "Perl script that converts Texinfo to HTML"
    442.60 kBytes to download
* app-emulation/qemu-kvm [N 0.11.0] <target>
    alsa bluetooth -esd -gnutls ncurses -pulseaudio -sasl sdl vde QEMU_SOFTMMU_TARGETS: -arm -cris i386 -m68k -mips -mips64 -mips64el -mipsel -ppc -ppc64 -ppcemb -sh4 -sh4eb -sparc x86_64 QEMU_USER_TARGETS: -alpha -arm -armeb -cris i386 -m68k -mips -mips64 -mips64el -mipsel -ppc -ppc64 -ppc64abi32 -sh4 -sh4eb -sparc -sparc32plus -sparc64 x86_64 build_options: -split strip -trace
    "QEMU + Kernel-based Virtual Machine userland tools"
    4.18 MBytes to download
Code: cave resolve iptables bridge-utils usermode-utilities
* net-firewall/iptables [N 1.4.5] <target>
    ipv6 build_options: -optional_tests -split strip -trace
    "Linux kernel (2.4+) firewall, NAT and packet mangling tools"
    450.66 kBytes to download
* net-misc/bridge-utils [N 1.4] <target>
    build_options: -optional_tests -split strip -trace
    "Tools for configuring the Linux kernel 802.1d Ethernet Bridge"
    31.89 kBytes to download
* sys-fs/fuse [N 2.8.1]
    Reasons: *sys-apps/usermode-utilities-20070815:0::gentoo
    build_options: -optional_tests -split strip -trace
    "An interface for filesystems implemented in userspace."
    481.32 kBytes to download
* sys-apps/usermode-utilities [N 20070815] <target>
    build_options: -optional_tests -split strip -trace
    "Tools for use with Usermode Linux virtual machines"
    48.98 kBytes to download

USE-Flags

File: /etc/paludis/use.conf
*/* QEMU_SOFTMMU_TARGETS: -* i386 x86_64
*/* QEMU_USER_TARGETS: -* i386 x86_64
app-emulation/qemu-kvm vde

Installation

# cave resolve qemu-kvm

Kernel Configuration

Please see: KVM Kernel Configuration for a KVM Host

Network configuration

File: /etc/conf.d/net
config_eth0=( "null" )

tuntap_tap0="tap"
config_tap0=( "null" )

brctl_br0=( "setfd 9" "sethello 2" "setmaxage 12" "stp off" )
config_br0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_br0=( "default via 192.168.0.1" )

bridge_add_eth0="br0"
bridge_add_tap0="br0"
# /etc/init.d/
# ln -s net.lo net.br0
# ln -s net.lo net.tap0
# rc-update add net.br0 default
# rc-update add net.tap0 default
File: /etc/conf.d/vde
VDE_MODPROBE_TUN="no"
# rc-update add vde default


Add existing user to the necessary groups

# usermod -a -G kvm,qemu username

Usage

Generate random MAC adresses

$ echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done


You can always setup new machines in your home directory, but here we assume we have a separate mount-point/partition which we mount at /mnt/kvm.


# mkdir -p /mnt/kvm


File: /etc/fstab
/dev/sda4               /mnt/kvm        ext4            defaults,auto,user 0 1


# chown -R root:kvm /mnt/kvm
# chmod -R g+w /mnt/kvm
$ qemu-img create -f qcow2 /mnt/kvm/linux-test.img 15G
$ vdeq qemu /mnt/kvm/linux-test.img -cdrom /dev/cdrom -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:FF:15:33 -net vde,vlan=0,sock=/var/run/vde.ctl


$ qemu-img create -f qcow2 /mnt/kvm/windows-test.img 15G
$ vdeq qemu /mnt/kvm/windows-test.img -cdrom /dev/cdrom -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:EF:14:32 -net vde,vlan=0,sock=/var/run/vde.ctl

Once done installing and after enabling the remote desktop access in Windows you can add the -nographic switch and start the kvm machine via a login script for example.

$ vdeq qemu /mnt/kvm/windows-test.img -nographic -soundhw es1370 -usb -m 1024 -k de -smp 1 -vga std -localtime -net nic,vlan=0,macaddr=DE:AD:BE:EF:14:32 -net vde,vlan=0,sock=/var/run/vde.ctl

You really want to use an RDP session to connect to your Windows Boxes since the mouse movement is horrible slow and laggy when using the SDL client.