克隆CentOS 6后网卡没法自动识别的解决方法

    最近在虚拟机上安装了CentOS 6.2。为了之后使用方便, 对虚拟机进行克隆。当使用克隆后的虚拟机时,发现原来在操做系统中的网卡eth0到了新系统却没有了,使用 ifconfig -a会发现只有eth1。由于源系统不少网络配置都是基于eth0的,eth1没有网络相关的配置。若是每次对虚拟机进行克隆后都要修改网卡配置,显示是很是不方便的。 并且还发现一个规律,基于此克隆虚拟机继续克隆新的虚拟机,网卡的标识会自动加1(即第二次克隆后会变成eth2)。但使用dmesg命令却显示内核只识别到网卡eth0。

    原来不少Linux distribution使用udev来动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在Debian eth中,udev会在系统引导的过程当中识别网卡,将mac地址和网卡名称对应起来,并记录在udev的规则脚本中。而VMware会自动生成虚拟机的 mac地址。这样,源系统已经记录了该虚拟机的网卡mac地址对应于网卡eth0,当克隆出的新的虚拟机后,因为mac地址发生改变,udev会自动将该mac对应于网卡eth1,以此类推。udev会记录全部已经识别的mac与网卡名的关系,而且每次克隆网卡名称会自动加1,但实际上kernel 仅仅只识别到一张网卡。 shell

    udev一般会将mac与网卡名称的对应关系保存在形如/etc/udev/rules.d/70-persistent-net.rules的文件中,例如在/etc/udev/rules.d/70-persistent-net.rules中有相似以下的片断: 网络

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ad:06:2a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

咱们只须要把"eth1"修改成"eth0"便可;或者把/etc/udev/rules.d/z25_persistent-net.rules里面的内容所有删除,而后从新启动计算机,系统会从新产生该文件的内容。

PS: 若是你修改了虚拟机的网卡物理地址,系统也会在/etc/udev/rules.d/70-persistent-net.rules追加一条eth1的记录。
spa

相关文章
相关标签/搜索