Qemu en Slackware

Qemu (Quick emulator) es un emulador y virtualizador genérico que puede ser usado con muchas finalidades. Yo por ejemplo lo utilizo para crear máquinas virtuales en las que probar la portabilidad de cierto software (a veces propio) en diferentes plataformas.

¿Por qué usar qemu si tenemos VirtualBox? Bueno, VirtualBox requiere de un sistema multilib (sistema de 64 bits compatible con 32 bits) y en ciertas ocasiones no vale la pena quitarle la “pureza” a un sistema x86_64 por unas cuantas aplicaciones que bien tienen alternativas.

Cargar módulos del kernel

Primero se debe hacer es checar si el sistema soporta la virtualización desde el kernel:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 42
Stepping:              7
CPU MHz:               2300.000
BogoMIPS:              4588.99
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K

La línea Virtualization: VT-x indica que el procesador de mi laptop si soporta la virtualización mediante el módulo kvm_intel. En caso de que el procesador sea AMD y se indique AMD-V, el módulo a usar es kvm_amd. Para cargar el controlador kvm_intel se tiene que hacer como root:

$ su
Contraseña:
# modprobe kvm_intel
# exit

Esto tiene que hacerse siempre antes de que se ejecute qemu una vez instalada la máquina virtual.

Crear medio de instalación

Hice un nuevo directorio llamado qemu y copié ahí la imagen de un sistema Windows XP 32 bits ✝ (hace tiempo que hice esto), luego hice la imagen qemu de un “disco duro” de 5G aproximadamente, y la llamé windows.qcow2:

$ mkdir qemu
$ cd qemu/
$ qemu-img create -f qcow windows.qcow2 5G
Formatting 'windows.qcow2', fmt=qcow size=5368709120 encryption=off 

Instalar el sistema

Ahora instalar el sistema Windows XP con la imagen (ISO) llamada winxp.iso que se encuentra en el mismo directorio :

$ qemu-kvm -hda windows.qcow2 -m 512 -cdrom winxp.iso -boot d -vga std

Aparecerá una ventana de instalación de Windows, se procede a instalar este SO normalmente. Para iniciar la máquina virtual modifiqué el script que se proporciona en AlienWiki, quedando de la siguiente forma:

#!/bin/sh
#
# Start Windows XP Pro in QEMU

PARAMS=$*

# Qemu can use SDL sound instead of the default OSS
export QEMU_AUDIO_DRV=sdl

# Whereas SDL can play through alsa:
export SDL_AUDIODRIVER=alsa

# Change this to the directory where _you_ keep your QEMU images:
IMAGEDIR=/home/eduardo/qemu

# Change this to the directory where _you_ keep your installation CDROM's ISO images:
ISODIR=/home/eduardo/qemu

# Now, change directory to your image directory
cd $IMAGEDIR

# If you want the WinXP CD available, use a '-cdrom' parameter:
qemu-system-x86_64 -usbdevice tablet -usbdevice host:0951:1643 -net nic,model=rtl8139 -net user -vga std -machine type=pc,accel=kvm -m 1024 -localtime -soundhw all -hda winxp.qcow2 -cdrom winxp.iso 1 > winxp.log 2 > winxp.err ${PARAMS} &

Este script lo guarde en el directorio de mi usuario y le asigné permisos de ejecución. Opcionalmente se puede instalar libvirt, yo lo hice para probar algunos de los controladores de vídeo y de red:

sbopkg -i "urlgrabber yajl libvirt"

Abrir /etc/rc.d/rc.local y agregar lo siguiente para ejecutar libvirt al iniciar el sistema (si queremos usar libvirt en la sesión actual sin reiniciar solo ejecutamos la tercera linea como root para iniciar libvirt):

# Start libvirt:
if [ -x /etc/rc.d/rc.libvirt ]; then
/etc/rc.d/rc.libvirt start
fi

Algunos problemas

Cursor del ratón con movimientos aleatorios: Esto se soluciona mediante el comando:

$ export SDL_VIDEO_X11_DGAMOUSE=0

Además como tuve problemas con el controlador de Ethernet pues la máquina virtual no lo reconocía, así tuve que emular un dispositivo común (RTL8139) para poder usar internet.

Al tratar de usar una memoria USB en la máquina virtual mediante el comando:

-usbdevice host:0951:1643

Me apareció el siguiente error:

husb: open /dev/bus/usb/003/002: Permission denied

Cuya solución fue darle los permisos adecuados:

# chmod 777 /dev/bus/usb/003/002

qemu_vm

Listo ahora podemos usar el sistema del mal sin problemas en una máquina virtual.

NOTA: hace tiempo que tenía esta entrada en mis borradores del blog y que por alguna razón se me había olvidado, así que alguna información puede estar desactualizada. Saludos.

Fuentes:
qemu
libvirt AlienWiki
ArchWiki mmc.geofisica.unam.mx Gentoo Wiki
LQ Thread

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s