Файл /etc/udev/rules.d/70-persistent-net.rules
автоматически генерируется в системе Linux с помощью udev, если он не существует, во время перезагрузки. Но я хотел бы знать, как создать этот файл правил (с помощью команды) без перезагрузки сервера.
Я некоторое время гуглил и обнаружил, что файл правил генерируется этим скриптом:
/lib/udev/write_net_rules
Тем не менее, невозможно запустить этот скрипт из командной строки, так как (я полагаю) он хочет запустить udev с правильно установленными переменными окружения. При запуске вручную выводится сообщение об ошибке «отсутствует $ INTERFACE». Даже если я установлю переменную env INTERFACE = eth0 до запуска скрипта, он все равно выдает ошибку «отсутствует действительное совпадение». Не говоря уже о том, что у меня есть два интерфейса ( eth0
и eth1
), и я хочу, чтобы файл правил был сгенерирован для обоих.
Я также думал о том, чтобы вызвать подобные события udev, надеясь, что он запустит скрипт от самого udev, но ничего не изменится:
udevadm trigger --type=devices --action=change
Итак, кто-нибудь знает, как восстановить постоянные сетевые правила в файле /etc/udev/rules.d/70-persistent-net.rules
без перезагрузки?
70-persistent-net.rules
ни/lib/udev/write_net_rules
сценария, ни сценария. Поэтому я не могу проверить, но предположительно$INTERFACE
переменная установлена в самом скрипте. Скорее всего, это передается в качестве аргумента. Можете ли вы показать нам содержание сценария?$INTERFACE
переменную. Существует гораздо больше просто используемых переменных, никогда не объявляемых. Это потому, что он вызывается udev, и udev устанавливает все переменные env до запуска скрипта при загрузке.Ответы:
Согласно man-странице
--action=change
это значение по умолчанию дляudevadm
.Поэтому лучше
--action=add
вместо этого попробовать . Это должно помочь:источник
В Ubuntu Server 16.04LTS 70-persistent-net.rules не существует.
все, что я сделал, было бежать:
Затем создайте файл, используя
и добавьте следующее
:wq
сохранить файлзатем перезагрузите и настройте файл / etc / network / interfaces. Затем перезагрузите снова.
источник
У меня была та же проблема, но я заметил, что все еще вижу интерфейсы в
ip addr
списке. Я использовал следующее (как root):Повторите для каждого интерфейса. Это было использовано для «восстановления» моего файла. (Примечание: в одном вызове будут перечислены все интерфейсы + добавлено переименование для сопоставления с одним, поэтому я рекомендую просмотреть выходной файл после одного вызова)
Определенно есть различия между ОС и текущими реализациями UDEV и сценариями поддержки. Отметим, что я использовал CentOS 6.8, когда сделал это успешно.
Кредит - я в основном ссылался на этот сайт. В нескольких ветках есть комментарий, в котором говорится об изменении скрипта, но я предпочел использовать переменные среды, так как это было чище: https://access.redhat.com/discussions/1240213
источник