解决Ubuntu或Fedora虚拟机重启网络时报错问题
副标题[/!--empirenews.page--] 如何解决Ubuntu或Fedora虚拟机重启网络时出现的“No such device eth0”或“Job failed”错误。 首先声明:下面是出现在Ubuntu和Fedora下面的问题,如果其它虚拟机也出现这样的问题,也可参看这些方法解决。 1. 错误症状 (1)Ubuntu下 用命令service networking restart重启网络或ifconfig eth0 up重启网卡时出现下面错误: eth0: ERROR while getting interface flags: No such device (2)Fedora下 用命令systemctl restart network.service重启网络时出现下面错误: Job failed. See system journal and 'systemctl status' for details. 2. 探究原因 在本地为用VMware为Linux创建虚拟机后,可能有两个原因导致网卡启动无效,从而显示上面的错误: (1)创建一个新的克隆镜像,将该虚拟机拷贝到别的机器上使用 (2)你本地机后来重装了主机系统(我是这种情形) 这是什么原因呢? 其实原因就在于:新克隆的或重装主机系统后的虚拟机镜像的网卡MAC地址已经变更。 打开虚拟机的.vmx文件,ethernet0.generatedAddress项记录了该虚拟机的mac地址。 (1)Ubuntu下 用ifconfig -a查看所有适配器信息,发现原来的eth0已经没了(有的),Ubuntu已经将新网卡重新命名为eth7(也可能命名为其它),怪不得出现“No such device eth0”错误了,eth0的确已经不在了。怎么解决?首先我们需要知道跟MAC地址相关的配置文件在哪? a. Ubuntu保存网卡mac地址和设备名的配置文件在 /etc/udev/rules.d/70-persistent-net.rules b. 网卡的网络配置文件大家都知道,在 /etc/network/interfaces 该配置文件中只有原来eth0的配置信息。 参考文献里给出了三种解决方案: 解决方案1 — 移动/删除rules文件 sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak 重启后Ubuntu会创建新的rules文件,将新网卡辨认为eth0,沿用原eth0的网络配置。 如果网络配置是自动获取IP,则无需做其他修改。 解决方案2 — 修改rules文件 sudo vi /etc/udev/rules.d/70-persistent-net.rules 原内容如下: # PCI device 0x1022:0x2000 (pcnet32) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth7" 修改eth7的配置,将其改为eth0,如果原来已经有eth0,则删除eth7配置,用eth7的mac地址替代eth0的mac地址。 # PCI device 0x1022:0x2000 (pcnet32) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth0" 重启后Ubuntu同样会将新网卡辨认为eth0,沿用原eth0的网络配置。 如果网络配置是自动获取IP,则无需做其他修改。 解决方案3 — 修改interfaces文件 sudo vi /etc/network/interfaces 将所有的eth0替换为eth7。 如果是静态地址则同时修改相应设置。 (2)Fedora下 根据错误信息,我们可以看下具体的错误提示是什么? cat /var/log/messages | grep network (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |