網(wǎng)卡設(shè)置指南
2024-07-26 00:31:30
供稿:網(wǎng)友
索引關(guān)鍵詞:[linux,網(wǎng)卡,D-LINK DE-220/NE2000,D-LINK DFE530TX,雙網(wǎng)卡]
最新修改日期:Oct. 9th, 2000
發(fā)布日期:19991119
版權(quán)協(xié)議:GPL
作者說明:
本文現(xiàn)由我本人維護(hù)(mailto:wangdong@163.net),但我的知識(shí)、精力、時(shí)間都
不足,因此希望與有興趣的朋友討論并歡迎合作修改、整理。
其實(shí)本文大多數(shù)信息可以在 EthernetHOWTO 中找到,初寫這篇文章時(shí)Ethernet
HOWTO 中文版還沒有正式發(fā)布,現(xiàn)在您可以在中國(guó) Linux 論壇的“藏經(jīng)閣”中找到
EthernetHOWTO 中文版 8-)。
本文的寫作目的是給新手在設(shè)置網(wǎng)卡時(shí)提供一些幫助。我曾在設(shè)置我的 DE220
網(wǎng)卡時(shí)遇到了一些問題,查詢資料時(shí)發(fā)現(xiàn)很多書籍對(duì)此沒有涉及;各大 BBS 及新聞
組問的很多,答的雖然大多正確,但辦法五花八門,令人一頭霧水。其實(shí)資料最全的
是在各種 HOWTO 中,可惜中文的卻很少,所以寫這篇文章,希望能節(jié)省大家的時(shí)間。
本文只包含初步的信息,如希望詳細(xì)了解這方面的內(nèi)容,請(qǐng)參考各種 HOWTO:
BootPRomptHOWTO 包含啟動(dòng)時(shí)如何向內(nèi)核傳遞參數(shù)信息
ConfigHOWTO 包含 LILO 及 Loadin 如何使用的信息
EthernetHOWTO 包含以太網(wǎng)卡是否被系統(tǒng)支持(買網(wǎng)卡時(shí)可以參考),及如何設(shè)置
的信息,Linuxforum已推出中文版
KernelHOWTO 如何修補(bǔ)、編譯內(nèi)核
NET2-NET3-HOWTO 包含 TCP/ip 設(shè)置的信息,最新已是NET3-4-HOWTO,中文版正在
翻譯
以上各種 HOWTO 英文版、中文版均可從中國(guó)Linux論壇
(http://www.linuxforum.net) 的“藏經(jīng)閣”中獲得。
中文版也可從中文 LDP 處獲得
http://www.linux.org.tw/CLDP/
因?yàn)楝F(xiàn)在大多數(shù)實(shí)際應(yīng)用的網(wǎng)卡都是以太網(wǎng)卡,如不是特別指明,本文中網(wǎng)卡即
指以太網(wǎng)卡。
在 Linux 中,第一塊網(wǎng)卡設(shè)備名為 eth0,以后依次為 eth1,eth2…… 但網(wǎng)卡
并不作為裸設(shè)備出現(xiàn)于 /dev 下,而是內(nèi)核在引導(dǎo)時(shí)在內(nèi)存中建立的。這就是說,應(yīng)
該在系統(tǒng)引導(dǎo)時(shí)自動(dòng)設(shè)置網(wǎng)卡?,F(xiàn)在大多數(shù)發(fā)行版都是采用 module 的方式在系統(tǒng)引
導(dǎo)時(shí)設(shè)定網(wǎng)卡的,當(dāng)然如果你清楚的知道你的網(wǎng)卡類型,也可以把相應(yīng)的網(wǎng)卡驅(qū)動(dòng)編
譯進(jìn)內(nèi)核。
Linux 的引導(dǎo)通常有以下幾種方式,
A. 通過硬盤以 LILO 引導(dǎo)。優(yōu)點(diǎn)是啟動(dòng)快而簡(jiǎn)捷;缺點(diǎn)是需要寫硬盤主引導(dǎo)扇區(qū),
在多系統(tǒng)共存時(shí)可能與 DOS/WIN 下某些防病毒軟件沖突,而且很多人希望 LILO 默
認(rèn)引導(dǎo)到 DOS/WIN 下,這就需要掌握 LILO 的配置方法,這對(duì)新手是有一點(diǎn)障礙的。
B. 通過軟盤引導(dǎo)。雖然慢,但這是對(duì)原系統(tǒng)影響最小的辦法。只要在安裝時(shí)不安裝
LILO,而做一張引導(dǎo)軟盤就行了。這樣想啟動(dòng) Linux 時(shí),只要插入軟盤就可以了。
C. 通過 Loadin.exe 引導(dǎo)。Loadin.exe 是 DOS 下的程序,可以裝入 Linux 的內(nèi)
核,啟動(dòng)到 Linux 下。這樣可以從 WIN9X 的純 DOS 環(huán)境下直接啟動(dòng) Linux 。當(dāng)
然,需要學(xué)會(huì)如何配置,--很簡(jiǎn)單的哦。
不管采用哪種方式引導(dǎo),加載網(wǎng)卡的方式有兩種:
1. 把網(wǎng)卡驅(qū)動(dòng)編譯進(jìn)內(nèi)核,引導(dǎo)時(shí)就加載。
2. 采用 modules 自動(dòng)加載。
采用方式1,則不可能支持所有的網(wǎng)卡,哪樣內(nèi)核會(huì)變成個(gè)龐然大物。因此很多
發(fā)行版為了靈活支持多種網(wǎng)卡,采用 modules 的方式。然而對(duì)于每一臺(tái)特定的電腦,
通常只需要支持有限的一種或幾種網(wǎng)卡,因此可以采用方式1,不過需重新編譯內(nèi)核。
編譯內(nèi)核的方法詳見 KernelHOWTO,編譯時(shí)需要注意的是以下幾項(xiàng):
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網(wǎng)卡的話*/
方式2為大多數(shù)發(fā)行版所采用,而且可以在安裝時(shí)設(shè)置網(wǎng)卡,選用相應(yīng)的網(wǎng)卡即
可。值得指出的是,安裝時(shí)很多網(wǎng)卡沒有列出,但并不代表 Linux 本身不支持,詳
見 EthernetHOWTO。這時(shí)您可以查閱網(wǎng)卡及手冊(cè),會(huì)發(fā)現(xiàn)其使用何種芯片,可以用安
裝時(shí)網(wǎng)卡列表中同種芯片的網(wǎng)卡試試。通常,網(wǎng)卡手冊(cè)中會(huì)說明該網(wǎng)卡兼容或類似某
種通用網(wǎng)卡。很多10M網(wǎng)卡兼容 NE2000,比如我的 D-LINK DE220,這時(shí)可以選
NE2000 試試。
然而,很多 PNP 的網(wǎng)卡并不能被檢測(cè)到,例子還是我的 DE220。據(jù)說在 Linux
環(huán)境下可以通過 isapnp 設(shè)置,我沒試過,詳情請(qǐng) man isapnp 吧。為免麻煩,我使
用了另一種方法:在 DOS 下使用 DE220 的驅(qū)動(dòng)程序(可以在其網(wǎng)站下載到),屏蔽掉
PNP 功能,并設(shè)定“IO=0240h-025fh”,“IRQ=11”。然后再進(jìn)行安裝。
糟糕的是,有部分網(wǎng)卡并非完全兼容 NE2000,例子又是我的 DE220,這類網(wǎng)卡
在 EthernetHOWTO 中被稱為 bad NE2000 clone,他們采用了非標(biāo)準(zhǔn)的標(biāo)識(shí)方法以
致 Linux 的 NE2000 驅(qū)動(dòng)不能自動(dòng)檢測(cè)到它。我的 RedHat 6.1 就是這樣,導(dǎo)致安
裝后找不到網(wǎng)卡,必需手動(dòng)進(jìn)行配置了。
解決這個(gè)問題需要向內(nèi)核傳遞 IRQ 號(hào)及 IO 端口,這兩項(xiàng)的具體數(shù)據(jù)可以從
WIN9X 的設(shè)備管理中查到,最笨卻最穩(wěn)妥的是如前哪樣用網(wǎng)卡 DOS 下的驅(qū)動(dòng)程序設(shè)
定好,記下來。Linux 下輸入的數(shù)據(jù)格式類似 C 語言,IO采用十六進(jìn)制,即 0xNNN,
其中 NNN 是 IO 中 0XXXh-0XXXh 的前一個(gè)數(shù)的“XXX”部分。IRQ 可直接用十進(jìn)制。
針對(duì)我的 DE220,就是“0x240”和“11”了。配置方法如下:
如果采用方式1,必須直接將 IRQ 號(hào)及 IO 端口傳遞給內(nèi)核——在系統(tǒng)啟動(dòng)出現(xiàn)
Boot: 的時(shí)候,輸入“l(fā)inux ether=IRQ,IO,eth0”。具體針對(duì)我的 DE220 就是這樣:
Boot: linux ether=11,0x240,eth0
通常傳遞了 IO 地址系統(tǒng)就可以檢測(cè)到網(wǎng)卡了,因此也可以輸入:
Boot: linux ether=0,0x240,eth0
IRQ 或 IO 處可以輸零(如上),是告訴內(nèi)核自動(dòng)檢測(cè)該項(xiàng)。如果這樣可以了,可以
通過 LILO 每次啟動(dòng)時(shí)自動(dòng)把以上參數(shù)傳遞給內(nèi)核,具體方法是:
編輯 /etc/lilo.conf,加入:
append="ether=0,0x240,eth0"
然后:
# lilo /* 重新加載 lilo */
append 是告訴 LILO 把引號(hào)中的字符串傳遞給內(nèi)核。使用 Loadlin.exe 的道理與此
類同,不過我沒試過,請(qǐng)查閱 Loadlin 的手冊(cè)(一般隨程序提供)。
如果采用方式2,就需要手工加上相應(yīng)的 modules?。?
a.) 查看目錄“/lib/modules/內(nèi)核版本號(hào)/net/”,其中內(nèi)核版本號(hào)部分可能每臺(tái)機(jī)器
都不同,看你自己的決定吧。該目錄下文件格式如 *.o ,分別代表不同網(wǎng)卡的
modules ,記下你自己網(wǎng)卡相應(yīng)的文件名,如 DE220 兼容 NE2000 ,就是 NE2000
的 ne.o 了。
b.) 編輯文件 /etc/conf.modules ,如沒有就建一個(gè)。加入以下兩行:
alias eth0 “網(wǎng)卡相應(yīng) module 的文件名”
options 網(wǎng)卡類型 io=0xNNN
針對(duì)我的 DE220 ,這兩行就應(yīng)該是這樣:
alias eth0 ne.o
options ne io=0x240
c.) 重啟動(dòng)后,我的 DE220 就可以找到了。
啟動(dòng)后,查看 /proc 下的 ioports 和 interrupts 文件,如果網(wǎng)卡設(shè)置成功,
應(yīng)該有相應(yīng)描述,如我的 DE220 使用 NE2000 的驅(qū)動(dòng),可以看到:
# cat ioports
...
0240-025f: NE2000
...
# cat interrupts
...
11: ... XT-PIC NE2000
...
然后就可以開始設(shè)置 TCP/IP 的參數(shù)了(本文不涉及)。值得指出的是,采用
ping 127.0.0.1 的方式只能測(cè)試內(nèi)核是否支持網(wǎng)絡(luò)及 lo 設(shè)備,并不能測(cè)試到 eth0
是否工作,應(yīng)該 ping 通實(shí)際的 IP 地址,才算 TCP/IP 配置成功。
因?yàn)橐渲寐酚善鳎以诹硪慌_(tái)機(jī)器上實(shí)驗(yàn)了雙網(wǎng)卡。采用了 Topstar TE2000
系列,ISA 接口,使用8019芯片,兼容 NE2000。有的書上告戒不要使用兩塊相同的
NE2000 兼容網(wǎng)卡,我不知道原因,而我配置過程中也沒發(fā)現(xiàn)問題。
首先下載該網(wǎng)卡 DOS 下驅(qū)動(dòng)/設(shè)置程序,用 DOS6.22 啟動(dòng),運(yùn)行設(shè)置程序并設(shè)定
IRQ,IO 地址。關(guān)鍵是兩塊網(wǎng)卡不能設(shè)成一樣的以免沖突,同時(shí)注意不能同其它的設(shè)備
沖突。有在 DOS 下配置硬件經(jīng)驗(yàn)的朋友當(dāng)然輕車熟路了 8-)。用紙記錄下來。編譯內(nèi)
核使之支持 NE2000 系列后,用新內(nèi)核重啟(RedHat 6.1),報(bào)告發(fā)現(xiàn) eth0,沒有提到
eth1(第二網(wǎng)卡)。
接下來編輯 /etc/lilo.conf,加入:
append="ether=9,0x320,eth1" /* 我第二網(wǎng)卡設(shè)置為 IRQ=9,IO=0X320 */
然后:
# lilo /* 重新加載 lilo */
重啟動(dòng),發(fā)現(xiàn) eth0,eth1,成功!
我在為一臺(tái)機(jī)器配 D-LINK DFE530TX (10/100M)的網(wǎng)卡時(shí),在其網(wǎng)站下找到了技
術(shù)支持文檔,說的很詳細(xì)(http://tsc.dlinktw.com.tw/nic/dfe530/RedHat6.pdf)。
配置該網(wǎng)卡的朋友可以參考。
由此也可以總結(jié)出在 linux 下配置網(wǎng)卡的終極大法:
A. 從買網(wǎng)卡開始,就應(yīng)選擇 Linux 支持比較好的品牌,可以參考 EthernetHOWTO,
如果最新的 EthernetHOWTO 中對(duì)該品牌甚至芯片都是 unsupported,建議還是換
一塊吧。
B. 不要急于發(fā)問,先查查廠商的網(wǎng)站,廠商自己的解決方案可能是最好的,起碼可
以參考。
C. 建議屏蔽掉網(wǎng)卡的 pnp,客觀的說,雖然人們對(duì) M$ 有 Plug And Pray 的嘲弄,
Linux 對(duì) PNP 的支持還不如 M$。屏蔽掉網(wǎng)卡的 pnp,能省掉好多麻煩,起碼在
不成功時(shí)縮小了排錯(cuò)的范圍。
D. 如果系統(tǒng)還不能找到網(wǎng)卡,可能需要去相應(yīng)的 Linux 驅(qū)動(dòng)下載點(diǎn)下載最新的驅(qū)動(dòng)
程序。然后按其說明安裝。不過絕大多數(shù)比較新的發(fā)行版都帶了很多,而且工作
的相當(dāng)好,比如 NE2000 兼容系列,完全可以使用 NE2000 的 ne.o。
E. 重新編譯內(nèi)核,詳情請(qǐng)參考 KernelHOWTO,注意相關(guān)的網(wǎng)絡(luò)選項(xiàng)一定要選定支持。
而對(duì)應(yīng)的網(wǎng)卡一定要選 y(編譯進(jìn)內(nèi)核) 或 m(采用 module)。如果選 m,還需要
編譯 module。
F. 試驗(yàn)新內(nèi)核或 module。如果還不能找到網(wǎng)卡,就參照上文所說的方法向內(nèi)核或
module 傳遞 IRQ 和 IO 等參數(shù)。
G. a.) 成功了!配置 LILO 或 /etc/conf.modules,使每次引導(dǎo)都可以自動(dòng)加載網(wǎng)
卡。
恭喜!你的水平也上了一個(gè)臺(tái)階。
b.) 還不行!你有三個(gè)選擇:
1.) 去各大 BBS,新聞組,求求各位大俠賜教,不過恐怕近期內(nèi)不會(huì)有什么
新招了。
2.) 痛罵網(wǎng)卡的制造商,然后做個(gè)順民,回去繼續(xù)受 M$ 的壓榨。
3.) 苦練編程本領(lǐng),自己寫個(gè)驅(qū)動(dòng)出來!為自由天地做個(gè)貢獻(xiàn)!