Niemal stale używam jąder z PPA jądra Ubuntu lub jądra, które sam skompilowałem, używając konfiguracji jądra Ubuntu.
Problem polega na tym, że kiedy używam standardowego jądra, domyślnie wydaje się, że używam przewidywalnych nazw interfejsów sieciowych (tj. „P4p1”), ale kiedy używam dowolnego alternatywnego jądra, domyślnie wydaje się, że używam starej metody (tj. „Eth0”).
Chociaż tak naprawdę nie ma związku z tym pytaniem, miałem awarię dysku twardego na moim komputerze testowym i robię nową instalację Ubuntu Server 14.04.2.
Nie byłem w stanie określić, jaka jest różnica między jądrami. Podejrzewam parametr konfiguracyjny jądra, ale nie byłem w stanie zidentyfikować, który z nich.
Moje pytanie: Jak sprawić, by przewidywalne nazwy interfejsów sieciowych działały spójnie we wszystkich jądrach?
Dodatkowe uwagi: Gdzieś widziałem, aby wyłączyć przewidywalne nazwy interfejsów sieciowych, aby dodać to do gruba:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
więc pomyślałem, że może być odwrotnie:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
ale to nie miało znaczenia. Właściwie, nigdy nie mogę zmusić jądra, które nie jest w stanie magazynowym, do używania nazwy biologicznej, niezależnie od ustawienia. I nigdy nie mogę zmusić jądra podstawowego do wygenerowania /etc/udev/rules.d/70-persistent-net.rules
pliku (chociaż nie tego chcę), bez względu na ustawienie net.ifnames
. Jeśli tak net.ifnames=1
, to przynajmniej nie-zapasowe jądro nie generuje niepoprawnego /etc/udev/rules.d/70-persistent-net.rules
pliku.
Fragmenty /var/log/udev
:
jądro zapasowe:
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
Z jądra Ubuntu PPA 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
Uwaga: tymczasowo przeszedłem przez ten problem, umożliwiając utworzenie /etc/udev/rules.d/70-persistent-net.rules
pliku, a następnie edycję go pod kątem prawidłowych nazw urządzeń. Ostatecznie chciałbym pozbyć się pliku.
net.ifnames=1
ibiosdevname=0
, jak opisano w linku, który podałeś, ale otrzymałem stary eth0 i eth1. W każdym razie działa teraz dla każdego jądra (bez/etc/udev/rules.d/70-persistent-net.rules
), po tym jak dokonałem edycji,/etc/network/interfaces
aby odzwierciedlić prawidłowe nazwy interfejsów.