Почти постоянно я использую ядра из ядра PPU 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, а затем отредактировать его для правильных имен устройств. В конечном счете, я хотел бы избавиться от файла.
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Затем создайте файл с помощью sudo vi /etc/systemd/network/10-internet.link
и добавьте следующий [Match]
Path=pci-0000:(your device mac address)
[Link]
Name=eth0 (or whatever you want to name it)
:wq, чтобы сохранить файл, затем перезагрузите и настройте файл /etc/network/interfaces .. затем перезагрузитесь снова Надеюсь, это поможет кому-то