全部博文(64)
分类: LINUX
2008-10-07 16:19:46
顺着这个帖子分析了网卡驱动的脚本加载过程
load_module () {
LC_ALL=C fgrep -xq "$1" /etc/hotplug/blacklist 2>/dev/null /*看看blacklist中是否有eth0,如果是的话,返回1,就不加载,否则返回0,加载*/|| modprobe $1 >/dev/null 2>&1 /*modprobe eth0*/
}
# Network
pushd /etc/sysconfig/network-scripts >/dev/null 2>&1#压入当前路径到栈中,将当前路径切换到/etc/sysconfig/network-scripts目录下
interfaces=`ls ifcfg* /*列出ifcfg开头的文件,一般有ifcfg-eth0,ifcfg-eth1,ifcfg-lo*/ | LC_ALL=C/*传递变量LC_ALL到egrep*/ egrep -v '(ifcfg-lo|:|rpmsave|rpmorig|rpmnew)'/*过滤掉ifcfg-lo*/ | \
LC_ALL=C egrep -v '(~|\.bak)$'/*滤掉~和.bak结尾的文件*/ | \
LC_ALL=C egrep 'ifcfg-[A-Za-z0-9\._-]+$'/*合法的ifcfg-**/ | \
sed 's/^ifcfg-//g'/*替换掉开始的ifcfg-,现在成了eth0 eth1*/ |
sed 's/[0-9]/ &/' /*在eth0的eth和0中间插入空格,由于没有使用g标志,只替换第一个数字*/| LC_ALL=C sort -k 1,1 -k 2n/*按第一和二列排序,第二列键为数字(-k 2n)*/ | sed 's/ //'/*取消eth 1中间的空格*/`
for i in $interfaces ; do
eval $(LC_ALL=C fgrep "DEVICE=" ifcfg-$i)/*从文件ifcfg-eth0中查找DEVICE=eth0的行,取出,做为变量保存*/
load_module $DEVICE /*加载eth0*/
done
popd >/dev/null 2>&1 /*回到原来目录*/