• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • linux網卡驅動程序的編譯與安裝

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    安裝實例 linux 網卡驅動程序的編譯與安裝 powered by KindGeorge http://kindgeorge.at.3322.org 一般來說,目前新版的 Linux 預設可以支持的 網絡 卡芯片組數量已經很完備了,很多網絡 卡芯片都已經被支持, 例如RLT 8139 芯片 ( RealTek 8139 ) 的網絡 卡

    安裝實例

                                   linux網卡驅動程序的編譯與安裝
                                   powered by KindGeorge http://kindgeorge.at.3322.org
        一般來說,目前新版的 Linux 預設可以支持的網絡卡芯片組數量已經很完備了,很多網絡卡芯片都已經被支持,
    例如RLT 8139 芯片 ( RealTek 8139 ) 的網絡卡所以使用者可以很輕易的設定好他們的網絡卡。
    不過,如果萬一不幸核心沒有支持該網絡卡的話,那么可以透過重新編譯核心或者編譯網絡卡驅動模塊 ( Modules ),
    并且加載該模塊,今天就是這么巧,碰到一個D-Link 的DFE-530TX,沒法,只有手動安裝網絡卡驅動程序了.
    可以用命令# dmesg | grep eth
    來查看系統啟動信息,顯示出 eth0 或者 eth1 的信息,如果eth1沒找到正確的信息,那就表示 Linux 無法找到該硬件,
    eth0是8139的,已經顯示正常,例如:
    [root@kindgeorge root]# 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.

    一. 查看自己系統的內核版本.
    [root@kindgeorge root]# uname -r
    2.4.18-3 
    我這里是redhat7.3的,內核2.4.18-3
    一般來說,這個內核驅動程序的模塊會放在 /lib/modules/2.4.18-3/kernel/drivers/net
    二.確定系統是否已經安裝下面包
    1.由于編譯需要用到內核的源代碼包和編譯程序gcc.所以如果沒有的話,要先裝.
       查看: 
    [root@kindgeorge root]# rpm -qa|grep kernel
    kernel-2.4.18-3
    kernel-source-2.4.18-3
    [root@kindgeorge root]# rpm -qa|grep gcc   (gcc是編譯用)
    gcc-2.96-110
    gcc-g77-2.96-110
    gcc-c++-2.96-110
    一般裝了內核源包的話,都會在出現/usr/src/linux-2.4,同路徑下會有linux-2.4.18-3的文件實際目錄.
    2.如果沒有的話,就用原來安裝盤上的文件安裝,會去下載個相同內核源包安裝吧
      rpm -ivh kernel-source-2.4.18-3.i386.rpm
      ......
    三. 取得驅動程序和編譯
    1. 可以重廠家提供的光盤提供,把光盤上的linux目錄下的dlkfet-4.24.tar.gz 拷貝過來用.
    2. 從網上下載網絡卡驅動程序,一般廠家的網站都提供下載程序的.
    例如:
    http://www.d-link.com.cn  上有下載.
     [root@kindgeorge root]# cp dlkfet-4.24.tar.gz /usr/src
     [root@kindgeorge root]# cd /usr/src/
    [root@kindgeorge src]# tar -zxvf dlkfet-4.24.tar.gz
    dlkfet-4.24/
    dlkfet-4.24/rhine_main.c
    dlkfet-4.24/Makefile
    dlkfet-4.24/vmns_drv.h
    dlkfet-4.24/rhine.h
    dlkfet-4.24/.depend.mak
    dlkfet-4.24/rhine_vmns.c
    dlkfet-4.24/rhine_proc.h
    dlkfet-4.24/rhine_proc.c
    dlkfet-4.24/rhine_vmns.h
    dlkfet-4.24/kcompat.h
    dlkfet-4.24/rhine_cfg.h
    dlkfet-4.24/.depend
    dlkfet-4.24/rhine_wol.c
    dlkfet-4.24/rhine_wol.h
    dlkfet-4.24/linux.txt
    3.請留意一開始是沒有.o文件的. 我們編譯前可以看看目錄的linux.txt,是一個包含介紹安裝說明.在進入目錄后,執行make進行編譯.
    [root@kindgeorge src]# cd dlkfet-4.24
    [root@kindgeorge dlkfet-4.24]# make
    [root@kindgeorge dlkfet-4.24]# ll   (編譯后查看一下)
    total 320
    -rw-r--r--    1 root     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 rhine.h
    -rw-r--r--    1 root     root        78996 Jan 16  2003 rhine_main.c
    -rw-r--r--    1 root     root        32760 May 24 18: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  2003 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_vmns.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/kernel/drivers/net
    [root@kindgeorge dlkfet-4.24]# depmod -a
    5.測試
    (1)可以用命令modprobe rhinefet 或  insmod rhinefet.o  加載.如果沒出錯信息說明ok.
    (2) 用命令lsmod 可以看看是否已經加載了.
    [root@kindgeorge dlkfet-4.24]# lsmod
    Module                  Size  Used by    Not tainted
    rhinefet               38752   1
    8139too                16448   1
    mii                     2408   0  [8139too]
    這樣,看到rhinefet模塊已經加載了,基本上,這樣就證明已經編譯成功.

    6. 讓它開機時加載
    [root@kindgeorge dlkfet-4.24]# vi /etc/modules.conf
    在后面加上一行:  alias eth1 rhinefet
    7. 配置一下網絡
    [root@kindgeorge dlkfet-4.24]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
       
    DEVICE=eth1
    BOOTPROTO=static
    IPADDR=192.168.4.202
    NETMASK=255.255.255.0
    NETWORK=192.168.4.0
    GATEWAY=192.168.4.250
    BROADCAST=192.168.4.255
    ONBOOT=yes
    8.啟動網卡,然后用ifconfig查看,
     ifup eth1
    [root@kindgeorge dlkfet-4.24]# ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:0A:E6:30:0D:0E 
              inet addr:211.239.218.153  Bcast:211.239.218.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:3780479 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3833860 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:100
              RX bytes:1118112324 (1066.3 Mb)  TX bytes:1111887387 (1060.3 Mb)
              Interrupt:11

    eth1      Link encap:Ethernet  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 overruns:0 frame:0
              TX packets:976174 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:100
              RX bytes:43695059 (41.6 Mb)  TX bytes:1472142037 (1403.9 Mb)
              Interrupt:5 Base address:0xe000

    9.重新啟動機器,可以自動加載和使用了.大功告成.

    五. 按照安裝說明的方法自動編譯安裝. 
         在 "三.3" 中我們用make 編譯,然后進行手動的拷貝. 實際上在linux.txt中的安裝說明提到用make install .
    那我們來看看這種方法系統都做了什么吧.
    [root@firewall1 dlkfet-4.24]# make install
    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/build/include/linux/modversions.h -DVMNS   -c -o rhine_main.o rhine_main.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/build/include/linux/modversions.h -DVMNS   -c -o rhine_proc.o rhine_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/build/include/linux/modversions.h -DVMNS   -c -o rhine_wol.o rhine_wol.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/build/include/linux/modversions.h -DVMNS   -c -o rhine_vmns.o rhine_vmns.c


    **************************************************
    Build options:
       VERSION    2.4.18-3
       SMP             Disabled
       VMNS            Enabled
    ***************************************************
    mkdir -p /lib/modules/2.4.18-3/kernel/drivers/net
    install -m 644 -o root 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-rhine.o.backup

    /sbin/depmod -a || true

    按照上面的結果顯示是這樣的一個過程:
    (1)系統把.c等文件編譯成相應的.o文件.
    (2)然后顯示系統是否支持SMP和VMNS,然后把相應的.o模塊文件拷貝到系統應該的地方.
    (3)并且把相同芯片的程序過時的via-rhine.o改為備份文件.讓系統用新的rhinefet.o
    (4)最后執行/sbin/depmod -a 更新模塊庫配置. 看來這個也是個智能的安裝方法.
    六. 用其他方法驅動.
        由于市面上很多的各種各樣的板卡,有名牌有雜牌,多不勝數.當我們拿到一塊卡,但一下子沒找到它本身提供的源程序,不能編譯,怎么辦呢?
        所以當你有一塊網卡不能用,在找linux的driver之前一定搞清楚這個網卡用的什么芯片,跟誰兼容,比如3c509,ne2000,etherexpress等等.
        這樣的型號一般都在網卡上最大的一快芯片上印著.如果芯片型號相同,那么它們其中一些是可以通用的.我們可以嘗試一下系統上已經安裝了的驅動是否可行了.進入驅動目錄/lib/modules/(內核版本)/kernel/drivers/net  即可發現已經有很多模塊了, 用命令insmod 相應芯片模塊名字 , 如果不成功會報錯,如果正確則不顯示錯誤信息,然后再進行上面的"三.5-9"步驟進行測試.
    如果不行,再老老實實的找源程序吧.

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>