Майже постійно я використовую ядра з PPA ядра Ubuntu , або ядра, які я склав сам, використовуючи конфігурацію ядра Ubuntu.
Проблема полягає в тому, що коли я використовую біржеве ядро, схоже, за замовчуванням використовуються передбачувані імена мережевого інтерфейсу (наприклад, "p4p1"), але коли я використовую будь-яке альтернативне ядро, воно, здається, за замовчуванням використовує старий метод (тобто "eth0").
Хоча це питання не стосується цього питання, у мене виникла помилка на жорсткому диску на моєму тестовому комп'ютері і я роблю нову установку Ubuntu Server 14.04.2.
Я не зміг визначити, у чому різниця між ядрами. Я підозрюю параметр конфігурації ядра, але не зміг визначити, який з них.
Моє запитання: Як змусити імена передбачуваного мережевого інтерфейсу послідовно працювати на всіх ядрах?
Додаткові примітки: Десь я бачив, щоб відключити передбачувані імена мережевого інтерфейсу, щоб додати це до grub:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
тому я подумав, що навпаки може допомогти:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
але це не мало значення. Насправді я ніколи не можу змусити ядро, що не працює, використовувати biosdevname, незалежно від налаштувань. І я ніколи не можу отримати біржеве ядро для створення /etc/udev/rules.d/70-persistent-net.rules
файлу (хоча це не те, що я хочу), незалежно від налаштування net.ifnames
. Якщо у мене є net.ifnames=1
, то принаймні ядро, яке не працює, не генерує неправильний /etc/udev/rules.d/70-persistent-net.rules
файл.
Витяги з /var/log/udev
:
ядра акцій:
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
З ядра 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
Примітка. Я тимчасово перемістився через цю проблему, дозволивши створити /etc/udev/rules.d/70-persistent-net.rules
файл, а потім відредагував його для належних імен пристроїв. Зрештою, я хотів би позбутися файлу.
net.ifnames=1
іbiosdevname=0
, як описано у посиланні, яке ви надали, але я отримую старі eth0 та eth1. У будь-якому випадку, він працює для будь-якого ядра зараз (без/etc/udev/rules.d/70-persistent-net.rules
), після того як я відредагував/etc/network/interfaces
відображення належних імен інтерфейсу.