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

≡放荡痞女 提交于 2019-11-29 05:38:46

    最近在虚拟机上安装了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 仅仅只识别到一张网卡。

    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的记录。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!