在项目中有时候会遇见网卡明明在物理上显示有2块,在系统上只看到一块。这种情况延伸到系统中如何识别一个硬件,到其发挥作用。
和windows一样,一个硬件要首先别识别,识别之后可以加载驱动,然后正常工作。
在linux中,有一个命令kudzu,这个命令检查是否这个硬件能被系统识别,如果这个都没发现,说明硬件出问题了。
例kudzu --probe --class=network lspci | grep "Ethernet" 这里面显示能看到几个网卡。
linux系统识别之后。会自动在系统中里面内核里找相就驱动,
/lib/modules/release/kernel/drivers,p 这个目录装了系统自带的很多驱动,如果很不幸这个硬件比较
偏僻,系统里没有对应的驱动,这是你要从厂家那里下一个驱动进行安装和编译。
例子来说明:
如果很不幸的,您使用的是比较罕见的一些网卡,或者是 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 ********depmod -a的输出/lib/modules/version/modules.dep全部模块。
然后使用lsmod 命令检查加载情况,如果一切正常的话。可以让系统启动时自动加载该模块:
#echo “alias eth0 3c990”>;>; /etc/modules.conf *****写你硬件别名,方便人来识别。
$modprobe -l
至此完成整个硬件加载了。