Mudei o nome da minha eth1
interface para eth0
. Como pedir udev
agora 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 naifconfig -a
saída: ainda vejoeth1
, nãoeth0
.Acabei de alterar a
NAME
propriedade 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 -a
saí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 - udev
adiciona 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 MACeth1
, que existe, mas toda a configuração em todos os arquivos se refere aoeth0
, então não é tão bom para mim
Então eu sed
excluo a linha com eth0
(é obsoleta e inútil na imagem clonada) e substituo eth1
por eth0
. Atualmente tenho uma regra persistente válida, mas ainda existe eth1
no /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 /dev
com 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.rules
para corrigir o link do dispositivo de DVD de /dev/dvd1
para /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:
- Derrubar a rede
service networking stop
- Descarregue o módulo do driver do kernel
- Encontre o nome do módulo
lspci -v
e procure por “Driver Kernel em uso:” modprobe -r <driver module>
- Encontre o nome do módulo
- Recarregue as regras do udev
udevadm control --reload-rules
- Acione as novas regras
udevadm trigger
- Motorista de carga
modprobe <driver module>
- Reinicie a rede
service networking start
- (opcional) Execute novamente quaisquer
iptables
scripts que referenciassem oeth
nome 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 restart
deve fazer o truque. Alguns dos comandos que você tentou, se executados com sudo
, também podem ser eficazes.