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地址是可以用的!

到这里问题解决了一半,网卡重启问题还要解决,,,,待续!!

    

    

猜你喜欢

转载自blog.csdn.net/weixin_37569048/article/details/80333052