新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux下新手裝網(wǎng)卡指南

Linux下新手裝網(wǎng)卡指南

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

本文主要面對(duì)新新手,不對(duì)任何高難度問(wèn)題進(jìn)行討論,包括雙網(wǎng)卡,正常編譯了driver也不能用的古怪網(wǎng)卡等。本文的主要目的是告訴新新手,Linux下網(wǎng)卡是怎樣被驅(qū)動(dòng)的。本文不討論安裝Linux的問(wèn)題,假設(shè)用戶已經(jīng)成功安Linux,就等驅(qū)動(dòng)網(wǎng)卡。

本文引用地址:http://m.butianyuan.cn/article/201609/304674.htm

第一步:不要再問(wèn)Linux下能夠裝XXX卡么? 這樣的問(wèn)題,Linux是個(gè)開(kāi)放的系統(tǒng),借助于網(wǎng)絡(luò)上無(wú)數(shù)的高手,幾乎所有的硬件都能找到支持。

首先需要指出,Linux下對(duì)網(wǎng)卡的支持往往是只對(duì)芯片的,所以對(duì)某些不是很著名的網(wǎng)卡,往往需要知道它的芯片型號(hào)以配置Linux.比如我的Accton 網(wǎng)卡,就不存在Linux的driver,但是因?yàn)樗荖E2000兼容,所以把它當(dāng)NE2000就可以在Linux下用了。所以當(dāng)你有一塊網(wǎng)卡不能用,在找Linux的driver之前一定搞清楚這個(gè)網(wǎng)卡用的什么芯片,跟誰(shuí)兼容,比如3c509,ne2000,etherexpress等等。這樣的型號(hào)一般都在網(wǎng)卡上最大的一快芯片上印著,抄下來(lái)就是了。

最普遍使用也許是最好配的網(wǎng)卡也許就是Ne2000兼容卡了,我用它來(lái)作例子.注意實(shí)際上很多廉價(jià)卡都是NE2000兼容的。

對(duì)于NE2000卡,先要作的一件事情,是將網(wǎng)卡設(shè)定為Jumpless模式。很多現(xiàn)在的網(wǎng)卡缺省都是PnP模式,這在95下的確能減少很多麻煩,但是Linux不支持,所以Linux下必須是Jumpless模式。一般所有程序?qū)⒕W(wǎng)卡設(shè)為Jumpless。當(dāng)然如果是老卡,本來(lái)就不是PnP,不用管這個(gè)。注意,這里主要是ISA的NE2000,關(guān)于PCI的NE2000,需要另外設(shè)置。

下來(lái)就是得弄清楚網(wǎng)卡的IO地址和IRQ。這是兩個(gè)非常重要的網(wǎng)卡驅(qū)動(dòng)參數(shù)。這個(gè)最簡(jiǎn)單就是還用那個(gè)網(wǎng)卡的設(shè)定程序,設(shè)定完Jumpless之后肯定有地方可以軟設(shè)定IO和IRQ.老一些的卡得跳線,道理一樣。另外一個(gè)方法是如果網(wǎng)卡能在95或NT下工作,去95下的control panel里看這個(gè)卡的properities,查IO和IRQ。

OK,到現(xiàn)在,你知道了你的卡是NE2000兼容,知道了它是在Jumpless模式下,知道了IO地址和IRQ,就可以安裝了。

Linux系統(tǒng)與95這些系統(tǒng)不同的一點(diǎn)是它是運(yùn)行在內(nèi)核上的,所謂內(nèi)核,就是把系統(tǒng)最核心的部分孤立出來(lái)編程,將各種驅(qū)動(dòng)程序,內(nèi)存控制等部分編在一起。于95不同,Linux得內(nèi)核是公開(kāi)的,經(jīng)常更新的,這樣不需要更新整個(gè)系統(tǒng),用戶只需要把最新的內(nèi)核原程序download下來(lái)編譯,就可以得到一個(gè)支持更多硬件,更多文件系統(tǒng),更安全的系統(tǒng)了。所以需要指出,Linux的Driver很少有象95下那樣是。安裝的Linux下的driver大多數(shù)都是以C程序形式發(fā)布,或者在內(nèi)核里,或者需要用戶自己修改內(nèi)核代碼??傊孌river運(yùn)行,得重新配置編譯內(nèi)核。如何操作Linux內(nèi)核是學(xué)習(xí)Linux中非常重要的一節(jié)。Linux的新手最好在這里多下點(diǎn)功夫搞清楚.有關(guān)核心的問(wèn)題建議看Linux How To文檔中的kernel How to。

Anyway,Linux已經(jīng)裝好了,那么用的是什么內(nèi)核呢?一般缺省的Linux內(nèi)核是從安裝盤上來(lái)的。那個(gè)內(nèi)核一般包括大多數(shù)硬件的驅(qū)動(dòng)程序,比如Ne2000卡。所以未一定要重新編譯內(nèi)核,也許現(xiàn)有的內(nèi)核就可以驅(qū)動(dòng)。所以下一步就是把網(wǎng)卡插入計(jì)算機(jī),看看Linux能否發(fā)現(xiàn)它。這可以從Linux的啟動(dòng)畫(huà)面中看出來(lái),如果你發(fā)現(xiàn)如下的一行:

