it-swarm.com.de

Verwendung vorhersagbarer Netzwerkschnittstellennamen mit alternativen Kerneln

Fast ständig verwende ich Kernel aus dem buntu-Kernel-PPA oder selbst kompilierte Kernel mit der Ubuntu-Kernel-Konfiguration.

Das Problem besteht darin, dass bei Verwendung des Standard-Kernels standardmäßig vorhersehbare Netzwerkschnittstellennamen (d. H. "P4p1") verwendet werden. Bei Verwendung eines alternativen Kernels wird jedoch standardmäßig die alte Methode (d. H. "Eth0") verwendet.

Obwohl dies für diese Frage nicht wirklich relevant ist, hatte ich auf meinem Testcomputer einen Festplattenfehler und führe eine Neuinstallation von Ubuntu Server 14.04.2 durch.

Ich konnte nicht feststellen, was der Unterschied zwischen den Kerneln ist. Ich vermute einen Kernel-Konfigurationsparameter, konnte jedoch keinen identifizieren.

Meine Frage: Wie kann ich sicherstellen, dass vorhersehbare Netzwerkschnittstellennamen für alle Kernel konsistent funktionieren?

Zusätzliche Hinweise: Irgendwo sah ich vorhersehbare Netzwerkschnittstellennamen deaktivieren, um dies zu grub hinzuzufügen:

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"

also dachte ich, das Gegenteil könnte helfen:

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"

aber es machte keinen Unterschied. Eigentlich kann ich nie den Nicht-Standard-Kernel dazu bringen, Biosdevname zu verwenden, egal welche Einstellung. Und ich kann den Aktienkern niemals dazu bringen, eine /etc/udev/rules.d/70-persistent-net.rules -Datei zu generieren (obwohl ich das nicht möchte), unabhängig von der Einstellung von net.ifnames. Wenn ich net.ifnames=1 habe, generiert zumindest der Nicht-Stock-Kernel keine falsche /etc/udev/rules.d/70-persistent-net.rules -Datei.

Auszüge aus /var/log/udev:
Aktienkern:

KERNEL[9.216730] add      /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
IFINDEX=2
INTERFACE=p4p1
SEQNUM=1945
SUBSYSTEM=net
...
UDEV  [9.241073] add      /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
ID_BUS=pci
ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
ID_MODEL_ID=0x8168
ID_NET_NAME_MAC=enxf46d04652d8e
ID_NET_NAME_PATH=enp3s0
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
ID_PCI_CLASS_FROM_DATABASE=Network controller
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=p4p1

Vom Ubuntu PPA-Kernel 4.1RC5:

KERNEL[10.772566] add      /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0
IFINDEX=2
INTERFACE=eth0
SEQNUM=1962
SUBSYSTEM=net
...
UDEV  [11.185866] add      /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0
ID_BUS=pci
ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
ID_MODEL_ID=0x8168
ID_NET_NAME_MAC=enxf46d04652d8e
ID_NET_NAME_PATH=enp3s0
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
ID_PCI_CLASS_FROM_DATABASE=Network controller
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=eth0
SEQNUM=1962
SUBSYSTEM=net
USEC_INITIALIZED=3227

Hinweis: Ich habe dieses Problem vorübergehend behoben, indem ich die Erstellung einer /etc/udev/rules.d/70-persistent-net.rules -Datei und die anschließende Bearbeitung für die richtigen Gerätenamen zugelassen habe. Letztendlich möchte ich die Datei loswerden.

10
Doug Smythies

Sie müssen zwischen 3 Dingen unterscheiden:

  • Vorhersagbare Schnittstellennamen
  • biosdevname
  • 70-persistent.rules udev-Regel

Sie wählen entweder eine dieser Lösungen , aber Sie verwenden nicht 2 oder 3 gleichzeitig. (Tatsächlich können Sie, aber einer wird Vorrang haben und den anderen maskieren.)

Eine gute Einführung in die aktuelle Situation ist der Post auf der Ubuntu Dev Mailingliste

Vorhersehbare Schnittstellennamen

Vorhersagbare Schnittstellennamen sind eine udevd Sache, da v197 in /lib/udev/rules.d/80-net-setup-link.rules generiert wurde

systemd verwendet standardmäßig den neuen vorhersagbaren Schnittstellennamen. Allerdings müssen Sie sich in Ubuntu mit net.ifnames=1 anmelden, es sei denn, es handelt sich um ein Upstream-System.

Es ist egal, welche Kernel-Version Sie ausführen. Sie müssen jedoch die Kernel-Befehlszeile verwenden, um sie zu konfigurieren, indem Sie die Grub-Konfiguration /etc/default/grub wie folgt ändern:

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"

und Renn

Sudo update-grub

In 14.04 oder 14.10 sollte es ohne systemd ausreichen, 70-persitent-net.rules zu entfernen, wie im folgenden Hinweis beschrieben.

Biosdevname

biosdevname ist ein Versuch von Dell, ein ähnliches Problem zu lösen wie der vorhersagbare Schnittstellenname in systemd. Dies ist die Standardeinstellung auf Ubuntu-Servern . Sie können es haben, indem Sie das Paket biosdevname installieren.

Sudo apt-get install biosdevname

Hinweis

Sie können es deaktivieren, indem Sie die Kernel-Befehlszeile in grub config verwenden:

GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0"

und Renn

Sudo update-grub

oder deinstallieren Sie einfach das Paket.

Sudo apt-get purge biosdevname
Sudo update-initramfs -u

udev Regeln

Dies ist die Standardeinstellung auf Ubuntu-Desktops . Die udev -Regel /lib/udev/rules.d/75-persistent-net-generator.rules erstellt beim ersten Start eine benutzerdefinierte Regel /etc/udev/rules.d/70-persistent-net.rules mit der MAC-Adresse Ihrer Schnittstelle, für die ein dauerhafter Name abgerufen werden soll Ihre Schnittstelle.

Hinweis

Wenn Sie bereits udev-Regeln verwenden, müssen Sie /etc/udev/rules.d/70-persistent-net.rules entfernen und verhindern, dass es bei jedem Start, den Sie ausführen müssen, neu generiert wird

Sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules

Wenn Sie danach systemd verwenden, müssen Sie sich wie oben beschrieben für einen vorhersehbaren Schnittstellennamen entscheiden.

30
solsTiCe
  1. In Ubuntu Server 16.04LTS war alles, was ich getan habe, ausgeführt:

    ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
    
  2. Dann erstellen Sie die Datei mit

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

    und fügen Sie Folgendes hinzu

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

    :wq, um die Datei zu speichern

  3. starten Sie dann neu und passen Sie Ihre /etc/network/interfaces -Datei an. Starten Sie dann erneut

Hoffe das hilft jemandem

3
Jadey1412