程序媛想事儿

专注C/C++/Java编程语言学习及常用算法探讨,推荐微信公众学习平台: programer-idea ,名称为:程序媛想事儿,欢迎大家学习关注!!!...

Linux系列:解决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


从错误提示“Device eth0 has different MAC address than expected, ignoring”可以确定的确是MAC地址变更的原因。

进一步验证,发现ifconfig显示的MAC地址与ifcfg-eth0里显示的的确不一样(这次eth0没有被重命名),如下:


解决方案也很简单,就是将ifcfg-eth0里的HWADDR变量值改为ifconfig命令里显示的MAC地址即可,再重启网络就没有错误了。


参考文献:

VMWare克隆后Ubuntu的“No such device eth0”错误


阅读更多
个人分类: Linux
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