Plik /etc/udev/rules.d/70-persistent-net.rules
jest generowany automatycznie w systemie Linux z udev, jeśli nie istnieje, podczas restart. Ale chciałbym wiedzieć, jak utworzyć ten plik reguł (za pomocą polecenia) bez ponownego uruchamiania serwera.
Przez chwilę googlowałem i odkryłem, że plik reguł jest generowany przez ten skrypt:
/lib/udev/write_net_rules
Jednak nie jest możliwe uruchomienie tego skryptu z linii poleceń, ponieważ (zakładam) chce być uruchamiany przez udev, z niektórymi zmiennymi środowiskowymi ustawionymi prawidłowo. Uruchomienie go ręcznie powoduje wyświetlenie komunikatu o błędzie „brak interfejsu $ INTERFACE”. Nawet jeśli ustawię zmienną env INTERFACE = eth0 przed uruchomieniem skryptu, nadal wyświetla błąd „brak prawidłowego dopasowania”. Nie wspominając o tym, że mam dwa interfejsy (eth0
i eth1
) i chcę, aby plik reguł został wygenerowany dla obu.
Myślałem też o wywołaniu takich zdarzeń udev, mając nadzieję, że uruchomi skrypt od samego udev, ale nic się nie zmienia:
udevadm trigger --type=devices --action=change
Czy ktoś wie jak zregenerować trwałe reguły sieciowe w pliku /etc/udev/rules.d/70-persistent-net.rules
bez ponownego uruchamiania?
Komentarze
Odpowiedź
Według man strona --action=change
to domyślna wartość dla udevadm
.
-c, --action=ACTION Type of event to be triggered. The default value is change.
Dlatego lepiej zamiast tego spróbuj --action=add
. To powinno pomóc:
/sbin/udevadm trigger --type=devices --action=add
Komentarze
- intel_rapl: nie znaleziono prawidłowych domen rapl w pakiecie 0
Odpowiedź
W Ubuntu Server 16.04LTS nie istnieje 70-persistent-net.rules.
wszystko, co zrobiłem, to uruchomienie:
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Następnie utwórz plik za pomocą
sudo vi /etc/systemd/network/10-internet.link
i dodaj następujące
[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it)
:wq
, aby zapisać plik
następnie uruchom ponownie i dostosuj plik / etc / network / interfaces. Następnie uruchom ponownie ponownie.
Komentarze
- Pytanie brzmi " Jak zregenerować 70-persistent-net.rules bez restartu? " Twoja odpowiedź zawiera dwa ponowne uruchomienia. Jak to jest odpowiedź na pytanie?
Odpowiedź
Miałem ten sam problem, ale zauważyłem, że nadal widzi interfejsy w ip addr
lista. Użyłem (jako root):
# ip addr # to get my mac addresses # export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules # replace the 00"s with the real mac addr
Powtórz dla każdego interfejsu. Służyło to do „odzyskiwania” mojego pliku. (Uwaga: jedno wywołanie wyświetli listę wszystkich interfejsów + doda zmianę nazwy w celu dopasowania jednego, więc polecam zajrzeć do pliku wyjściowego po jednym wywołaniu)
Zdecydowanie istnieją różnice między systemami operacyjnymi a obecnymi implementacjami UDEV i skryptami pomocniczymi . Uwaga: korzystałem z CentOS 6.8, kiedy to się udało.
Kredyt – głównie odwoływałem się do tej witryny. W kilku wątkach jest komentarz, który mówi o modyfikacji skryptu, ale wolałem użyć zmienne środowiskowe, jak było czystsze: https://access.redhat.com/discussions/1240213
Komentarze
- Bzdura – czekaj. ' przepraszam, to było polecenie, które nie zadziałało. Muszę zaktualizować odpowiedź o krok, który wykonałem
- OK, zaktualizowałem ' do tego, jak naprawiłem mój. Mam nadzieję, że zadziała, jeśli dotyczy Twojej sytuacji.
70-persistent-net.rules
, ani/lib/udev/write_net_rules
skrypt. Dlatego mogę ' t sprawdzić, ale przypuszczalnie zmienna$INTERFACE
jest ustawiona w samym skrypcie. Najprawdopodobniej jest przekazywana jako argument. Czy możesz pokazać nam zawartość skryptu?$INTERFACE
. Jest znacznie więcej zmiennych po prostu używanych, nigdy nie zadeklarowanych. Jest ', ponieważ jest wywoływany przez udev, a udev ustawia wszystkie zmienne env przed uruchomieniem skryptu podczas rozruchu.