根据这个信息,在google 搜索了copy or moved vmware linux,在VMware的官方论坛找到了这个帖子 lost eth0 when using a copied ubuntu-server vm,里面提到了多种解决方案,我最终是选择了sudo rm /etc/udev/rules.d/70-persistent-net.rules ,执行该命令后,重启ubuntu (sudo reboot),而后ifconfig ,出现了ip地址,问题获得解决。php
3.为 什么会出现这样的错误,这样作的缘由是什么(Why?)html
为何会产生这个问题呢,还须要从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地址,而后重启。linux
sudo rm /etc/udev/rules.d/70-persistent-net.rules 可以成功的缘由:ubuntu
该文件的内容:vim
# 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"this
# 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"google
# 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".net
将这个/etc/udev/rules.d/70-persistent-net.rules删除,重启,网卡eth0成功启动,并从新生成/etc/udev/rules.d/70-persistent-net.rules文件。
VMWare克隆或复制Linux虚拟机后eth0找不到的解决方案
现象描述:
最近装了虚拟机系统是 Fedora,为了之后使用方便对虚拟机进行克隆或复制。当使用克隆后的虚拟机时发现原来在基本系统中的网 卡eth0到了新系统却没有了,使用ifconfig -a会发现只有eth1。由于基本系统的网络相关配置都是基于eth0的,eth1没有网络相关的 配置,此时要正常该虚拟机中的网络,只有添加eth1的网络配置,这样每次都要修改网卡配置在作多Linux系统测试的时候很不方便。更进一步,若是基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。网络搜索发如今Debian etc下,udev将mac与网卡名称的对应关系保存在/etc/udev/rules.d/z25_persistent-net.rules中,在克隆出的虚拟机中只要删除跟NAME=”eth0″相关的行并重启系统便可。例如在 Debian etch中删除以下两行:# PCI device 0×1022:0×2000(pcnet32)SUBSYSTEM==”net”,DRIVERS==”?*”,ATTRS{address}==“00:0c:29:4c:46:01″,NAME=”eth0″
在个人Fedora 下修改/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″
另一种方法是:把里面的内容都删除,而后从新启动,系统也会从新发现网卡硬件,从新产生该文件。
ok!我拷贝了过来的Linux虚拟机没法上网,我用ifconfig命令查询了一下发现只有eth1和lo设备,没有eth0。因而我在Google上搜索了一下,找到了下面这篇文章(http://blog.chinaunix.net/u3/97076/showart_2015984.html)。《VMWare克隆或复制Linux虚拟机后eth0找不到的解决方案》
现象描述:最近装了虚拟机系统是 fedora9,为了之后使用方便对虚拟机进行克隆或复制。当使用克隆后的虚拟机时发现原来在基本系统中的网卡eth0到了新系统却没有了,使用 ifconfig-a会发现只有eth1。由于基本系统的网络相关配置都是基于eth0的,eth1没有网络相关的配置,此时要正常该虚拟机中的网络,只有添加eth1的 网络配置,这样每次都要修改网卡配置在作多Linux系统测试的时候很不方便。更进一步,若是基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一 次都会自动加1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。缘由分析:不少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中删除以下两行:# 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"便可。另一种方法是:把里面的内容都删除,而后从新启动,系统也会从新发现网卡硬件,从新产生该文件。这里补充一点:用下面命令来实现上述第二种方法也是同样的:cd /etc/udev/rules.dsudo rm *-net.rules //删除sudo reboot本人在用上述方法操做以后,再用ifconfig查看,确实找到了eth0设备,但没有ip地址。接下来用ifconfig命令设置ip地址,一些相关命令以下:ifconfig eth0 192.168.0.10 将采用默认子网掩码ifconfig eth0 192.168.0.10 netmask 255.255.255.252 (手动定义子网掩码)(重启后无效)ifconfig eth0 down(停用网卡)ifconfig eth0 up(激活网卡)service network restart(重启网络服务)/etc/rc.d/init.d/network restart(同上)我用ifconfig eth0 192.168.0.10 netmask 255.255.255.252 设置完ip,而后执行service network restart。系统提示:eth0已有的MAC地址和系统要设置的不符,设置MAC地址失败。由于网卡配置信息保存在/etc/sysconfig/network-scripts/ifcfg-eth0配置文件中,因此就去看看它吧。文件的基本内容以下:DEVICE=eth0(哪张网卡)
ONBOOT=yes
BOOTPROTO=static(静态ip状态设置)
BOOTPROTO=dhcp(dhcp获取)
IPADDR=192.168.1.8(静态ip地址)
NETMASK=255.255.255.0
GATEWAY=192.168.1.1(网关)
HWADDR=00:0C:29:96:38:F8(修改mac地址)(永久有效)
我把文件的内容进行了删减,只留下
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:0C:29:96:38:F8(修改成提示信息中指出的系统指望赋给eth0的MAC)
ONBOOT=yes
重启Linux后能够正常上网了。