Сетевой сервис systemd не работает?
Сегодня я устанавливаю Ubuntu 16.04 на мою машину. Когда я загружаю систему, я не могу получить IP-адрес от сервера DHCP. Сетевой интерфейс переименован в enp2s0 из eth0. Я получаю IP-адрес только после запуска команды:
$ sudo ethtool -s enp2s0 autoneg off speed 100
Я пытаюсь добавить эту команду в сценарий инициализации (/etc/rc.local), но она не работает после перезагрузки системы.
Итак, с этого момента, когда моя машина загружается, мне всегда нужно вручную добавлять вышеуказанную команду, чтобы получить IP-адрес.
Может ли кто-нибудь помочь мне решить эту проблему?
Заранее спасибо.
С уважением,
2 ответа
Поскольку вы используете Ubuntu, используйте командную строку и выполните следующее:
$ sudo crontab -e
и добавьте ваш скрипт, который вы хотите выполнить при перезагрузке, добавив в конце:
@reboot ethtool -s enp2s0 автоматическое отключение со скоростью 100
Надеюсь это поможет.
systemd считает и "rc.local", и "crontabs" "наследием". У него есть замены для обоих. Тем не менее, Ubuntu 16.04 поддерживает обе концепции.
Я думаю, что ваша проблема в том, что сейчас rc.local
запускается до того, как сеть полностью подключена к сети, что приводит к сбою команды.
смотреть на /lib/systemd/system/rc.local.service
чтобы увидеть, как systemd
работает ваш файл rc.local. В частности, обратите внимание, что линия After=network.target
,
Попробуйте создать этот файл:
/etc/systemd/systemd/rc.local.service.d/10-wait-for-network.conf
Добавьте эти строки к нему:
[Unit]
After=network-online.target
Затем перезагрузите компьютер и посмотрите, работает ли он для вас.
Рекомендации:
Кроме того, в будущем SO не лучшее место для systemd
вопросы. Взгляните на http://askubuntu.com/ для Ubuntu.
Я также добавлю, что изменение поведения, которое вы обнаружили, может рассматриваться как ошибка в эмуляции Ubuntu rc.local
поддержка с systemd
, Если предложенное исправление работает, возможно, Ubuntu должен изменить rc.local
замена для загрузки после network-online
вместо network
,