萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 網卡設置指南

網卡設置指南

class="23236"> 索引關鍵詞:[Linux,網卡,D-LINK DE-220/NE2000,D-LINK DFE530TX,雙網卡]
最新修改日期:Oct. 9th, 2000
發布日期:19991119
版權協議:GPL


作者說明:
    本文現由我本人維護(mailto:[email protected]),但我的知識、精力、時間都
不足,因此希望與有興趣的朋友討論並歡迎合作修改、整理。
    其實本文大多數信息可以在 EthernetHOWTO 中找到,初寫這篇文章時Ethernet
HOWTO 中文版還沒有正式發布,現在您可以在中國 Linux 論壇的“藏經閣”中找到
 EthernetHOWTO 中文版 8-)。

    本文的寫作目的是給新手在設置網卡時提供一些幫助。我曾在設置我的 DE220 
網卡時遇到了一些問題,查詢資料時發現很多書籍對此沒有涉及;各大 BBS 及新聞
組問的很多,答的雖然大多正確,但辦法五花八門,令人一頭霧水。其實資料最全的
是在各種 HOWTO 中,可惜中文的卻很少,所以寫這篇文章,希望能節省大家的時間。

    本文只包含初步的信息,如希望詳細了解這方面的內容,請參考各種 HOWTO:
BootpromptHOWTO  包含啟動時如何向內核傳遞參數信息
ConfigHOWTO      包含 LILO 及 Loadin 如何使用的信息
EthernetHOWTO    包含以太網卡是否被系統支持(買網卡時可以參考),及如何設置
                 的信息,Linuxforum已推出中文版
KernelHOWTO      如何修補、編譯內核
NET2-NET3-HOWTO  包含 TCP/IP 設置的信息,最新已是NET3-4-HOWTO,中文版正在

                 翻譯
以上各種 HOWTO 英文版、中文版均可從中國Linux論壇
 (http://www.linuxforum.net) 的“藏經閣”中獲得。
中文版也可從中文 LDP 處獲得
http://www.linux.org.tw/CLDP/

    因為現在大多數實際應用的網卡都是以太網卡,如不是特別指明,本文中網卡即
指以太網卡。

    在 Linux 中,第一塊網卡設備名為 eth0,以後依次為 eth1,eth2…… 但網卡
並不作為裸設備出現於 /dev 下,而是內核在引導時在內存中建立的。這就是說,應
該在系統引導時自動設置網卡。現在大多數發行版都是采用 module 的方式在系統引
導時設定網卡的,當然如果你清楚的知道你的網卡類型,也可以把相應的網卡驅動編
譯進內核。

    Linux 的引導通常有以下幾種方式,
A. 通過硬盤以 LILO 引導。優點是啟動快而簡捷;缺點是需要寫硬盤主引導扇區,
在多系統共存時可能與 DOS/WIN 下某些防病毒軟件沖突,而且很多人希望 LILO 默
認引導到 DOS/WIN 下,這就需要掌握 LILO 的配置方法,這對新手是有一點障礙的。
B. 通過軟盤引導。雖然慢,但這是對原系統影響最小的辦法。只要在安裝時不安裝
LILO,而做一張引導軟盤就行了。這樣想啟動 Linux 時,只要插入軟盤就可以了。
C. 通過 Loadin.exe 引導。Loadin.exe 是 DOS 下的程序,可以裝入 Linux 的內
核,啟動到 Linux 下。這樣可以從 WIN9X 的純 DOS 環境下直接啟動 Linux 。當
然,需要學會如何配置,--很簡單的哦。

    
    不管采用哪種方式引導,加載網卡的方式有兩種:
1. 把網卡驅動編譯進內核,引導時就加載。
2. 采用 modules 自動加載。

    采用方式1,則不可能支持所有的網卡,哪樣內核會變成個龐然大物。因此很多
發行版為了靈活支持多種網卡,采用 modules 的方式。然而對於每一台特定的電腦,
通常只需要支持有限的一種或幾種網卡,因此可以采用方式1,不過需重新編譯內核。
編譯內核的方法詳見 KernelHOWTO,編譯時需要注意的是以下幾項:
Networking support (CONFIG_NET) [Y/n/?] Y
TCP/IP networking (CONFIG_INET) [Y/n/?] Y
Network device support (CONFIG_NETDEVICES) [Y/n/?] Y
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?] Y
PCI Ethernet adapters (CONFIG_NET_PCI) [N/y/?] Y    /* 如果是PCI網卡的話*/      
    方式2為大多數發行版所采用,而且可以在安裝時設置網卡,選用相應的網卡即
可。值得指出的是,安裝時很多網卡沒有列出,但並不代表 Linux 本身不支持,詳
見 EthernetHOWTO。這時您可以查閱網卡及手冊,會發現其使用何種芯片,可以用安
裝時網卡列表中同種芯片的網卡試試。通常,網卡手冊中會說明該網卡兼容或類似某
種通用網卡。很多10M網卡兼容 NE2000,比如我的 D-LINK DE220,這時可以選 
NE2000 試試。
    然而,很多 PNP 的網卡並不能被檢測到,例子還是我的 DE220。據說在 Linux 
