论坛风格切换切换到宽版
  • 773阅读
  • 1回复

[问题求助]linux网卡驱动程序的编译与安装 [复制链接]

上一主题 下一主题
离线alluse.
 
发帖
2180
C币
-559263
威望
382
贡献值
1
银元
-2
铜钱
4770
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
l.inux网卡驱动程序的编译与安装.
  .powered by KindGeorge.
    一般来说,目前新版的 Linux 预设可.以支持的网络卡芯片组数量已经很完备了,很多网络卡芯片都已.经被支持,           鲜花
例如RLT 8139 芯片 ( RealTek 813.9 ) 的网络卡所以使用.者可以很轻易的设定好他们的网络卡。           鲜花
不过,如果万一不幸核心没有支持该网络卡的话,那么可以透过重新编译核心或者编译网络卡驱动模.块 ( .Modules ),           鲜花
并且加载该模块,今天就是这么巧,碰到一个D-Link 的DFE-530TX,没法,只有手动安.装网络卡驱动程.序了..
可以用命令.# dmesg | grep eth 教育
来查看系统启动信息,显示出 eth0 或者 eth1 的信息,如果eth1没找到正确.的信息,那就表示 Linux 无法找到该硬.件,.
e.th0是8139的,已经显示正常,例如:<性病>
[root@kindgeorge root]# .dm.esg | grep eth(        游戏          )

eth.0: Real.Tek RTL8139 Fast Ethernet at 0xf0160000,. 00:0a:a6:30:0d:0e, IRQ 11.

eth0:  Id.entif.ied 8139 chip type 'RTL-8139C'              乙肝

eth0: Setting 10mbps full-duplex based on aut.o.-negotiated partner .ability 4061..
复制代码
一. .查看自己系统的内核版本..
[roo.t.@kindgeorge root]# uname -r电影

2.4.18-3 
复制代码
我.这里是redhat7.3的,内核2.4.18-3.
一般来说,这个内核驱动程序的模块会放在 /lib/modules/2.4.18-3/kern.el./drivers/net             电子
二.确定系统是否已.经安装下面包.
1.由于编译需要用到内核的源代码包和编译程序gcc.所以.如果.没有的话,要先装.域名
   查看:  
[root@kindgeorge ro.ot]# rpm .-qa|grep kernel--------------彩票

kernel-2.4..18-3           女人

kernel-sourc.e-2.4.18-3.

[root@kindgeorge root]# rpm -qa|gr.ep gcc   (.gcc是编译用).

gcc-2.96-110

gcc-g77-2.9.6-110.

gcc-.c++-2.96-110服务器
复制代码一般装了.内核源包的话,都会在出现/usr/src/linux-2.4,同路径下会有linux-2.4..18-3的文件实际目录..
2.如果没有的话,就用原来安装.盘上的文件安装,会去下载个相同内核源包安.装吧投资
rp.m -ivh kernel-source-2.4.18-3.i3.86.rpm教育
复制代码
  ......
三. 取得驱动程序和编译
1.   .     可以重厂家提供的光盘提供,把光盘上的linux目录下的dlkfet-4.24.tar.gz .拷贝过来用.             电子
2.        从.网上下载网络卡驱动程序,一般厂家.的网站都提供下载程序的.             汽车
例如: http://www.d-link.com.cn  上有下载.(        游戏          )
[root@ki.n.dgeorge root]# cp dlkfet-4.24.tar.gz /usr/src            杀毒

[root@kindgeorge root]# cd. /us.r/src/     健康

[root@kindge.orge src]# tar -.zxvf dlkfet-4.24.tar.gz 投资

dlkfet-4.24/

dlk.fet-4.24/rhine_main.c.

dlkfet-.4.24/Makefile服务器

dlkfet-4..24/vmns_drv.h.

dlk.fet-4.24/rhine.h.

dlkfet-4.24/.dep.end.mak.

dlkfet-4.24/rhine_vmn.s.c健康

dlkf.et-4.24/rhine_proc.h.

dlkfet-4.24/rhine_pr.oc.c           女人

dlkfet-4.2.4/rhine_vmns.h投资

dlkfet-4.24/kcompat.h.<性病>

dlkfet-4..24/rhine_cfg.h[成人用品]

dlkfet-4.24/.depe.nd.

dlkfet-4..24/rhine_wol.c(        游戏          )

dlkfet-4.24/r.hine_wol.h.

dlk.fet-4.24/linux.txt服务器
复制代码
3.请留意一开始是没有.o文件的.. 我们编译前可以看看目录.的linux.txt,是一个包含介绍安装说明.在进入目录后,执行make进行编译.教育
[root@kindgeorge .src]# cd .dlkfet-4.24            杀毒

[root@kindgeorge dlkfet..-4.24]# make.

[roo.t@kindgeorge. dlkfet-4.24]# ll   (编译后查看一下).

total 320

