This is an old revision of the document!
Virtualization with KVM-QEMU
QEMU is a virtualization solution that is fully open-source and probably the most efficient free option on a Linux kernel. It can use the kernel KVM technology to access the highest possible virtualization level.
Reference links
The Gentoo Wiki page on QEMU has lots of good information, as well as this page.
Kernel and required packages
I am asusming you use genkernel with gentoo-sources or gentoo-kernel-bin with the dist flags to have a standard kernel, that ships with all the required options enables. If this is not the case, follow the instructions on the Gentoo Wiki page linked above and compile a compliant kernel.
You also need to have all the virtualization options enabled on your BIOS/UEFI firmware.
Now, as for packages, you will want the VirtManager GUI and the QEMU package, so install the following:
emerge app-emulation/libvirt app-emulation/virt-manager qemu -vp
And make sure your libvirtd has proper access configuration for the sockets: /etc/libvirt/libvirtd.conf:
unix_sock_group = "libvirt" unix_sock_rw_perms = "0770"
Networking configuration
If you want to use bridged networking, which means assign local LAN IP to your virtual machines, you need to convert your LAN interfaces to bridged.
This means, given the following example (in /etc/conf.d/net):
config_eno1="10.0.0.50/24" route_eno1="default via 10.0.0.1"
To this:
bridge_br0="eno1" config_br0="10.0.0.50/24" route_br0="default via 10.0.0.1" config_eno1="null"
And add the required init links:
cd /etc/init.d ln -s net.lo net.br0 rc-update add net.br0 default rc-update del net.eno1 default ./net.eno1 stop ./net.br0 start
Users configuration
add your users to groups kvm, qemu and libvirt.
gpasswd -a user libvirt gpasswd -a user kvm gpasswd -a user qemu rc-update add libvirt-guests rc-update add libvirtd /etc/init.d/libvirtd start /etc/init.d/libvirt-guests start