You are here VMware克隆后Ubuntu的"No such device eth0"错误

VMware克隆后Ubuntu的"No such device eth0"错误


By Eric Tou - Posted on 06 十一月 2008

环境:VMware 6.5,Ubuntu 8.10 Server

症状: 在本地为Ubuntu创建VMWare的虚拟机后,复制,创建一个新的克隆镜像,启动,网卡无效,显示错误”eth0: ERROR while getting interface flags: No such device”。

错误原因

新克隆的虚拟机镜像的网卡mac地址已经变更。打开虚拟机的.vmx文件,ethernet0.generatedAddress项记录了该虚拟机的mac地址。

查看所有适配器信息

ifconfig -a

发现除了原来的eth0外,Ubuntu已经将新网卡命名为eth1。

Ubuntu保存网卡mac地址和设备名的配置文件在

/etc/udev/rules.d/70-persistent-net.rules

网卡的网络配置保存在

/etc/network/interfaces

该配置文件中只有原来eth0的配置信息。

解决方案1:移动/删除rules文件(已验证)

重启后Ubuntu会创建新的rules文件。将新网卡辨认为eth0,沿用原eth0的网络配置。如果网络配置是自动获取IP,则无需做其他修改。

sudo mv /etc/udev/rules.d/70-persistent-net.rules
/etc/udev/rules.d/70-persistent-net.rules.old

解决方案2:修改rules文件(未验证)

sudo pico /etc/udev/rules.d/70-persistent-net.rules

原内容如下

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="00:0c:29:50:xx:xx", ATTR{type}=="1", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth1"

删除eth1的配置,用eth1的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 pico /etc/network/interfaces

将所有的eth0替换为eth1。如果是静态地址则同时修改相应设置。

按: 也许因为软件版本或者是网络配置的不同,以上的方法不能直接解决你的问题,但相信问题的原理是相同的,请仔细阅读并理解错误原因,耐心排查。