今天,我在我的机器中安装了ubuntu 16.04。当我启动系统时,我无法从DHCP服务器获取IP地址。网络接口从eth0重命名为enp2s0。我只在运行命令后得到IP地址:
$ sudo ethtool -s enp2s0 autoneg off speed 100
我试图在init脚本(/etc/rc.local)中添加这个命令,但在重新启动系统后它就不起作用了。
所以,从现在开始,当我的机器启动时,我总是需要手动添加上面的命令来获取IP地址。
有人能帮我解决这个问题吗?
提前谢谢。
谨致问候,
由于您使用的是ubuntu,请使用命令行并执行以下操作:
$sudo crontab-e
并通过在最后添加以下内容来添加您希望在重新启动时执行的脚本:
@重新启动ethtool-s enp2s0 autoneg关闭速度100
希望这能有所帮助。
systemd认为"rc.local"one_answers"crontab"都是"遗留"。两者都有替代品。然而,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
然后重新启动,看看这是否适合你。
参考文献:
- 强制服务等待网络配置
- 使用systemd插入单元
此外,在未来,SO不是systemd
问题的最佳位置。考虑http://askubuntu.com而是Ubuntu的问题。
我还要补充一点,您发现的行为更改可能被认为是Ubuntu如何用systemd
模拟rc.local
支持的一个错误。如果提议的修复有效,也许Ubuntu应该将rc.local
的替换更改为在network-online
之后加载,而不是在network
之后加载。