知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

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

发布时间:2014-09-05 15:55:23作者:知识屋


克隆CentOS 6网卡无法自动识别的解决方法
 
VMware 下LINUX下使用ifconfig查看时无eth0网卡相应信息! 
 
最近装了虚拟机系统centos 6.2,为了以后使用方便对虚拟机进行克隆或复制。当使用克隆后的虚拟机时发现原来在基本系统中的网卡eth0到了新系统却没有了,使用 ifconfig -a会发现只有eth1。因为基本系统的网络相关配置都是基于eth0的,eth1没有网络相关的配置,此时要正常该虚拟机中的网络,只有添加eth1的网络配置,这样每次都要修改网卡配置在做多Linux系统测试的时候很不方便。更进一步,如果基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。
  www.zhishiwu.com  
原因分析: 很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在Debian etch中,udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而VMware会自动生成虚拟机的 mac地址。这样,由于基本系统的虚拟机已经记录了该虚拟机的网卡mac地址对应于网卡eth0,在克隆出的虚拟机中由于mac地址发生改变,udev会自动将该mac对应于网卡eth1。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而其实kernel 仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。 
 
解决方案:网络搜索发现在Debian etch下,udev将mac与网卡名称的对应关系保存在/etc/udev/rules.d/z25_persistent-net.rules中, 
在克隆出的虚拟机中只要删除跟NAME="eth0"相关的行,并重启系统即可。 
 
例如在Debian etch中删除如下两行:   www.zhishiwu.com  
# PCI device 0x1022:0x2000(pcnet32) 
SUBSYSTEM=="net",DRIVERS=="?*",ATTRS{address}=="00:0c:29:4c:46:01",NAME="eth0" 
在我的fedora9 下修改/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="eth0" 
然后把eth1对应的哪一行的"eth1"修改为"eth0"即可。 
 
另外一种方法是:把里面的内容都删除, 
然后重新启动, 
系统也会重新发现网卡硬件, 
重新产生该文件。 一切正常。
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