Vmware中Clone虚拟机后提示”No such device eth0”解决

说明:Linux kernel series 2.6.xx以后很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。

Linux下的配置文件为
/etc/udev/rules.d/75-persistent-net-generator-rules
自动生成/etc/udev/rules.d/70-persistent-net.rules

如果你克隆虚拟机,系统中已经有eth0的信息,对于VMware分配的这个新的网卡,udev会自动将其命名为eth1,已经有eth0/1/2,一直累加上去,所以在你的系统启动后,你使用ifconfig看到的网卡名为eth1。而没看到eth0,但是你的配置文件只有/etc/sysconfig/networking-scripts/ifcfg-eth0

方法1:直接删除配置文件70-persistent-net.rules

因为这个是自动生成的,所以直接删除没关系,直接删除配置文件,重启之后Linux就会找到新的网卡了。

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

重启后如果网卡起不来,不要慌,删除/etc/sysconfig/networking-scripts/ifcfg-eth0的如下行,或者修改为vmware分配的新MAC地址:(记住,是删除,或者修改成现有的mac地址)

HWADDR=70:E2:84:12:FC:EA

重启网卡 service network restart

方法2:修正配置文件

修改配置文件,将原本的eth0删除,然后修改eth1的NAME="eth1"NAME="eth0",重启之后Linux就会使用新的配置文件设置网卡了。也就是说,你在ifconfig下看到的eth1还是eth2,你都可以直接修改ifcfg-eth0,改成你现有的网卡名,明白么!

修改前的/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{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:85:XX:XX", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

删除掉eth0那一行,保留余下的行:

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:85:XX:XX", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

那么我们来回顾一下如何操作最简单(三步奏):

  1. 删除/etc/sysconfig/network-scripts/ifcfg-eth0里面的如下几行:
    DEVICE=eth0
    HWADDR=52:54:00:4F:C7:FE
    TYPE=Ethernet
    UUID=d50b22d0-5b4d-4d2a-91ba-e6568befef04
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=DHCP
  2. 清空70-persistent-net.rule,让他自动生成 > /etc/udev/rules.d/70-persistent-net.rules
  3. 重启服务器,重新获取网卡信息