Предсказуемые имена сетевых интерфейсов не должны меняться при добавлении или удалении оборудования. Разве не в этом весь смысл схемы именования???
Мой беспроводной интерфейс назывался wlp3s0.
Я установил звуковую карту ASUS Xonar DX 7.1 Channels PCI Express x1 Interface в свободный слот PCI, и имя моего беспроводного интерфейса изменилось на wlp5s0.
Беспроводная карта находится в том же слоте PCI, в котором она находилась до установки звуковой карты, так почему же название интерфейса должно измениться?!
Материнская плата — GIGABYTE GA-970A-UD3, а беспроводная карта — ASUS PCE-N15. Система работает под управлением Arch Linux со стандартным ядром.
Я ищу разумное объяснение того, почему имя интерфейса изменится в этом сценарии. Если нет веской причины, по которой имя интерфейса изменится, куда мне подать отчет об ошибке/кому мне пожаловаться?
Это не большая проблема, и единственная конфигурация, которую мне нужно было изменить, это мой сетевой профиль для netctl. Я просто думаю, что если «предсказуемое» имя сетевого интерфейса непредсказуемо, то они полностью провалили свою работу, и эта схема именования — бесполезный мусор! /rant
решение1
Предсказуемые имена сетевых интерфейсов не должны меняться при добавлении или удалении оборудования. Разве не в этом весь смысл схемы именования???
Короче говоря, в этом нет ничего нового; это ожидаемо/преднамеренно. Поэтому вам не нужно отправлять сообщение об ошибке, если только вы не хотите попросить производителя вашего ПК улучшить поддержку Linux (BIOS) или производителя оборудования (драйверы). Некоторые варианты, если вы хотите улучшить ситуацию с устройствами с горячим подключением и/или вернуться к старой схеме именования:
- Отключить новую схему именования сетевых устройств с помощью
net.ifnames=0
командной строки ядра - Добавить
biosdevname=1
командную строку ядра для включения в имена индексных номеров, предоставляемых BIOS - Создание или редактирование
udev
правил для пользовательских имен или измененных схем именования. - Вы отключаете назначение фиксированных имен, так что непредсказуемые имена ядра используются снова. Для этого просто замаскируйте файл udev .link для политики по умолчанию:
ln -s /dev/null /etc/systemd/network/99-default.link
Если вы используете systemd
and/or udev
, аргумент "предсказуемая схема именования" может отличаться от предыдущего. Однако, основываясь на схеме именования интерфейса WiFi, я предполагаю, что выявляютсяс использованием системы с systemd
.
Вы можете попробовать добавить следующий параметр загрузки в командную строку ядра, чтобы использовать "старое" соглашение об именовании сетевых устройств. Однако я не совсем уверен, какие дополнительные эффекты это может иметь, если вообще имеет, помимо сохранения схемы именования сетевых устройств.
net.ifnames=0
Добавление его /etc/default/grub
может облегчить сохранение и повторное использование этого параметра; опять же, предполагая, что вы используете grub2
:
GRUB_CMDLINE_LINUX="net.ifnames=0"
Если udev
при определении имен устройств используются прошивка устройства, местоположение и другие параметры, то, возможно, местоположение или что-то еще могло измениться внутри, в зависимости от того, как соответствующие устройства взаимодействуют друг с другом. Это кажется не таким уж важным здесь, поскольку устройства представляют собой адаптер WiFi и звуковую карту. Тем не менее, это может быть связано с базовой структурой шины; что кажется важным, поскольку оба устройства подключены к слотам PCI.
Дополнительная информация отFedoraDocs
8.1 Иерархия схем именования
По умолчанию systemd именует интерфейсы, используя следующую политику для применения поддерживаемых схем именования:
Схема 1: Имена, включающие в себя индексные номера, предоставленные прошивкой или BIOS для встроенных устройств (например: eno1), применяются, если эта информация из прошивки или BIOS применима и доступна, в противном случае возвращается к схеме 2.
Схема 2: Имена, включающие встроенное ПО или BIOS, предусматривающие индексные номера слотов PCI Express с возможностью горячего подключения (например, ens1), применяются, если эта информация из встроенного ПО или BIOS применима и доступна, в противном случае применяется схема 3.
Схема 3: Имена, включающие физическое расположение разъема оборудования (например, enp2s0), применяются, если применимо, в противном случае происходит прямой возврат к схеме 5 во всех остальных случаях.
Схема 4: Имена, включающие MAC-адрес интерфейса (пример: enx78e7d1ea46da), не используются по умолчанию, но доступны по выбору пользователя.
Схема 5: Традиционная непредсказуемая схема именования ядер используется, если все другие методы не дают результата (пример: eth0).
Эта политика, описанная выше процедура, является политикой по умолчанию. Если в системе включен biosdevname, он будет использоваться. Обратите внимание, что включение biosdevname требует передачи biosdevname=1
в качестве параметра командной строки, за исключением случая системы Dell, где biosdevname будет использоваться по умолчанию, пока он установлен. Если пользователь добавил udev
правила, которые изменяют имя устройств ядра, эти правила будут иметь приоритет.