Linux操作系統(tǒng)研究論文_第1頁
Linux操作系統(tǒng)研究論文_第2頁
Linux操作系統(tǒng)研究論文_第3頁
Linux操作系統(tǒng)研究論文_第4頁
Linux操作系統(tǒng)研究論文_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Linux操作系統(tǒng)研究論文隨著IT產(chǎn)業(yè)巨頭紛紛宣布對Linux的支持,Linux正在迅速擴展其應(yīng)用市場,特別是服務(wù)器市場。在標(biāo)準(zhǔn)上,Linux與PoSIX1003.1兼容,但它具有比以住的UNIX系統(tǒng)更合理的內(nèi)核結(jié)構(gòu)。由于它的開放性,各種被人們廣泛應(yīng)用的網(wǎng)絡(luò)協(xié)議都在該系統(tǒng)中得到了實現(xiàn)。目前人們所使用的Linux系統(tǒng)一般是指由Linux核心、外殼及外圍應(yīng)用軟件構(gòu)成的發(fā)行版本。Linux發(fā)行版本是不同的公司或組織將Linux核心、外殼、安裝工具、應(yīng)用軟件有效捆綁起來的結(jié)果,所以種類繁多,各有各的優(yōu)缺點。但就其總體而言,這些發(fā)行版本具有對盡可能多的網(wǎng)卡的支持。本文僅就RedHat5.1這個特定發(fā)行版本下的網(wǎng)卡的選擇、安裝、配置進行討論,希望對于其他發(fā)行版本的同樣問題有點借鑒作用。

就象UNIX,Linux支持的網(wǎng)卡主要是以太網(wǎng)卡。如3com、AccToN、AT&T、IBm、cRySTAL、D-LINk等眾多品牌的以太網(wǎng)卡只要安裝配置正確,都可以得到你所期望的效果。

一、Linux中網(wǎng)卡的工作原理

為了將這個問題說明的更清楚一些,不妨先簡要地剖析一下Linux是如何讓網(wǎng)卡工作的。一般來說,Linux核心已經(jīng)實現(xiàn)了oSI參考模型的網(wǎng)絡(luò)層及更上層部分。網(wǎng)絡(luò)層的實現(xiàn)依賴于數(shù)據(jù)鏈路層的有效工作。網(wǎng)卡的驅(qū)動程序就是數(shù)據(jù)鏈路層與物理層的接口。通過調(diào)用驅(qū)動程序的發(fā)送例程向物理端口發(fā)送數(shù)據(jù),調(diào)用驅(qū)動程序的接收例程從物理端口接收數(shù)據(jù)。

.網(wǎng)卡驅(qū)動程序

簡單地說,要將你手中的網(wǎng)卡利用起來,你唯一要做的是得到這塊網(wǎng)卡的驅(qū)動程序。驅(qū)動程序提供了面向操作系統(tǒng)核心的接口和面向物理層的接口。

驅(qū)動程序的操作系統(tǒng)接口是一些用于發(fā)現(xiàn)網(wǎng)卡、檢測網(wǎng)卡參數(shù)以及發(fā)送接收數(shù)據(jù)的例程。當(dāng)驅(qū)動程序開始運作時,操作系統(tǒng)首先調(diào)用檢測例程以發(fā)現(xiàn)系統(tǒng)中安裝的網(wǎng)卡。如果該網(wǎng)卡支持即插即用,那么檢測例程應(yīng)該可以自動發(fā)現(xiàn)網(wǎng)卡的各種參數(shù);否則你就要在驅(qū)動程序運作前,設(shè)置好網(wǎng)卡的參數(shù)供驅(qū)動程序使用。當(dāng)核心要發(fā)送數(shù)據(jù)時,它調(diào)用驅(qū)動程序的發(fā)送例程。發(fā)送例程將數(shù)據(jù)寫入正確的空間,然后激活物理發(fā)送過程。

驅(qū)動程序面向物理層的接口是中斷處理例程。當(dāng)網(wǎng)卡接收到數(shù)據(jù)、發(fā)送過程結(jié)束,或者發(fā)現(xiàn)錯誤時,網(wǎng)卡產(chǎn)生一個中斷,然后核心調(diào)用該中斷的處理例程。中斷處理例程判斷中斷發(fā)生的原因,并進行響應(yīng)的處理。比如當(dāng)網(wǎng)卡接收到數(shù)據(jù)而發(fā)生中斷時,中斷處理例程調(diào)用接收例程進行接收。

