Что корректный путь состоит в том, чтобы перезапустить udev?

Я изменил имя моего eth1 интерфейс к eth0. Как спросить udev теперь перечитывать конфигурацию?

service udev restart

и

udevadm control --reload-rules

не помогать. Так есть ли какой-либо допустимый путь кроме перезагрузки? (да, перезагрузка помогает с этой проблемой),

  • да, я знаю, что должен предварительно ожидать команды с sudo, но любой я ничего не отправил выше изменений в ifconfig -a вывод: Я все еще вижу eth1, нет eth0.

  • Я просто изменился NAME свойство строки udev-правила. Не знайте причину этого, чтобы быть неэффективными.

Нет никакой ошибки в выполнении обеих команд, которые я отправил выше, но они просто не меняют фактическое имя интерфейса в ifconfig -a вывод. Если я выполняю перезагрузку - затем, имя интерфейса изменяется как ожидалось.

В целях разработки я пишу некоторый сценарий, который клонирует (VirtualBox-управляемые) виртуальные машины и задает их в некотором роде.

Таким образом, я выполняю команду для клонирования VM, запустите его и пока сетевой интерфейс, MAC изменяется - udev добавляет второе правило объединить персистентные правила в сеть. Прямо после того, как машина загружается впервые существует 2 правила:

  • eth0, который не существует, пока это существовало в исходном образе виртуальной машины MAC
  • eth1, который существует, но вся конфигурация во всех файлах относится к eth0, таким образом, это не настолько хорошо для меня

Так я с sed удалите строку с eth0 (это является устаревшим и бесполезным в клонированном изображении), и замена eth1 с eth0. Таким образом, в настоящее время у меня есть действительное персистентное правило, но там тихо eth1 в /dev.

Проблема: Я не хочу перезагружать машину (она займет время, который не является хорошей вещью на building-VM-stage), и просто хотят иметь мой /dev восстановленный с некоторой командой, таким образом, у меня есть готовый к использованию VM без любых перезагрузок.

46
задан 20 April 2013 в 16:54

10 ответов

Я не знаю, помогает ли это в перезагрузке конфигурации сети, но когда я изменил /etc/udev/rules.d/70-persistent-cd.rules исправлять ссылку устройства DVD от /dev/dvd1 кому: /dev/dvd, Я должен был работать

sudo udevadm trigger

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

29
ответ дан 22 November 2019 в 23:57

sudo /etc/init.d/udev restart должен добиться цели. Некоторые команды Вы попробовали, если выполнено с sudo, могло бы быть эффективным также.

3
ответ дан 22 November 2019 в 23:57

Это должно сделать это безопасно:

sudo reload udev

Поскольку я использовал эту команду без проблем.

3
ответ дан 22 November 2019 в 23:57

Я исследовал это некоторое время с в значительной степени той же целью, и я не смог найти способ изменить имя сетевого интерфейса в живой системе.

Обходное решение, для которого я пошел, должно удалить/etc/udev/rules.d/70-persistent-net.rules файл в шаблоне, что означает, что на следующей начальной загрузке это будет рассматривать любую сетевую плату как eth0.

1
ответ дан 22 November 2019 в 23:57

Необходимо перезагрузить udev для инициирования изменения правил, но устройство не будет переименовано, если Вы не разгрузитесь/перезагрузите модуль драйвера.

Так modprobe -r e1000 && modprobe e1000 после udev перезагрузка должен добиться цели. Конечно, не делайте этого, если Вы нуждаетесь в сети и имеете только e1000 интерфейсы.

1
ответ дан 22 November 2019 в 23:57

У меня была подобная проблема. Так как я не хотел не торопиться к перезагрузке, я выполнил один лайнер с помощью предложения Chris Wesseling.

/etc/init.d/networking остановите управление && modprobe-r tg3 && udevadm - правила перезагрузки && udevadm триггерный && modprobe tg3 &&/etc/init.d/networking запускаются

Это работало на меня использующий сервер Ubuntu 12.04.02. Мои зарубки использовали 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) <-драйвер модуля ядра для nic

Одной проблемой, которую я имел, был плохой маршрут, который я зафиксировал с простым маршрутом, добавляет команда. Спасибо за справку Chris!

5
ответ дан 22 November 2019 в 23:57
udevadm trigger 

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

0
ответ дан 22 November 2019 в 23:57

Необходимо объединить весь совет, данный здесь в правильном порядке:

  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, редактирует этот ответ для отражения результатов, если Вы делаете.

20
ответ дан 22 November 2019 в 23:57

Таким образом для меня на VirtualBox с Ubuntu 12.04, я часто переключаюсь между Ethernet и беспроводной связью.

Таким образом, когда мое соединение изменяется, я должен выбрать Bridged Adapter from Devices> Network Settings. Или '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.

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

0
ответ дан 22 November 2019 в 23:57

Это работало на меня (не перезагружая)

udevadm control --reload-rules ; udevadm trigger

Благодарность автору этой страницы: http://memoryfail.wordpress.com/2013/04/02/renaming-network-device-names/

4
ответ дан 22 November 2019 в 23:57

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

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