Casi constantemente, uso los núcleos del PPA del núcleo de Ubuntu , o los núcleos que he compilado yo mismo, utilizando la configuración del núcleo de Ubuntu.
El problema es que cuando estoy usando el kernel de stock parece que el uso predeterminado es el uso de nombres de interfaz de red predecibles (es decir, "p4p1"), pero cuando uso cualquier kernel alternativo, parece que el método anterior es predeterminado (es decir, "eth0").
Si bien no es realmente relevante para esta pregunta, tuve una falla en el disco duro en mi computadora de prueba y estoy haciendo una nueva instalación de Ubuntu Server 14.04.2.
No he podido determinar cuál es la diferencia entre los núcleos. Sospecho que hay un parámetro de configuración del núcleo, pero no he podido identificar cuál.
Mi pregunta: ¿Cómo puedo hacer que los nombres de interfaz de red predecibles funcionen de manera consistente en todos los núcleos?
Notas adicionales: En algún lugar vi deshabilitar nombres de interfaz de red predecibles para agregar esto a grub:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
Entonces, pensé que lo contrario podría ayudar:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
Pero no hizo ninguna diferencia. En realidad, nunca puedo hacer que el kernel no disponible use biosdevname, sin importar la configuración. Y nunca puedo conseguir que el núcleo de valores genere un /etc/udev/rules.d/70-persistent-net.rules
archivo (aunque eso no es lo que quiero), sin importar la configuración de net.ifnames
. Si es así net.ifnames=1
, al menos el kernel no disponible no genera un /etc/udev/rules.d/70-persistent-net.rules
archivo incorrecto .
Extractos de /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
Desde 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
Nota: He superado temporalmente este problema permitiendo /etc/udev/rules.d/70-persistent-net.rules
que se creara un archivo y luego editándolo para los nombres de dispositivo adecuados. En última instancia, me gustaría deshacerme del archivo.
net.ifnames=1
ybiosdevname=0
, como se describe en el enlace que proporcionó, pero obtengo los viejos eth0 y eth1. De todos modos, ahora funciona para cualquier núcleo (sin/etc/udev/rules.d/70-persistent-net.rules
), después de editarlo/etc/network/interfaces
para reflejar los nombres de interfaz adecuados.