Quase sempre, uso kernels do PPA do kernel do Ubuntu , ou kernels que eu mesmo compilei, usando a configuração do kernel do Ubuntu.
O problema é que quando estou usando o kernel padrão, ele parece usar nomes de interface de rede previsíveis (por exemplo, "p4p1"), mas quando eu uso qualquer kernel alternativo, ele parece usar o método antigo (por exemplo, "eth0").
Embora não seja realmente relevante para essa pergunta, tive uma falha no disco rígido no meu computador de teste e estou fazendo uma nova instalação do Ubuntu Server 14.04.2.
Não consegui determinar qual é a diferença entre os kernels. Suspeito de um parâmetro de configuração do kernel, mas não foi possível identificar qual.
Minha pergunta: como posso fazer com que nomes de interface de rede previsíveis funcionem consistentemente em todos os kernels?
Notas adicionais: Em algum lugar, vi desabilitar os nomes previsíveis da interface de rede para adicionar ao grub:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
então, pensei que o oposto poderia ajudar:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
mas não fez diferença. Na verdade, nunca consigo fazer com que o kernel não-estoque use biosdevname, independentemente da configuração. E nunca consigo que o kernel de estoque gere um /etc/udev/rules.d/70-persistent-net.rules
arquivo (mesmo que não seja isso que eu queira), independentemente da configuração de net.ifnames
. Se eu tiver net.ifnames=1
, pelo menos o kernel não-estoque não gera um /etc/udev/rules.d/70-persistent-net.rules
arquivo incorreto .
Trechos de /var/log/udev
:
estoque do 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
Do kernel do PPA do Ubuntu 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: Eu mudei temporariamente esse problema, permitindo que um /etc/udev/rules.d/70-persistent-net.rules
arquivo fosse criado e, em seguida, editando-o para nomes de dispositivos adequados. Por fim, gostaria de me livrar do arquivo.
net.ifnames=1
ebiosdevname=0
, conforme descrito no link que você forneceu, mas recebo os antigos eth0 e eth1. Enfim, ele funciona para qualquer kernel agora (sem/etc/udev/rules.d/70-persistent-net.rules
), depois que eu editei/etc/network/interfaces
para refletir os nomes de interface adequados.