domingo, 9 de septiembre de 2007

Instalar qemu con kqemu en Debian Lenny

QEMU es un emulador de procesadores basado en la traducción dinámica de binarios (conversión del código binario de la arquitectura fuente en código entendible por la arquitectura huésped). QEMU también tiene capacidades de virtualización dentro de un sistema operativo, ya sea Linux, Windows, o cualquiera de los sistemas operativos admitidos, (de hecho es la forma más común de uso). Esta máquina virtual puede ejecutarse en cualquier tipo de Microprocesador o arquitectura (x86, x86-64, PowerPC, MIPS, SPARC, etc.). Está licenciado en parte con la LGPL y la GPL de GNU.

El objetivo principal es emular un sistema operativo dentro de otro sin tener que reparticionar el disco duro, empleando para su ubicación cualquier directorio dentro de éste.

El programa no dispone de GUI, pero existe otro programa llamado QEMU manager que hace las veces de interfaz gráfica si se utiliza QEMU desde Windows. También existe una versión para Linux llamado qemu-launcher. En Mac OS X puede utilizarse el programa Q que dispone de una interfaz gráfica para crear y administrar las máquinas virtuales.

Tomado de: wikipedia


Requisitos:

1.- Verificar que tengamos los tipos de paquetes "contrib" y "non-free" en las entradas de nuestros repositorios y que además existan al menos un repositorio con paquetes source y los mismos tipos de paquetes mencionados con anterioridad, para ello, editamos nuestro archivo /etc/apt/sources.list en modo superusuario de la siguiente manera:

root@skowski:~#  vim /etc/apt/sources.list


A continuación se puede observar en mi archivo, que al final de cada repositorio existen los tipos de paquetes de interés:
deb http://ftp.fi.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fi.debian.org/debian/ lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

2.- Instalar module-assistant
root@skowski:~#  aptitude install module-assistant

Manos a la obra!

3.- Actualizar module-assistant
root@skowski:~# m-a update

4.- Preparar el sistema para compilar módulos, escogemos la opción: "Prepare" como se muestra en la imágen, me he saltado el paso de actualización: "Update" ya que la misma la realicé en el paso anterior vía comandos (la intención es que observes que podemos hacerlo vía cónsola conociendo los comandos, o de forma gráfica)

5.- Escogemos la opción: "Select" para tomar el paquete que nos interesa


6.- Tomaremos de la lista, el paquete que nos interesa, en este caso: kqemu, el cual seleccionaremos presionando la barra espaciadora y luego presionaremos enter
7.- Debemos descargar el paquete, para ello, presionamos enter en la opción: "Get"
8.- Ahora compilamos el paquete, con la opción: "Build"
7.- Cuando el asistente nos pregunte que si deseamos instalar el módulo, le responderemos con un "sí"
8.- Por lo que "no" será necesario dar la instrucción que instale el paquete y salimos del asistente para instalación de modulos.

9.- Debemos cargar manualmente el módulo:
root@skowski:~# modprobe kqemu

9.1.- Confiamos que el módulo se ha cargado correctamente, pero verificamos, ejecutando el comando:
root@skowski:~# lsmod |grep kqemu

Y nos debería arrojar una salida como sigue:
kqemu 122916 0

10.- Debemos garantizar que cada vez iniciemos el sistema, el módulo sea cargado, para ello:
root@skowski:~# echo "kqemu" >> /etc/modules

10.1.- Confiamos pero verificamos:
root@skowski:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

loop
tun
ibm_acpi
kqemu

11.- Finalmente instalamos qemu:
root@skowski:~# aptitude install qemu

Usando nuestro juguete nuevo:
12.- Creamos un disco duro para nuestra máquina virtual, lo cual podemos hacerlo con nuestro usuario no privilegiado
jrivero@skowski:~/virtuals_pc$ qemu-img create debian-test.img 3G -f qcow
donde:
qemu-img create: nos permite crear una imagen (obvio)
debian-test.img: nombre de nuestro nuevo disco duro virtual
3G:: el tamaño máximo que tendrá el disco
-f qcow2: Indicamos que la imagen (disco duro) será creado con el formato qcow versión 2, entre otras cosas, el archivo irá creciendo de acuerdo a las necesidades

13.- Iniciamos nuestra máquina virtual:
jrivero@skowski:~/virtuals_pc$ qemu -hda /home/jrivero/virtuals_pc/debian-test.img -cdrom /dev/hdc -boot d -redir tcp:5555::22 -redir tcp:5556::80 &
donde:
qemu: invocamos el emulador
-hda /home/jrivero/virtuals_pc/debian-test.img: indicamos que nuestro disco duro debian-test (hda) está ubicado en ruta absoluta
-cdrom /dev/hdc:le decimos que va a tener unidad de cdrom e indicamos cual es nuestro dispositivo físico real.
-boot d: maquinita, arranca por el disco compacto, cuando finalices la instalación, le indicas que arranque por disco duro, cambiando la letra "d" por "c"
-redir tcp:5555::22: redirijo todo el tráfico, que a través del puerto 5555 de mi máquina física y para que llegue al puerto 22 de la máquina virtual; jejeje, en cristiano; es para poder hacer un ssh a mi máquina virtual, lo cual lo hago con: ssh user@localhost -p 5555

Por hacer (TO DO):
1.- Crear una interfaz de red virtual (a través de tun), que permita obtener a la máquina virtual una dirección ip, del mismo segmento de red que el de la máquina física.


Notas:
1.- Para éste "cómo" he utilizado el super usuario (root), en lugar de utilizar sudo, por razones de facilitar el aprendizaje, sin embargo, es importante que configures tu sudo, tarea que tengo pendiente por documentar en los próximos días.

2.- En casos que la máquina virtual funcione demasiado lenta (basadas en GNU/Linux, para Windows por los momentos prefiero utilizar VirtualBox), lo más seguro es que no se ha cargado el acelerador kqemu, lo cual podemos verificar viendo en la consola tras ejecutar el paso 13 un mensaje tan similar a: "Could not open '/dev/kqemu' - QEMU acceleration layer not activated, la solución a tal situación (me sucedió utiilzando ubuntu) es crear el nodo kqemu en el directorio de los dispositivos y darle permisos de lectura y escritura para todos, de la siguiente forma:

root@skowski:~#
mknod /dev/kqemu c 250 0
root@skowski:~# chmod 666 /dev/kqemu

No hay comentarios:

Usar y administrar Debian GNU/Linux de forma fácil

Siempre que navego, y busco información acerca de la instalación de un paquete en Debian me gustaría conseguir un cómo (howto) que me lleve de la mano, algunos son de ese estilo, pero realmente son muy pocos, el objetivo de éste blog, es contribuir en tal necesidad. Bienvenidas las sugerencias y agregados que cumplan con éste principio.