Chinaunix首页 | 论坛 | 博客
  • 博客访问: 372410
  • 博文数量: 64
  • 博客积分: 2975
  • 博客等级: 少校
  • 技术积分: 831
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-14 10:59
文章存档

2014年(2)

2012年(7)

2010年(40)

2009年(5)

2008年(8)

2007年(2)

分类: 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 /*回到原来目录*/

阅读(1277) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~