Qual è il modo corretto di riavviare udev?


46

Ho cambiato il nome della mia eth1interfaccia in eth0. Come chiedere udevora di rileggere la configurazione?

service udev restart

e

udevadm control --reload-rules

non aiutare. Quindi esiste un modo valido se non quello di riavviare? (sì, il riavvio aiuta con questo problema)

  • sì, so che dovrei anteporre i comandi sudo, ma uno dei due che ho pubblicato sopra non cambia nulla ifconfig -anell'output: vedo ancora eth1, no eth0.

  • Ho appena cambiato la NAMEproprietà della linea di regole udev. Non so per quale motivo ciò sia inefficace.

Non c'è alcun errore nell'esecuzione di entrambi i comandi che ho pubblicato sopra, ma non cambiano il nome dell'interfaccia effettiva ifconfig -anell'output. Se eseguo il riavvio, il nome dell'interfaccia cambia come previsto.

Per scopi di sviluppo scrivo alcuni script che clonano macchine virtuali (guidate da VirtualBox) e le preimpostano in qualche modo.

Quindi eseguo un comando per clonare la VM, avviarla e fino a quando il MAC dell'interfaccia di rete viene modificato - udevaggiunge la seconda regola alle regole persistenti della rete. Subito dopo l'avvio della macchina per la prima volta ci sono 2 regole:

  • eth0, che non esiste, purché esistesse nel MAC dell'immagine VM originale
  • eth1, che esiste, ma si riferisce a tutta la configurazione in tutti i file eth0, quindi non va bene per me

Quindi, sedelimino la riga con eth0(è obsoleta e inutile nell'immagine clonata) e sostituisco eth1con eth0. Quindi attualmente ho regola persistente valida, ma c'è ancora eth1in /dev.

Il problema: non voglio riavviare la macchina (ci vorrà un'altra volta, il che non è una buona cosa su building-VM-stage) e voglio solo farmi /devricostruire con qualche comando, quindi ho una VM pronta per l'uso senza alcun riavvio.


Come hai fatto a cambiare eth1a eth0? Hai appena rinominato il file del dispositivo? In tal caso, questo non è un modo efficace per farlo (e dovresti aspettarti che la modifica venga ripristinata da un riavvio riuscito del udevdemone). Se hai usato qualche altro metodo, descrivilo in dettaglio e fornisci anche il testo completo ed esatto di tutti i messaggi di errore che vedi quando esegui i comandi che hai provato (per riavviare il udevdemone o ricaricare le sue regole). Puoi modificare la tua domanda per fornire queste informazioni.
Eliah Kagan,

@Eliah Kagan: aggiornato. ps: perché dovrebbe essere ripristinato? Non dovrebbe ;-)
zerkms,

udevgenera dinamicamente i tuoi dispositivi in /dev. Se lo riavvii, li rigenererà secondo le sue regole. Le modifiche apportate direttamente a esse non sono, in generale, persistenti. Sembra che il riavvio funzioni udevcorrettamente, ma che non hai modificato correttamente i nomi dei dispositivi.
Eliah Kagan,

@Eliah Kagan: udev aggiunge (non modifica) nuove regole solo se non riesce a trovare quella per un determinato dispositivo. Se esiste una regola che corrisponde, la segue semplicemente senza modifiche.
zerkms,

@Eliah Kagan: e l'ho cambiato correttamente. Solo che credo di poter cambiare un carattere in una riga ;-) (anche il riavvio aiuta, e questo dimostra che tutto va bene con le regole)
zerkms

Risposte:


29

Non so se questo aiuta a ricaricare la configurazione di rete, ma quando ho modificato /etc/udev/rules.d/70-persistent-cd.rulesper correggere il collegamento del dispositivo DVD da /dev/dvd1a /dev/dvd, ho dovuto eseguire

sudo udevadm trigger

per ottenere i nuovi collegamenti creati.


3
Credo che sudo udevadm trigger --action=changesia più sicuro, come da questa e-mail su cosa è sicuro e non è sicuro fare su udev: lists.ubuntu.com/archives/ubuntu-devel/2009-January/027260.html
Ehtesh Choudhury

Anzi, e si chiama/etc/udev/rules.d/70-persistent-net.rules
msanford

Sotto Ubuntu 15.04 udevadm triggerho bloccato la mia sessione X11 e mi hanno riportato alla schermata di accesso.
Ian D. Allen,

20

Devi combinare tutti i consigli forniti qui nel giusto ordine:

  1. Distruggi la rete service networking stop
  2. Scaricare il modulo driver dal kernel
    1. Trova il nome del modulo lspci -ve cerca "Driver del kernel in uso:"
    2. modprobe -r <driver module>
  3. Ricarica le regole di udev udevadm control --reload-rules
  4. Attiva le nuove regole udevadm trigger
  5. Carica driver modprobe <driver module>
  6. Riavvia la rete service networking start
  7. (facoltativo) Rieseguire tutti gli iptablesscript che hanno fatto riferimento al ethnome dell'interfaccia prima che fosse attivo.

Sospetto che il passaggio 4 o il passaggio 5 non siano realmente necessari, ma questi passaggi hanno funzionato per me. È possibile controllare dopo il passaggio 4 con il passaggio 2.1 per vedere se il comando trigger ha già eseguito il passaggio 5, modificare questa risposta per riflettere i risultati ottenuti.


1
Ubuntu 15.04 con tutti i dispositivi elencati in /etc/network/interfaces(quindi Network Manager li lascia da soli): Tutto quello che dovevo fare era modificare /etc/udev/rules.d/70-persistent-net.rulesquindi fare # 2, # 3, # 5. Non è necessario interrompere tutte le reti; non c'è bisogno di nient'altro.
Ian D. Allen,

5

Ho avuto un problema simile. Dal momento che non volevo prendere il tempo per riavviare, ho eseguito un liner usando il suggerimento di Chris Wesseling.

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

Questo ha funzionato per me usando il server Ubuntu 12.04.02. Le mie schede grafiche utilizzavano il driver del modulo kernel tg3, quindi cambia tg3 nel modulo utilizzato dalle tue interfacce. Ho trovato quelli usati dai miei /etc/udev/rules.d/70-persistent-net.rules:

Dispositivo PCI 0x14e4: / sys / devices / pci0000: 00/0000: 00: 1c.4 / 0000: 02: 00.1 (tg3) <-kernel module driver for the nic

L'unico problema che ho avuto è stato un percorso errato che ho risolto con un semplice comando di aggiunta del percorso. Grazie per l'aiuto Chris!



3

sudo /etc/init.d/udev restartdovrebbe fare il trucco. Anche alcuni dei comandi che hai provato, se eseguito con sudo, potrebbero essere efficaci.


No, ifconfig -ami mostra ancora la vecchia eth1interfaccia
zerkms,

3

Questo dovrebbe farlo in sicurezza:

sudo reload udev

Come ho usato questo comando senza problemi.


No, ifconfig -ami mostra ancora la vecchia eth1interfaccia
zerkms,

1

Ho cercato questo per un po 'con praticamente lo stesso scopo e non sono stato in grado di trovare un modo per cambiare il nome dell'interfaccia di rete in un sistema live.

La soluzione alternativa che ho cercato è eliminare il file /etc/udev/rules.d/70-persistent-net.rules nel modello, il che significa che al prossimo avvio vedrà qualsiasi scheda di rete come eth0.


1

È necessario ricaricare udev per attivare la modifica della regola, ma il dispositivo non verrà rinominato a meno che non si scarichi / ricarichi il modulo driver.

Quindi modprobe -r e1000 && modprobe e1000dopo udev ricaricare dovrebbe fare il trucco. Naturalmente, non farlo se hai bisogno della rete e hai solo interfacce e1000.



0

Quindi per me su VirtualBox con Ubuntu 12.04, passo spesso da Ethernet a Wireless.

Quindi, quando la mia connessione cambia, devo scegliere la Bridged Adapter da Dispositivi> Impostazioni di rete. "Connessione di rete Intel 82579LM Gigabit" o "Intel Centrino Ultimate-N 6300 AGN".

Dopo averlo fatto, posso correre

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

Questa è solo una spiegazione dei miei risultati dopo aver letto tutte le risposte sopra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.