2011-09-06 18:56:31 +0000 2011-09-06 18:56:31 +0000
46
46

如何在CentOS 6/RedHat中自动检测新网卡?

我在一个虚拟环境中使用CentOS 6,请问如何自动检测新网卡?在克隆一个虚拟版本的CentOS时,旧的eth适配器被 “删除",换成了新的适配器和net MAC地址。但是,ifcfg-ethn文件仍然存在。我想知道如何让CentOS像安装时一样,自动重新扫描和重新创建网络适配器/eth文件。http://www.centos.org/docs/5/html/Installation_Guid-en-US/s1-s390info-addnetdevice.html

我知道有一个快速的方法可以在GUI中完成,但是我们使用的是服务器,所以GUI在这种情况下不适用。请教一下,有什么帮助吗?

编辑。@OldWolf建议使用Kudzu,但是从Centos 5开始,Kudzu已经被删除了,所以我宁愿避免使用。有一个Linux在初始安装时运行的程序 - 谁能帮我弄清楚那是什么,这样我就可以手动触发它?

答案 (8)

52
52
52
2011-09-08 19:34:54 +0000

使用CentOS 6,现在一切都由udev处理了。进入/etc/udev/rules.d,删除70-persistent-net.rules文件,然后重新启动。如果你用手打开它,你会看到原来的 NIC MAC是eth0,新的是eth1

删除文件后,在启动时强制检测过程再次运行,克隆过程中不会留下任何包袱,即旧的 NIC MAC地址(es)。很痛苦,以前的版本kudzu会直接用以前的版本处理就好了。

5
5
5
2012-11-19 06:44:46 +0000

你也可以使用这个工具(这不是GUI工具,是TUI工具。基于文本的用户界面)

[root@localhost ~]# system-config-network-tui

输入上面的命令并按回车键

然后会出现

选择设备配置并按回车键

然后会出现

这里的eth0指的是/etc/sysconfig/network-scripts/ifcfg-eth0 eth0

无论在ifcfg-eth0中做了什么编辑,都会影响到&007文件

4
4
4
2013-03-13 00:47:09 +0000

你需要编辑两个文件,删除两个文件中的Mac地址的引用:

/etc/sysconfig/network-scripts/ifcfg-eth0 - 删除HWADDR=行。

4
4
4
2012-11-19 06:21:11 +0000

Delete the persistent rules file:

rm /etc/udev/rules.d/70-persistent-net.rules
nano /etc/sysconfig/network-scripts/ifcfg-eth0

编辑 ifcfg-eth0:

reboot

REMOVE the HWADDR line altVE (或改成与新网卡的MAC地址相匹配)。

3
3
3
2013-05-21 15:57:29 +0000

我创建和删除了很多CentOS 6虚拟机,我写了一些Bashfu来修复在VirtualBox中克隆时的eth0。

1
1
1
2013-09-01 01:17:52 +0000

我没有使用Vmware,而是用virsh的KVM–这是我的做法。

用CentOS 6.4创建了一个 “基础 "映像,这是我所有克隆的源头。第一次启动后,我创建了一个像这样的脚本

cat /etc/init.d/manglemac 
#!/bin/bash
#
# manglemac This starts and stops mangle-mac
#
# chkconfig: 2345 11 88
# description: This obtains tha mac of eth0 and writes into ifcfg

mac=$(grep -H . /sys/class/net/*/address | grep eth0 | cut -d ':' -f2-10)
match_mac=$(grep $mac /etc/sysconfig/network-scripts/ifcfg-eth0)

if [-z "$match_mac"];
then
   echo HWADDR=$mac >> /etc/sysconfig/network-scripts/ifcfg-eth0
fi
chkconfig --add manglemac

添加到init中,用

&001

删除了所有HWADDR或UUUID的引用到/etc/sysconfig/network-scripts/ifcfg-eth0中,同时也删除了/etc/udev/rules.d/70-persistent-net.rules中的udev规则。一切都很顺利。我做的这个脚本很简单,但工作起来很好,不过它对你的网络设置做了一些假设(只有eth0)。

1
1
1
2011-09-06 21:04:42 +0000

如果你唯一的问题是mac地址,你可以运行类似于

TEST=`ifconfig | grep eth | awk '{ print $5}'`; sed "s/HWADDR.*/HWADDR\=$TEST/g" ifcfg-eth0 > TMP; mv TMP ifcfg-eth0

更新HWADDR条目。(未经测试,引用自 此处 )

编辑 /etc/sysconfig/hwconf,删除之前的网卡,然后重新运行 kudzu 看看它是否检测到新的硬件。你可能需要重新启动。

0
0
0
2015-05-01 00:14:57 +0000

我在处理多个网卡,上面的东西对我来说都不起作用(VMware Fusion 7/VMware 6及以下),所以我写了一个脚本。这个tarball是这里

这里是自带的README

  • 这个tarball和相关的脚本将改变你最近克隆的VMware CentOS 6或以下的机器的MAC地址(没有systemd。 )
  • 你只需要在你要克隆的机器中做一次就可以了:

问题:

  • 不知道为什么,但有时你需要第二次重启网络才能让所有的网卡被识别:

  • 这对我来说没有问题,但这个脚本依赖于lshw返回网卡的顺序与ifcfg-eth?相同

  • 这假设你的网卡设备是e1000。

  • 这可能值得切换一下ifcfg-eth?文件的编号,让它们与lshw返回的文件相匹配,以防万一它不起作用,而你的机器有很多网卡。

  • 在第一次启动后,/usr/bin/change_mac_address.pl会被移到/usr/bin/change_mac_address.pl.old

  • 这将使它在每次重启时不会运行,尽管如果没有MACDADDY,它也不会做任何事情。