VirtualBoxAyer, necesitaba probar un par de cosas con una máquina Virtual. Como a mi otra PC con capacidad de correr maquinas virtuales se le habia roto el rigido, y no tenia ningún otro para probar, tuve que hacerlo utilizando mi laptop.
Si bien prefiero otras cosas a VirtualBox, era lo único que tenia a meno en mi distribución que es ArchLinux.
Cabe aclarar que utilizo la versión binaria de VirtualBox (qué es cerrada), pero me funciona en terminos de rendimiento mucho mejor que VirtualBox-OSE. El sistema operativo que necesitaba virtualizar era un Debian Lenny 5.0, con LVM. Para montar un par de servidores experimentales que necesito implementar en un trabajo que debo realizar en unos dias.
Si bien como repito, hay cosas mas adecuadas para virtualizar y más aún en un sistema en producción. VirtualBox nos puede resultar utilil para realizar algunas pruebas caseras, desde la comodidad de estar utilizando una sola PC.
A Virtualbox-bin lo instale desde AUR, utilizando yaourt. Es importante destacar que necesita como dependencia a qt para poder funcionar.

Configurando la red en VirtualBox

Lo primero que debemos hacer es instalar la máquina Virtual de la manera normal a que lo hacemos siempre.
Solo que en la configuración de la máquina virtual, en la sección de los adaptadores de red, debemos especificarle que se conecte al bridge, que crearemos en el host.
Arrancaremos instalando brdige-utils, y uml_utilities:

#: pacman -S bridge-utils uml_utilites

Una vez instalados ambos, editamos el archivo /etc/conf.d/bridges y añadimos nuestro bridge:

bridge_br0="eth0 vbox0"
BRIDGE_INTERFACES=(br0)

Obviamente, hay que reemplazar eth0 por la interface de red que ustedes esten utilizando para realizar el bridge, en mi caso como se ve, es eth0.
Ahora debemos crear el archivo /etc/udev/rules.d/90-vboxdrv.rules, con el siguiente contenido:

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"

De igual forma editamos el archivo /etc/vbox/interfaces y agregamos lo siguiente:

vbox0 usuario br0

Donde reemplazan a usuario, por el nombre de usuario de ustedes.
Solo nos queda editar el archivo /etc/rc.conf donde añadimos para que se inicien los modulos brige, vboxdrv y vboxnetflt.

MODULES=( vboxdrv cboxnetflt bridge)

Dentro del mismo archivo, en la sección especificas de las interfaces de red, agregamos nuestro bridge (br0):

br0="br0 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255"
eth0="eth0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255"

INTERFACES=(eth0 br0)

En este caso, mi placa de red en el host es eth0, a la que utiliza la dirección de IP 192.168.1.2, y al bridge le asigno la dirección de IP 192.168.1.4. Esta misma es la que debemos configurar dentro de la máquina virtual para poder acceder a ella.
Ahora solo nos resta crear el bridge de la siguiente manera:

#: brctl addbr br0

A esto mismo lo podemos añadir dentro del /etc/rc.local para que se cree cada vez que iniciamos el sistema.

VM corriendo en el background

No se si es el titulo mas adecuado para esta sección, pero es el unico que se me ocurre :-P .
Para ejecutar la máquina virtual siempre use lo siguiente:

#: VBoxManage startvm Debian

Donde Debian, es el nombre de la máquina virtual que quiero ejecutar, esto me abria la ventanita de VirtualBox, y la VM ya estaba corriendo. Pero me parecia poco cómodo utilizar esta opción, mi idea era que corra algo asi como en el “background”, y poder acceder a ella utilizando SSH.
La solución fue muy simple, consistia en ejecutarla de la siguiente manera:

#: VBoxManage startvm Debian -type vrdp

Instalando Guest Additions

