El documento está centrado en kvm, pero como el monitor de kvm está basado en qemu, casi todo lo mencionado aquí funcionará en qemu.
Verificación de soporte para virtualización. Para ver si nuestro procesador soporta virtualización podemos ejecutar el siguiente comando
cat /proc/cpuinfo
y verificar si aparece el flag "vmx" para intel, o "svm" para amd.
En el caso de los intel es muy probable que haya que habilitar la opción de virtualización desde el bios y luego apagar y prender la máquina (no reiniciarla, tiene que quedar sin corriente el microprocesador).
Simplemente debemos instalar el paquete kvm con Synaptic o apt-get
apt-get install kvm
Qemu tiene una consola accesible con ctrl+alt+2, para volver a la vista normal ctrl+alt+1. Para ver el listado de comandos podemos escribir el comando help o presionar tab para autocompletar.
Para cambiar la imagen de cd "en caliente" vamos a la consola de Qemu.
Primero veremos el nombre de la unidad para esto podemos usar el comando
info block
Archivo:SalidaQemuInfoBlock.png?
En el ejemplo la unidad se llama ide1-cd, si tuviera una imagen cargada podemos sacarla con eject
eject ide1-cd0
Y luego podemos poner otra imagen con change
change ide1-cd0 nombreDeLaIso.iso
En kvm/qemu tenemos varias formas de configurar la red. Voy a nombrar solamente 2 de las más comunes.
Una opción es la red en modo usuario. Este caso es ideal cuando no tenemos privilegios en la máquina anfitrión y no requiere configuración extra.
Desde la máquina huésped podremos usar esta red simplemente ejecutando dhclient o la herramienta correspondiente al sistema operativo que usemos.
Desde el anfitrión no es necesaria ninguna configuración extra, la desventaja de esto es que el anfitrión no podrá conectarse con el huésped (aunque el huésped podrá conectarse con él y con otras máquinas).
Para usar redes en modo usuario debemos ejecutar kvm como sigue:
kvm -net nic -net user maquinaHuesped.img
Con interfaces virtuales podremos hacer que las máquinas virtuales sean visibles desde el anfitrión, desde otras máquinas virtuales e incluso desde otras máquinas físicas.
Si tenemos configuradas iptables las reglas de forward parecen aplicarse al tráfico que pasa por el bridge. Es conveniente poner como policy en forward accept, al menos en las primeras pruebas de estas configuraciones.
Para esto precisaremos permisos especiales, en esta guía haremos todo con permisos de root, queda como trabajo para el lector, si es necesario como otorgar permisos a usuarios comunes para que realicen alguna de estas tareas.
En este modo crearemos interfaces virtuales para las máquinas virtuales y les asignaremos un nombre así serán visibles desde el anfitrión con ifconfig. Luego conectaremos estas interfaces como si estuvieran conectadas con un switch con bridge-utils.
Para crear interfaces virtuales tap, debemos instalar uml-utilities y bridge-utils para conectarlas con otras interfaces.
Creamos una interfaz tap
tunctl -t virt0 ifconfig virt0 promisc up
Luego ejecutamos kvm pasándole el nombre de la interfaz creada y dentro de la virtual configuramos la red como corresponda (típicamente veremos la interfaz que creamos como eth0 en GNU/Linux)
kvm -net nic -net tap,ifname=virt0,script=no maquinaHuesped.img
Creamos un switch (o bridge) virtual y agregamos nuestra interfaz
brctl addbr br0 brctl addif br0 eth0 # O la interfaz que corresponda brctl addif br0 virt0 ifconfig br0 up
Configuramos br0 con la ip que tenía nuestra interfaz física
ifconfig eth0 0.0.0.0 # Desconfiguramos eth0 # O la interfaz que corresponda ifconfig br0 ... # Configuramos br0 como si fuera eth0
Nota: Asegurarse que permite el tráfico en el chain FORWARD con iptables