Как правильно перезапустить 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, который не существует, пока он существовал в исходном образе виртуальной машины MAC
  • eth1, которая существует, но вся конфигурация во всех файлах относится к 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

чтобы получить новые ссылки созданы.

Вы должны объединить все приведенные здесь советы в правильном порядке:

  1. Сбить сеть service networking stop
  2. Выгрузить модуль драйвера из ядра
    1. Найти название модуля lspci -v и ищите "Драйвер ядра в использовании:"
    2. modprobe -r <driver module>
  3. Перезагрузите правила Udev udevadm control --reload-rules
  4. Запустить новые правила udevadm trigger
  5. Загрузить драйвер modprobe <driver module>
  6. Перезагрузите сеть service networking start
  7. (необязательно) Перезапустите любой 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.

udevadm trigger 

это будет работать, введите описание ссылки здесь

Так что для меня на 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.

Это просто объяснение моих результатов после прочтения всех ответов выше.

Другие вопросы по тегам