Bueno esto es extremadamente facil, al instalar Debian, necesitamos ademas instalar gcc, make, y los headers del kernel, utilizando por ejemplo apt-get.<
Para empezar iniciamos de forma convencional la VM, vamos a Dispositivos, y seleccionamos Instalar 'Guest Additions'.
Dentro de la VM, montamos la unicdad de CD-Rom y nos dirigimos al punto de montaje.
Alli ejecutamos:

#: sh VBoxLinuxAdditions-x86.run

O en caso de que utilizen 64 bits:

#: sh VBoxLinuxAdditions-amd64.run

Compilara un par de cositas, y listo. Todo instalado ;) .

Mensaje Spurious NAK en Debian

Al empezar a utilizar la máquina virtual, la terminal (tty1) se veia inundada del siguiente mensaje (a igual que en dmesg):

atkbd.c : Spurious NAK on isa0060/serio0. Somme program might be trying access hardware directly

Para que este mensaje no aparezca, podemos hacerlo de dos formas, por una sysctl, o pasandole unos parametros al archivo /proc/sys/kernel/printk.

Primer método:

#: echo "4 4 7 1" > /proc/sys/kernel/printk

Segundo método:

#: sysctl kernel.printk="4 4 1 7"

También lo podriamos agregar al archivo /etc/sysctl.conf de la misma forma que lo acabamos de hacer.

Tags: , , , , ,

Hoy por la tarde necesitaba usar una maquina virtual, tenia que probar software de seguridad en una red, y tenia solamente una máquina, así que sin pensarlo descargue VirtualBox, pero existia un inconveniente, estaba utilizando el Kernel de Linux 2.6.28.3, compilado a mano por mi, no hace demasiado tiempo.
Entonces pense en descargar VirtualBox desde los repositorios, pero, al instalar los módulos de VBox OSE, no tenia sentido regresa versiones atras en el kernel de Linux, unícamente para utilizar VirtualBox. Fui al directorio /usr/src, pero (siempre hay un pero), hacia unos días que habia borrado las fuentes y no iba a poder compilar ni los headers del kernel, ni los los módulos de VirtualBox
No me quedo otra que ir a kernel.org y descargar las fuentes de un nuevo Kernel, esta vez 2.6.28.6.
Por otro lado, fui a la página de VirtualBox, y descargue este software en su versión 2.4.1 para Linux, aquí se presentan una cantidad de paquetes binarios precompilados, pero yo baje un paquete “All Distributions”, el cual viene en un paquete .run.

Una vez que hemos terminado de descargar el Kernel, procedi al proceso de compilación ¿como?¿how to?, así bien facil:

Instalando el nuevo núcleo:
Primero que nada, hay que mover el archivo linux-2.6.28.6.tar.bz2 a /usr/src y luego descomprimir las fuentes del núcleo que vienen empaquetadas en un archivo .tar.bz2

#: mv linux-2.6.28.6.tar.bz2 /usr/src
#: tar jxvf linux-2.6.28.6.tar.bz2

Una vez descomprimidas, tenemos que crear un enlace simbolico llamado linux que apunte a las fuentes.

#: ln -s /usr/src/linux-2.6.28.6 /usr/src/linux
#: cd linux

Bien, como yo ya habia compilado varias veces, tengo mi archivo config guardado, con el cual evito tener que reconfigurar el núcleo con cada compilación, proceso que ahorra la mayor parte de la complejidad que supone compilar un kernel.
Copiamos el antiguo config dentro del directorio de las fuentes.

#: cp /boot/config-2.6.28.3 /usr/src/linux-2.6.28.6/.config

Una ves hecho esto, procedemos a comenzar con la compilación restaurando las configuración del archivo config que acabamos de copiar.

#: make oldconfig

Si el kernel que estamos compilando, presenta nuevos “features” con respecto a la configuración que poseemos, este nos preguntara sobre si deseamos compilar soporte también para estas nuevas características, solamente debemos responder las preguntas que este nos hace.
Ahora pasaremos al proceso de compilación propiamente dicho:

#: make && make install

Proceso de compilación

