您的位置:首页 > 运维架构 > Linux

Linux服务器网卡驱动安装及故障排除

2010-04-19 13:18 197 查看
一:查看内置网卡驱动
一般网卡驱动存放在/lib/modules/release/kernel/drivers/net,其中release是内核版本,可以使用命令:“uname -r”获得。对于Redhat Linux 9.0是2.4.20-8。
 #ls /lib/modules/2.4.20-8/kernel/drivers/net/

  3c501.o atp.o eth16i.o ni52.o smc-ultra.o

  3c503.o bonding.o ethertap.o ni65.o starfire.o

  3c505.o cs89x0.o ewrk3.o ns83820.o strip.o

  3c507.o de4x5.o fc pcmcia sundance.o
...............................................................................

以.o 后缀结束的文件就是驱动程序。而没有后缀的是驱动程序目录(红色)。
二:检查网卡是否加载
网卡驱动程序是作为内核模块动态加载的。可以使用命令“lsmod”查看加载情况:
## lsmod
tulip 45025 1

via_rhine 23113 2

ext3 116809 2

第一列是模块名称;第二列是模块大小;第三列是调用数。调用数后面的信息对每个模块而言都有所不同。如果 (unused) 被列在某模块的那行中,该模块当前就没在使用。如果 (autoclean) 被列在某模块的那行中,该模块可以被 rmmod -a 命令自动清洗。当这个命令被执行后,所有自从上次被自动清洗后未被使用的被标记
“autoclean”的模块都会被卸载。

如果没有检测到硬件,用硬件检测程序kuduz检测网卡,它和Windows中添加新硬件差不多。kudzu程序是通过查看/usr/share/hwdata/目录下的文件识别各种硬件设备的。如果核心支持该硬件,并且有该驱动程序就可自动装载。首先说明的是Linux下对网卡的支持往往是只对芯片的,所以对某些不是很著名的网卡,往往需要知道它的芯片型号以配置Linux.比如我的Top link网卡,就不存在Linux的驱动,但是因为它是NE2000兼容,所以把它当NE2000就可以在Linux下用了.所以当你有一块网卡不能用,在找Linux的驱动程序之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如3c509,ne2000等。这样的型号一般都在网卡上最大的一快芯片上印着,抄下来就是了。对于ISA接口的NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式.很多现在的网卡缺省 都是PnP模式,这在Windows下的确能减少很多麻烦,但是Linux不支持,所以Linux下必须是Jumpless模式.一般所有网卡都有带的驱动盘和DOS下可执行的一个设定程序,用该程序将网卡设为 Jumpless。对于PCI网卡,可以使用命令来查看:lspci。在显示的列表中找到“Ethernet Controller”,记下厂商和型号。然后使用modprobe尝试加载正确的模块,比如modprobe 3c509。如果出现错误,说明该模块不存在这时候你应该找到正确的模块并且重新编译。问题一般即可解决。

如果很不幸的,您使用的是比较罕见的一些网卡,或者是 Linux 核心支持不够的网卡,以致于在安装 Linux 时,并无法检测到网卡,那也不用担心,我们可以使用较为简单的核心模块编译来支持这张网卡。下面以笔者的3Com的3CR990-TX-97 网卡为例(一款具有安全特性网卡)看看如何进行模块编译。首先在其网站http://www.3com.com/infodeli/tools/nic/linuxdownload.htm 下载合适你使用内核版本的相关驱动程序,这里以2.4内核为例。

  #wegt http://www.3com.com/infodeli/tools/nic/3c990-1.0.0a.tar.gz
  另外在开始编译核心模块之前,因为驱动程序需要配合核心来编译,所以会使用到 kernel source 或者是 kernel header 的数据,此外,也需要编译器 ( compiler ) 的帮助,因此,先确定您的 Linux 系统当中已经下列软件的存在 :kernel-source 、kernel 、gcc 、make。

  #tar zxvf 3c990-1.0.0a.tar.gz

  #make

  此时会产生3c990.o 驱动模块。然后使用命令拷贝到相应地方然后查看加载是否正常。

  #modprobe 3c990

  #cp 3c990.o /lib/modules/2.4.20-8/kernel/drivers/net

  # depmod -a

  然后使用lsmod 命令检查加载情况,如果一切正常的话。可以让系统启动时自动加载该模块:

  #echo “alias eth0 3c990”>;>; /etc/modules.conf
三:为新网卡设定IP地址
  在Linux 网络设备在配置时被赋予别名,该别名由一个描述性的缩略词和一个编号组成。某种类型的第一个设备的编号为 0,其他设备依次被编号为 1、2、3,等。
#vi /etc/sysconfig/network-scripts/ifcfg-eth0

  DEVICE=eth0        #设定网卡的名称,要跟文件名称对应 #

  ONBOOT=yes        #是否在开机的的时候启动网卡#

  BOOTPROTO=static      #启动的时候的 IP 取得的协议,这里是固定的,

  如果是动态主机的话,要改成 dhcp 才行#

  IPADDR=192.168.1.2     #IP 地址#

  NETMASK=255.255.255.0   #子网掩吗#

  NETWORK=192.168.1.0    #该网段的第一个 IP#

  BROADCAST=192.168.1.255  #最后一个同网段的广播地址#

  GATEWAY=192.168.1.2    #网关地址#

  #GATEWAYDEV=eth0      

  存盘后使用命令:“service network restart “激活即可生效。这个方法同样可以永久保存设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: