Linux操作系統(tǒng)下以太網(wǎng)卡的安裝及配置
Linux操作系統(tǒng)以其獨(dú)有的開(kāi)放性、穩(wěn)定性、高效率等特點(diǎn),受到越來(lái)越多有識(shí)之士的青睞。隨著IT產(chǎn)業(yè)巨頭紛紛宣布對(duì)Linux的支持,Linux正在迅速擴(kuò)展其應(yīng)用市場(chǎng),特別是服務(wù)器市場(chǎng)。在標(biāo)準(zhǔn)上,Linux與POSIX1003.1兼容,但它具有比以住的UNIX系統(tǒng)更合理的內(nèi)核結(jié)構(gòu)。由于它的開(kāi)放性,各種被人們廣泛應(yīng)用的網(wǎng)絡(luò)協(xié)議都在該系統(tǒng)中得到了實(shí)現(xiàn)。目前人們所使用的Linux系統(tǒng)一般是指由Linux核心、外殼(SHELL)及外圍應(yīng)用軟件構(gòu)成的發(fā)行版本。Linux發(fā)行版本是不同的公司或組織將Linux核心、外殼、安裝工具、應(yīng)用軟件有效捆綁起來(lái)的結(jié)果,所以種類繁多,各有各的優(yōu)缺點(diǎn)。但就其總體而言,這些發(fā)行版本具有對(duì)盡可能多的網(wǎng)卡的支持。本文僅就RedHat這個(gè)特定發(fā)行版本下的網(wǎng)卡的選擇、安裝、配置進(jìn)行討論,希望對(duì)于其他發(fā)行版本的同樣問(wèn)題有點(diǎn)借鑒作用。
就象UNIX,Linux支持的網(wǎng)卡主要是以太網(wǎng)卡。如3COM、ACCTON、AT&T、IBM、CRYSTAL、D-LINK等眾多品牌的以太網(wǎng)卡只要安裝配置正確,都可以得到你所期望的效果。
一、 Linux中網(wǎng)卡的工作原理
為了將這個(gè)問(wèn)題說(shuō)明的更清楚一些,不妨先簡(jiǎn)要地剖析一下Linux是如何讓網(wǎng)卡工作的。一般來(lái)說(shuō),Linux核心已經(jīng)實(shí)現(xiàn)了OSI參考模型的網(wǎng)絡(luò)層及更上層部分。網(wǎng)絡(luò)層的實(shí)現(xiàn)依賴于數(shù)據(jù)鏈路層的有效工作。網(wǎng)卡的驅(qū)動(dòng)程序就是數(shù)據(jù)鏈路層與物理層的接口。通過(guò)調(diào)用驅(qū)動(dòng)程序的發(fā)送例程向物理端口發(fā)送數(shù)據(jù),調(diào)用驅(qū)動(dòng)程序的接收例程從物理端口接收數(shù)據(jù)。
1.網(wǎng)卡驅(qū)動(dòng)程序
簡(jiǎn)單地說(shuō),要將你手中的網(wǎng)卡利用起來(lái),你唯一要做的是得到這塊網(wǎng)卡的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序提供了面向操作系統(tǒng)核心的接口和面向物理層的接口。
驅(qū)動(dòng)程序的操作系統(tǒng)接口是一些用于發(fā)現(xiàn)網(wǎng)卡、檢測(cè)網(wǎng)卡參數(shù)以及發(fā)送接收數(shù)據(jù)的例程。當(dāng)驅(qū)動(dòng)程序開(kāi)始運(yùn)作時(shí),操作系統(tǒng)首先調(diào)用檢測(cè)例程以發(fā)現(xiàn)系統(tǒng)中安裝的網(wǎng)卡。如果該網(wǎng)卡支持即插即用,那么檢測(cè)例程應(yīng)該可以自動(dòng)發(fā)現(xiàn)網(wǎng)卡的各種參數(shù);否則你就要在驅(qū)動(dòng)程序運(yùn)作前,設(shè)置好網(wǎng)卡的參數(shù)供驅(qū)動(dòng)程序使用。當(dāng)核心要發(fā)送數(shù)據(jù)時(shí),它調(diào)用驅(qū)動(dòng)程序的發(fā)送例程。發(fā)送例程將數(shù)據(jù)寫(xiě)入正確的空間,然后激活物理發(fā)送過(guò)程。
驅(qū)動(dòng)程序面向物理層的接口是中斷處理例程。當(dāng)網(wǎng)卡接收到數(shù)據(jù)、發(fā)送過(guò)程結(jié)束,或者發(fā)現(xiàn)錯(cuò)誤時(shí),網(wǎng)卡產(chǎn)生一個(gè)中斷,然后核心調(diào)用該中斷的處理例程。中斷處理例程判斷中斷發(fā)生的原因,并進(jìn)行響應(yīng)的處理。比如當(dāng)網(wǎng)卡接收到數(shù)據(jù)而發(fā)生中斷時(shí),中斷處理例程調(diào)用接收例程進(jìn)行接收。
2.驅(qū)動(dòng)程序工作參數(shù)
驅(qū)動(dòng)程序的工作參數(shù)因網(wǎng)卡性質(zhì)的不同而不同,大致包括I/O端口號(hào)、中斷號(hào)、DMA通道、共享存儲(chǔ)區(qū)等。輸入輸出端口號(hào)又被稱為輸入輸出基地址,當(dāng)網(wǎng)卡工作于端口輸入輸出模式時(shí)被使用。端口輸入輸出模式需要CPU的全程干預(yù),但所需硬件及存儲(chǔ)空間要求較低。CPU通過(guò)端口號(hào)指定的空間與網(wǎng)卡交換數(shù)據(jù)。中斷號(hào)是網(wǎng)卡的中斷序號(hào),只要不與其它設(shè)備沖突即可。當(dāng)網(wǎng)卡使用DMA方式時(shí),它要使用DMA通道批量傳輸數(shù)據(jù)而不需要CPU的干預(yù)。
對(duì)于一塊具體的網(wǎng)卡,如果網(wǎng)卡支持完全自動(dòng)檢測(cè),那么一個(gè)參數(shù)也不用指定,驅(qū)動(dòng)程序的檢測(cè)例程會(huì)自動(dòng)設(shè)定所需參數(shù)。一般情況,你需要人工設(shè)定這些參數(shù)的一部分。如果你的網(wǎng)卡使用端口輸入輸出模式,你要設(shè)定端口號(hào)和中斷號(hào)。如果你的網(wǎng)卡使用DMA模式,你要設(shè)定DMA通道和中斷號(hào)。如果你的網(wǎng)卡使用共享存儲(chǔ)區(qū)的模式,那你就得設(shè)定共享存儲(chǔ)區(qū)的地址范圍。
3.驅(qū)動(dòng)程序的使用方式
有了網(wǎng)卡的驅(qū)動(dòng)程序后,你可以選擇是把驅(qū)動(dòng)程序加入到Linux核心之中還是把驅(qū)動(dòng)程序加工成獨(dú)立模塊。Linux系統(tǒng)一個(gè)引人入勝的長(zhǎng)處就是可以定制系統(tǒng)的核心。把需要頻繁調(diào)用的功能加入系統(tǒng)核心,可以大大提高系統(tǒng)的效率。在這種情況下系統(tǒng)啟動(dòng)時(shí),系統(tǒng)核心自動(dòng)加載網(wǎng)卡的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序的參數(shù)可以通過(guò)LILO命令參數(shù)加以指定。系統(tǒng)啟動(dòng)后驅(qū)動(dòng)程序永久駐留核心,不能用常規(guī)的方法將其卸載。至于定制的系統(tǒng)核心,是通過(guò)重新編譯得到的;如何編譯核心將在后文敘及。
如果把驅(qū)動(dòng)程序編譯成可裝載模塊,就可以用系統(tǒng)提供的命令在系統(tǒng)啟動(dòng)后隨時(shí)加載。隨時(shí)加載的好處是減少內(nèi)存開(kāi)銷,易于管理,但同時(shí)也犧牲了一點(diǎn)網(wǎng)絡(luò)傳輸?shù)男省r?qū)動(dòng)程序的參數(shù)是在命令行中直接輸入或通過(guò)配置文件指定。
二、 網(wǎng)卡安裝前的準(zhǔn)備
在安裝網(wǎng)卡前,務(wù)必檢查是否具備下列條件:
1.硬件方面
●以太網(wǎng)卡
●網(wǎng)絡(luò)連接線及連接頭,如10base-T一般為8芯雙絞線配RJ-45接口
2.軟件方面
●Linux操作系統(tǒng)
●網(wǎng)卡驅(qū)動(dòng)程序(目標(biāo)碼或源代碼)
●*網(wǎng)卡配置程序
●*軟件開(kāi)發(fā)工具,如GNU工具包(包括編譯器gcc、make等)
3.系統(tǒng)配置信息
●可用的端口地址
●可用的中斷號(hào)
以上不帶星號(hào)標(biāo)記的是必要條件,帶星號(hào)的是視情況不同而要求的條件。具體情況在下面進(jìn)一步說(shuō)明。
三、 網(wǎng)卡的安裝及配置
第一步:配置以太網(wǎng)卡的工作參數(shù)
配置網(wǎng)卡就是配置網(wǎng)卡的工作參數(shù),如端口地址、中斷號(hào)等。網(wǎng)卡的缺省參數(shù)一般存儲(chǔ)于網(wǎng)卡內(nèi)部的EEPROM,這是網(wǎng)卡出廠前設(shè)置好的。缺省參數(shù)在大多數(shù)情況下是可行的,但如果這些參數(shù)與你的系統(tǒng)有沖突并且網(wǎng)卡又不支持軟件動(dòng)態(tài)設(shè)置,那么你就要使用網(wǎng)卡的設(shè)置程序。并不是所有的網(wǎng)卡都要經(jīng)過(guò)這一步,因?yàn)橛行┚W(wǎng)卡支持通過(guò)驅(qū)動(dòng)軟件及其輸入?yún)?shù)來(lái)確定網(wǎng)卡的工作參數(shù)??梢酝ㄟ^(guò)查閱網(wǎng)卡使用說(shuō)明書(shū)來(lái)確定這一點(diǎn)。
網(wǎng)卡的設(shè)置程序與驅(qū)動(dòng)程序不同,設(shè)置程序僅僅用來(lái)對(duì)網(wǎng)卡EEPROM中的設(shè)置進(jìn)行修改。網(wǎng)卡程序本身可能運(yùn)行在其它操作系統(tǒng)下,如WINDOWS95/98、OS/2、DOS等。如果是非Linux平臺(tái),那你就先在適合設(shè)置程序運(yùn)行的系統(tǒng)中安裝網(wǎng)卡,按設(shè)置程序說(shuō)明設(shè)置網(wǎng)卡參數(shù)。然后再在Linux系統(tǒng)下安裝該網(wǎng)卡。
第二步:安裝Linux系統(tǒng)
假如你將要安裝以太網(wǎng)卡的Linux系統(tǒng)本身還未安裝,那么可以先試著在安裝Linux的同時(shí)安裝網(wǎng)卡。這一步成功的前提是你的Linux發(fā)行版本包含將要安裝的網(wǎng)卡的驅(qū)動(dòng)程序。
運(yùn)行Linux的安裝程序,按提示進(jìn)行操作,別忘了安裝核心的網(wǎng)絡(luò)部分。當(dāng)進(jìn)行到LAN配置時(shí),安裝程序會(huì)列出它支持的所有網(wǎng)卡的類型??纯茨愕木W(wǎng)卡是否榜上有名。隨著Linux發(fā)行版本的不斷升級(jí),目前RedHat 6.0已經(jīng)覆蓋了常用的網(wǎng)卡類型。如果很幸運(yùn)地你的網(wǎng)卡恰好在其中,那么下文討論的很多步驟都可以不必考慮了,安裝程序會(huì)自動(dòng)完成網(wǎng)卡的安裝與驅(qū)動(dòng)。但如果沒(méi)找到適用于你的網(wǎng)卡類型,也不必?fù)?dān)心,繼續(xù)下一步。
第三步:手工安裝網(wǎng)卡
安裝網(wǎng)卡也就是安裝網(wǎng)卡的驅(qū)動(dòng)程序。網(wǎng)卡要工作必須要有驅(qū)動(dòng)程序,并且驅(qū)動(dòng)程序越成熟越好。驅(qū)動(dòng)程序一般由網(wǎng)卡的生產(chǎn)或供應(yīng)商提供。由于Linux是一個(gè)起步不久的新興操作系統(tǒng),網(wǎng)卡的生產(chǎn)商并不一定提供Linux環(huán)境下的驅(qū)動(dòng)程序。這時(shí)候你就得從其它途徑想辦法了,比如到INTERNET上專門(mén)提供硬件驅(qū)動(dòng)程序的網(wǎng)站查找一下,也可以在新聞組上貼個(gè)求助信息??傊?,只有得到網(wǎng)卡的驅(qū)動(dòng)程序后,方可進(jìn)行下一步。
網(wǎng)卡的驅(qū)動(dòng)程序有兩種類型。一是可直接使用的二進(jìn)制代碼;另一種是驅(qū)動(dòng)程序的源代碼。二進(jìn)制代碼一般是預(yù)先編譯好的可裝載模塊。源代碼可以編譯成可裝載模塊,也可以編譯成系統(tǒng)核心的一部分。如何把源代碼編譯成可裝載模塊不在本文討論之列,具體可以查閱驅(qū)動(dòng)程序的說(shuō)明書(shū)。
1.可裝載模塊的使用
系統(tǒng)提供了一組命令用于將驅(qū)動(dòng)程序模塊載入內(nèi)存執(zhí)行。這些命令包括modprobe、insmod、Ismod、rmmod。modprobe 與insmod命令功能相似,但是方式各異。
●modprobe 命令使用配置文件/erc/config.modules來(lái)加載可執(zhí)行模塊。要用 modprobe命令加載以太網(wǎng)卡的驅(qū)動(dòng)程序,可以在 config.modules文件中加入:
alias eth0 drivermodule (drivermodule是驅(qū)動(dòng)程序模塊的名稱)
這行配置信息把以太網(wǎng)卡的設(shè)備名與驅(qū)動(dòng)程序模塊聯(lián)系起來(lái)。modprobe命令依據(jù)這條信息,自動(dòng)加載存放于 /lib/library/xxxx/net目錄下名為 drivermodule.o的模塊。因此要使 modprobe命令找到驅(qū)動(dòng)程序模塊,必須將該模塊放在 /lib/library/xxxx/net目錄下。
那么驅(qū)動(dòng)程序的參數(shù)如何指定呢?還是使用conf.modules文件。方法是在接著上述配置信息的后面加入下行信息:
options drivermodule parml=valuel,parm2=value2,……
這里parm1 是驅(qū)動(dòng)程序可以接受的參數(shù)名,valuel是該參數(shù)值;依次類推。
比如options cs89x0 io=0x200 irq=0xA media=aui
●insmod命令直接通過(guò)命令行參數(shù)將驅(qū)動(dòng)程序模塊載入內(nèi)存,并可以在命令中指定驅(qū)動(dòng)程序參數(shù)。例如:
insmod drivermodule.o parml=valuel,parm2=value2,……
以上兩個(gè)命令中可以使用驅(qū)動(dòng)程序參數(shù)要依據(jù)具體的網(wǎng)卡及其驅(qū)動(dòng)程序而定,要仔細(xì)閱讀網(wǎng)卡及驅(qū)動(dòng)程序的說(shuō)明書(shū)。有的網(wǎng)卡驅(qū)動(dòng)程序可以用這些參數(shù)覆蓋網(wǎng)卡本身EEPROM中存儲(chǔ)的參數(shù)。有的則必須使用EEPROM中的參數(shù)。有的因?yàn)轵?qū)動(dòng)程序不自動(dòng)檢測(cè)網(wǎng)卡使用的參數(shù),所以還得把網(wǎng)卡使用的EEPROM中的參數(shù)傳給驅(qū)動(dòng)程序。
卸載驅(qū)動(dòng)程序模塊使用rmmod命令:
rmmod drivermodule.o
2.把驅(qū)動(dòng)程序編譯入系統(tǒng)核心
除了以可裝載模塊的形式使用驅(qū)動(dòng)程序,還可以把驅(qū)動(dòng)程序編譯進(jìn)Linux核心,以獲取更高的效率。這種方式需要驅(qū)動(dòng)程序的源代碼、Linux核心源代碼及其編譯工具。Linux核心的編譯過(guò)程包括配置核心、重建依賴關(guān)系、生成核心代碼等步驟。配置核心的過(guò)程是用系統(tǒng)提供的配置工具(make config 或make menuconfig)重新生成用來(lái)編譯核心的眾多make文件的過(guò)程。為了讓核心的配置工具了解你的網(wǎng)卡驅(qū)動(dòng)程序,你需要修改一些核心的配置文件。
(1)修改配置文件:主要修改核心源代碼目錄下
關(guān)鍵詞:Linux,操作系統(tǒng),以太網(wǎng)卡
閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!
- 1
- 1
- 1
- 1
- 1
- 1