Qual é a maneira correta de reiniciar o udev?

Qual é a maneira correta de reiniciar o udev?

Mudei o nome da minha eth1interface para eth0. Como pedir udevagora para reler a configuração?

service udev restart

e

udevadm control --reload-rules

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

  • sim, eu sei que deveria preceder os comandos com sudo, mas qualquer um dos que postei acima não altera nada na ifconfig -asaída: ainda vejo eth1, não eth0.

  • Acabei de alterar a NAMEpropriedade da linha udev-rule. Não conheço nenhuma razão para isso ser ineficaz.

Não há nenhum errona execução dos dois comandos que postei acima, mas eles simplesmente não alteram o nome real da interface na ifconfig -asaída. Se eu reiniciar, o nome da interface será alterado conforme o esperado.

Para fins de desenvolvimento, escrevo alguns scripts que clonam máquinas virtuais (orientadas pelo VirtualBox) e as pré-configuram de alguma forma.

Então eu executo um comando para clonar a VM, inicio-a e enquanto a interface de rede MAC for alterada - udevadiciona a segunda regra às regras persistentes da rede. Logo após a máquina ser inicializada pela primeira vez, existem 2 regras:

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

Então eu sedexcluo a linha com eth0(é obsoleta e inútil na imagem clonada) e substituo eth1por eth0. Atualmente tenho uma regra persistente válida, mas ainda existe eth1no /dev.

O problema: não quero reinicializar a máquina (vai demorar mais um pouco, o que não é bom na construção do estágio da VM) e só quero reconstruí-la /devcom algum comando para ter a VM pronta para uso sem nenhuma reinicialização.

Responder1

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

sudo udevadm trigger

para que os novos links sejam criados.

Responder2

Você deve combinar todos os conselhos dados aqui na ordem certa:

  1. Derrubar a redeservice networking stop
  2. Descarregue o módulo do driver do kernel
    1. Encontre o nome do módulo lspci -ve procure por “Driver Kernel em uso:”
    2. modprobe -r <driver module>
  3. Recarregue as regras do udevudevadm control --reload-rules
  4. Acione as novas regrasudevadm trigger
  5. Motorista de cargamodprobe <driver module>
  6. Reinicie a redeservice networking start
  7. (opcional) Execute novamente quaisquer iptablesscripts que referenciassem o ethnome da interface antes de ela ser ativada.

Suspeito que a etapa 4 ou a etapa 5 não sejam realmente necessárias, mas essas etapas funcionaram para mim. Você pode verificar após a etapa 4 com a etapa 2.1 para ver se o comando de gatilho já executou a etapa 5. Edite esta resposta para refletir suas descobertas, se o fizer.

Responder3

Eu tive um problema parecido. Como não queria perder tempo reiniciando, executei um one liner usando a sugestão de Chris Wesseling.

/etc/init.d/networking stop && modprobe -r tg3 && udevadm control --reload-rules && udevadm trigger && modprobe tg3 && /etc/init.d/networking start

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

Dispositivo PCI 0x14e4:/sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.1 (tg3) <-driver do módulo kernel para a placa de rede

O único problema que tive foi uma rota incorreta que corrigi com um simples comando route add. Obrigado pela ajuda Cris!

Responder4

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

informação relacionada