2.驅(qū)動程序工作參數(shù)

驅(qū)動程序的工作參數(shù)因網(wǎng)卡性質(zhì)的不同而不同,大致包括I/o端口號、中斷號、DmA通道、共享存儲區(qū)等。輸入輸出端口號又被稱為輸入輸出基地址,當(dāng)網(wǎng)卡工作于端口輸入輸出模式時被使用。端口輸入輸出模式需要cPU的全程干預(yù),但所需硬件及存儲空間要求較低。cPU通過端口號指定的空間與網(wǎng)卡交換數(shù)據(jù)。中斷號是網(wǎng)卡的中斷序號,只要不與其它設(shè)備沖突即可。當(dāng)網(wǎng)卡使用DmA方式時,它要使用DmA通道批量傳輸數(shù)據(jù)而不需要cPU的干預(yù)。

對于一塊具體的網(wǎng)卡,如果網(wǎng)卡支持完全自動檢測,那么一個參數(shù)也不用指定,驅(qū)動程序的檢測例程會自動設(shè)定所需參數(shù)。一般情況,你需要人工設(shè)定這些參數(shù)的一部分。如果你的網(wǎng)卡使用端口輸入輸出模式,你要設(shè)定端口號和中斷號。如果你的網(wǎng)卡使用DmA模式,你要設(shè)定DmA通道和中斷號。如果你的網(wǎng)卡使用共享存儲區(qū)的模式,那你就得設(shè)定共享存儲區(qū)的地址范圍。

3.驅(qū)動程序的使用方式

有了網(wǎng)卡的驅(qū)動程序后,你可以選擇是把驅(qū)動程序加入到Linux核心之中還是把驅(qū)動程序加工成獨立模塊。Linux系統(tǒng)一個引人入勝的長處就是可以定制系統(tǒng)的核心。把需要頻繁調(diào)用的功能加入系統(tǒng)核心,可以大大提高系統(tǒng)的效率。在這種情況下系統(tǒng)啟動時,系統(tǒng)核心自動加載網(wǎng)卡的驅(qū)動程序。驅(qū)動程序的參數(shù)可以通過LILo命令參數(shù)加以指

定。系統(tǒng)啟動后驅(qū)動程序永久駐留核心,不能用常規(guī)的方法將其卸載。至于定制的系統(tǒng)核心,是通過重新編譯得到的;如何編譯核心將在后文敘及。

如果把驅(qū)動程序編譯成可裝載模塊,就可以用系統(tǒng)提供的命令在系統(tǒng)啟動后隨時加載。隨時加載的好處是減少內(nèi)存開銷,易于管理,但同時也犧牲了一點網(wǎng)絡(luò)傳輸?shù)男?。?qū)動程序的參數(shù)是在命令行中直接輸入或通過配置文件指定。二、網(wǎng)卡安裝前的準(zhǔn)備在安裝網(wǎng)卡前,務(wù)必檢查是否具備下列條件:

.硬件方面

以太網(wǎng)卡

網(wǎng)絡(luò)連接線及連接頭,如10base-T一般為8芯雙絞線配Rj-45接口

2.軟件方面

Linux操作系統(tǒng)

網(wǎng)卡驅(qū)動程序

*網(wǎng)卡配置程序

*軟件開發(fā)工具,如GNU工具包

3.系統(tǒng)配置信息

可用的端口地址

可用的中斷號

以上不帶星號標(biāo)記的是必要條件,帶星號的是視情況不同而要求的條件。具體情況在下面進一步說明。

三、網(wǎng)卡的安裝及配置

第一步:配置以太網(wǎng)卡的工作參數(shù)

配置網(wǎng)卡就是配置網(wǎng)卡的工作參數(shù),如端口地址、中斷號等。網(wǎng)卡的缺省參數(shù)一般存儲于網(wǎng)卡內(nèi)部的EEPRom,這是網(wǎng)卡出廠前設(shè)置好的。缺省參數(shù)在大多數(shù)情況下是可行的,但如果這些參數(shù)與你的系統(tǒng)有沖突并且網(wǎng)卡又不支持軟件動態(tài)設(shè)置,那么你就要使用網(wǎng)卡的設(shè)置程序。并不是所有的網(wǎng)卡都要經(jīng)過這一步,因為有些網(wǎng)卡支持通過驅(qū)動軟件及其輸入?yún)?shù)來確定網(wǎng)卡的工作參數(shù)??梢酝ㄟ^查閱網(wǎng)卡使用說明書來確定這一點。

