Fast ständig verwende ich Kernel aus dem Ubuntu-Kernel-PPA oder selbst kompilierte Kernel mit der Ubuntu-Kernel-Konfiguration.
Das Problem ist, wenn ich den Standard-Kernel verwende, werden standardmäßig vorhersagbare Netzwerkschnittstellennamen verwendet (z. B. "p4p1"), aber wenn ich einen anderen Kernel verwende, wird standardmäßig die alte Methode verwendet (z. B. "eth0").
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, unabhängig von der Einstellung. Und ich kann niemals den Stock-Kernel dazu bringen, eine /etc/udev/rules.d/70-persistent-net.rules
Datei zu generieren (obwohl das nicht das ist, was ich will), unabhängig von der Einstellung von net.ifnames
. Wenn ja net.ifnames=1
, dann 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 das Erstellen einer /etc/udev/rules.d/70-persistent-net.rules
Datei und das anschließende Bearbeiten der richtigen Gerätenamen zugelassen habe. Letztendlich möchte ich die Datei loswerden.
net.ifnames=1
und erwartetebiosdevname=0
, wie in dem von Ihnen angegebenen Link beschrieben, aber ich bekomme die alten eth0 und eth1. Wie auch immer, es funktioniert jetzt für jeden Kernel (ohne/etc/udev/rules.d/70-persistent-net.rules
), nachdem ich ihn bearbeitet habe/etc/network/interfaces
, um die richtigen Schnittstellennamen wiederzugeben.