環境下可以通過 isapnp 設置,我沒試過,詳情請 man isapnp 吧。為免麻煩,我使
用了另一種方法:在 DOS 下使用 DE220 的驅動程序(可以在其網站下載到),屏蔽掉
PNP 功能,並設定“IO=0240h-025fh”,“IRQ=11”。然後再進行安裝。
    糟糕的是,有部分網卡並非完全兼容 NE2000,例子又是我的 DE220,這類網卡
在 EthernetHOWTO 中被稱為 bad NE2000 clone,他們采用了非標准的標識方法以
致 Linux 的 NE2000 驅動不能自動檢測到它。我的 RedHat 6.1 就是這樣,導致安
裝後找不到網卡,必需手動進行配置了。
    解決這個問題需要向內核傳遞 IRQ 號及 IO 端口,這兩項的具體數據可以從
WIN9X 的設備管理中查到,最笨卻最穩妥的是如前哪樣用網卡 DOS 下的驅動程序設
定好,記下來。Linux 下輸入的數據格式類似 C 語言,IO采用十六進制,即 0xNNN,
其中 NNN 是 IO 中 0XXXh-0XXXh 的前一個數的“XXX”部分。IRQ 可直接用十進制。
針對我的 DE220,就是“0x240”和“11”了。配置方法如下:

    如果采用方式1,必須直接將 IRQ 號及 IO 端口傳遞給內核——在系統啟動出現
Boot: 的時候,輸入“linux ether=IRQ,IO,eth0”。具體針對我的 DE220 就是這樣:

Boot: linux ether=11,0x240,eth0

通常傳遞了 IO 地址系統就可以檢測到網卡了,因此也可以輸入:

Boot: linux ether=0,0x240,eth0

IRQ 或 IO 處可以輸零(如上),是告訴內核自動檢測該項。如果這樣可以了,可以
通過 LILO 每次啟動時自動把以上參數傳遞給內核,具體方法是:

編輯 /etc/lilo.conf,加入:
append="ether=0,0x240,eth0"              
然後:
# lilo                          /* 重新加載 lilo */

append 是告訴 LILO 把引號中的字符串傳遞給內核。使用 Loadlin.exe 的道理與此
類同,不過我沒試過,請查閱 Loadlin 的手冊(一般隨程序提供)。

    如果采用方式2,就需要手工加上相應的 modules :
a.) 查看目錄“/lib/modules/內核版本號/net/”,其中內核版本號部分可能每台機器
都不同,看你自己的決定吧。該目錄下文件格式如 *.o ,分別代表不同網卡的 
modules ,記下你自己網卡相應的文件名,如 DE220 兼容 NE2000 ,就是 NE2000 
的 ne.o 了。
b.) 編輯文件 /etc/conf.modules ,如沒有就建一個。加入以下兩行:
alias eth0 “網卡相應 module 的文件名”
options 網卡類型 io=0xNNN
針對我的 DE220 ,這兩行就應該是這樣:
alias eth0 ne.o
options ne io=0x240
c.) 重啟動後,我的 DE220 就可以找到了。

    啟動後,查看 /proc 下的 ioports 和 interrupts 文件,如果網卡設置成功,
應該有相應描述,如我的 DE220 使用 NE2000 的驅動,可以看到:
# cat ioports
...
0240-025f:      NE2000
...
# cat interrupts
...
11:     ...     XT-PIC  NE2000
...
然後就可以開始設置 TCP/IP 的參數了(本文不涉及)。值得指出的是,采用
ping 127.0.0.1 的方式只能測試內核是否支持網絡及 lo 設備,並不能測試到 eth0 
是否工作,應該 ping 通實際的 IP 地址,才算 TCP/IP 配置成功。

    因為要配置路由器,我在另一台機器上實驗了雙網卡。采用了 Topstar TE2000 
系列,ISA 接口,使用8019芯片,兼容 NE2000。有的書上告戒不要使用兩塊相同的
NE2000 兼容網卡,我不知道原因,而我配置過程中也沒發現問題。
    首先下載該網卡 DOS 下驅動/設置程序,用 DOS6.22 啟動,運行設置程序並設定
IRQ,IO 地址。關鍵是兩塊網卡不能設成一樣的以免沖突,同時注意不能同其它的設備
沖突。有在 DOS 下配置硬件經驗的朋友當然輕車熟路了 8-)。用紙記錄下來。編譯內
核使之支持 NE2000 系列後,用新內核重啟(RedHat 6.1),報告發現 eth0,沒有提到
eth1(第二網卡)。
    接下來編輯 /etc/lilo.conf,加入:
append="ether=9,0x320,eth1"     /* 我第二網卡設置為 IRQ=9,IO=0X320 */       
然後:
# lilo                          /* 重新加載 lilo */
    重啟動,發現 eth0,eth1,成功!

    我在為一台機器配 D-LINK DFE530TX (10/100M)的網卡時,在其網站下找到了技
術支持文檔,說的很詳細(http://tsc.dlinktw.co
copyright © 萬盛學電腦網 all rights reserved