根據這個信息,在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後能夠正常上網了。