美章網 精品范文 操作系統論文范文

    操作系統論文范文

    前言:我們精心挑選了數篇優質操作系統論文文章,供您閱讀參考。期待這些文章能為您帶來啟發,助您在寫作的道路上更上一層樓。

    操作系統論文

    第1篇

    關鍵字組件重用操作系統OSKit

    1引言

    當前,操作系統的功能不斷擴展,操作系統的類型呈現出多樣化的趨勢。一個小規模的開發小組已經不可能完全從頭開始實現一個實用的操作系統,而一般情況下,研究人員只對操作系統的一些特定領域感興趣,而對于另外一些元素,如啟動加載代碼、核心啟動代碼、設備驅動程序和內存分配代碼等往往不感興趣,但是一個可運行的原型系統又必須包含這些內容。編寫這些基礎結構延緩了操作系統研究項目的進度,同時也增加了進行操作系統研究的代價。為了解決這一問題,猶他大學的FLUX研究小組開發了OSKit,它提供了一個框架和一組模塊化的、具有簡單接口的庫以及一組清晰的、可重用的OS組件。OSKit可以用來構建操作系統內核、外層服務和其他核心OS功能模塊。OSKit提供了各種功能模塊,諸如簡單自舉,一個可用于內核的最小化POSIX環境、與物理內存和其約束一致的內存管理、廣泛的調試支持,以及高層子系統如協議棧和文件系統。開發者可以根據自己的研究興趣或所要考慮的性能來使用這些模塊,或用他們自己的模塊來替代標準的OSKit模塊。

    OSKit公開了它內部的實現細節,允許用戶從成熟的操作系統中不加修改地提取代碼,然后通過一小部分經過仔細設計的粘接代碼將它們合并到一起,隔離它們的依賴性,并輸出良好定義的接口。OSKit使用這一技術整合了許多穩定而成熟的源代碼,包括設備驅動、文件系統、網絡協議等等。實踐表明,使用組件軟件架構和重用技術會給操作系統實現領域帶來大的影響。

    2組件技術簡介

    組件技術是一種較新的軟件開發技術。到目前為止,還難以確定組件技術的明確定義。比如,對組件技術的常見說法有以下這些:“二進制軟件單元”、“任意場合可部署的軟件”、“特別適合第三方開發”和“規范定義的接口”等等。大致上可以這樣理解:所謂組件,其實就是一種可部署軟件的代碼包,其中包括某些可執行模塊。組件單獨開發并作為軟件單元使用,它具有明確的接口,軟件就是通過這些接口調用組件所能提供的服務,多種組件可以聯合起來構成更大型的組件乃至直接建立整個系統。組件的實現必須支持一種或者多種其用戶所希望獲得的接口。實現組件并不一定需要采用面向對象語言。為了構造新應用程序,軟件開發人員找出適當的組件,將這些組件加入到正在開發中的應用程序,同時對應用程序進行測試并保證應用程序的組裝工作按照預定的規劃正常進行。采用組件技術能降低開發、測試和維護成本,提高可靠性和穩定性。

    3Oskit組件綜述

    OSKIT的組件庫提供了一般情況下更高層的功能,它通常只對外開放一些相關的公用調用接口。目標系統通過OSKit的面向對象的COM接口來與這些組件進行交互。以下幾節概述了OSKit所提供的組件。

    3.1引導程序

    大多數操作系統多有自身的啟動加載機制,彼此互不兼容。這種加載機制的多樣性并不是由于每個OS所要求的自舉服務不同而引起,而是由于構建啟動加載器的特定方式造成的。因為從操作系統研究的立場來看,啟動加載器是一個令人不敢興趣的領域,因此OS開發者通常進行一個最小化、快捷的設計。由于設計理念和要求的輕微差別,每個啟動加載器都不適用于下一個OS。為了解決這個問題,OSKit直接支持多啟動標準,這一標準是由幾個OS項目的成員共同設計的,它的目的是提供一個簡單而通用的啟動加載器與OS內核間的接口,從而允許一個啟動加載器加載任何兼容的OS。

    在進行操作系統研究時,多啟動標準非常有用,這其中的主要原因是啟動加載器在加載內核自身的同時還具有加載附加文件或者啟動模塊的能力。這里的一個啟動模塊只是一個普通文件,啟動加載器不以任何方式解釋它,而僅僅把它隨同內核映像一起加載到保留物理內存塊中。在啟動內核時,啟動加載器提供給內核以下內容:物理地址的列表、所有已加載的啟動模塊的大小,以及與每個模塊相聯系的由用戶定義的字符串。這些啟動模塊和與它們相聯系的用戶定義的字符串由內核解釋。這樣做的目的是為了通過提供內核啟動時需要的數據,諸如初始化程序、設備驅動和文件系統服務器,來減輕內核啟動的負擔。

    3.2核心支持庫

    OSKit核心支持庫的主要用途是讓客戶OS更容易訪問硬件設施。它包含了一個較大的實用函數和符號定義的集合,該集合對于管理模式代碼是非常具體的。與此相對應,OSKit的大多數其他庫在用戶模式代碼中通常很有用。和OSKit的其余部分所不同的是,多數核心支持代碼必須是針對特定系統結構的,而這些特定機器的細節對客戶OS也是有用的。例如,在x86機器上,核心支持庫包含一些函數,用來創建和操縱x86頁表和段寄存器。其他OSKit組件通常提供建立在這些低層機制上的與體系結構無關的設施,但是為了提供最大的靈活性,與特定結構相關的接口始終可以被訪問。

    OSKit核心支持庫在x86體系結構上尤為重要,因為該體系結構的OS級編程環境特別復雜和模糊。核心支持庫仔細地設置了一個基本的32位執行環境(為了與MS-DOS兼容,x86處理器通常以16位模式開始),初始化段和頁轉換表,安裝一個中斷向量表,并提供缺省的陷阱和中斷處理程序。當然,客戶OS能夠修改或重載這些行為。然而,在缺省情況下,核心支持庫自動地做所有必要的工作,以便使處理器進入一個方便的執行環境,此時中斷、陷阱、調試以及其他標準設施已經如預期的那樣開始工作。該庫在缺省情況下自動地定位所有隨內核加載的啟動模塊,并保留它們所在的物理內存。接下來,應用程序可以很容易使用它們。客戶OS只需以標準C語言風格提供一個main()函數。一切都設置好以后,內核支持庫將用所有參數和由啟動加載器傳遞過來的環境變量來調用它。

    3.3內存管理庫

    如同在一個標準C語言庫中實現的malloc()一樣,內存管理代碼典型地用于用戶空間。通常并不適用于內核。設備驅動常常需要分配特定類型的內存,并伴隨具體的調整屬性。例如,對于內建的DMA控制器只能訪問最初的16M物理內存。為解決這些內存管理問題,OSKit包含了兩個簡單而靈活的內存管理庫:(1)基于隊列的內存管理器(或稱LMM),它提供了功能強大且高效的原語來進行分配管理,并支持在一個池中管理多種類型的內存。(2)地址映射管理器(或稱AMM)被設計用來管理不必直接映射到物理內存或虛擬內存的地址空間,它對OS的其他方面提供了類似的支持,諸如進程地址空間、分頁、空閑塊或IPC名字空間的管理。盡管這些庫可以很容易地應用在用戶空間,但實際上它們是被特別設計用來滿足OS內核的需求。超級秘書網

    3.4最小C語言庫

    成熟的OS內核一般都包含著相當數量的僅僅用來重新實現基本的C語言庫函數如printf()和malloc()的代碼。與此形成對比的是,OSKit提供了一個最小化C語言函數庫,它圍繞著最小化依賴性而不是最大化函數性和性能的原則來設計。

    3.5調試支持

    OSKit的一個最實用的好處是:給定一個適當的硬件設置,它立刻就能提供給OS開發者一個完全源代碼級的內核調試環境。OSKit內核支持庫包括一個可用于GNU調試器(GDB)的串行存根模塊,它在客戶OS環境中處理陷阱,并使用GDB的標準遠程調試協議通過一個串行程序與運行在另一臺機器上的GDB通信。甚至當客戶機OS執行自己的陷阱處理時,OSKit的GDB存根模塊也是可用的。如果客戶OS提供適當的鉤子,它甚至支持多線程調試。除了基本的調試器支持,OSKit也提供了一個內存分配調試庫,它可以跟蹤內存分配并檢測一般的錯誤,如緩沖區溢出和釋放已釋放的內存。這個庫提供了與許多普通應用程序調試器相似的功能性,所不同的是它運行在由OSKit提供的最小內核環境中

    3.6設備驅動支持

    在OS開發和維護中最艱巨的一個任務是支持多種多樣的I/O硬件。這些復雜的設備常會含有潛在的錯誤,而新硬件的又常常伴隨著不兼容的軟件接口。由于這些原因,OSKit采用了為現有內核開發的穩定的、經過充分測試的驅動程序。OSKit使用了一種封裝技術,將現有的驅動程序代碼基本上未加修改地合并到OSKit中。這些現有的驅動程序被一個OSKit粘結代碼層所包裝,從而使得這些驅動程序可以在與開發它們的環境完全不同的環境中工作。目前,來自Linux的大多數以太網卡、SCSI和IDE磁盤的設備驅動程序被包括進來,總數超過了五十種。用同樣的方式,來自FreeBSD的八個字符設備驅動程序也被包含了進來,它們支持標準PC控制臺和串口及不同的多串口板。由于OSKit把這些驅動仔細地進行了包裝,FreeBSD驅動程序可以與Linux驅動程序一起工作。

    3.7協議棧

    OSKit提供了一個完整的TCP/IP網絡協議棧。如同驅動程序一樣,有關網絡的代碼也可以通過封裝機制被合并進來。OSKit當前可以從Linux中獲取網絡設備驅動程序,它們是PC平臺可獲得的最大的免費資源。OSKit的網絡組件繼承于FreeBSD4.4,它通常被認為具有更多成熟的網絡協議。這顯示了使用封裝機制將現有軟件包裝成靈活的組件的第二個優點:即從不同的資源中獲取最好的組件,并讓它們一起被使用。

    3.8文件系統

    通過使用封裝技術,OSKit吸收了NetBSD的基于磁盤的文件系統代碼。NetBSD之所以被選擇為首要資源庫,是因為在可用的系統中,它的文件系統代碼被最清晰地分離了出來,而FreeBSD和Linux的文件系統與它們的虛擬內存系統結合的更緊密。當前,OSKit也把Linux文件系統合并了進來,以便能夠支持多種類型的文件系統格式,如Windows95、OS/2和SystemV的文件系統格式等等。

    OSKit文件系統輸出的COM接口類似于許多Unix文件系統所使用的內部VFS接口。這些接口具有很好的粒度,使我們可以不必接觸OSKit文件系統的內部。例如,OSKit接口只接受簡單的路徑名組件,允許安全封裝的代碼執行適當的訪問許可檢查。

    4OSKit的現狀

    自從在1996年6月了OSKit的第一個公開發行版以來,OSKit已經更新了多次,每次更新都增加了一些算法,并修正了一些錯誤。最新的發行版是2002年3月的版本。由此可見,OSKit一直處于操作系統開發平臺的前沿,其自身也在不斷完善和發展。

    5結論

    作為一個操作系統研究與開發的平臺,OSKit大大減輕了操作系統研究與開發者的負擔。它可以讓開發人員避開復雜的底層,而把興趣集中與他們所感興趣的領域。開發者可以用自己編寫的組件來取代OSKit中的部分組件,以滿足自己特定的需要,從而豐富了操作系統的應用層。總之,OSKit滿足了實際客戶系統的需求,有助于操作系統的研究與開發。

    第2篇

    基于Web的嵌入式操作系統在遠程監控中的應用

    遠程監控客戶端、嵌入式Web服務器、監控對象三部分組成了遠程監控系統。用戶根據具體的工業現場環境在客戶端的監控界面開發一個監控界面,通過本地通過串口或者遠程網口上傳到嵌入式Web服務器,這樣既方便遠程管理又方便更新調整工業現場變化后的界面。通過遠程客戶端運行運行軟件,在遠程監控界面以Internet網連接入到嵌入式Web服務器,發送用戶的請求,建立連接后,將監控界面文件通過服務器傳給客戶端,還原該監控界面后,用戶就可以根據實時控制界面獲知監控對象的狀態,用戶還可以通過對監控界面按鈕,對監控對象進行控制。

    嵌入式Web服務器有Confingure模式、Download模式、Upload模式、Run四種工作模式。通過Confingure模式設置服務器環境參數;根據Download模式,可以從嵌入式Web服務器下載客戶端監控界面進行遠程監控;在Upload模式,上傳監控界面配置文件到嵌入式Web服務器中以備用;通過Run模式,根據監控界面為工業現場提供實時數據,實現遠程監控。

    基于Web的嵌入式操作系統在信息家電中的應用

    基于Web的嵌入式操作系統,通過嵌入式信息家電平臺控制節點。通過IE瀏覽器訪問信息家電控制臺,并對其進行遠程控制,達到通過以太網、藍牙等無線網絡環境對各類信息家電設備,實現信息家電的數據傳輸控制。信息家電是以應用為主要目的,基于計算機技術,并且對功能及其可靠性,設備成本、能耗以及體積都有嚴格要求的專用計算機系統。

    第3篇

    就象UNIX,Linux支持的網卡主要是以太網卡。如3COM、ACCTON、AT&T、IBM、CRYSTAL、D-LINK等眾多品牌的以太網卡只要安裝配置正確,都可以得到你所期望的效果。

    一、Linux中網卡的工作原理

    為了將這個問題說明的更清楚一些,不妨先簡要地剖析一下Linux是如何讓網卡工作的。一般來說,Linux核心已經實現了OSI參考模型的網絡層及更上層部分。網絡層的實現依賴于數據鏈路層的有效工作。網卡的驅動程序就是數據鏈路層與物理層的接口。通過調用驅動程序的發送例程向物理端口發送數據,調用驅動程序的接收例程從物理端口接收數據。

    1.網卡驅動程序

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

    驅動程序的操作系統接口是一些用于發現網卡、檢測網卡參數以及發送接收數據的例程。當驅動程序開始運作時,操作系統首先調用檢測例程以發現系統中安裝的網卡。如果該網卡支持即插即用,那么檢測例程應該可以自動發現網卡的各種參數;否則你就要在驅動程序運作前,設置好網卡的參數供驅動程序使用。當核心要發送數據時,它調用驅動程序的發送例程。發送例程將數據寫入正確的空間,然后激活物理發送過程。

    驅動程序面向物理層的接口是中斷處理例程。當網卡接收到數據、發送過程結束,或者發現錯誤時,網卡產生一個中斷,然后核心調用該中斷的處理例程。中斷處理例程判斷中斷發生的原因,并進行響應的處理。比如當網卡接收到數據而發生中斷時,中斷處理例程調用接收例程進行接收。

    2.驅動程序工作參數

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

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

    3.驅動程序的使用方式

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

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

    如果把驅動程序編譯成可裝載模塊,就可以用系統提供的命令在系統啟動后隨時加載。隨時加載的好處是減少內存開銷,易于管理,但同時也犧牲了一點網絡傳輸的效率。驅動程序的參數是在命令行中直接輸入或通過配置文件指定。二、網卡安裝前的準備在安裝網卡前,務必檢查是否具備下列條件:

    1.硬件方面

    以太網卡

    網絡連接線及連接頭,如10base-T一般為8芯雙絞線配RJ-45接口

    2.軟件方面

    Linux操作系統

    網卡驅動程序(目標碼或源代碼)

    *網卡配置程序

    *軟件開發工具,如GNU工具包(包括編譯器gcc、make等)

    3.系統配置信息

    可用的端口地址

    可用的中斷號

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

    三、網卡的安裝及配置

    第一步:配置以太網卡的工作參數

    配置網卡就是配置網卡的工作參數,如端口地址、中斷號等。網卡的缺省參數一般存儲于網卡內部的EEPROM,這是網卡出廠前設置好的。缺省參數在大多數情況下是可行的,但如果這些參數與你的系統有沖突并且網卡又不支持軟件動態設置,那么你就要使用網卡的設置程序。并不是所有的網卡都要經過這一步,因為有些網卡支持通過驅動軟件及其輸入參數來確定網卡的工作參數。可以通過查閱網卡使用說明書來確定這一點。

    網卡的設置程序與驅動程序不同,設置程序僅僅用來對網卡EEPROM中的設置進行修改。網卡程序本身可能運行在其它操作系統下,如WINDOWS95/98、OS/2、DOS等。如果是非Linux平臺,那你就先在適合設置程序運行的系統中安裝網卡,按設置程序說明設置網卡參數。然后再在Linux系統下安裝該網卡。

    第二步:安裝Linux系統

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

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

    第三步:手工安裝網卡

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

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

    1.可裝載模塊的使用

    系統提供了一組命令用于將驅動程序模塊載入內存執行。這些命令包括modprobe、insmod、Ismod、rmmod。modprobe與insmod命令功能相似,但是方式各異。

    modprobe命令使用配置文

    件/erc/config.modules來加載可執行模塊。要用modprobe命令加載以太網卡的驅動程序,可以在config.modules文件中加入:

    aliaseth0drivermodule(drivermodule是驅動程序模塊的名稱)

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

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

    optionsdrivermoduleparml=valuel,parm2=value2,……

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

    比如optionscs89x0io=0x200irq=0xAmedia=aui

    insmod命令直接通過命令行參數將驅動程序模塊載入內存,并可以在命令中指定驅動程序參數。例如:

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

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

    卸載驅動程序模塊使用rmmod命令:

    rmmoddrivermodule.o

    2.把驅動程序編譯入系統核心

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

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

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

    (3)重建依賴關系:很簡單,執行makedep和makeclean命令。

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

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

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

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

    誤時恢復。

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

    (1)在系統引導程序LILO中輸入。

    在LILO開始引導系統時,用ether子命令設定以太網卡驅動程序的參數。ether命令的使用方式為:

    LILO:linuxether=IRO.BASE_ADDR,NAME

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

    (2)在LILO配置文件中設定。

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

    append=“ether=IRQ,BASE_ADDR,NAME”

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

    第四步:網絡配置及測試

    安裝完網卡就可以配置網絡通信了。配置網絡簡單地就是使用ifconfig命令,

    例如:

    ifconfigeth01.2.3.4netmask255.0.0.0up

    最后ping一下網上其它機器的ip地址,檢查網絡是否連通。

    五、一個以太網卡安裝實例

    下面以Cirrus公司生產的CrystalCS8920以太網卡為例,詳細說明上述安裝配置過程。本例中,有些命令參數,如核心源代碼目錄等,是以我使用的系統環境為出發點。具體應用中還要加以本地化。為了更接近實際,例子中也包括了對安裝中碰到的問題的描述。

    1.此網卡是IBMPC機的內置式網卡,機器只提供了Windows95/98環境下的驅動程序。由于RedHat5.0發行版本尚未提供對此網卡的直接支持,所以從Cirrus的站點上找到并下載了該網卡驅動程序的Linux版本,是一個名為Linux102_tar.gz的壓縮文件。

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

    3.查閱readme文件后,了解到這個驅動程序只能使用網卡EEPROM中設定的端口號(I/O基地址)、中斷號。為了知道網卡EEPROM的設置,又從Cirrus站點下載了該網卡DOS版本的設置程序setup.exe

    4.在DOS中運行setup.exe,發現網卡的起始端口號為0x360,中斷號為10,與別的設備有沖突。選擇setup.exe程序的相應菜單,把中斷號改成5。另外,此驅動程序不支持plugandPlay,故也在setup.exe中將網卡的PnP功能屏蔽掉。

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

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

    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

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

    要卸載此驅動程序,用rmmod命令:

    rmmodcs89x0.o

    7.如果要將驅動程序編進系統核心,

    修改/usr/src/linux/drivers/net/CONFIG,加入:

    CS89x0_OPTS=

    修改/usr/src/linux/drivers/net/Config.in,加入:

    tristate‘CS8920Support’CONFIG_CS8920

    以上兩行是為了讓makeconfig在配置過程中詢問是否增加CS8920網卡的支持。修改/usr/src/linux/drivers/net/Makefile加入:

    ifeq((CONFIG_CS8920),y)

    L_OBJS+=cs89x0.o

    endif

    修改/usr/src/linux/drivers/net/Space.c,加入:

    externintcs89x0_probe(structdevice*dev);

    ……

    #ifdefCONFIG_CS8920

    &&cs89x0_probe(dev);

    #endif

    以上兩段是為了編譯并輸出網卡驅動程序及其例程。

    把驅動程序源代碼拷到/usr/src/linux/drivers/net目錄下。

    在/usr/src/linux目錄下執行makeconfig或makemenuconfig,選擇核心CS8920網卡支持。

    執行makedep、makeclean命令。最后用makezImage編譯Linux核心。

    如何設置核心驅動程序參數,上節已有說明,不再贅述。

    主站蜘蛛池模板: 一区免费在线观看| 区三区激情福利综合中文字幕在线一区亚洲视频1| 日韩免费视频一区| 国产精品乱码一区二区三| 亚洲AV色香蕉一区二区| 日本一区二区三区在线观看 | 无码少妇一区二区性色AV | 精品国产一区在线观看 | 亚洲天堂一区二区| 日韩一区二区视频在线观看| 日本韩国一区二区三区| 亚洲中文字幕丝袜制服一区 | 99久久精品费精品国产一区二区| 果冻传媒一区二区天美传媒| 色欲综合一区二区三区| 日韩一区在线视频| 国产精华液一区二区区别大吗| 中文字幕一区二区三区精彩视频 | 亚洲一区二区女搞男| 亚洲第一区视频在线观看| 大香伊蕉日本一区二区| 韩国福利一区二区三区高清视频| 人妻夜夜爽天天爽爽一区| 日韩精品一区二区三区在线观看l| 国偷自产Av一区二区三区吞精| 2021国产精品视频一区| 精品一区二区三区色花堂| 亚洲色精品VR一区区三区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 真实国产乱子伦精品一区二区三区 | 自慰无码一区二区三区| 夜精品a一区二区三区| 国产麻豆精品一区二区三区v视界 国产美女精品一区二区三区 | 精品一区精品二区| 美女一区二区三区| 日本免费精品一区二区三区| 日韩精品无码免费一区二区三区| 成人在线一区二区| 成人在线观看一区| 国产经典一区二区三区蜜芽| 国产亚洲情侣一区二区无码AV|