-rw-r--r--    1 roo..t     root         7473 Jan 15  2003 kcompat.h    健康

-rw-r--r--    1 root  .   root       . 11491 Jan 20  2003 linux.txt           女人

-rw-r--r--.    1 root     root         5219 Dec 10  2002 .Makefile    健康

-rw-r.--r-.-    1 root     root         1818 Jan 16  2003 rhine_cfg.h[成人用品]

-rw-r--r--    1 root  .  . root        48715 May 24 18:31 rhinefet.o           鲜花

-rw-r--r--    1 root     root        42044 Jan 15  .2003 rhi.ne.h              乙肝

-rw-r--r--    1 root .    root        78996 Jan 16  2003 rhi.ne_main.c    外汇

-rw-r--r--    1 root     root        32760 May 24 1.8.:31 rhine_main.o外贸

-rw-r--r--    1 root     root        14980 Jan 15  2003 rhine_.proc..c

-rw.-r--r--    1 root     root  .       1672 Jan 15  2003 rhine_proc.h.

-rw-r--r.--    1 root    . root        12336 May 24 18:31 rhine_proc.o服务器

-rw-r--r--    1. root     root         9172 Jan 15  200.3 rhine_vmns.c            杀毒

-rw-r--.r--    1 root     .root         1106 Jan 15  2003 rhine_vmns.h.

-rw-r--r--    1 root.     root         3792 May 24 18:31 rhine_v.mns.o<性病>

-rw-r--r--  .  1 root     root.         7536 Jan 15  2003 rhine_wol.c域名

-.rw-r--r--    1 .root     root         1529 Jan 15  2003 rhine_wol.h             汽车

-rw-r--r--    1 root    . root         .3488 May 24 18:31 rhine_wol.o.

-rw-r--r--    1 root     root         .6824 Jan 15  2003 vmns_.drv.h.
复制代码
4.经过编..译后,会编译出一个rhinefet.o 文件,这个就是驱动模块,我们把它拷贝到相应地方:投资
[root@kindgeorge dlkfet-4.24]#cp rhinefet.o  /.lib/modules/2.4.18-3/k..ernel/drivers/net健康

[root@kindgeorge dlkfet-.4.24]# dep.mod -a.
复制代码
5.测试
(1)可以用命令modprobe rhin.efet 或  insmod rhinefet.o  加载.如果没出.错信息说明ok.    外汇
(2) 用命令lsmod 可以看看是否已经加载.了.          婚庆
[root@kindgeorge .dlkfet-4.24.]# lsmod .

Module                  Si..ze  Used by    Not tainted--- 印刷

rhi.nefet               38752 .  1 服务器

8139too.                16448   .1 .

mii                     2408   .0  [8.139too].
复制代码
这样,看到r.hinefet模块已经加载了,基本上,这.样就证明已经编译成功. 教育

6. 让它开机时加载
[root@kindgeorge dlkfet-4.24.]# vi /etc/modules..conf     外汇

在后面.加上一行:  alias eth1 rhinefet. 教育
复制代码
7. 配置一下网络
[root@kindgeorge dlkf.et-4.24]# vi /etc/sysconfig./network-scripts/ifcfg-eth1.

    

DEVICE=eth1

BOOTPROTO=sta.tic电影

IPADDR=192.168..4.202学习

NETMA.SK=255.255.255.0.

NETWORK=.192.168.4.0.

GATE.WAY=192.168.4.250(        游戏          )

BROADCAST=192.1.68.4.255电影

ONBOOT=yes
复制代码
8.启动网卡,然后用ifconfi.g查看,             电子
ifup eth1

[root@ki.ndgeorge dlkfet-4.24.]# ifconfig (        游戏          )

eth0 .     Link encap:Ethernet  HWaddr 00:0A:E6:.30:0D:0E  .

     .     ine.t addr:211.239.218.153  Bcast:211.239.218.255  Mask.:255.255.255.0.

          UP BROADCAST RUNNING MULTICAST  MT.U:1.500  Metric:1(        游戏          )

          .RX packets:3780479 errors:.0 dropped:0 overruns:0 frame:0--------------彩票

   .   .    TX packets:3833860 errors:0 dropped:0 overruns:0 carrier:0<性病>

          col.lisions:0 .txqueuelen:100     美容

     .     RX bytes:1118112324 (1.066.3 Mb)  TX bytes:1111887387 (1060.3 Mb)           建材

     .     Interrupt:11            建材



eth1.      Link encap:Eth.ernet  HWaddr 00:0F:3D:82:EC:1D  虚拟主机

          .inet addr:192.168.4.202  Bcast:192.168..4.255  Mask:255.255.255.0--------------彩票

      .    UP BROADCAST RUNNING MULTICAST  .MTU:1500  Metric:1.

  .        RX packets:749312 errors:0 dropped:0 overrun.s:0 frame:0            杀毒

          TX .packets:976174 errors:0 dropped:0 overruns:0 carrie.r:0.

          colli.sions:0 txqu.euelen:100 .

          RX bytes:436.95059 (41.6 Mb.)  TX bytes:1472142037 (1403.9 Mb)             电子

          Interrup.t:5 Base add.ress:0xe000服务器
