systemd网络服务不起作用?

时间:2016-05-25 11:04:20

标签: networking interface systemd

今天,我在我的机器上安装了ubuntu 16.04。 当我启动系统时,我无法从DHCP服务器获取IP地址。 网络接口从eth0重命名为enp2s0。 我只在运行命令后获得IP地址:

$ sudo ethtool -s enp2s0 autoneg off speed 100

我尝试在init脚本(/etc/rc.local)中添加此命令,但在重启系统后它不起作用。

所以,从现在开始,当我的机器启动时,我总是需要手动添加上述命令来获取IP地址。

有人可以帮我解决这个问题吗?

提前致谢。

最诚挚的问候,

2 个答案:

答案 0 :(得分:0)

由于您正在使用ubuntu,请使用命令行并执行以下命令:

$ sudo crontab -e

并添加您想要在重新启动时执行的脚本,方法是在最后添加:

@reboot ethtool -s enp2s0 autoneg off speed 100

希望这有帮助。

答案 1 :(得分:0)

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 shoudl会将rc.local替换更改为network-online而不是network