Proceso de compilación

Podemos salir a tomar un café, a hacer un poco de ejercicio o ir de compras, pues esto tardara bastante tiempo, en mayor o menor medida dependiendo de la capacidad de procesamiento de nuestro hardware.
Una vez que esto termine, hacemos:

#: make install_modules
#: mkinitramfs -o /boot/initrd.img-2.6.28.6 2.6.28.6

Listo, ya esta casí todo hecho respecto a la compilación del núcleo, pasaremos ahora a agregar la respectiva entrada en el Grub.
Podemos hacerlo de dos formas, una es haciendo un update-grub, o agregamos a mano la siguiente entrada, con nuestro editor de textos favorito (Vim rulez!), deberemos incorporar al archivo /boot/grub/menu.lst, algo como esto:

title           Debian GNU/Linux, kernel 2.6.28.6
root            (hd0,5)
kernel          /boot/vmlinuz-2.6.28.6 root=/dev/sda6 ro quiet vga=792
initrd          /boot/initrd.img-2.6.28.6

Obviamente, deberemos ajustar estos valores a los que corresponden con nuestro sistema. Con esto listo, el núcleo ya se encuentra compilado. Solo nos queda reiniciar, y seleccionar el nuevo núcleo.

#: shutdown -r now

Instalando el Linux Headers:

VirtualBox, necesita tener instalado los headers del núcleo, para instalarlo el proceso es bien simple, utilizaremos un paquete llamado kernel-package, el cual trae un conjunto de utilidades para la construcción de núcleos en Debian.
Hacemos lo siguiente:

#: apt-get update && apt-get install kernel-package

Una vez que este se encuentre instalado hacemos lo siguiente:

#: make-kpkg --append-to-version -1.0 kernel_headers

Esto tardara un rato, y nos generara un paquete .deb con los headers, por lo cual, deberiamos poder instalarlo con dpkg:

#: dpkg -i linux-headers-2.6.28.6-1.0_2.6.28.6_i386.deb

Y listo, los headers ya se encuentran instalados.

Instalando VirtualBox:

Ahora debemo dirigirnos a donde hemos descargado VirtualBox, y allí hacemos:

#: chmod +x virtualBox-2.1.4-42893-Linux_x86.run
#: ./virtualBox-2.1.4-42893-Linux_x86.run

La instalación se realiza de manera automática, pero aún nos queda OSE-Modules, a los cuales debemos compilarlos.

Compilando OSE-Modules:

Si intentamos iniciar vboxdrv, nos encontraremos con un pequeño error, que dice:

#: /etc/init.d/vboxdrv
Starting VirtualBox kernel module ...failed!
(No suitable module for running kernel found)

Si nos fijamos en el archivo /var/log/vbox-install.log encontraremos:

#: cat /var/log/vbox-install.log
Makefile:154: *** Error: /usr/src/linux (version 2.6.28.6-1.0) does not match the
current kernel (version 2.6.28.6). Alto.

Lo cual nos dice claramente que no encuentra las fuentes del núcleo. WTF???.
Tarte un rato en encontrar una solución, pero cuando la encontre, era mas facil de lo que parecia:

#: cd /lib/modules/2.6.28.6/source/
#: make oldconfig
#: make prepare

Ahora hacemos:

#: /etc/init.d/vboxdrv setup
#: /etc/init.d/vboxdrv start

Esperamos que se compilen los módulos, no suele demorar mucho y al terminar ya podemos iniciar VirtualBox normalmente. :)

VirtualBox con Damm Vulnerable Linux (DVL)

VirtualBox con Damm Vulnerable Linux (DVL)

Yo ya estoy usando Damm Vulnerable Linux desde VBox. Un tip, ahora es muchisimo mas facil configurar la red desde la máquina virtual utilizando NAT, (el proceso es casi automático).
Espero que les halla servido.

Tags: , , , , ,

Creative Commons License
Esta obra es publicada bajo una licencia Creative Commons.