复制代码

9.重新启动机器,可以自动加载和使用了..大功告成.学习

五. 按照安.装说明的方法自动编译安装.  .
     在 ."三.3" 中我们用make 编译,然后进行手动的拷贝.. 实际上在linux.txt中的安装说明提到用make install .[成人用品]
那我们来看看这种.方法系统都做了什么吧.域名
[r.oot@firewall1 dlkfet-4.24]# make install.           女人

gcc -Wall -DLINUX -D__KERNEL_._ -DMO.DULE -.DEXPORT_SYMTAB -D__NO._VE.RSION__ -O2 -pipe -I/lib/.modules/2.4.18-3/build/include -I. -Wstrict-prototypes -fomit-frame-pointer -DMODVERSIONS -in.clude /lib/modules/2.4.18-3/build/include/linux/modversions.h -DVMNS   -c -o rhine_main.o rhine_main.c学习

gcc -Wall -DLINUX -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -D__NO._VER.SION.__ -O2 -pipe -I/lib/modules/2.4.18-3/bui.ld/include -I. -Wstrict-prototypes -fomit-frame-p.ointer -DMODVERSIONS -include /lib/modules/2.4.18-3/build/include/linux/modversio.ns.h -DVMNS   -c -o rhine_proc.o rhin.e_proc.c

gcc -.Wall -DLINUX -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -D__NO_VERSION__ -O2 -pipe -I/lib/.modules/2.4.18-3./build/include -I. -Wstrict-prototypes. -fomit-frame-pointer -DMODVERSIONS -include /lib/modules/2.4.18-3./b.uild/include/linux./modversions.h -DVMNS   -c -o rhine_wol.o rhine_wol.c    健康

gcc -Wall -DLINUX -D__KERNEL__ -DMODULE -D.EXPORT_SYMTAB -D__NO_VERSION__ -O2 -p.ipe -I/.lib/modules/2.4.18-3/build/includ.e -I. -Wstrict-prototypes -fomit-frame-pointer -DMODVERSIONS -include /lib/m.od.ules/2.4.18-3/build/include/linux/modversions.h -DVMNS   -c -o rhine_vmn.s.o rhine_vmns.c<性病>





*******************************.*.******************电影

Build options:

   .VERSION    2.4.18-3           鲜花

   SMP    .         Disabl.ed教育

   VMNS      .      .Enabled.

*****.************.**********************************             汽车

mkdir -p /lib/modules/2.4.18-3/.kernel/drivers/.net             汽车

install -m 644 -o r.oot rhinefet.o /lib/modules/2.4.18-.3/kernel/drivers/net[成人用品]

*****.  Move official. driver via-rhine.o to via-rhine.o.backup.

mv /lib/modules/2.4.18-3/kernel/drivers/net/via-rhine.o /lib/.modules/2.4.18-3/kernel/drivers/net/.via-r.hine.o.backup--------------彩票



/sbin/dep.mod -a || true虚拟主机
复制代码

按照上面的结果显示是这样的.一个过程:
(1)系统把.c等文件编译成相应的.o.文件. <性病>
(2)然后.显示系统是否支持SMP和V.MNS,然后把相应的.o模块文件拷贝到系统应该的地方.虚拟主机
(3)并且把相同芯片的程.序过时的via-rhi.ne.o改为备份文件.让系统用新的rhinefet.o --- 印刷
(4)最后执行/sbin/depmod -a 更新模.块库配置. 看.来这个也是个智能的安装方法..
六. 用其他方法驱动.
    由于市面上很多的各种各样的板卡,有名牌有杂牌,多不胜数.当我们拿到一块卡.,但一下子没找到它本身提供的源程序,不能编译,怎么办呢.?             电子
    所以当你有一块网卡不能用,在找linux的driv.er之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如.3c509,ne20.00,etherexpress等等.--- 印刷
    这样的型.号一般都在网卡上最大的一快芯片上印着...如果芯片型号相同,那么它们其中一些是可以通用的.我们可以尝试一.下系统上已经安装了的驱动是否可行了.进入驱动目录/lib/modules/(内核版本)/kernel/drivers/net  即可发现已经有很多模块了, 用命令 insmod 相应芯片模块名字(广告)
复制代码, 如果不成功会报错,如果正确则不显示错误信息,然后再进行上面的"三.5-9"步.骤进行测试.如果不行,再老老实实的找源程.序吧..

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线samoolee.
发帖
2075
C币
-235466
威望
382
贡献值
1
银元
-2
铜钱
4745
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
思路很清析,非常感谢!

    受益非浅.

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个