# udevadm control --reload-rules && udevadm trigger
Como se deve recarregar as regras do udev, de modo que uma recém criada possa funcionar?
Estou executando o Arch Linux e não tenho um comando udevstart
aqui.
Também verificado /etc/rc.d
, nenhum serviço do udev lá.
O Udev usa o mecanismo inotify para observar alterações no diretório de regras, tanto na biblioteca quanto na configuração local árvores (geralmente localizadas em /lib/udev/rules.d
e /etc/udev/rules.d
). Então você não precisa fazer nada quando você altera um arquivo de regras.
Você só precisa notificar o daemon udev explicitamente se estiver fazendo algo incomum, por exemplo, se tiver uma regra que inclua arquivos em outro diretório. Então você pode usar a convenção usual para pedir que os daemons recarreguem sua configuração: envie um SIGHUP ( pkill -HUP udevd
). Ou você pode usar o comando udevadm
: udevadm control --reload-rules
.
As regras do udev só são aplicadas quando um dispositivo é adicionado. Se você quiser reaplicar as regras a um dispositivo que já está conectado, será necessário fazer isso explicitamente, chamando udevadm trigger
com as opções corretas para corresponder ao (s) dispositivo (s) cuja configuração foi alterada, por exemplo, udevadm trigger --attr-match=vendor='Yoyodyne' --attr-match=model='Frobnicator 300'
.
Estou adicionando isso porque algum dia eu precisarei ... novamente.
Às vezes, você recebe uma correspondência incorreta de números de dispositivos Ethernet e endereços MAC. Às vezes isso é realmente importante, como quando rodando em uma VM e cada dispositivo é atribuído a uma VLAN diferente.
/etc/udev/rules.d/70-persistent-net.rules
(ou seu equivalente) udevadm control --reload-rules
udevadm trigger --attr-match=subsystem=net
Fiquei surpreso com o quão bem isso funcionou.
Eu não tenho certeza se isso se aplica, e este é definitivamente um post mais antigo, mas surgiu muito alto minha pesquisa na web para informações do udev, então eu pensei que poderia compartilhar algum conhecimento.
Você pode acionar regras do udev manualmente para dispositivos específicos. Isso se aplica somente a distros relacionadas ao redhat (centos fedora etc etc etc)
Depois de fazer as alterações relevantes em seu arquivo de regras ( /etc/udev/rules.d/whateveryoucalledyourrules
), você pode fazer o echo change
no dispositivo uevent.
echo change > /sys/block/devname/partname1/uevent
Isso forçará uma leitura da regra do udev somente para este dispositivo. Muito melhor e mais direcionado na minha opinião.
Para mim, a sequência de comando abaixo funcionou como é desejado.
Eu fiz modificações em /etc/udev/rules.d/70-persistent-net.rules
para alterar o número eth
e recarregá-las sem reinicializar.
/etc/init.d/networking stop
/etc/init.d/udev stop
udevadm control --reload-rules
/etc/init.d/udev start
/etc/init.d/networking start
Ao seguir isto, foi carregado com sucesso em tempo de execução sem reiniciar a máquina.
Qualquer sugestão ou recomendação sobre isso é bem-vinda, já que descobri isso sozinho lendo as man pages.
Estou adicionando a resposta correta aqui porque levei um tempo para notar no comentário de @enthusiasticgeek. Tudo que você precisa fazer (supondo que você esteja no console do servidor - claramente isso é ruim de se fazer se você estiver ssh'd!):
cat /etc/udev/rules.d/70-persistent-net.rules | grep "PCI device" | perl -pe 's/.*\((\w+)\).*/$1/g'| uniq
No meu caso, é igb
, então imprime apenas isso.
sudo rmmod igb
(substitua igb
pelo driver da sua placa obtido na etapa 1. em seguida, edite /etc/udev/rules.d/70-persistent-net.rules
conforme necessário e, em seguida, carregue o módulo novamente usando modprobe igb
, novamente substituindo igb
pelo seu.