Linux中安装网卡驱动

检查系统是否识别网卡,可以用命令# dmesg | grep eth

来查看系统启动信息,显示出 eth0 或者 eth1 的信息,如果eth1没找到正确的信息,那就表示 Linux 无法找到该硬

件, eth0是8139的,已经显示正常,例如:

# dmesg | grep eth

eth0: RealTek RTL8139 Fast Ethernet at 0xf0160000, 00:0a:a6:30:0d:0e, IRQ 11

eth0: Identified 8139 chip type 'RTL-8139C'

eth0: Setting 10mbps full-duplex based on auto-negotiated partner ability 4061.
----
可我的显示
divert: not allocating divert_blk for non-ethernet device lo
pciehp: Both _OSC and OSHP methods do not exist
pciehp: Both _OSC and OSHP methods do not exist
pciehp: Both _OSC and OSHP methods do not exist
pciehp: Both _OSC and OSHP methods do not exist
pciehp: Both _OSC and OSHP methods do not exist
pciehp: Both _OSC and OSHP methods do not exist
divert: not allocating divert_blk for non-ethernet device sit0
另一种方法
把网卡插入计算机,看看Linux能否发现它.这可以从Linux的启动画面中看出来,如果你发现如下的一行:

eth0:NE2000 card found at 0x300 using IRQ 05
那就说明Linux发现了NE2000卡,在IO 300, IRQ 05的地方.
如果Linux没有发现你的网卡,但是你确认你网卡的型号和参数,比如我的网卡是NE2000兼容,IO 0x300, IRQ 05.那么

可以修改Linux启动文件专门搜索这个设备.这个文件在/etc/rc.d/rc.modules里对于NE2000,是这样的:
  #/sbin/modprobe ne io=0x300 # NE2000 at 0x300
将最前面的#号去掉,再启动机器试试.
另外该文件里还可以发现对其它系列网卡比如3C系列的autoprobe.
  OK,到现在启动屏幕上也没有出现
  eth0:NE2000 card found at 0x300 using IRQ 05
这样的好消息,那么你就得编译内核了。
编译内核之前一定要搞清楚网卡的芯片号。


查看驱动模块
 一般来说,2.4版本以后的 Linux可以支持的网卡芯片组数量已经很完备了.
最直接的方法是查看一个目录:/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
  3c509.o       de600.o   fealnx.o   pcnet32.o   sungem.o
  3c515.o       de620.o   hamachi.o   plip.o     sunhme.o
  3c59x.o       defxx.o   hamradio   ppp_async.o  tc35815.o
  8139cp.o      depca.o   hp100.o    ppp_deflate.o tg3.o
  8139too.o      dgrs.o   hp.o     ppp_generic.o tlan.o
  82596.o       dl2k.o   hp-plus.o   ppp_synctty.o tokenring
  8390.o       dmfe.o   irda     r8169.o    tulip
  ac3200.o      dummy.o   lance.o    rcpci.o    tulip_old
  acenic.o      e100    lne390.o   sb1000.o    tun.o
  aironet4500_card.o e1000    lp486e.o   shaper.o    via-rhine.o
  aironet4500_core.o e2100.o   mii.o     sis900.o    wan
  aironet4500_proc.o eepro100.o natsemi.o   sk98lin    wavelan.o
  amd8111e.o     eepro.o   ne2k-pci.o  skfp      wd.o
  appletalk      eexpress.o ne3210.o   slhc.o     winbond-840.o
  arlan.o       epic100.o  ne.o     slip.o     wireless
  arlan-proc.o    eql.o    netconsole.o smc9194.o   wireless_old
  at1700.o      es3210.o  ni5010.o   smc-ultra32.o yellowfin.o

检查网卡是否加载:
  
  驱动硬件是操作系统最基本的功能,操作系统通过各种驱动程序来驾驭硬件设备,和Windows系统不同Linux内核

目前采用可加载的模块化设计(LKMs Loadable Kernel Modules),就是将最基本的核心代码编译在内核中,网卡驱

动程序是作为内核模块动态加载的。可以使用命令“lsmod”查看加载情况:
  
  ## lsmod
  Module         Size Used by
  dm_mod         54741 0
  button         6481 0
  battery         8901 0
  ac           4805 0
  md5           4033 1
  joydev         10241 0
  uhci_hcd        31065 0
  ehci_hcd        30917 0
  snd_via82xx      26437 0
  snd_ac97_codec     63889 1 snd_via82xx
  snd_pcm_oss      49017 0
  soundcore        9889 1 snd
  tulip         45025 1
  via_rhine       23113 2
  mii           4673 1 via_rhine
  ext3         116809 2
  jbd          71257 1 ext3
  
  对每行而言,第一列是模块名称;第二列是模块大小;第三列是调用数。调用数后面的信息对每个模块而言都有

所不同。如果 (unused) 被列在某模块的那行中,该模块当前就没在使用。如果 (autoclean) 被列在某模块的那行

中,该模块可以被 rmmod -a 命令自动清洗。当这个命令被执行后,所有自从上次被自动清洗后未被使用的被标记了

“autoclean”的模块都会被卸载。丛以上红色粗体字符可以看到笔者Linux计算机中两块网卡模块:tulip和

via_rhine 已经加载。对应的网卡商业型号分别是:
  
  tulip:Lite-On Communications Inc LNE100TX [Linksys EtherFast 10/100]
  
  via_rhine:Via VT6102[Rhine-II] 常见主板集成网卡。
  
  如果没有检测到硬件,用硬件检测程序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/etc/modprobe.conf

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/1931808/viewspace-915279/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/1931808/viewspace-915279/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值