今天,我在我的机器上安装了ubuntu 16.04 . 当我启动系统时,我无法从DHCP服务器获取IP地址 . 网络接口从eth0重命名为enp2s0 . 我只在运行命令后得到IP地址:
$ sudo ethtool -s enp2s0 autoneg off speed 100
我尝试在init脚本(/etc/rc.local)中添加此命令,但在重新引导系统后它不起作用 .
所以,从现在开始,当我的机器启动时,我总是需要手动添加上述命令来获取IP地址 .
谁能帮我解决这个问题?
提前致谢 .
最好的祝福,
2 回答
由于您使用的是ubuntu,请使用命令行并执行以下命令:
$ sudo crontab -e
并在最后添加以下内容时添加要在重新启动时执行的脚本:
@reboot ethtool -s enp2s0 autoneg off speed 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
添加以下行:
然后重新启动,看看它是否适合您 .
参考文献:
Force services to wait for the network to be configured
Using systemd Drop-In units
此外,未来SO不是_873057问题的最佳位置 . 请考虑使用http://askubuntu.com代替Ubuntu问题 .
我还要补充一点,您发现的行为更改可能被视为Ubuntu如何使用
systemd
模拟rc.local
支持的错误 . 如果建议的修复工作,也许Ubuntu shoudl改变rc.local
替换加载network-online
而不是network
.