新聞中心

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

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

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

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

        本文引用地址:http://www.104case.com/article/201609/304674.htm

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

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

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

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

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

        Anyway,Linux已經(jīng)裝好了,那么用的是什么內(nèi)核呢?一般缺省的Linux內(nè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)畫面中看出來,如果你發(fā)現(xiàn)如下的一行:

        eth0:NE2000 card found at 0x300 using IRQ 05

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

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

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

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

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

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

        eth0:NE2000 card found at 0x300 using IRQ 05

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

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

        知道了芯片類型,或者兼容類型(比如ne2000)就可以開始編譯內(nèi)核了。具體的針對不同系統(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)的芯片號.如果是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)過多會(huì)出現(xiàn)過大的情況而無法安裝。那么需要把一些不必要的驅(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的支持,但沒有其它卡的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)核就可以了。

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

        DEC DC21*4* Tulip chip based cards


        上一頁 1 2 下一頁

        關(guān)鍵詞:

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 涞源县| 平阳县| 北川| 高安市| 五峰| 新乡县| 喜德县| 麻阳| 新源县| 江华| 铁岭市| 张家港市| 万盛区| 色达县| 九龙坡区| 新野县| 浙江省| 阳高县| 萝北县| 五大连池市| 丽江市| 蓬莱市| 翁牛特旗| 获嘉县| 吐鲁番市| 桂阳县| 华安县| 台南县| 九江市| 彭阳县| 通榆县| 惠州市| 沙雅县| 额尔古纳市| 收藏| 静安区| 枞阳县| 万年县| 佛山市| 从化市| 荥阳市|