2

Я изменил свои правила в /etc/udev/rules.d (Ubuntu), чтобы изменить имена портов Ethernet с 0 на 1 и с 1 на 2, однако при каждом запуске:

    sudo service udev restart
    sudo udevadm control --reload-rules

он не обновляет мои номера портов Ethernet, пока я не перезапущу.

Это, очевидно, не проблема для запуска обычного компьютера, однако мне нужно внедрить эту идею в live CD (Knoppix) для тестирования портов Ethernet на нескольких системах, для каждой из которых для работы моих сценариев требуется разное ядро, настроенное на конкретные порты Ethernet. и я нашел единственный способ сделать это - использовать правила udev, однако это нелегко сделать из-за того, что правила не будут обновляться, пока вы не перезапустите.

Есть ли кто-нибудь, кто знает, как изменить эти порты, не перезагружая машину?

2 ответа2

1

Правила применяются только когда устройство подключено. Попробуйте udevadm trigger чтобы правила были применены ко всем устройствам.


Цитата из справочной страницы udevadm:

--reload-правила

Сигнал udevd для перезагрузки файлов правил. Демон udev обнаруживает изменения автоматически, эта опция обычно не нужна. Правила перезагрузки не распространяются на уже существующие устройства.

0

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

Если драйвер является модулем ядра, выясните имя модуля и перезагрузите его (скорее всего, если вы не настраивали ядро самостоятельно). Обратите внимание, что это закроет все интерфейсы, использующие этот драйвер (или см. Ниже):

# ls -l /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c
# rmmod atl1c
# modprobe atl1c

Однако, если драйвер встроен, это немного больше работы. Вы должны определить как имя драйвера, так и идентификатор PCI, приказать драйверу отсоединить себя от устройства и связать его обратно.

# ls -l /sys/class/net/eth0/device
lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device -> ../../../0000:06:00.0
# ls -l /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Jul 18 20:41 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c
# echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/unbind
# echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/bind

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .