Sådan regenereres 70-persistent-net.rules uden genstart?

Filen /etc/udev/rules.d/70-persistent-net.rules genereres automatisk på et Linux-system med udev, hvis det ikke findes under genstart. Men jeg vil gerne vide, hvordan man opretter denne reglerfil (med en kommando) uden at genstarte serveren.

Jeg googlede rundt i et stykke tid og fandt ud af, at reglerfilen er genereret af dette script:

/lib/udev/write_net_rules 

Det er dog umuligt at køre dette script fra kommandolinjen, da (antager jeg) at det vil blive startet af udev, med nogle miljøvariabler indstillet korrekt. Start af den udskriver manuelt fejlmeddelelse “mangler $ INTERFACE”. Selvom jeg indstiller env-variablen INTERFACE = eth0 før scriptets start, udskriver den stadig fejlen “mangler gyldigt match”. For ikke at nævne, at jeg har to grænseflader (eth0 og eth1), og jeg vil have genereret reglerfilen for begge.

Jeg tænkte også at udløse udev-begivenheder som denne i håb om, at det starter scriptet fra udev selv, men intet ændrer sig:

udevadm trigger --type=devices --action=change 

Så ved nogen det hvordan man regenererer de vedvarende netregler i fil /etc/udev/rules.d/70-persistent-net.rules uden genstart?

Kommentarer

  • Hvad er din fordeling? Hvilken slags init-system bruger den?
  • Jeg vil sige, det er irrelevant. Jeg ' bruger Slackware med eUdev og sysvinit. Jeg undersøgte opstartsskripterne for at finde ud af, hvad der udføres, der genererer reglerfilen, men fandt kun udevadm-trigger med en kommentar om, at dette er kommandoen til at generere de vedvarende regler, men på en eller anden måde fungerer dette kun ved genstart, nej effekt, hvis jeg kører det manuelt.
  • Det kan være relevant, da jeg på Arch hverken har 70-persistent-net.rules eller /lib/udev/write_net_rules script. Derfor kan jeg ' t kontrollere, men formodentlig er $INTERFACE variablen indstillet i selve scriptet. Det overføres sandsynligvis som et argument. Kan du vise os indholdet af scriptet?
  • Scriptet bruger simpelthen $INTERFACE variabel. Der er meget flere variabler, der simpelthen bruges, aldrig erklæret. Det ' s fordi det kaldes af udev, og udev indstiller alle env-variabler, før det kører scriptet ved opstart.
  • Har du faktisk brug for at vide, hvordan du regenerere det, eller kan du blot redigere filen for at afspejle den nye virkelighed?

Svar

Ifølge mennesket side --action=change er standardværdien for udevadm.

 -c, --action=ACTION Type of event to be triggered. The default value is change. 

Derfor skal du prøve --action=add i stedet. Det skal hjælpe:

/sbin/udevadm trigger --type=devices --action=add 

Kommentarer

  • intel_rapl: ingen gyldige rapl-domæner fundet i pakke 0

Svar

I Ubuntu Server 16.04LTS findes de 70 vedvarende net.regler ikke.

alt hvad jeg gjorde var at køre:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules 

Opret derefter filen ved hjælp af

sudo vi /etc/systemd/network/10-internet.link 

og tilføj følgende

[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it) 

:wq for at gemme filen

genstart derefter, og juster din / etc / network / interfaces-fil. Genstart derefter igen.

Kommentarer

  • Spørgsmålet er " Sådan regenereres 70-persistent-net.rules uden genstart? " Dit svar indeholder to genstart. Hvordan er dette et svar på spørgsmålet?

Svar

Jeg havde det samme problem, men jeg bemærkede, at jeg kunne stadig se grænsefladerne i ip addr liste. Jeg brugte følgende (som rod):

# 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 

Gentag for hver grænseflade. Dette blev brugt til at “gendanne” min fil. (Bemærk: en påkaldelse vil liste alle grænseflader + tilføj omdøb for at matche en, så jeg anbefaler, at du kigger på outputfilen efter en påkaldelse)

Der er helt sikkert forskelle mellem OSer og nuværende UDEV-implementeringer og supportskripter For at bemærke, brugte jeg CentOS 6.8, da jeg gjorde det med succes.

Kredit – Jeg refererede mest til dette websted. Der er en kommentar et par tråde ned, der taler om at ændre scriptet, men jeg foretrak at bruge miljøvariabler, da det var renere: https://access.redhat.com/discussions/1240213

Kommentarer

  • Crap – vent. Jeg ' beklager, det var kommandoen, der ikke fungerede. Jeg skal opdatere svaret med det trin, jeg gjorde
  • Ok, jeg ' er opdateret til, hvordan jeg faktisk fikset min. Håber det fungerer, hvis det gælder for din situation.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *