Quasi costantemente, utilizzo i kernel dal kernel PPA di Ubuntu , o kernel che ho compilato da solo, usando la configurazione del kernel di Ubuntu.
Il problema è che quando sto usando il kernel stock sembra predefinito usare nomi di interfaccia di rete prevedibili (es. "P4p1"), ma quando uso un kernel alternativo sembra predefinito usare il vecchio metodo (es. "Eth0").
Pur non essendo rilevante per questa domanda, ho riscontrato un errore del disco rigido sul mio computer di prova e sto eseguendo una nuova installazione di Ubuntu Server 14.04.2.
Non sono stato in grado di determinare qual è la differenza tra i kernel. Sospetto un parametro di configurazione del kernel, ma non sono stato in grado di identificare quale.
La mia domanda: come posso fare in modo che i nomi delle interfacce di rete prevedibili funzionino in modo coerente su tutti i kernel?
Note aggiuntive: da qualche parte ho visto disabilitare i nomi di interfaccia di rete prevedibili per aggiungere questo a grub:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
quindi, ho pensato che il contrario potesse aiutare:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
ma non ha fatto differenza. In realtà, non riesco mai a ottenere il kernel non stock per usare biosdevname, indipendentemente dall'impostazione. E non riesco mai a far generare un /etc/udev/rules.d/70-persistent-net.rules
file al kernel stock (anche se non è quello che voglio), indipendentemente dall'impostazione di net.ifnames
. Se ho net.ifnames=1
, almeno il kernel non stock non genera un /etc/udev/rules.d/70-persistent-net.rules
file errato .
Estratti da /var/log/udev
:
stock kernel:
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
Dal kernel 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
Nota: ho temporaneamente superato questo problema consentendo la /etc/udev/rules.d/70-persistent-net.rules
creazione di un file e quindi modificandolo per i nomi di dispositivo corretti. Alla fine, vorrei liberarmi del file.
net.ifnames=1
ebiosdevname=0
, come descritto nel link che hai dato, ma ottengo il vecchio eth0 ed eth1. Ad ogni modo, funziona per qualsiasi kernel ora (senza no/etc/udev/rules.d/70-persistent-net.rules
), dopo che ho modificato/etc/network/interfaces
per riflettere i nomi di interfaccia corretti.