Переименовать сетевой интерфейс на основе MAC без соответствующего моста
В Ubuntu 18.04,
У меня есть адаптер Ethernet, который я переименую в primary-ethв мосту под названием primary-bridge,
Я переименовал свой сетевой адаптер с файлом в/etc/udev/rules.d/70-persistent-net.rules
содержащий одну строку:SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="primary-eth"(где aa:bb... это фактический MAC-адрес моего сетевого адаптера)
Это работало, но потом однажды я загрузился и нашел primary-bridge пустой, и нежелательный дополнительный мост называется rename3 содержащий primary-eth,
Я получил совет, что мое правило слишком расплывчато и что udev, вероятно, пытался переименовать primary-bridge в primary-eth в состоянии гонки. (так как primary-bridge получает свой MAC-адрес от primary-ethпоэтому у них обоих одинаковый MAC-адрес)
Итак, посмотрев на udevadm info /sys/class/net/primary-bridgeПоэтому я добавил параметр DEVTYPE!="bridge"Но тогда мой primary-eth не был переименован надежно при каждой загрузке.
Так что теперь я использую DRIVERS=="?*" вместо DEVTYPE!="bridge", и он работал нормально для последних 2 перезагрузок, но я не знаю, будет ли он продолжать работать надежно.
Что значит
?*значит вDRIVERS=="?*"? Как это может соответствовать чему-либо, если у меня нет параметра с именемDRIVERS=...в моемudevadm infoни дляprimary-bridgeниprimary-eth?Почему
DEVTYPE!="bridge"не работа? Что-то не так с этим!=синтаксис?Я также видел параметр
KERNEL=="eth*"используется, что, по-видимому, относится к реальному имени ядра для адаптера Ethernet, который всегда начинается с "eth". Если я хочу переименовать адаптер Wi-Fi, используя тот же метод, мне нужно написатьKERNEL=="wlan*"?