Bueno, pues esto me ha pasado hoy mismo así que, para evitar que se me olvide y por consiguiente me vuelva a pasar, añado esta mini-guía.
Nota: La versión que uso en el momento de hacer la guía es la 1.5.4
El problema surge cuando queremos tener varias máquinas virtuales iguales basadas en Debian (en mi caso Lenny). VirtualBox es un poco puñetero con el tema de duplicado de discos virtuales, porque asigna un identificador único a cada disco por lo que, si intentamos hacer una copia simple, no funcionará al tener registrado el mismo ID para dos discos.
Para copiar un disco hay que usar la herramienta VBoxManage, de la siguiente manera:
VBoxManage clonevdi origen destino
Nota : origen ha de estar en $HOME/.VirtualBox/VDI porque si no no funciona (BUG!!)
Bueno, pues el caso es que después de tener varios discos virtuales y haber generado tantas máquinas virtuales para esos discos, solo funcionará la tarjeta de red del primero, mientras que las demás, pese a ser detectadas en el arranque, darán el siguiente error al iniciar la red:
SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
¿Qué ha pasado? Muy sencillo, un fichero autogenerado llamado /etc/udev/rules.d/rules.d/z25_persistent-net.rules se asegura de que una vez que una tarjeta de red es detectada, la dirección MAC de ese hardware siempre obtendrá el mismo nombre de interfaz (por ejemplo, eth0). De este modo, si cambias de un dispositivo a otro, no robará el nombre confunciendo a los scripts de configuración.
Por desgracia, cuando clonas una máquina virtual, obtienes una nueva dirección MAC para el dispositivo. El sistema de gestión de dispositivos udev de Debian se da cuenta de que “eth0″ ya está asignado a la dirección MAC del dispositivo original, así que el nuevo se convierte en eth1 (probablemente no incluido en /etc/network/interfaces).
Solución:
Mira en el fichero /etc/udev/persistent-net-generator.rules. Existe una regla para ignorar que los interfaces de VMWare generen una regla; solo tenemos que añadir después de la regla de VMWare:
# ignore VirtualBox virtual interfaces
ATTR{address}==”08:00:27:*”, GOTO=”persistent_net_generator_end”
Finalmente, borra /etc/udev/z25_persistent-net.rules. No cambies /etc/network/interfaces. Haz un reboot del sistema guest y el interfaz será detectado sin problemas.
Etiquetas: clone, clonevdi, Debian, Etch, Feisty, Gutsy, Lenny, rules, Ubuntu, VBoxManage, VirtualBox
Abril 8, 2008 a las 12:30 pm
Gracias por el tutorial. Acabo de ver que, al menos en mi caso, el archivo z25_persistent-net.rules se encontraba en /etc/udev/rules.d/z25_persistent-net.rules en vez de donde indicabas.
Saludos.
Abril 8, 2008 a las 12:36 pm
¡Gracias edm!
Es posible que cambie la ubicación según distribuciones… ¿Cuál era la tuya?