Как правильно перезапустить udev?
Я изменил имя моего eth1
интерфейс к eth0
, Как спросить udev
сейчас перечитать конфиг?
service udev restart
а также
udevadm control --reload-rules
не помогает Так есть ли другой способ, кроме перезагрузки? (да, перезагрузка помогает с этой проблемой)
да, я знаю, что я должен предварять команды
sudo
, но тот, который я выложил выше, ничего не меняет вifconfig -a
вывод: я все еще вижуeth1
неeth0
,Я просто изменил
NAME
свойство строки правила udev. Не знаю причин, по которым это неэффективно.
Там нет никаких ошибок при выполнении обеих команд, которые я опубликовал выше, но они просто не меняют фактическое имя интерфейса в ifconfig -a
выход. Если я выполню перезагрузку - тогда имя интерфейса изменится как положено.
В целях разработки я пишу некоторый скрипт, который клонирует виртуальные машины (на основе VirtualBox) и каким-то образом предварительно их настраивает.
Поэтому я выполняю команду для клонирования виртуальной машины, запуска ее и до тех пор, пока изменяется сетевой интерфейс MAC - udev
добавляет второе правило в постоянные правила сети. Сразу после первой загрузки машины действуют 2 правила:
eth0
, который не существует, пока он существовал в исходном образе виртуальной машины MACeth1
, которая существует, но вся конфигурация во всех файлах относится кeth0
так что это не так хорошо для меня
Так я с sed
удалить строку с eth0
(это устарело и бесполезно в клонированном изображении) и заменить eth1
с eth0
, Так что в настоящее время у меня есть действующее постоянное правило, но все еще есть eth1
в /dev
,
Проблема: я не хочу перезагружать машину (это займет другое время, что нехорошо на этапе сборки ВМ) и просто хочу, чтобы мой /dev
перестроен с помощью некоторой команды, поэтому у меня есть готовая к использованию виртуальная машина без перезагрузок.
10 ответов
Я не знаю, помогает ли это перезагрузить конфигурацию сети, но когда я изменил /etc/udev/rules.d/70-persistent-cd.rules
исправить ссылку на устройство DVD с /dev/dvd1
в /dev/dvd
Я должен был бежать
sudo udevadm trigger
чтобы получить новые ссылки созданы.
Вы должны объединить все приведенные здесь советы в правильном порядке:
- Сбить сеть
service networking stop
- Выгрузить модуль драйвера из ядра
- Найти название модуля
lspci -v
и ищите "Драйвер ядра в использовании:" modprobe -r <driver module>
- Найти название модуля
- Перезагрузите правила Udev
udevadm control --reload-rules
- Запустить новые правила
udevadm trigger
- Загрузить драйвер
modprobe <driver module>
- Перезагрузите сеть
service networking start
- (необязательно) Перезапустите любой
iptables
сценарии, которые ссылались наeth
Имя интерфейса, прежде чем оно было.
Я подозреваю, что шаг 4 или шаг 5 действительно не нужны, но эти шаги сработали для меня. После шага 4 с шагом 2.1 вы можете проверить, выполнила ли команда триггера шаг 5, отредактируйте этот ответ, чтобы отразить ваши выводы, если вы это сделаете.
У меня была похожая проблема. Поскольку я не хотел тратить время на перезагрузку, я руководил одним вкладышем, используя предложение Криса Весселинга.
/etc/init.d/networking stop && modprobe -r tg3 && udevadm control --reload-rules && udevadm триггер && modprobe tg3 && /etc/init.d/networking start
Это работало для меня, используя сервер Ubuntu 12.04.02. Мои nics использовали драйвер модуля ядра tg3, поэтому замените tg3 на модуль, который используют ваши интерфейсы. Я нашел те, которые использовались в /etc/udev/rules.d/70-persistent-net.rules
:
PCI-устройство 0x14e4:/sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.1 (tg3) <драйвер модуля для ядра
Единственной проблемой, с которой я столкнулся, был плохой маршрут, который я исправил простой командой добавления маршрута. Спасибо за помощь, Крис!
Это работало для меня (без перезагрузки)
udevadm control --reload-rules ; udevadm trigger
Престижность автору этой страницы: http://memoryfail.wordpress.com/2013/04/02/renaming-network-device-names/
Это должно сделать это безопасно:
sudo reload udev
Как я использовал эту команду без проблем.
sudo /etc/init.d/udev restart
должен сделать свое дело. Некоторые из команд, которые вы пробовали, запускались с sudo
, может быть эффективным, а также.
Вам нужно перезагрузить udev, чтобы вызвать изменение правила, но устройство не будет переименовано, если вы не выгрузите / перезагрузите модуль драйвера.
Так modprobe -r e1000 && modprobe e1000
после перезагрузки udev должен сделать свое дело. Конечно, не делайте этого, если вам нужна сеть и у вас есть только интерфейсы e1000.
Некоторое время я занимался этим с одной и той же целью, и мне не удалось найти способ изменить имя сетевого интерфейса в работающей системе.
Обходной путь, к которому я прибег, - это удалить файл /etc/udev/rules.d/70-persistent-net.rules в шаблоне, что означает, что при следующей загрузке он увидит любую сетевую карту как eth0.
Так что для меня на VirtualBox с Ubuntu 12.04 я часто переключаюсь между Ethernet и беспроводной.
Поэтому, когда мое соединение меняется, я должен выбрать Bridged Adapter в разделе "Устройства"> "Настройки сети". Либо "Intel 82579LM Gigabit Network Connection", либо "Intel Centrino Ultimate-N 6300 AGN".
После этого я могу запустить
sudo modprobe -r e1000
sudo service udev restart
sudo modprobe e1000
ping google.com # To test I ran this between each command.
Это просто объяснение моих результатов после прочтения всех ответов выше.