Использование Предсказуемых Названий Сетевого интерфейса с альтернативными ядрами

Почти постоянно я использую ядра от ядра Ubuntu PPA или ядра, которые я скомпилировал сам, с помощью конфигурации ядра Ubuntu.

Проблема состоит в том, когда я использую ядро запаса, это, кажется, принимает значение по умолчанию к использованию предсказуемых названий сетевого интерфейса (т.е. "p4p1"), но когда я использую любое альтернативное ядро, это, кажется, принимает значение по умолчанию к использованию старого метода (т.е. "eth0").

В то время как не действительно относящийся к этому вопросу, я имел отказ жесткого диска на своем тестовом компьютере и делаю новую установку Сервера Ubuntu 14.04.2.

Я не смог определить то, что является различием между ядрами. Я подозреваю параметр конфигурации ядра, но не мог определить который.

Мой вопрос: Как я могу заставить предсказуемые названия сетевого интерфейса последовательно работать через все ядра?

Дополнительные примечания: Где-нибудь я видел для отключения предсказуемых названий сетевого интерфейса для добавления этого для расчистки:

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"

таким образом я думал, что противоположное могло бы помочь:

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"

но это не имело никакого значения. На самом деле я никогда не могу заставлять ядро незапаса использовать biosdevname, неважно, установка. И я никогда не могу заставлять ядро запаса генерировать a /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

Примечание: Я временно переместился мимо этой проблемы путем разрешения a /etc/udev/rules.d/70-persistent-net.rules файл, который будет создан, и затем редактирование его для надлежащих имен устройств. В конечном счете я хотел бы избавиться от файла.

10
задан 26 May 2015 в 17:38

2 ответа

Необходимо различать 3 вещи:

  • Предсказуемые имена интерфейсов
  • biosdevname
  • 70-persistent.rules правило udev

Вы или принимаете решение использовать один из них решение, но Вы не используете 2 или 3 одновременно. (На самом деле Вы можете, но каждый будет иметь приоритет и маскировать другой (s)),

Хорошее введение в текущую ситуацию является сообщением на человечности dev список рассылки

Предсказуемые имена интерфейса

Предсказуемые имена интерфейса являются udevd вещью с тех пор v197 сгенерированный в /lib/udev/rules.d/80-net-setup-link.rules

systemd используют по умолчанию новое предсказуемое имя интерфейса. Однако, если восходящий systemd, в Ubuntu, Вы не должны подписываться при помощи net.ifnames=1

Версия ядра не имеет значения, что Вы работаете. Но необходимо использовать командную строку ядра для конфигурирования его путем изменения конфигурации личинки /etc/default/grub, как:

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"

и выполненный

sudo update-grub

В 14,04 или 14.10, без systemd, должно быть достаточно удалить 70-persitent-net.rules, как описано ниже в примечании.

Biosdevname

biosdevname является попыткой лощины решить подобную проблему, чем предсказуемое имя интерфейса в systemd. Это - значение по умолчанию на сервере человечности. У Вас может быть он путем установки пакета biosdevname

sudo apt-get install biosdevname

Примечание:

Можно отключить его при помощи командной строки ядра в конфигурации личинки:

GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0"

и выполненный

sudo update-grub

или просто удалите пакет.

sudo apt-get purge biosdevname
sudo update-initramfs -u

правила udev

Это - значение по умолчанию на рабочем столе Ubuntu. Правило udev /lib/udev/rules.d/75-persistent-net-generator.rules создает во время первой начальной загрузки пользовательские правила /etc/udev/rules.d/70-persistent-net.rules с MAC-адресом Вашего интерфейса для получения персистентного названия интерфейса.

Примечание:

Если Вы уже используете правила udev, необходимо удалить /etc/udev/rules.d/70-persistent-net.rules и избегать его повторно создаваемый при каждой начальной загрузке необходимо работать

sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules

После этого при использовании systemd затем необходимо подписаться для предсказуемого имени интерфейса, как описывают выше.

31
ответ дан 26 May 2015 в 17:38
  1. В Сервере Ubuntu 16.04LTS все, что я сделал, было выполнено:

    ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
    
  2. Затем создайте использование файла

    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 сохранить файл

  3. затем перезагрузка и корректирует Ваш /etc/network/interfaces файл.. затем перезагрузите снова

Надежда это помогает кому-то

3
ответ дан 26 May 2015 в 17:38

Другие вопросы по тегам:

Похожие вопросы: