克隆虚拟机导致Linux无法启动网卡的分析与解决

1 问题描述

VMware中克隆虚拟机是经常的事情,对于客户机是Winows的虚拟机直接克隆就可以使用。对于客户机是Linux的虚拟机克隆后会出现网络无法启动的问题。
使用service network start 命令会出现报错如下:
device eth0 does not seem to be present

2 原因分析

使用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地址在新系统里是不存在的,所以无法启动。

3解决办法

在新系统里,把rules文件里记录的老MAC对应的那个eth0一行删除掉,然后把新MAC对应的eth1的名字改为eth0。然后在ifcfg-eth0文件里把HDADDR的值改为新的MAC地址。
这样rules和ifcfg-eth0就彼此对应(rules里的eth0对应ifcfg-eth0文件名,rules里的mac对应ifcfg-eth0文件里的HDADDR)好了。此时需要重新启动系统一切就OK了。

一键开网脚本

#!/bin/bash
name=$(cat /etc/udev/rules.d/70-persistent-net.rules |grep -oP '(?<=NAME=").*(?=")'|tail -1)
mac=$(cat /etc/udev/rules.d/70-persistent-net.rules |grep -oP '(?<=ATTR{address}==").*?(?=",)'|tail -1)
sed -i s/DEVICE.*/DEVICE=${name}/ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s/HWADDR=.*/HWADDR=${mac}/ /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart

4.Linux CentOS6.8配置静态IP详细图文教程

一:运行”vi /etc/sysconfig/network-scripts/ifcfg-eth0“命令打开配置文件

二:按"i"键进入编辑状态,然后将配置修改成如下图所示,红箭头标出项修改成自己网段内的IP即可

克隆虚拟机导致Linux无法启动网卡的分析与解决_第1张图片
image

三:按"esc"键退出编辑模式,输入":wq"保存并退出,如下图所示

image

四:运行"service network restart"命令,重启网络服务

谢谢

你可能感兴趣的:(克隆虚拟机导致Linux无法启动网卡的分析与解决)