網(wǎng)卡的設(shè)置程序與驅(qū)動程序不同,設(shè)置程序僅僅用來對網(wǎng)卡EEPRom中的設(shè)置進行修改。網(wǎng)卡程序本身可能運行在其它操作系統(tǒng)下,如wINDowS95/98、oS/2、DoS等。如果是非Linux平臺,那你就先在適合設(shè)置程序運行的系統(tǒng)中安裝網(wǎng)卡,按設(shè)置程序說明設(shè)置網(wǎng)卡參數(shù)。然后再在Linux系統(tǒng)下安裝該網(wǎng)卡。

第二步:安裝Linux系統(tǒng)

假如你將要安裝以太網(wǎng)卡的Linux系統(tǒng)本身還未安裝,那么可以先試著在安裝Linux的同時安裝網(wǎng)卡。這一步成功的前提是你的Linux發(fā)行版本包含將要安裝的網(wǎng)卡的驅(qū)動程序。

運行Linux的安裝程序,按提示進行操作,別忘了安裝核心的網(wǎng)絡(luò)部分。當(dāng)進行到LAN配置時,安裝程序會列出它支持的所有網(wǎng)卡的類型??纯茨愕木W(wǎng)卡是否榜上有名。隨著Linux發(fā)行版本的不斷升級,目前RedHat6.0已經(jīng)覆蓋了常用的網(wǎng)卡類型。如果很幸運地你的網(wǎng)卡恰好在其中,那么下文討論的很多步驟都可以不必考慮了,安裝程序會自動完成網(wǎng)卡的安裝與驅(qū)動。但如果沒找到適用于你的網(wǎng)卡類型,也不必擔(dān)心,繼續(xù)下一步。

第三步:手工安裝網(wǎng)卡

安裝網(wǎng)卡也就是安裝網(wǎng)卡的驅(qū)動程序。網(wǎng)卡要工作必須要有驅(qū)動程序,并且驅(qū)動程序越成熟越好。驅(qū)動程序一般由網(wǎng)卡的生產(chǎn)或供應(yīng)商提供。由于Linux是一個起步不久的新興操作系統(tǒng),網(wǎng)卡的生產(chǎn)商并不一定提供Linux環(huán)境下的驅(qū)動程序。這時候你就得從其它途徑想辦法了,比如到INTERNET上專門提供硬件驅(qū)動程序的網(wǎng)站查找一下,也可以在新聞組上貼個求助信息??傊?,只有得到網(wǎng)卡的驅(qū)動程序后,方可進行下一步。

網(wǎng)卡的驅(qū)動程序有兩種類型。一是可直接使用的二進制代碼;另一種是驅(qū)動程序的源代碼。二進制代碼一般是預(yù)先編譯好的可裝載模塊。源代碼可以編譯成可裝載模塊,也可以編譯成系統(tǒng)核心的一部分。如何把源代碼編譯成可裝載模塊不在本文討論之列,具體可以查閱驅(qū)動程序的說明書。

.可裝載模塊的使用

系統(tǒng)提供了一組命令用于將驅(qū)動程序模塊載入內(nèi)存執(zhí)行。這些命令包括modprobe、insmod、Ismod、rmmod。modprobe與insmod命令功能相似,但是方式各異。

modprobe命令使用配置文

件/erc/config.modules來加載可執(zhí)行模塊。要用modprobe命令加載以太網(wǎng)卡的驅(qū)動程序,可以在config.modules文件中加入:

aliaseth0drivermodule

這行配置信息把以太網(wǎng)卡的設(shè)備名與驅(qū)動程序模塊聯(lián)系起來。modprobe命令依據(jù)這條信息,自動加載存放于/lib/library/xxxx/net目錄下名為drivermodule.o的模塊。因此要使modprobe命令找到驅(qū)動程序模塊,必須將該模塊放在/lib/library/xxxx/net目錄下。

那么驅(qū)動程序的參數(shù)如何指定呢?還是使用conf.modules文件。方法是在接著上述配置信息的后面加入下行信息:

