1. 程式人生 > >Linux啟動網絡卡時出現RTNETLINK answers: File exists錯誤解決方法

Linux啟動網絡卡時出現RTNETLINK answers: File exists錯誤解決方法

一、問題描述

VMware中克隆虛擬機器是經常的事情,雖然如此,用到虛擬機器時,本人還是喜歡新安裝一個作業系統,針對伺服器的應用,在安裝作業系統時,一併安裝好,並且也花不了多少時間。但最近需要大量的配置一樣的虛擬機器進行測試,故安裝了一個模板虛擬機器,然後直接複製模板虛擬機器到不同的資料夾,然後使用VMware 直接開啟使用,但問題出來了,開啟這些複製(克隆)的虛擬機器全部會出現網路無法啟動的問題。使用 service network start  命令出現報錯如下:

device eth0 does not seem to be present
RTNETLINK answers: File exists 


RTNETLINK answers: File exists 

RTNETLINK answers: File exists

二、原因分析

使用VMware 打開復制過來的作業系統檔案,VMware會為新產生的虛擬機器配置一個與原始虛擬機器網絡卡MAC地址不同的網絡卡。對於CentOS這樣的Linux系統,會把執行時的網絡卡MAC地址記入到 /etc/udev/rules.d/70-persistent-net.rules 檔案中。這樣克隆好的新系統裡也儲存了這個記錄。當新系統啟動時,由於vmware已經為其配置了不同的MAC地址,因此係統會在啟動掃描硬體時把這個新的MAC地址的網絡卡當做是eth1,並且增加記入上述檔案中。而此時配置檔案裡的 /etc/sysconfig/network-scripts/ifcfg-eth0 裡記錄的還是原來的MAC地址,而這個MAC地址在新系統裡是不存在的,所以無法啟動。

三、解決方法
編輯/etc/udev/rules.d/70-persistent-net.rules
找到含NAME="eth0"的那行直接刪除,如下:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ac:95:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

--------------------------------------------------------------------------------
 
編輯含NAME="eth1"的那行:"eth1"更改為"eth0"

--------------------------------------------------------------------------------
 
編輯/etc/sysconfig/network-scripts/ifcfg-eth0
更改HWADDR地址跟上面rules檔案的MAC地址一樣。

--------------------------------------------------------------------------------
最後 init 6 或者reboot 系統搞定;(必須嘗試)

這個是另外一個部落格寫的,能解決一部分問題:

之前也遇到過這種情況,克隆的虛擬機器在網絡卡一直有問題,也沒有太擔心,無非是兩種方案:

第一種: 和 NetworkManager 服務有衝突,這個好解決,直接關閉 NetworkManger 服務就好了, service NetworkManager stop,並且禁止開機啟動 chkconfig NetworkManager off 。之後重啟就好了。

第二種:和配置檔案的MAC地址不匹配,這個也好解決,直接修改  /etc/udev/rules.d/70-persistent-net.rules檔案的MAC地址和 /etc/sysconfig/network-scripts/ifcfg-eth0一樣就好了。

這兩種方法整了半天,還是沒弄出來,折磨了一晚上,今天早晨還繼續搞,結果從哪個不知名的帖子上發現了這麼一條命令  ip addr flush dev eth0,(重新整理一下網絡卡資訊,這個並沒有解決我的問題)。

我遇到問題是,通過VMware 的ESXi6.0 的雲主機下載了一個配置好的centos7 的伺服器,下載過程我的另一篇文章:https://blog.csdn.net/weixin_37569048/article/details/80325609

下載過程大概20分鐘很快了已經,下載後可以通過VMware 直接開啟虛擬機器映象,但是問題來了,ifconfig 時只有lo,virbg0,兩個網絡卡,我們經常用的eno16777984怎麼竟然沒有,,查看了eno16777984配置檔案還存在,service network restart 就報錯了,RTNETLINK answers: File exists

解決方案:

我的不是最終解決方案,但是可以解決部分問題,參考以上兩種方案:

    ①檢視複製後的映象,VMware給賦值的新的MAC地址

        

②複製新的MAC地址後,修改編輯/etc/udev/rules.d/70-persistent-net.rules

    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ac:95:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"                //"00:0c:29:ac:95:31"==》改為新的MAC地址

    /etc/sysconfig/network-scripts/ifcfg-eth0  對應自己的網絡卡的配置檔案

    修改或新增HWADDR=新的MAC地址    儲存!

③reboot 虛擬機器

    此時ifconfig,你會發現網絡卡會多一個,就是你剛修改的那個,據說此時service network restart就好用的,但是我的不可以,看到網絡卡了,我們可以配置臨時的ip地址,先用ifconfig 網絡卡名 ip地址,此時的ip地址是可以用的!

到這裡問題解決了一半,網絡卡重啟問題還要解決,,,,待續!!