terça-feira, 28 de julho de 2009

Rede parando de funcionar no VirtualBox, após mudança de máquina virtual

.
Estava aqui fazendo algumas experiências com o Ubuntu 8.10 no VirtualBox, e certa hora, quando recuperei um HD virtual gerado em um passo anterior (para seguir uma nova linha de experiências) a placa de rede (eth0) simplesmente sumiu.

O comando...

sudo /etc/init.d/networking restart

... gerava a seguinte mensagem de erro:

error while getting interface flags: no such device

O que aconteceu foi o seguinte: Primeiro, criei uma máquina virtual no VirtualBox, e nesta hora foi criada automaticamente uma placa de rede virtual com um certo número MAC (por exemplo, "x"). Instalei o Ubuntu, e ao final, fiz uma cópia de segurança do HD virtual (arquivo .vdi).

Na continuação dos meus testes, resolvi deletar a máquina virtual anteriormente criada, e criar uma nova, cuja placa de rede virtual recebeu um número MAC diferente (por exemplo, "y"). Recuperei o HD virtual antigo para usar nesta nova máquina virtual, e pronto, aí está o problema: O ubuntu instalado no HD virtual faz referência a uma placa de rede com número MAC diferente do que está na máquina virtual recém criada.

Para resolver:

Edite o arquivo...

/etc/udev/rules.d/70-persistent-net.rules

No meu caso, o arquivo continha 2 entradas: uma relativa a eth0, com número MAC errado (o número MAC da placa de rede da primeira máquina virtual), e a outra relativa a eth1, com o número MAC correto (ou seja, ele achou que a placa de rede com outro número MAC era, na verdade, OUTRA placa de rede).

Estava mais ou menos assim:


# This file was...
# program run ...
#
# You can...

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="28:04:37:aa:bd:02", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:49:0c:98", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"



Apaguei a primeira entrada (eth0 com número MAC errado), e editei a segunda entrada (com número MAC correto), trocando eth1 para eth0.

Ficou assim:


# This file was...
# program run ...
#
# You can...

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:49:0c:98", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


Após salvar, execute:

sudo /etc/init.d/udev restart

Depois, execute:

sudo /etc/init.d/networking restart

... e seja feliz novamente! :-)

Abraços!
Carlão

Referências:
http://seekerpt.blogspot.com/2009/05/eth0-error-while-getting-interface.html
http://ubuntuforums.org/showthread.php?t=834225

Um comentário:

Paulo disse...

Bah, valeu !!!!! :D