Qual é a maneira correta de reiniciar o udev?

46

Alterei o nome da minha interface eth1 para eth0 . Como perguntar a udev agora para reler a configuração?

service udev restart

e

udevadm control --reload-rules

não ajuda. Então, existe alguma maneira válida, exceto a reinicialização? (sim, reiniciar ajuda com esse problema)

  • sim, sei que devo preceder os comandos com sudo , mas qualquer um que eu postei acima não altera nada em ifconfig -a output: ainda vejo eth1 , não eth0 .

  • Acabei de alterar a propriedade NAME da linha de regra do udev. Não conheço nenhum motivo para isso ser ineficaz.

Não há nenhum erro na execução dos dois comandos que publiquei acima, mas eles simplesmente não alteram o nome real da interface em ifconfig -a output. Se eu executar a reinicialização, o nome da interface será alterado conforme o esperado.

Para fins de desenvolvimento, eu escrevo um script que clona máquinas virtuais (controladas pelo VirtualBox) e as pré-configura de alguma forma.

Por isso, executo um comando para clonar VM, iniciá-lo e enquanto a interface de rede MAC for alterada - udev adiciona a segunda regra às regras persistentes de rede. Logo após a inicialização da máquina pela primeira vez, existem duas regras:

  • eth0 , que não existe, desde que exista na imagem original da VM MAC
  • eth1 , que existe, mas toda a configuração em todos os arquivos se refere a eth0 , então não é tão bom para mim

Portanto, com sed , excluo a linha com eth0 (ela é obsoleta e inútil na imagem clonada) e substitua eth1 por eth0 . Atualmente, tenho a regra persistente válida, mas ainda há eth1 em /dev .

O problema: eu não quero reiniciar a máquina (vai demorar mais uma vez, o que não é bom em construir-VM-stage) e só quero ter o meu /dev reconstruído com algum comando para que eu tenha VM pronta para uso sem reinicializações.

    
por zerkms 25.11.2011 / 01:57

10 respostas

29

Não sei se isso ajuda a recarregar a configuração da rede, mas quando modifiquei /etc/udev/rules.d/70-persistent-cd.rules para corrigir o link do dispositivo de DVD de /dev/dvd1 para /dev/dvd , tive que executar

sudo udevadm trigger

para ter os novos links criados.

    
por akaihola 21.04.2012 / 10:13
18

Você precisa combinar todos os conselhos dados aqui na ordem correta:

  1. Derrubar a rede service networking stop
  2. Descarregar o módulo do driver do kernel
    1. Localize o nome do módulo lspci -v e procure por "driver do kernel em uso:"
    2. modprobe -r <driver module>
  3. Recarregue as regras do udev udevadm control --reload-rules
  4. Acione as novas regras udevadm trigger
  5. Carregar driver modprobe <driver module>
  6. Reinicie a rede service networking start
  7. (opcional) Execute novamente todos os scripts iptables que fizeram referência ao nome da interface eth antes que ele estivesse ativo.

Suspeito que o passo 4 ou o passo 5 não são realmente necessários, mas estes passos funcionaram para mim. Você poderia verificar após a etapa 4 com a etapa 2.1 para ver se o comando de disparo já fez a etapa 5, edite essa resposta para refletir suas descobertas, se o fizer.

    
por Chris Wesseling 18.03.2013 / 18:24
5

Eu tive um problema semelhante. Desde que eu não queria ter tempo para reiniciar, eu corri um forro usando a sugestão de Chris Wesseling.

% bl0ck_qu0te%

Isso funcionou para mim usando o servidor Ubuntu 12.04.02. Minhas nics estavam usando o driver de módulo do kernel tg3, então mude o tg3 para o módulo que suas interfaces estão usando. Eu encontrei os meus usados em /etc/udev/rules.d/70-persistent-net.rules :

% bl0ck_qu0te%

O único problema que tive foi uma rota ruim que eu consertei com um simples comando route add. Obrigado pela ajuda Chris!

    
por user197674 21.04.2013 / 01:38
4

Isso funcionou para mim (sem reiniciar)

udevadm control --reload-rules ; udevadm trigger

Parabéns ao autor desta página: link

    
por pikmaster 23.09.2014 / 11:48
3

sudo /etc/init.d/udev restart deve fazer o truque. Alguns dos comandos que você tentou, se forem executados com sudo , podem ser eficazes também.

    
por Eliah Kagan 25.11.2011 / 02:03
3

Isso deve ser feito com segurança:

sudo reload udev

Como usei este comando sem problemas.

    
por rdh 25.11.2011 / 02:05
1

Estou pesquisando há algum tempo com praticamente o mesmo propósito e não consegui encontrar uma maneira de alterar o nome da interface de rede em um sistema ativo.

A solução que tenho feito é excluir o arquivo /etc/udev/rules.d/70-persistent-net.rules no modelo, o que significa que na próxima inicialização ele verá qualquer placa de rede como eth0.

    
por Merlijn 23.12.2011 / 10:42
1

Você precisa recarregar o udev para acionar a alteração da regra, mas o dispositivo não será renomeado a menos que você descarregue / recarregue o módulo do driver.

Portanto, modprobe -r e1000 && modprobe e1000 após o recarregamento do udev deve fazer o truque. Claro, não faça isso se você precisar da rede e tiver apenas interfaces e1000.

    
por nodens 24.10.2012 / 15:28
0
udevadm trigger 

funcionará insira a descrição do link aqui

    
por zhou yunjian 30.08.2013 / 04:13
0

Então, para mim no VirtualBox com o Ubuntu 12.04, mudo frequentemente entre ethernet e wireless.

Assim, quando minha conexão muda, devo escolher o adaptador em ponte a partir de dispositivos > Configurações de rede. "Intel 82579LM Gigabit Network Connection" ou "Intel Centrino Ultimate-N 6300 AGN".

Depois de fazer isso, posso executar

sudo modprobe -r e1000
sudo service udev restart
sudo modprobe e1000
ping google.com # To test I ran this between each command.

Esta é apenas uma explicação dos meus resultados depois de ler todas as respostas acima.

    
por Derek Robati 15.05.2014 / 15:52