optionsdrivermoduleparml=valuel,parm2=value2,……

這里parm1是驅(qū)動程序可以接受的參數(shù)名,valuel是該參數(shù)值;依次類推。

比如optionscs89x0io=0x200irq=0xAmedia=aui

insmod命令直接通過命令行參數(shù)將驅(qū)動程序模塊載入內(nèi)存,并可以在命令中指定驅(qū)動程序參數(shù)。例如:

insmoddrivermodule.oparml=valuel,parm2=value2,……

以上兩個命令中可以使用驅(qū)動程序參數(shù)要依據(jù)具體的網(wǎng)卡及其驅(qū)動程序而定,要仔細閱讀網(wǎng)卡及驅(qū)動程序的說明書。有的網(wǎng)卡驅(qū)動程序可以用這些參數(shù)覆蓋網(wǎng)卡本身EEPRom中存儲的參數(shù)。有的則必須使用EEPRom中的參數(shù)。有的因為驅(qū)動程序不自動檢測網(wǎng)卡使用的參數(shù),所以還得把網(wǎng)卡使用的EEPRom中的參數(shù)傳給驅(qū)動程序。

卸載驅(qū)動程序模塊使用rmmod命令:

rmmoddrivermodule.o

2.把驅(qū)動程序編譯入系統(tǒng)核心

除了以可裝載模塊的形式使用驅(qū)動程序,還可以把驅(qū)動程序編譯進Linux核心,以獲取更高的效率。這種方式需要驅(qū)動程序的源代碼、Linux核心源代碼及其編譯工具。Linux核心的編譯過程包括配置核心、重建依賴關(guān)系、生成核心代碼等步驟。配置核心的過程是用系統(tǒng)提供的配置工具重新生成用來編譯核心的眾多make文件的過程。為了讓核心的配置工具了解你的網(wǎng)卡驅(qū)動程序,你需要修改一些核心的配置文件。

修改配置文件:主要修改核心源代碼目錄下的四個文件,即drivers/net/coNFIG文件、drivers/net/config.in文件、drivers/net/makefile文件和drivers/net/Space.c文件。coNFIG和config.in文件用于控制核心配置工具的運行,主要是加入關(guān)于是否包括該網(wǎng)卡的支持提示。makefile和Space.c文件用于編譯核心代碼并說明面向核心的接口。詳細語句參見下面例子。

運行核心配置工具:在核心源代碼目錄下執(zhí)行makeconfig或makemenuconfig命令。makeconfig是面向命令行的,通過逐句回答提問來配置核心。由于其在配置過程中不可改變或撤消以前的回答,故多有不便。makemenuconfig則是通過窗口菜單方式,使用起來很方便。就本文而言,你只要在上一步中正確修改了配置文件,那么在config中會出現(xiàn)是否需要該網(wǎng)卡支持的提問,你選擇‘y’?;蛘咴趍enuconfig中的network菜單中出現(xiàn)表示該網(wǎng)卡的菜單項,把它選上即可。

重建依賴關(guān)系:很簡單,執(zhí)行makedep和makeclean命令。

生成核心代碼:執(zhí)行makezImage命令。這個命令開始真正編譯核心代碼,并把核心代碼存放為arch/i386/boot目錄下的zImage。

為了使用新的核心代碼,你需要用新的核心代碼替換原有的。原有的核心代碼一般存放在/boot目錄下,文件名稱類似于vmlinuz-v.s.r-m表示核心的版本號)。如vmlinuz-2.0.34-1。執(zhí)行下列命令:

cparch/i386/boot/zImage/boot/vmlinuz-v.s.r-m

為了安全起見,可以先把原有的核心代碼做個備份,以便發(fā)生錯

誤時恢復(fù)。

至此,你可以重新引導(dǎo)系統(tǒng)以使用新的帶有正確網(wǎng)卡驅(qū)動支持的Linux核心。唯一剩下未解決的是驅(qū)動程序的參數(shù)問題。有些網(wǎng)卡驅(qū)動程序如果不輸入?yún)?shù),那它工作就會不正常,甚至根本不工作。由于現(xiàn)在網(wǎng)卡的驅(qū)動程序是系統(tǒng)啟動時由核心載入運行的,系統(tǒng)啟動之后用戶就很難改變這些參數(shù)了,所以你必須在系統(tǒng)啟動時告訴Linux核心網(wǎng)卡驅(qū)動程序使用的參數(shù)。具體方法有兩種:

