CentOS中udev对于网卡加载的配置:(/etc/udev/rules.d/60-net.rules)
ACTION=="add", SUBSYSTEM=="net", IMPORT{program}="/lib/udev/rename_device"
SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/net.hotplug"
而net.hotplug是这么写得:
export IN_HOTPLUG=1
if [ -x /sbin/ifup ]; then
addr=$(get_hwaddr ${INTERFACE}) 根据interface(eth0等)查找hwaddr,查找方式就是cat /sys/class/net/eth0/addr
if [ -n "$addr" ]; then
nconfig=$(get_config_by_hwaddr ${addr}) 根据addr查找config文件
[ -n "$nconfig" ] && INTERFACE=$nconfig 根据config文件改名interface
fi
exec /sbin/ifup $INTERFACE ifup device
fi
;;
esac
;;
最后,ifup会根据配置文件的内容对interface再次更名,完毕后udev会更新/sys/class/net/下的目录。这说明配置文件最终决定了eth的名称。
比如原来有个eth1:
eth1 Link encap:Ethernet HWaddr 00:1D:09:1F:FF:6E
将eth1down掉后,该配置文件ifcfg-eth1为ifcfg-eth3,并将内容中的device项也改掉:
DEVICE=eth3
重启udev和网络:
udevcontrol reload_rules
service network restart
好吧,eth1就变成eth3了,-_-|||,配置文件不变就是永久生效……
eth3 Link encap:Ethernet HWaddr 00:1D:09:1F:FF:6E
本文介绍了CentOS中udev如何处理网卡加载,详细解析了60-net.rules及net.hotplug脚本的工作流程,包括如何根据接口名查找硬件地址,依据硬件地址找到配置文件并更改接口名,最后通过ifup服务启动设备。通过示例展示了如何将eth1更改为eth3,并指出配置文件的变更将永久生效。
1170

被折叠的 条评论
为什么被折叠?



