Recarregando as regras do udev falha

2

Eu mudei minhas regras em /etc/udev/rules.d (Ubuntu) para alterar meus nomes de porta ethernet de 0 para 1 e 1 para 2, porém sempre que eu corro:

    sudo service udev restart
    sudo udevadm control --reload-rules

ele não atualiza meus números de porta Ethernet até que eu reinicie.

Isso obviamente não é um problema para rodar um computador normal, mas eu preciso implementar essa idéia em um live CD (Knoppix) para testar portas ethernet em múltiplos sistemas, cada um precisando de um kernel diferente para portas ethernet específicas para o meu scripts para trabalhar, e a única maneira que eu encontrei para fazer isso foi usando as regras do udev, no entanto, isso não é facilmente possível por causa do fato de que as regras não serão atualizadas a menos que você reinicie.

Existe alguém por aí que saiba como alterar essas portas sem reiniciar a máquina?

    
por Null_Fragment 18.07.2011 / 16:20

2 respostas

0

Recarregar as regras só garante que o dispositivo seja nomeado corretamente na próxima vez que for detectado. Você terá que descarregar e carregar novamente o driver da interface de rede (módulo do kernel).

Se o driver for um módulo do kernel, descubra o nome do módulo e recarregue-o (muito provavelmente, se você não configurou o kernel). Note que isto irá desligar todas as interfaces usando este driver (ou veja abaixo):

# ls -l /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c
# rmmod atl1c
# modprobe atl1c

Se, no entanto, o driver estiver embutido, será um pouco mais de trabalho. Você determinou o nome do driver e o ID do PCI, ordenou que o driver se desvinculasse do dispositivo e o vinculasse novamente.

# ls -l /sys/class/net/eth0/device
lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device -> ../../../0000:06:00.0
# ls -l /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Jul 18 20:41 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c
# echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/unbind
# echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/bind
    
por 18.07.2011 / 20:46
1

As regras são aplicadas apenas quando um dispositivo é conectado. Experimente udevadm trigger para que as regras sejam reaplicadas a todos os dispositivos.

Cite a partir da página de manual de udevadm :

--reload-rules

Signal udevd to reload the rules files. The udev daemon detects changes automatically, this option is usually not needed. Reloading rules does not apply any changes to already existing devices.

    
por 18.07.2011 / 20:27