在系統(tǒng)引導(dǎo)程序LILo中輸入。

在LILo開始引導(dǎo)系統(tǒng)時,用ether子命令設(shè)定以太網(wǎng)卡驅(qū)動程序的參數(shù)。ether命令的使用方式為:

LILo:linuxether=IRo.BASE_ADDR,NAmE

這里帶下劃線的是要輸入的部分,IRQ表示中斷號,BASE_ADDR表示端口號,NAmE表示網(wǎng)卡的設(shè)備名。例如:linuxether=15,0x320,eth0

在LILo配置文件中設(shè)定。

每次在系統(tǒng)啟動時再輸入驅(qū)動程序參數(shù)似乎有點過于麻煩。幸好系統(tǒng)提供了LILo的配置文件可以用來永久性的設(shè)置Linux系統(tǒng)啟動時的子命令。方法是在/etc/lilo.conf文件中的適當(dāng)位置加入以下一行:

append=“ether=IRQ,BASE_ADDR,NAmE”

這里帶下劃線部分的意義同上。加入這一行后,還需要用/sbin/lilo命令把這個配置寫入引導(dǎo)程序。

第四步:網(wǎng)絡(luò)配置及測試

安裝完網(wǎng)卡就可以配置網(wǎng)絡(luò)通信了。配置網(wǎng)絡(luò)簡單地就是使用ifconfig命令,

例如:

ifconfigeth01.2.3.4netmask255.0.0.0up

最后ping一下網(wǎng)上其它機器的ip地址,檢查網(wǎng)絡(luò)是否連通。

五、一個以太網(wǎng)卡安裝實例

下面以cirrus公司生產(chǎn)的crystalcS8920以太網(wǎng)卡為例,詳細說明上述安裝配置過程。本例中,有些命令參數(shù),如核心源代碼目錄等,是以我使用的系統(tǒng)環(huán)境為出發(fā)點。具體應(yīng)用中還要加以本地化。為了更接近實際,例子中也包括了對安裝中碰到的問題的描述。

.此網(wǎng)卡是IBmPc機的內(nèi)置式網(wǎng)卡,機器只提供了windows95/98環(huán)境下的驅(qū)動程序。由于RedHat5.0發(fā)行版本尚未提供對此網(wǎng)卡的直接支持,所以從cirrus的站點上找到并下載了該網(wǎng)卡驅(qū)動程序的Linux版本,是一個名為Linux102_tar.gz的壓縮文件。

2.文件Linux102_tar.gz解壓后包括五個文件。包括源代碼,僅適用于Linux2.0版本的目標(biāo)模塊以及readme文件。

3.查閱readme文件后,了解到這個驅(qū)動程序只能使用網(wǎng)卡EEPRom中設(shè)定的端口號、中斷號。為了知道網(wǎng)卡EEPRom的設(shè)置,又從cirrus站點下載了該網(wǎng)卡DoS版本的設(shè)置程序setup.exe

4.在DoS中運行setup.exe,發(fā)現(xiàn)網(wǎng)卡的起始端口號為0x360,中斷號為10,與別的設(shè)備有沖突。選擇setup.exe程序的相應(yīng)菜單,把中斷號改成5。另外,此驅(qū)動程序不支持plugandPlay,故也在setup.exe中將網(wǎng)卡的PnP功能屏蔽掉。

5.我所使用的RedHat5.0的Linux核心版本為2.0.34,所以不能用現(xiàn)成的驅(qū)動程序目標(biāo)模塊,需要自己動手編譯。如上文所述,有兩種方式使用此驅(qū)動程序。

6.如果要編譯成獨立模塊,執(zhí)行下列命令:

gcc-D_kERNEL_-I/usr/src/linux/include-I/usr/src/linux/net/inet-wall-wstrictprototypes-02-fomit-frame-pointer-DmoDULE-DcoNFIG_moDVERSIoNS-ccs89x0.c

編譯結(jié)果是名為cs89x0.o的驅(qū)動程序目標(biāo)模塊。要裝載此驅(qū)動程序,輸入下列命令:insmodcs89x0.oio=0x360irq=10

要卸載此驅(qū)動程序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論