Wie kann ich das Standard-Netzwerkgerät "ens33" in das alte "eth0" unter Fedora 19 ändern?

22

Ich habe gerade Fedora 19 auf VMware Workstation 9 installiert. Das Standardnetzwerkgerät ist "ens33" anstelle von "eth0" auf RHEL.

Der Grund, warum ich "eth0" verwenden muss, ist, dass die Lizenzkomponente eines unserer Produkte mit "eth0" verknüpft werden muss.

Es gibt einige Posts, die ähnliche Probleme behandeln, von denen die meisten für ältere Betriebssysteme bestimmt sind. Ich habe keine gefunden, die genau zu meiner Situation passt.

YM Jiang
quelle
Fedora 19 unterscheidet sich erheblich von RHEL 5.5, da es sich bei der Frage um ein Duplikat von handelt und die Antwort nicht dieselbe ist.
Mattdm

Antworten:

31

Der einfachste Weg, die alte Art, wie Kernel / modules / udev Ihre Ethernet-Schnittstellen umbenennt, wiederherzustellen, besteht darin, Fedora 19 die folgenden Kernel-Parameter bereitzustellen :

  1. net.ifnames = 0
  2. biosdevname = 0

Gehen Sie dazu folgendermaßen vor:

  1. Bearbeite / etc / default / grub
  2. Fügen Sie am Ende der Zeile GRUB_CMDLINE_LINUX " net.ifnames = 0 biosdevname = 0 " hinzu
  3. Speicher die Datei
  4. Tippe " grub2-mkconfig -o /boot/grub2/grub.cfg "
  5. Tippe " reboot "

Wenn Sie diese Parameter während der Installation nicht angegeben haben, müssen Sie möglicherweise die Schnittstellendateien unter / etc / sysconfig / network-scripts / ifcfg- * anpassen und / oder umbenennen .

Bis Fedora 18 reichte nur biosdevname = 0 .

Als Beispiel habe ich in einer bestimmten Maschine in einer umfassenden Untersuchung Folgendes erhalten:

-Keine Parameter: NIC als " enp5s2 " identifiziert .
-Parameter biosdevname = 0: NIC als " enp5s2 " identifiziert .
-Parameter net.ifnames = 0: NIC als " em1 " identifiziert .
-Parameter net.ifnames = 0 AND biosdevname = 0: NIC als " eth0 " identifiziert .

Guilsson
quelle
Vielen Dank für die ausführlichen Schritte! Alles, was MathWorks mir zur Verfügung stellte, war für viel ältere Versionen von Fedora.
Dr. Watson
@ dr-watson: Bis Fedora 14 war ethX die Standardbenennung für Ethernet-Schnittstellen. In Fedora 15 wurde das Consistent Network Device Naming implementiert. Von Fedora 15 bis 18 genügte biosdevname = 0 , um die ethX-Benennung beizubehalten. Bitte schön.
Guilsson
3
Diese Lösung funktioniert auch mit Fedora 20. Vielen Dank.
Heuristicus
Arbeitete
Ubuntu 14.04 auch.
So
9

Sie können dies mit einer udev-Regel wie folgt tun:

cat > /etc/udev/rules.d/99-rename-to-eth0.rules << EOF
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="$(cat /sys/class/net/ens33/address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
EOF
Chris Down
quelle
Danke für das Beispiel. Für andere ist es erwähnenswert, dass /sys/class/net/ens33dies je nach den vom BIOS zurückgegebenen und in der Ausgabe von gefundenen Werten unterschiedlich sein kann lspci -vv | grep -A25 Ethernet. Wenn der eth0Name verwendet werden soll, ist es möglicherweise besser, nur die Kernel-Boot-Flags anzugeben, um die "vorhersehbare" Benennung des Geräts zu deaktivieren.
Mark Edington
7

In Fedora 20 scheinen sich die Dinge etwas weiter verändert zu haben.

1) grub kernel arguments
Ja, sowohl "net.ifnames = 0" als auch "biodevame = 0" scheinen notwendig zu sein.

2) / etc / sysconfig / network-scripts / ifcfg-ethX
Ja, auch diese sind notwendig.

3) /etc/udev/rules.d/60-net.rules
Wenn Sie über mehrere Schnittstellen verfügen und die Benennung jedes Geräts steuern möchten, anstatt den Kernel auf seine eigene Weise ausführen zu lassen, geben Sie /etc/udev/rules.d/60 ein -net.rules scheint notwendig zu sein, um /usr/lib/udev/rules.d/60-net.rules wie folgt zu überschreiben.

# PCI device 0x1011:0x0019 (tulip) {SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:f0:4c:f5:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8168 (r8169) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="60:a4:4c:b5:26:48", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

4) yum remove biosdevnameerscheint unnötig.

hiro
quelle
1
Vielen Dank für die Aufschlüsselung der verschiedenen Faktoren. Es scheint, Sie haben einen Tippfehler in der # 1 Punkt, sollte "Biosdevname" sein, nicht "Biodevame".
Mark Edington
2

Dies ist in Fedora 19 anders als in früheren Versionen. Es gibt zwei Dinge zu adressieren:

  1. Entfernen Sie biosdevname, wenn es installiert ist. ( yum remove biosdevname, oder setzen Sie -biosdevnameIhren Kickstart.
  2. Deaktivieren Sie die udev-Regel: ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Weitere Informationen finden Sie unter http://fedoraproject.org/wiki/Features/SystemdPredictableNetworkInterfaceNames

mattdm
quelle
2

Die akzeptierte Antwort bietet zwar eine funktionierende Lösung, erklärt jedoch nicht, warum ens33sie verwendet wird. Die folgenden Links bieten Hintergrundinformationen darüber, warum das Netzwerkgerät einen anderen Namen trägt als eth0und wie es jetzt in RHEL 7-Varianten heißt:

Beachten Sie auch, dass die angezeigten Werte wie "33" ens33vom Wert des PCI-Adaptersteckplatzes stammen, der vom BIOS zurückgegeben wird. Verwenden Sie diesen Befehl, um zu sehen, welche Werte Ihr System für "Physical Slot" aufgelistet hat:

lspci -vv | grep -A20 Ethernet

Zusätzliche Informationen zum "ens" -Teil des Namens finden Sie im udev-Quellcode .

Mark Edington
quelle
1

Für Fedora-24:

  1. Bearbeiten /etc/default/grub

  2. Am Ende der GRUB_CMDLINE_LINUXZeile anhängennet.ifnames=0 biosdevname=0

  3. Speicher die Datei

  4. Art

    grub2-mkconfig -o /boot/grub2/grub.cfg"
    

    oder Typ

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  5. Art reboot

Hafiz
quelle
Warum verschwindet das Netzwerkgerät vollständig aus dem System, wenn ich diese Methode auf Fedora 26 anwende? ifconfigkehrt nur lound zurück virbr0, ist aber ursprünglich enp4s0nicht mehr da.
Ajeh
Um mir selbst zu antworten: Müssen Sie vorsichtig sein, um alle Netzwerkskripte zu ändern, die mit der ethNBenennung verwendet werden sollen, um diese Konvention zu verwenden. Ich war enp4s0in einem Drehbuch gegangen .
Ajeh