Предсказуемые имена сетевых интерфейсов не должны изменяться при добавлении или удалении оборудования . Разве не в этом весь смысл схемы именования ???
Короче говоря, в этом нет ничего нового; это ожидается / задумано. Следовательно, вам не нужно сообщать об ошибке, если вы не хотите попросить производитель ПК лучше поддерживать Linux (BIOS) или производителя оборудования (драйверы). Некоторые варианты, если вы хотите улучшить ситуацию с горячей заменой устройств и / или вернуться к старой схеме именования:
- Отключить новую схему именования для сетевых устройств с
net.ifnames = 0
командная строка ядра- Добавить
biosdevname = 1
командную строку ядра для включения предоставленных BIOS индексных номеров в имена- Создание или редактирование
правил udev
для пользовательских имен или измененных схем именования- Вы отключаете назначение фиксированных имен, чтобы снова использовались непредсказуемые имена ядра. Для этого просто замаскируйте файл .link udev для политики по умолчанию:
ln -s / dev / null /etc/systemd/network/99-default.link
Если вы используете
systemd
и / илиudev
аргумент «предсказуемая схема именования» может отличаться от предыдущего. Однако, основываясь на схеме именования интерфейса WiFi, я предполагаю, что вы используете систему сsystemd
.Вы можете попробовать добавить следующий параметр загрузки в командную строку ядра, чтобы использовать «старое» соглашение об именах сетевых устройств. Однако я не совсем уверен, какие дополнительные эффекты это может иметь, если таковые имеются, помимо сохранения схемы именования для сетевых устройств.
net.ifnames=0
Добавление его в
/ etc / default / grub
может упростить сохранение и повторное использование этого параметра; опять же, предполагая, что вы используетеgrub2
:GRUB_CMDLINE_LINUX="net.ifnames=0"
Если
udev
использует прошивку устройства, местоположение и другие параметры при определении имен устройств, то, возможно, местоположение или что-то еще могло измениться внутри , в зависимости от того, как соответствующие устройства взаимодействуют друг с другом. Здесь это кажется не столь актуальным, поскольку устройства представляют собой адаптер Wi-Fi и звуковую карту. Тем не менее, это может быть связано с базовой структурой шины; что кажется актуальным, поскольку оба устройства подключены к слотам 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
, которые изменяют имя устройств ядра, эти правила будут иметь приоритет.Дополнительные ресурсы
Большинство систем автоматически загружают /etc/rc.local
при запуске, когда он присутствует, поэтому вам просто нужно поместить туда свои команды и это должно помочь.
Вы должны убедиться, что он запускается с правами root, но, вероятно, он уже есть.
Если ваша система использует systemd, вы можете написать службу oneshot, которая выполняет команду один раз при загрузке системы.
Сначала создайте файл /opt/scripts/configure-bluetooth.sh
и поместите свои команды в:
#!/bin/bash
rfkill unblock bluetooth
killall bluetoothd
hciconfig hci0 up
И сделайте файл исполняемым: chmod + x / opt / scripts / configure-bluetooth.sh
Создание нового служебного модуля: /etc/systemd/system/configure-bluetooth.service
, который содержит:
[Unit]
Description=Configure bluetooth
[Service]
Type=oneshot
ExecStart=/opt/scripts/configure-bluetooth.sh
[Install]
WantedBy=multi-user.target
Теперь вы должны запустить systemctl daemon-reload
, чтобы systemd обнаружил новую службу.Чтобы проверить это, запустите systemctl start configure-bluetooth.service
.
Убедившись, что он работает, вы можете включить его при загрузке с помощью: systemctl enable configure-bluetooth.service