VMWARE複製後網絡不可用:Device eth0 does not seem to be present, delaying initialization.

  今天在VM裏安裝了CentOS 6.4位操作系統,完畢後將VM的虛擬機存放文件的目錄重命名了,並且複製了兩個虛擬機,準備做做實驗,於是我打開三個虛擬機,彈出一個提示:“此虛擬機可能被移動或複製。爲了配置特定的管理和網絡功能,VMware Workstation需要知道是否已移動或複製了此虛擬機。如果您不知道,請回答‘我已複製該虛擬機(P)’。”我毫不猶豫的點了我已複製該虛擬機。(VM版本:10.0.1 build-1379776,原生簡體中文,挺爽,終於不用下載漢化包了)



  三臺虛擬機很順利的進入系統,準備大幹一場,結果悲劇了,網絡連不上,啓動網絡時提示:

  Device eth0 does not seem to be present, delaying initialization.

  輸入ifconfig一看,只剩下lo接口,再ifconfig -a一看,尼瑪,多了一個eth1接口。而/etc/sysconfig/network-scripts/下也沒有ifcfg-eth1的配置文件。悲劇了,這可咋整?一時沒了頭緒,遇到問題只能baidu、Google,於是梳理了一下系統網絡啓動的過程,一般網絡啓動都是下達指令service network start啓動網絡,這些都是腳本,能尋根究底,於是去查看/etc/init.d/network腳本,尼瑪不看不知道,看了之後頭暈了,涉及的東西太他媽多了。大概流程個人梳理了下:

  network腳本加載/etc/init.d/functions、/etc/sysconfig/network、/etc/sysconfig/network-scripts/network-functions 等各種配置各種函數,然後查找存在的/etc/sysconfig/network-scripts/ifcfg*配置文件,然後調用/sbin/ifup準備啓動接口,然後就是各種判斷各種初始化,接着再調用/etc/sysconfig/network-scripts/ifup-eth腳本啓動接口,不成功便成仁。流程太多,一時半會還真研究不透。反正網上也說了,跟MAC地址有關,腳本裏邊兒也是各種MAC地址獲取啥的。看着看着,也大概有了個認識。最後查了下/var/log/message日誌,裏邊兒赫然有一句:

  Oct 31 12:10:24 localhost kernel: udev: renamed network interface eth0 to eth1

  網卡名稱被重命名了!尼瑪,貌似真相要出現了。

  於是根據網上的資料猜測了下:
  1. 首先應該跟最初啓動虛擬機的提示有關,我點擊了複製該虛擬機,於是VM會自動生成一個新的網卡MAC地址。
  2. 系統啓動的時候,因爲是複製的原來的文件,MAC地址是原來保存在虛擬機裏的,默認情況下一般是將第一塊網卡命名爲eth0,而這時內核的驅動網卡模塊發現實際的網卡地址與已經保存的MAC地址不符,於是將新的MAC地址與新的網卡名稱追加到進系統。
  3. 然後根據上述流程啓動網絡。
  4. 最後沒啓動成功。

  所以可以知道,網卡命名規則是根據網卡的MAC地址來命名的,而這個程序就是udev。既然是程序,必然有其相關的文件。文件/etc/udev/rules.d/70-persistent-net.rules 保存了網卡MAC地址與其名稱的規則,而生成這個規則的腳本:/lib/udev/write_net_rules 。所以,我們可以自定義規則和網卡的配置文件,與之一一對應即可。

  所以,這裏的解決辦法就是:

  1. /etc/sysconfig/network-scripts/ifcfg-eth0 中如果有HWADDR選項,將其改爲你現在的真實的網卡MAC地址。最簡單的方法,直接刪除這個文件裏的HWADDR選項,沒有影響。啓動網絡的時候沒有HWADDR會自動獲取到網卡的實際MAC地址,反而如果配置文件裏的HWADDR地址與實際的網卡不符而導致網絡啓動失敗。

  2. 將/etc/udev/rules.d/70-persistent-net.rules裏的NAME="ethX" 改爲你想要的,比如NAME="eth0",將其他的不需要的全部刪掉!或者直接刪掉這個文件,重啓系統會生成新的!

  改完後直接重啓網絡是不管用的。這裏要先卸載網卡模塊,然後在加載模塊

  modprobe -r pcnet32
  modprobe pcnet32

  然後再重啓網絡即可。

  所以:其實最簡單的辦法,刪除eth0配置文件裏的HWADDR選項,刪除/etc/udev/rules.d/70-persistent-net.rules文件 ,重啓系統,OK!

  參考:

1. http://www.linuxyan.com/linux-service/181.html

2. http://www.360doc.com/content/11/1109/20/36491_163150350.shtml

發佈了44 篇原創文章 · 獲贊 22 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章