eth0:NE2000 card found at 0x300 using IRQ 05

那就說(shuō)明Linux發(fā)現(xiàn)了NE2000卡,在IO 300,IRQ 05的地方。

如果Linux沒(méi)有發(fā)現(xiàn)你的網(wǎng)卡,但是你確認(rèn)你網(wǎng)卡得型號(hào)和參數(shù),比如我的網(wǎng)卡是NE2000兼容,IO 0x300,IRQ 05。那么可以修改Linux啟動(dòng)文件專門搜索這個(gè)設(shè)備。這個(gè)文件在/etc/rc.d/rc.modules里對(duì)于NE2000,是這樣的:

#/sbin/modprobe ne io=0x300 # NE2000 at 0x300

將最前面的#號(hào)去掉,再啟動(dòng)機(jī)器試試。

另外該文件里還可以發(fā)現(xiàn)對(duì)其它系列網(wǎng)卡比如3C系列的autoprobe。

OK,到現(xiàn)在啟動(dòng)屏幕上也沒(méi)有出現(xiàn)

eth0:NE2000 card found at 0x300 using IRQ 05

這樣的好消息,那么你就得編譯內(nèi)核了。

編譯內(nèi)核之前一定要搞清楚的是網(wǎng)卡的芯片號(hào)。比如我有一塊SMC的網(wǎng)卡,但是我是無(wú)法在Linux的內(nèi)核配置菜單里找到SMC這樣的字樣的,Linux不是win95,有那么長(zhǎng)一串廠商牌號(hào)等。我在這個(gè)SMC的卡上找到了digital 21140-AE的字眼,于是我知道這個(gè)卡用的是DEC 21140-AE芯片,于是按照這個(gè)尋找,就找到了驅(qū)動(dòng)。

知道了芯片類型,或者兼容類型(比如ne2000)就可以開(kāi)始編譯內(nèi)核了。具體的針對(duì)不同系統(tǒng)的內(nèi)核編譯推薦先看看有關(guān)內(nèi)核編譯的文章,這里不多作介紹。

進(jìn)入/usr/src/linux

運(yùn)行make menuconfig進(jìn)入菜單配置內(nèi)核。找到Network Device Support.選則EtherNet,再選則相應(yīng)的芯片號(hào).如果是ISA系線的NE2000,就選則other ISA cards,選則NE2000/NE1000 ISA support。如果是PCI的網(wǎng)卡,就選則PCI ethernet adapters。注意,PCI卡未必都能這樣驅(qū)動(dòng),很多都不行,得另外找driver。比如Intel PCI EtherExpress Pro 100等。

有關(guān)其它選項(xiàng)希望能多自己摸索。多看看help和how-to。

配置完內(nèi)核后,運(yùn)行make dep;make;make zlilo就可以了。如果內(nèi)核選項(xiàng)過(guò)多會(huì)出現(xiàn)過(guò)大的情況而無(wú)法安裝。那么需要把一些不必要的驅(qū)動(dòng)去掉。

一般這樣之后再啟動(dòng)就可以發(fā)現(xiàn)網(wǎng)卡了。驅(qū)動(dòng)了網(wǎng)卡,下一步就是設(shè)定TCP/IP這些東西。這就不是這里的內(nèi)容了。

我的經(jīng)驗(yàn),Linux下NE2000兼容卡都比較好設(shè)。3c系列的卡也都有支持.至于其它卡比如我的DEC 21140就麻煩很多。

另外有些卡即使用某種芯片也未必就能用這個(gè)芯片的驅(qū)動(dòng),這種情況就是有驅(qū)動(dòng)程序也不能用,就需要上網(wǎng)查了。

有關(guān)Intel Etherexpress系列卡的配置.Linux內(nèi)核中有Etherexpress 16的支持,但沒(méi)有其它卡的driver。在http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html里有關(guān)于EtherExpress 100B pro的討論。在那里可以download到一個(gè)c源碼的驅(qū)動(dòng)程序,編譯進(jìn)內(nèi)核就可以了。

那么,如果以上都試過(guò)了,而你的網(wǎng)卡的確還是不能認(rèn),那么你需要上網(wǎng)查driver了。在網(wǎng)上查東西是一門看起來(lái)簡(jiǎn)單實(shí)際上極體現(xiàn)經(jīng)驗(yàn)的學(xué)問(wèn)。建議尋找Linux網(wǎng)卡的driver從http://cesdis.gsfc.nasa.gov/linux/drivers/開(kāi)始。在那里可以發(fā)現(xiàn)的針對(duì)網(wǎng)卡得驅(qū)動(dòng)有:

DEC DC21*4* Tulip chip based cards


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