Перезагрузка правил udev не удалась

8334
Null_Fragment

Я изменил свои правила в /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
grawity

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


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

--reload-правила

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

0
Ambroz Bizjak

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

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

# 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 
Спасибо за ответ. Я никогда не думал об использовании rmmod. Я предполагаю, что я отправлю любые другие проблемы, с которыми я сталкиваюсь здесь. Null_Fragment 12 лет назад 0
rmmod / modprobe был подходящим вариантом. Он работает вручную в Knoppix и Ubuntu, поэтому он должен работать со скриптом, но кто знает. Спасибо за помощь. Null_Fragment 12 лет назад 0

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