it-swarm.dev

Jaký je správný způsob, jak restartovat udev?

Změnil jsem název svého eth1 rozhraní k eth0. Jak požádat udev nyní o přečtení konfigurace?

service udev restart

a

udevadm control --reload-rules

nepomáhej. Existuje tedy platný způsob kromě restartu? (Ano, restartování pomáhá s tímto problémem)

  • ano, vím, že bych měl předepsat příkazy pomocí Sudo, ale ani jeden, který jsem zveřejnil výše, nezmění nic v ifconfig -a výstup: Stále vidím eth1, ne eth0.

  • Právě jsem změnil vlastnost NAME na řádku udev-Rule. Nevím, proč je to neúčinné.

Neexistuje žádná chyba při provádění obou příkazů, které jsem zveřejnil výše, ale prostě nemění skutečné jméno rozhraní v ifconfig -a výstup. Pokud provedu restart, pak se název rozhraní změní podle očekávání.

Pro účely vývoje píšu nějaký skript, který klonuje virtuální stroje (řízený VirtualBox) a nějak je přednastaví.

Takže provedu příkaz klonování VM, spuštění a pokud se změní síťové rozhraní MAC - udev přidá druhé pravidlo do trvalých pravidel v síti. Hned po prvním spuštění počítače existují 2 pravidla:

  • eth0, které neexistuje, pokud existovalo v původním VM obrázek MAC)
  • eth1, které existuje, ale veškerá konfigurace ve všech souborech odkazuje na eth0, takže to pro mě není tak dobré

Takže s sed vymažu řádek s eth0 (v klonovaném obrázku je zastaralý a zbytečný) a nahradit eth1 s eth0. V současné době mám platné trvalé pravidlo, ale stále existuje eth1 v /dev.

Problém: Nechci restartovat počítač (bude to trvat jindy, což na stavbě VM-stage není dobré) a chci mít pouze svůj /dev přestavěn nějakým příkazem, takže mám připraveno k použití VM bez restartu).

46
zerkms

Nevím, jestli to pomůže při opětovném načtení konfigurace sítě, ale když jsem upravil /etc/udev/rules.d/70-persistent-cd.rules opravte propojení zařízení DVD z /dev/dvd1 to /dev/dvd, Musel jsem utíkat

Sudo udevadm trigger

získat nové odkazy.

29
akaihola

Všechny rady uvedené zde musíte kombinovat ve správném pořadí:

  1. Vypněte síť service networking stop
  2. Vyjměte modul ovladače z jádra
    1. Najděte název modulu lspci -v a hledejte "Používaný ovladač jádra:"
    2. modprobe -r <driver module>
  3. Znovu načtěte pravidla udev udevadm control --reload-rules
  4. Spusťte nová pravidla udevadm trigger
  5. Načíst ovladač modprobe <driver module>
  6. Restartujte síť service networking start
  7. (volitelné) Před spuštěním znovu spusťte všechny skripty iptables, které odkazovaly na název rozhraní eth.

Mám podezření, že krok 4 nebo 5 není opravdu potřeba, ale tyto kroky pro mě fungovaly. Po kroku 4 s krokem 2.1 můžete zkontrolovat, zda spouštěcí příkaz již provedl krok 5, upravte tuto odpověď tak, aby odpovídala vašim zjištěním, pokud tak učiníte.

21
Chris Wesseling

Měl jsem podobný problém. Protože jsem nechtěl mít čas na restart, spustil jsem jednu linii s návrhem Chrisa Wessella.

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

To pro mě fungovalo pomocí serveru Ubuntu 12.04.02. Moje niky používaly ovladač jádra modulu tg3, takže změňte tg3 na modul, který používají vaše rozhraní. Našel jsem ty, které jsem použil v /etc/udev/rules.d/70-persistent-net.rules:

PCI zařízení 0x14e4:/sys/devices/pci0000: 00/0000: 00: 1c.4/0000: 02: 00.1 (tg3) <ovladač jádra modulu

Jediným problémem, který jsem měl, byla špatná trasa, kterou jsem opravil jednoduchým příkazem add route. Díky za pomoc Chris!

6
user197674

Fungovalo to pro mě (bez restartu)

udevadm control --reload-rules ; udevadm trigger

Kudos autorovi této stránky: http://memoryfail.wordpress.com/2013/04/02/renaming-network-device-names/

4
pikmaster

Sudo /etc/init.d/udev restart by měl udělat trik. Některé příkazy, které jste vyzkoušeli, mohou být také účinné, pokud jsou spuštěny s Sudo.

3
Eliah Kagan

To by mělo být provedeno bezpečně:

Sudo reload udev

Protože jsem tento příkaz použil bez problémů.

3
rdh

Dlouho jsem to zkoumal s téměř stejným účelem a nebyl jsem schopen najít způsob, jak změnit název síťového rozhraní v živém systému.

Řešení, které jsem hledal, je smazání souboru /etc/udev/rules.d/70-persistent-net.rules v šabloně, což znamená, že při příštím spuštění uvidí jakoukoli síťovou kartu jako eth0.

1
Merlijn

Chcete-li spustit změnu pravidla, je třeba znovu načíst dev, ale zařízení nebude přejmenováno, dokud nezvolíte/znovu nenačtete modul ovladače.

Tak modprobe -r e1000 && modprobe e1000 po udev reload by měl udělat trik. Samozřejmě to nedělejte, pokud potřebujete síť a máte pouze rozhraní e1000.

1
nodens

Takže pro mě na VirtualBoxu s Ubuntu 12.04 často přepínám mezi ethernetem a bezdrátovým připojením.

Takže když se mé připojení změní, musím vybrat Bridged Adapter ze zařízení> Nastavení sítě. Buď „Gigabitové síťové připojení Intel 82579LM“ nebo „Intel Centrino Ultimate-N 6300 AGN“.

Poté, co to udělám, můžu běžet

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

Toto je pouze vysvětlení mých výsledků po přečtení všech výše uvedených odpovědí.

0
Derek Robati
udevadm trigger 

bude to fungovat zde zadejte popis odkaz

0
zhou yunjian