VMware 下Linux 移动/复制后无法识别网卡的解决过程

  1.遇到什么的问题(What)
在Vmware装了Ubuntu 9.04 Server,今天在启动的时候,发现找不到网卡eth0,
在输入ifconfig –a的时候,也没有任何Ethnet的信息,而输入eth0 down 的时候,提示我no device found(设备没法找到),我检查了VMware的EtherNET配置的时候,仍旧是NAT网络设置,和我原来的一样
没有了网卡,我就无法通过SecureCRT来连接Ubuntu,如果每次都要来到VMware来输入命令,很麻烦
2.怎样解决(How)
回想了在启动VMware的时候,系统提示我的Ubuntu文件被移动(位置被改变了),让我确认是moved还是copy的,我当时候选择了默认的(copy)

(This virtual machine may have been moved or copied. 
In order to configure certain management and networking features VMware Workstation needs to know which. 
Did you move this virtual machine, or did you copy it? 
If you don''t know, answer "I copied it".)
根据这个信息,在google 搜索了 copy or moved vmware linux,在VMware的官方论坛找到了这个帖子 

,里面提到了多种解决方案,我最终是选择了sudo rm /etc/udev/rules.d/70-persistent-net.rules ,执行该命令后,重启ubuntu (sudo reboot),然后ifconfig ,出现了ip地址,问题得到解决
3.为什么会出现这样的错误,这样做的原因是什么(Why?)
为什么会产生这个问题呢,还需要从UUID谈起(UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API ),虚拟机同样会有一个UUID,而且这个UUID是唯一的。 
虚拟机的UUID一般和虚拟机配置文件的位置和物理主机有关。当我们对一个虚拟机系统做移动操作的时候,我们不需要新建一个UUID。让我们复制一个虚拟机的时候我们应该选择建立一个新的UUID,来保证此虚拟机的唯一性

而当我选择了I copied it的时候,VM自然会为我新建一个UUID,一些新的Linux版本是把以太网与Mac地址绑定,当新的UUID建立的时候,Mac地址就被改变了,但由于eth0设备所装载的配置与读取默认配置的Mac地址不一致。
另外的解决方案:进入 /etc/sysconfig/network 或者/etc/sysconfig/network-scripts ,编辑eth0配置文件。比较在配置文件里面的Mac地址与输入ifconfig 输出的mac地址,如果两者不一致,统一为ifconfig输出的mac地址,然后重启

sudo rm /etc/udev/rules.d/70-persistent-net.rules能够成功的原因:
该文件的内容:
# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d2:3f:2c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:87:43:18", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:87:43:22", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:c8:3a:15", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

将这个/etc/udev/rules.d/70-persistent-net.rules删除,重启,网卡eth0成功启动,并重新生成/etc/udev/rules.d/70-persistent-net.rules文件

你可能感兴趣的:(linux,网卡,的)