Como você muda as regras do udev sem reiniciar (por exemplo, para alterar eth1 para eth0)?

4

TLDR; Como você aplica as alterações a /etc/udev/rules.d/70-persistent-net.rules sem reiniciar? (Veja esta documentação sobre os nomes lógicos da interface ethernet.)

Versão longa:

Eu tenho uma unidade flash USB inicializável executando uma imagem feita por remastersys de 11.04. Eu quero ser capaz de usar este drive USB inicializável para executar um servidor DHCP de qualquer computador. Para fazer isso, preciso atribuir um endereço IP estático a eth0 em /etc/network/interfaces e referência eth0 em /etc/default/isc-dhcp-server .

No entanto, a placa de rede é atribuída ao ethX com base no endereço MAC, portanto, isso só funciona no primeiro computador em que a unidade flash USB é usada - cada NIC subseqüente será atribuída a eth1 , eth1 , etc .

Parece que existem duas estratégias que podem ajudar a resolver este problema:

  1. Reescreva dinamicamente /etc/network/interfaces e /etc/default/isc-dhcp-server com base no primeiro ethX que aparece quando você executa ifconfig - deve ser qualquer NIC que esteja no computador.
  2. Reescreva /etc/udev/rules.d/70-persistent-net.rules para que qualquer endereço MAC atribuído à NIC seja denominado eth0 .

Eu sei que posso fazer o número 1 porque as alterações nesses arquivos podem ser aplicadas reiniciando networking e isc-dhcp-server .

No entanto, o segundo parece mais limpo para mim, pois acredito que o /etc/udev/rules.d/70-persistent-net.rules irá acumular um monte de lixo, já que esse drive USB é usado em computadores diferentes.

Qualquer ajuda seria apreciada.

    
por Max Masnick 15.06.2011 / 17:28

1 resposta

0

Acabei indo com a opção # 1 (reescrevendo dinamicamente os vários arquivos de configuração que precisavam do ethX). Isso foi fácil de fazer com um simples script Ruby.

Se o script que está fazendo a reescrita dinâmica for startup.rb , criei um wrapper chamado startup-wrapper.rb que chama o script real com exec 'sudo startup.rb' , para que startup.rb seja executado com permissões de root.

Eu, então, criei uma entrada em Startup Applications com o seguinte comando: gnome-terminal -e /path/to/startup-wrapper.rb . Isso solicitará ao usuário sua senha para o sudo na inicialização.

    
por Max Masnick 05.07.2011 / 16:31