Linux 网卡启动应用层简单介绍

本文介绍了Linux(RHEL3.4.3-EL4)中网卡启动的顺序,从inittab开始,详细讲解了rc.sysinit如何确定网卡驱动类型,以及如何加载网络接口。在/etc/sysconfig/network-scripts下查找以eth开头的网卡,通过load_module加载。最后,通过network服务的ifup命令来启动网卡,解决因硬件位置改变导致的网卡命名问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在调一个linux网卡名不是eth的问题:

简单总结一下Linux网卡启动在启动中的顺序,并不是很全面,够以后备查。linux版本是RHEL3.4.3-EL4。

1、inittab

    这个文件在/etc/目录下

    A、启动级别

    id:3:initdefault, 3个数字代表启动级别,那么下面代码的部分将启动 13:3:wait:/etc/rc/d/rc 3 这一行,最终连接的是/etc/rc.d/rc3这个目录下,这个目录下以S开头的代表启动,以K开头的代表不启动,后面的数字排序后按照大小进行排序就是启动顺序,废话说多了,这个也不是启动的第一步。

    B、第一个启动的脚本rc.sysinit

     接下来启动的第一步开始了,rc.sysinit,目录不说了,直接可见。

      这里介绍跟网卡启动相关的部分

      eval `kmodule | while read devtype mod ; do
      case "$devtype" in
      "IDE") ide="$ide $mod"
      echo "ide=\"$ide"\";;
     "SCSI") scsi="$scsi $mod"
     echo "scsi=\"$scsi"\";;
     "NETWORK") network="$network $mod"
      echo "network=\"$network"\";;
      "AUDIO") audio="$audio $mod"
      echo "audio=\"$audio"\";;
      *) other="$other $mod"
     echo "other=\"$other"\";;
 esac
done`

    这段代码是确定网卡的驱动类型,比如intel 网卡的igb或者e1000e,保存在network变量里。

  

# Network
pushd /etc/sysconfig/network-scripts >/dev/null 2>&1
interfaces=`ls ifcfg* | LC_ALL=C egrep -v '(ifcfg-lo|:|rpmsave|rpmorig|rpmnew)' | \
            LC_ALL=C egrep -v '(~|\.bak)$' | \
            LC_ALL=C egrep 'ifcfg-[A-Za-z0-9\._-]+$' | \
     sed 's/^ifcfg-//g' |
     sed 's/[0-9]/ &/' | LC_ALL=C sort -k 1,1 -k 2n | sed 's/ //'`

for i in $interfaces ; do
 eval $(LC_ALL=C fgrep "DEVICE=" ifcfg-$i)
 echo "shyy interfaces: $interfaces ,,$DEVICE">/dev/kmsg
 ifconfig -a>/dev/kmsg
 load_module $DEVICE
done
popd >/dev/null 2>&1

这段代码是找到/etc/sysconfig/network-scripts以eth开头的网卡放到interfaces里面。然后调用load_module进行加载eth网卡,这段我也不是很明白,为什么要在下面还要根据驱动加载一遍。

for module in $network ; do
 load_module $module
done

是根据网卡信息继续加载网卡。网卡的服务基本上到此完毕。

      C、rc.d这里主要讲解network服务,对应的脚本文件是/etc/rc.d.init.d/network脚本。

             最终屏幕显示的是action $"Bringing up interface $i: " ./ifup $i boot这一行代码,这一行代码主要是使用的ifup命令,加载网卡。

            ifup指令是一个脚本,在/sbin/目录下

             目前查的最主要的是下面代码,根据etc/sysconfig/network-scripts文件夹下的ifcfg*文件进行mac地址和eth对应的匹配进行改名。

 

先说原因:新的设备网卡接到了PCIe插槽上,导致网卡启动和HWADDR字段的功能有冲突,导致的网卡加载的名字不对,而原来的设备网卡接在南桥芯片上,南桥芯片的网卡启动速度快,所以启动的时候使用HWADDR字段启动就没有问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值