久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Linux下新手裝網卡指南

Linux下新手裝網卡指南

作者: 時間:2016-09-12 來源:網絡 收藏

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

本文引用地址:http://cqxgywz.com/article/201609/304674.htm

第一步:不要再問Linux下能夠裝XXX卡么? 這樣的問題,Linux是個開放的系統,借助于網絡上無數的高手,幾乎所有的硬件都能找到支持。

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

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

對于NE2000卡,先要作的一件事情,是將網卡設定為Jumpless模式。很多現在的網卡缺省都是PnP模式,這在95下的確能減少很多麻煩,但是Linux不支持,所以Linux下必須是Jumpless模式。一般所有程序將網卡設為Jumpless。當然如果是老卡,本來就不是PnP,不用管這個。注意,這里主要是ISA的NE2000,關于PCI的NE2000,需要另外設置。

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

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

Linux系統與95這些系統不同的一點是它是運行在內核上的,所謂內核,就是把系統最核心的部分孤立出來編程,將各種驅動程序,內存控制等部分編在一起。于95不同,Linux得內核是公開的,經常更新的,這樣不需要更新整個系統,用戶只需要把最新的內核原程序download下來編譯,就可以得到一個支持更多硬件,更多文件系統,更安全的系統了。所以需要指出,Linux的Driver很少有象95下那樣是。安裝的Linux下的driver大多數都是以C程序形式發布,或者在內核里,或者需要用戶自己修改內核代碼。總之要讓Driver運行,得重新配置編譯內核。如何操作Linux內核是學習Linux中非常重要的一節。Linux的新手最好在這里多下點功夫搞清楚.有關核心的問題建議看Linux How To文檔中的kernel How to。

Anyway,Linux已經裝好了,那么用的是什么內核呢?一般缺省的Linux內核是從安裝盤上來的。那個內核一般包括大多數硬件的驅動程序,比如Ne2000卡。所以未一定要重新編譯內核,也許現有的內核就可以驅動。所以下一步就是把網卡插入計算機,看看Linux能否發現它。這可以從Linux的啟動畫面中看出來,如果你發現如下的一行:

eth0:NE2000 card found at 0x300 using IRQ 05

那就說明Linux發現了NE2000卡,在IO 300,IRQ 05的地方。

如果Linux沒有發現你的網卡,但是你確認你網卡得型號和參數,比如我的網卡是NE2000兼容,IO 0x300,IRQ 05。那么可以修改Linux啟動文件專門搜索這個設備。這個文件在/etc/rc.d/rc.modules里對于NE2000,是這樣的:

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

將最前面的#號去掉,再啟動機器試試。

另外該文件里還可以發現對其它系列網卡比如3C系列的autoprobe。

OK,到現在啟動屏幕上也沒有出現

eth0:NE2000 card found at 0x300 using IRQ 05

這樣的好消息,那么你就得編譯內核了。

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

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

進入/usr/src/linux

運行make menuconfig進入菜單配置內核。找到Network Device Support.選則EtherNet,再選則相應的芯片號.如果是ISA系線的NE2000,就選則other ISA cards,選則NE2000/NE1000 ISA support。如果是PCI的網卡,就選則PCI ethernet adapters。注意,PCI卡未必都能這樣驅動,很多都不行,得另外找driver。比如Intel PCI EtherExpress Pro 100等。

有關其它選項希望能多自己摸索。多看看help和how-to。

配置完內核后,運行make dep;make;make zlilo就可以了。如果內核選項過多會出現過大的情況而無法安裝。那么需要把一些不必要的驅動去掉。

一般這樣之后再啟動就可以發現網卡了。驅動了網卡,下一步就是設定TCP/IP這些東西。這就不是這里的內容了。

我的經驗,Linux下NE2000兼容卡都比較好設。3c系列的卡也都有支持.至于其它卡比如我的DEC 21140就麻煩很多。

另外有些卡即使用某種芯片也未必就能用這個芯片的驅動,這種情況就是有驅動程序也不能用,就需要上網查了。

有關Intel Etherexpress系列卡的配置.Linux內核中有Etherexpress 16的支持,但沒有其它卡的driver。在http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html里有關于EtherExpress 100B pro的討論。在那里可以download到一個c源碼的驅動程序,編譯進內核就可以了。

那么,如果以上都試過了,而你的網卡的確還是不能認,那么你需要上網查driver了。在網上查東西是一門看起來簡單實際上極體現經驗的學問。建議尋找Linux網卡的driver從http://cesdis.gsfc.nasa.gov/linux/drivers/開始。在那里可以發現的針對網卡得驅動有:

DEC DC21*4* Tulip chip based cards


上一頁 1 2 下一頁

關鍵詞:

評論


相關推薦

技術專區

關閉