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
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.
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?$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.