A /etc/udev/rules.d/70-persistent-net.rules
fájl automatikusan generálódik egy udev Linux rendszeren, ha az nem létezik, a indítsa újra. De szeretném tudni, hogyan lehet ezt a szabályfájlt (egy paranccsal) létrehozni a szerver újraindítása nélkül.
Egy ideig gugliztam, és megállapítottam, hogy a szabályfájlt ez a szkript generálja:
/lib/udev/write_net_rules
Ezt a szkriptet azonban parancssorból futtatni lehetetlen, mivel (feltételezem) az udev akarja elindítani, néhány környezeti változóval megfelelően beállítva. Manuálisan elindítva kinyomtatja a “hiányzó $ INTERFACE” hibaüzenetet. Még ha beállítom is az env változót INTERFACE = eth0 a szkript megkezdése előtt, akkor is “hiányzó érvényes egyezés” hibát nyomtat. Nem is beszélve arról, hogy két interfészem van (eth0
és eth1
), és szeretném, hogy a szabályok fájlja mindkettőhöz létrejöjjön.
Arra is gondoltam, hogy ilyen udev eseményeket indítsak el, remélve, hogy az maga az udevből indítja a szkriptet, de semmi nem változik:
udevadm trigger --type=devices --action=change
Tehát tudja valaki hogyan lehet újraindítás nélkül regenerálni a /etc/udev/rules.d/70-persistent-net.rules
fájlban szereplő állandó net-szabályokat?
Megjegyzések
Válasz
Az ember szerint a --action=change
oldal a udevadm
alapértelmezett értéke.
-c, --action=ACTION Type of event to be triggered. The default value is change.
Ezért inkább próbáld meg inkább a --action=add
-t. Segítenie kell:
/sbin/udevadm trigger --type=devices --action=add
megjegyzések
- intel_rapl: nem található érvényes rapl domain a 0 csomagban
Válasz
Az Ubuntu Server 16.04LTS rendszerben a 70-persistent-net.rules nem létezik.
minden amit futtattam:
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Ezután hozza létre a fájlt a
sudo vi /etc/systemd/network/10-internet.link
és adja hozzá a következőt
[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it)
:wq
a fájl mentéséhez
majd indítsa újra és állítsa be az / etc / network / interfaces fájlt. Ezután indítsa újra újra.
Megjegyzések
- A kérdés " Hogyan lehet regenerálni a 70-persistent-net.rules szabályokat újraindítás nélkül? " A válasz két újraindítást tartalmaz. Hogyan válaszolhatok erre a kérdésre?
Válasz
Ugyanaz a problémám volt, de észrevettem, hogy továbbra is láthatta az interfészeket a ip addr
lista. A következőket használtam (gyökérként):
# 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
Ismételje meg az egyes interfészeket. Ezt használtam a fájlom “helyreállításához”. (Megjegyzés: egy meghívás felsorolja az összes felületet, és adjon átnevezést az egyezéshez, ezért azt javaslom, hogy egy meghívás után nézze meg a kimeneti fájlt)
Az OS és a jelenlegi UDEV implementációk és támogató szkriptek között határozottan vannak különbségek . Megjegyzendő, hogy a CentOS 6.8-at használtam, amikor ezt sikeresen végrehajtottam.
Hitel – többnyire erre a webhelyre hivatkoztam. Néhány szálon belül van egy megjegyzés, amely a szkript módosításáról szól, de inkább a környezeti változók, amint tisztább volt: https://access.redhat.com/discussions/1240213
Megjegyzések
- Szar – várj. I ' sajnálom, ez a parancs nem működött. Frissítenem kell a választ a megtett lépéssel
- Ok, én ' frissítettem arra, hogyan javítottam ki az enyémet. Remélem, ez működik, ha az Ön helyzetére vonatkozik. >
70-persistent-net.rules
, sem pedig a/lib/udev/write_net_rules
szkript. Ezért ' nem tudom ellenőrizni, de feltehetően a$INTERFACE
változó maga a szkriptben van beállítva. Valószínűleg érvként adják át. Meg tudja mutatni nekünk a szkript tartalmát?$INTERFACE
változót használja. Sokkal több, egyszerűen használt, soha nem deklarált változó létezik. ' azért, mert az udev hívja meg, és az udev minden env változót beállít, mielőtt futtatná a szkriptet indításkor.