miércoles, 23 de mayo de 2012

Configurar Qemu en modo bridge

La VM con RaspberryPi como un equipo más de la red

Hasta ahora, hemos estado lanzando Qemu como un servicio nateado desde el host. Cuando nos pongamos a instalarle los superpoderes, necesitará tener una IP de nuestra lan, para que podamos hacer pruebas reales, antes de tener físicamente el Raspberry. De esto va este post.

En mi caso (ni idea de como se hace en windows) uso Debian para lanzar Qemu. Hay que tener un par de ideas claras:

  1. La IP de mi Debian (el host, el dom0, el servidor de Qemu ...) es 192.168.1.208, estática ¡¡recomendado!!.
  2. La IP que va a tener el Raspberry será la 192.168.1.223, estática ¡¡OBLIGATORIO!!
  3. La máscara de mi red es 255.255.255.0 y el gateway 192.168.1.1
Lo que vamos a hacer es crear un bridge en Debian (en el host) y vamos a dejar la configuración de red del Raspberry, lo más clara posible para que no tengamos que modificarla cuando nos llegue.
Para los más desentendidos en la materia (entre los que me incluyo) simplemente ejecutamos como root:
ifconfig eth0 down
brctl addbr br0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tun0 0.0.0.0 promisc up
ifconfig br0 192.168.1.208 netmask 255.255.255.0 broadcast 192.168.1.255 up
brctl stp br0 off
brctl setfd br0 1
brctl sethello br0 1
brctl addif br0 eth0
brctl addif br0 tun0
route add default gw 192.168.1.1
Somos amigos del copipaste, anímate!. Ahora editamos el archivo:
vim /etc/qemu-ifup
Y le ponemos este contenido:
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
/sbin/ifconfig $1 0.0.0.0 promisc up echo "Adding $1 to br0..."
/usr/sbin/brctl addif br0 $1
sleep 2
Recuerda: "copipaste es tu mejor amigo". Y ya está, no puede ser más fácil. Ahora para lanzar la maquina virtual:
qemu-system-arm -M versatilepb -cpu arm1176 -m 192 -hda debian6-19-04-2012.img -kernel zImage -append "root=/dev/sda2" -serial stdio -nographic -curses -net tap -net nic
¡¡OJO!! la ejecución tiene algunos cambios con respecto a lo que habíamos visto hasta ahora. Cuando termine de cargar la imagen del RaspberryPi, tendremos que configurarle su IP a mano:
vim /etc/network/interfaces
Y dejamos la parte del ETH0 de la siguiente forma:
auto eth0
iface eth0 inet static
address 192.168.1.223
netmask 255.255.255.0
gateway 192.168.1.1
guardamos y antes de reiniciar, vamos a activar el servidor SSH, para comprobar que no nos hemos saltado ningún paso. Para ello:
sudo update-rc.d ssh defaults
Eso nos creará los enlaces para iniciar el servidor SSH en el arranque y parada del sistema. Ahora si, reiniciamos:
sudo reboot
Cuando haya terminado, desde otro equipo de la red o desde el propio servidor (el host, el dom0 ...) nos conectamos via SSH al Raspberry:
ssh pi@192.168.1.223
Nos pide la clave y ¡¡LISTO!!
Referencias: link1 y link2.

2 comentarios:

  1. Todo esto es para tener un IP distinta en el QEMU, de la IP del Ubuntu, ¿no?

    Quiero decir, cuando tengas el Pi al router, todo esto ya no es valido, ¿no?

    ResponderEliminar
    Respuestas
    1. Esto es para que la maquina virtual que corre en Qemu tenga una IP de la lan. Evidentemente cuando tengas fisicamente el RaspberryPi, no tienes que hacer nada de esto.

      Eliminar