時間:2023-03-03 15:45:07
序論:好文章的創作是一個不斷探索和完善的過程,我們為您推薦十篇網卡驅動程序范例,希望它們能助您一臂之力,提升您的閱讀品質,帶來更深刻的閱讀感受。
§1.1.1 windows nt網絡體系結構
windows nt的網絡體系結構是基于國際標準化(iso)制定的標準模型──開放式系統互連(open system interconnection:osi)參考模型分層建立的,這種方式有利于隨時擴展其它功能和服務。
windows nt網絡模型開始于mac子層,網卡驅動程序就駐留在其中。它通過相關的網卡把windows nt與網絡連接起來,圖中的多個網卡表明在一臺運行windows nt的計算機上能使用多種網卡。
這一網絡體系結構包括兩個重要接口──ndis接口與傳輸驅動
程序接口(tdi)。這兩個接口把兩個層隔離開來,辦法是相鄰的部件只允許按單一的標準來寫,不允許多重標準。例如一個網卡驅動程序(在ndis接口的下面)就不需要特地按每個傳輸協議來寫它的代碼塊,恰恰相反,該驅動程序是寫給ndis接口的,它通過符合ndis的相應傳輸協議來請求服務。這些接口包含在windows nt的網絡體系結構中,以容納可移植、可互換的模塊。
在兩個接口之間,是傳輸協議。它在網絡中起著組織者的作用。一個傳輸協議規定了數據以何種方式呈遞給下一個接收層,以及如何對數據相應地進行打包。它通過ndis把數據傳給網卡驅動程序,并通過tdi把數據傳給轉發程序(redirector)
tdi之上是轉發程序,它把本地的網絡資源申請轉送給網絡。
為了能和其他廠商的網絡互連,windows nt允許有多個轉發程序。對于每一個轉發程序windows nt計算機必須也有一個相應的供應者(provider)(由網絡廠商提供)。多供應者路由選擇程序決定適當的供應者,然后借助于供應者,對應用請求到相應的轉發程序做出選擇。windows nt支持兩種類型的網絡驅動程序
傳輸驅動程序
實現數據鏈路層中的邏輯鏈路控制子層協議和傳輸層協議。向 下與ndis接口,向上與tdi接口。
網卡驅動程序
實現對物理層的管理和數據鏈路層中介質訪問控制子層協議,通過ndis向下管理物理網卡,向上與傳輸驅動程序通信。
§1.1.3 windows nt網卡驅動程序
windows nt環境下的網卡驅動程序也分為兩種:
miniport網卡驅動程序:miniport驅動程序只須實現與網絡硬件相關的操作(包括發送和接收)。而所有底層網卡驅動程序的通用操作(如同步),一般由ndis接口程序來實現。
full網卡驅動程序:full網卡驅動程序必須實現所有硬件相關和同步、排隊等操作。例如full網卡驅動程序為了響應數據接收,需要保持本身的捆綁信息,而miniport就可以由ndis接口庫來實現。
在windows nt的早期版本中,full網卡驅動程序要求開發者實現許多底層操作,來處理多處理器的核心問題以及處理器、線程的同步,這樣不同的開發者在大量重復著許多相同的工作。
而miniport網卡驅動程序允許開發者僅僅寫一些與網絡硬件相關的代碼即可,而那些通用的函數由ndis接口庫來實現,這樣開發出來的驅動程序減少了不必要的工作。
第二節miniport驅動程序的結構
ndis接口規范了網卡驅動程序的實現,同時也對tdi驅動程序的實現提出了一定的要求,在nt中,ndis約束下的網卡驅動程序、tdi驅動程序和系統的關系如下圖所示:
圖2.0 ndis約束下的網卡驅動程序、tdi驅動程序和系統的關系
miniport驅動程序包括驅動程序對象、驅動程序源代碼和ndis接口庫代碼。windows nt ddk提供ndis.h作為miniport驅動程序的主要頭文件,定義了miniport驅動程序的入口點、ndis接口庫函數和通用數據結構。
上邊緣函數的作用是網卡驅動與ndis接口庫進行通信,而下邊緣函數是tdi協議驅動程序與ndis通信的手段。ndis用一個叫做邏輯網卡的軟件對象來描述系統中的每塊網卡,而邏輯網卡與windows nt設備對象的通信由i/o子系統來管理,描述網卡的設備對象包括相關的網絡信息如名字、網絡地址和網卡內存基地址等,它還包含與硬件相關的驅動程序狀態數據(捆綁數目,捆綁句柄,包過濾數據庫等)。ndis分配一個句柄到miniportinitialize這個上邊緣函數的一個結構中,然后miniport網卡驅動程序將在以后提供這個句柄來給ndis調用,這個結構一直被ndis保持,并且對miniport驅動程序不透明。 當miniport網卡驅動程序初始化一塊網卡時,它創立自己的內部數據結構來描述網卡,記錄需要它管理的與設備相關的狀態信息。當miniport網卡驅動程序調用ndismsetatttibutes或ndismsetattributesex兩ndis庫函數時,它傳遞一個句柄給這數據結構。這樣,當調用miniport驅動程序入口點時,它就傳遞這個句柄來驗證驅動程序所對應的網卡的正確性。這個數據結構為miniport網卡驅動程序所擁有并維護。miniport nic驅動程序還需要維護一組對象,這些對象是系統定義的對象標識符(object idetifier:oid)來標識,以描述驅動程序的性能和當前狀態信息。為查詢這些信息,上層驅動程序調用ndisrequest向ndis接口庫指示oid。oid表示了調用所需的信息類型,如miniport驅動程序所支持的lookahead緩沖區大小等。ndis接到上層驅動程序的查詢請求,將oid傳遞給上邊緣函數miniportqueryinformation實現對oid的查詢,如果上層驅動程序請求改變狀態信息則調用miniportsetinformation實現對oid的設置。典型的miniport nic驅動程序必須有一些函數來通過ndis接口實現上層驅動程序與硬件的通信。這些函數稱為上邊緣服務函數。
這些上邊緣服務函數由驅動程序的開發者根據驅動程序面向的特定低層網絡類型和硬件以及相應環境,可以有選擇地實現,但必須保證驅動程序最基本的功能,這些基本功能包括初始化、發送、中斷處理、重置、參數查詢與設置和報文接收。
miniportinitialize:操作系統根據系統配置信息,檢測出網卡已安裝時,由ndis接口在初始化時調用,主要完成低層網絡類型確定,對應于物理網卡的邏輯網卡初始化,中斷信息注冊,網卡與主機通訊方式的確認。i/o端口的申請與注冊,內存映像,mib的初始化,物理網卡的驗證與初始化等。
miniportreconfigure:支持網卡參數動態變化,和miniportinitilize一樣由ndis接口以初始化級別調度執行(不能屏蔽中斷,必須由驅動程序承認并清除在此期間產生的中斷),支持即插即用和軟配置的網卡在動態改變參數時,必須提供此函數。
miniportqueryinformation:查詢網卡的狀態以及網卡驅動程序的操作或統計參數,如是否支持組通訊、網卡的物理速率是否支持回環、是否支持直接拷貝等,這些參數以oid方式統一管理。
miniportsetinformation:ndis接口或協議驅動程序通過調用此接口改變驅動程序維護的oid庫,一些操作參數的改變也將同時改變驅動程序狀態,例如組地址的設置。
miniportreset:包括網卡硬件重置和驅動程序軟件重置,軟件重置包括驅動程序狀態重置,以及一些相關的參數重置,還需考慮有些參數的恢復,重置時不必完成所有正在活躍的外部請求,但必須釋放已占用的外部資源。
miniporthalt:掛起網卡并釋放該網卡驅動程序占用的所有資源,在此期間不屏蔽中斷。
miniportisr:高優先級的中斷處理程序,進行的工作包括初始中斷處理類型,決定是否進行中斷轉交,對卡上中斷進行處理 等,該服務類型只在以下情況被調用:
ndis接口調用miniportinitialize和miniporthalt兩函數時。
.中斷處理類型設為每此中斷處理過程都調用時。
為使系統能及時響應所有硬件中斷,高優先級的硬件中斷處理程序應盡可能的減少運行時間,防止長時間的屏蔽低優先級中斷,避免造程中斷丟失。
miniporthandleinterrupt:由中斷延時處理程序在中斷延時處理時進行調用。ndis排隊所有的延時處理,該服務主要處理發送完成、報文接收、描述符用盡、溢出、網卡異常等中斷。
miniportsend:ndis收到上層發送請求時經過若干協議處理再向下調用此服務過程,發送的packet已含有llc和mac頭,該服務過程進行邊界對齊、packet約束重整、描述符映射和報文發送、以及發送資源和packet緩沖隊列管理。
miniporttransferdata:多個已和網卡捆綁的協議驅動程序在接收到報文到達指示后,向網卡驅動程序發出傳送請求以拷貝各自所需的報文數據部分,網卡驅動程序根據各協議驅動程序對單個packet是否進行多次拷貝,以決定是否暫存只允許單次拷貝的packet等。
miniportcheckhandle:ndis每秒調用此服務函數一次,驅動程序發現網卡異常時報告給ndis由ndis調用miniportreset進行硬件重恢復。
miniportenableintrrupt:中斷使能。
miniportdisableinterrupt:中斷屏蔽。
另外,每個網卡驅動程序必須有一個初始化入口點,由driver entry函數實現,它和系統相關,由操作系統在裝入驅動程序時調用,主要完成初始化ndis wrapper,再由wrapper初始生成驅動程序管理塊并完成相應各種初始化工作,登錄網卡驅動程序所有上邊緣服務入口點,同時寫入ndis版本信息。ndis接口庫包括在ndis.sys中,它是一個核態函數庫,有一套抽象的函數,無論協議驅動程序還是nic驅動程序都連接到這個庫中,以實現上下層之間的操作。
第二章fddi網卡驅動程序的加載和運行
第一節 網卡驅動程序的安裝
windows nt網卡驅動程序安裝的目的是實現網卡相應硬件信息和驅動程序在windows nt注冊庫中的注冊,使windows nt能夠正確識別網卡,了解所必需的軟硬件信息并能在windows nt啟動時加載相應驅動程序。
網卡驅動程序安裝時,首先在主群組的控制面板中選擇“網絡”,然后添加網卡,指定相應信息文件──oemsetup.inf的路徑,以完成以下兩個必要的操作:
復制驅動程序到相應的系統目錄(windows nt根目錄system32drivers)中;
在windows nt注冊庫中存入相應軟硬件信息。
下面主要以fddi網卡為例介紹安裝驅動程序所必需的工作:
§2.1.1網卡一般硬件參數
對于fddi網卡,必須在編寫其oemsetup.inf文件時確定以下硬件參數:
總線類型:pci(5)……括號中的數字5表示pci總線在ndis中的總線類型代碼;
廠商代號:0x5588……系統加載時確定網卡的標記,也是編程時確定pci槽號的標識;
cfid: 0x01;
介質類型:光纖(3) ……括號中的數字表示光纖在ndis中的介質類型代碼;
是否支持全雙工:支持。
對于其它的硬件信息在此inf配置信息文件中可有可無,如若配置,則可在驅動程序的編寫時利用這些信息,方便編程,同時有利于其它應用對其參數的確定和使用。網卡驅動程序的安裝通常將創建登錄表中的四個不同子鍵:
software registrion鍵,對應于驅動程序,存在于hkey_local_machinesoftwarecompany productnameversion中。我們的fddi網卡驅動程序所對應的是hkey_local_machinesoftwarenet612yhfddiyhfddi1.0;
網卡的軟件登錄鍵,存在于hkey_local_machinesoftwaremicrosoft windows ntnt3.51networkcardsyhfddi1;
驅動程序的服務登錄鍵,存在于hkey_local_machinesystemcurrentcontrolsetservices
網卡的服務登錄鍵,存在于hkey_local_machinesystemcurrentcontrolsetservices
對于每一個網絡部件,一個名為netrules的特殊子鍵在鄰近的驅動程序或網卡登錄子鍵里創建,netrules標識網絡部件為網絡整體的一部分。
fddi網卡驅動程序對應的標準軟件登錄表項將出現在以下路徑:
hkey_local_machinesoftwarenet612yhfddiyhfddi1.0;
驅動程序對應的標準項的值為:
description =yhfddi/pci adapter controller
install date =……
……
refcount =0x01
servicename =yhfddi
softwaretype =driver
title =yhfddi/pci adapter controller
而且在yhfddi驅動程序相關的netrules子鍵下,這些值項為:
bindable =yhfddi driver yhfddi adapter non exclusiver
bindform =“yhfddisys”yes no container
class = reg_multi_sz “yhfddi driver basic”
infname =oemnad1.inf
type =yhfddisys ndisdriver yhfddidriver
use =driver
yhfddi網卡在如下路徑的networkcards子鍵里介紹:
hkey_local_machinesoftwaremicrosoft
windows ntnt3.51networkcardsyhfddi1;
網卡的標準項包括以下這些值:
description =yhfddi/pci adapter controller
install date =……
manufacturer =net612
productname =yhfddi
servicename =yhfddi01
title =[01]yhfddi/pci adapter controller
§2.1.3編寫inf信息配置文件
gui inf描述語言被windows nt用以書寫系統所有部件的配置文件,當然也可以用以書寫網絡系統各部件的配置文件,該配置文件描述了網絡部件安裝、配置、刪除的執行過程。當網絡部件進行初始安裝或二次安裝(通常通過ncpa進行)時,安裝程序讀取部件對應的配置文件,進行解釋執行。gui inf描述語言由節、命令、邏輯操作、變量規范、流程控制以及一套調用dll或外部程序的機制組成,其中,節是配置文件的主體,節可分為install節(類似于函數),shell節(也類似于函數,但可調用insall和shell節),detect節(不包含命令),一個配置文件一般由若干不同類型的節組成。驅動程序的開發者根據需要可以在配置文件中編寫相應代碼,使得用戶和系統之間能進行交互,并且由用戶決定一些配置參數。
nt網卡配置文件有其一套規范,驅動程序開發者必須按規范編寫配置文件,一般來說,一個配置文件至少應該提供下面三個節:
安裝入口點:[identify]shell節。該節主要功能是給出安裝部件的類型名,系統通過它識別該部件屬于哪一大類(display,mouse,scsi,network等)中的哪一類(網絡adapter,driver,transport,service,network和netprovidor),同時,還需要給出映像文件和配置文件所在的源介質及標識。
[returnoption]shell節。系統執行安裝identify節后,執行該節。它主要功能是檢查所需安裝的部件是否支持的硬件平臺和語言,并給出網卡名(有些配置文件支持多類網卡,此時必須讓用戶進行選擇,并獲得選擇結果)。
[installoption]shell節。該節是配置文件得主體,也是上次安裝完后再次進行配置、刪除、更新的入口點。主要功能是拷貝映像文件和配置文件,生成配置的各種選項,創建該部件在注冊庫中對應的各種登錄子樹并更新重寫。
第二節 驅動程序的加載過程
1、單擊右鍵,點開管理中的設備管理窗口;2、再點擊網絡適配器,顯示的是當前電腦所有的網絡適配器;3、然后單擊右鍵,出現屬性框,即可查看網卡驅動。
網卡驅動是CPU控制和使用網卡的程序。驅動程序全稱為“設備驅動程序”,是一種可以使計算機中央處理器控制和使用設備的特殊程序,相當于硬件的接口,操作系統通過這個接口,控制硬件設備的工作。網卡驅動程序就是中央處理器控制和使用網卡的程序。
(來源:文章屋網 )
步驟2 由于這個Windows PE專做下載之用,因此還要為它安裝上本本的網卡驅動。對此可運行“智能光盤驅動2008”,單擊“驅動備份”,按提示選擇上網卡驅動,點擊“下一步”將網卡驅動提取到“D:\本機驅動程序備份\WinXp”文件夾中(如圖11)。完成后使用winRAR打開提取出的網卡驅動,將其中的NET目錄解壓到D盤下備用。
步驟3 現在運行“xcab.exe”系統封包程序,在打開窗口中,定位到“待壓縮”欄,并輸入要添加的網卡驅動所在文件夾,這里為“d:\net”。在“保存為”輸入欄內,鍵入SD卡上Windows PE系統“外置程序”目錄的位置,這里為“e:\外置程序\PE_OUTERPART\DRlVERS_NET01.CAB”(如圖12)。完成后點擊“壓縮”按鈕,即可將當前網卡驅動重新壓縮為CAB文件,并放置在Windows PE的“外置程序”目錄下。這樣當進入Windows PE系統后。便可自動安裝好本本的網卡驅動。
步驟4 現在重啟Windows XP系統,進入本本BIOS設置窗口,將SD卡設置為第一啟動設備。保存退出后,本本即可由SD卡啟動到Windows PE系統,雙擊桌面上的“啟動網絡支持”圖標。Windows PE便會自動加載網絡服務和本本的網卡驅動。當成功加載后,可看到網絡配置窗口(如圖13)。
小提示
如果Windows PE提示無法安裝網卡時,可手動為其安裝網卡驅動。方法是右擊點擊“我的電腦’選擇“管理”命令,在打開窗口中切換到“設備管理器”標簽,單擊菜單欄上的“查看””顯示隱藏設備”,之后轉到右側窗格中,依次展開“others device”“以太網控制器”,在其上右擊選擇“更新驅動程序”,在彈出窗口中選擇“在這些位置搜索最佳的驅動程序”,然后勾選上“在搜索時包含這個位置”,并在輸入欄內鍵入“c:\windows\lnf”路徑,這樣即可自動搜索硬盤上Windows XP的網卡驅動,接著按提示指定驅動文件位置“c:\Wlndowsksystem32\drivers”,就可成功安裝網卡。注意在安裝完成后,系統提示是否需要重啟時,一定要選擇“否”。
步驟5 一切就緒,只要雙擊桌面上的“寬帶連接”圖標,按提示輸入ADSL帳號密碼就可以聯機上網了。現在再來試試是否能夠進行下載操作,點擊“開始”“程序”“聊天下載工具”“迅雷5.0”(如圖14),之后在網上找到要下載的電影和軟件。點擊下載鏈接后便可使用迅雷開始下載了。注意在選擇下載文件保存路徑時,要將其保存到SD卡上,這樣才不會對硬盤進行讀寫操作。
同Windows 7系統一樣,Windows 8系統內部集成了許多網卡芯片的驅動,將無線網卡插到電腦上后,系統會發現硬件并自動安裝驅動,稍等片刻后,右鍵點擊桌面上的“計算機”并選擇“管理”。 點擊設備管理器,即可看到網卡已經被正常識別(如圖1)。
在Windows 8 Metro界面下,我們可以直接用鼠標左鍵點擊桌面右下角的無線網絡連接圖標,即可打開無線信號列表。選擇對應自己無線路由器的無線信號并點擊連接按鈕,輸入無線信號的密碼后點擊下一步,稍等片刻,就可以通過無線方式上網了(如圖2)。
手動安裝驅動
而當遇到Windows 8系統不能直接識別無線網卡的時候(如圖3),的確有部分網卡并未直接推出Windows 8系統驅動,這就需要用戶手動為USB網卡安裝驅動了。
遇到這樣的情況可嘗試手動安裝該網卡,對應Windows 7系統的驅動看是否可以正常使用。登錄USB網卡官方網站,下載Windows 7系統的驅動程序,解壓縮后放在桌面備用。接下來在設備管理器的黃色標識的設備上點擊右鍵,選擇“更新驅動程序軟件”。選擇“瀏覽計算機以查找驅動程序軟件”,再點擊“瀏覽”,找到驅動程序所在的文件夾后,點擊“確定” (如圖4)。
1、原因:win10系統下,未安裝網卡驅動程序。
2、解決方法:進入MAC系統或者其它可以上網的電腦下載網卡驅動,返回安裝即可。操作如下:首先在MAC系統中,或者其它可以聯網的電腦上下載“驅動精靈網卡版”;然后將下載的驅動精靈網卡版通過U盤復制到當前WIN10系統下,打開軟件,點擊“一鍵體檢”;然后軟件就會提示“電腦未安裝網卡驅動”,點擊彈出的網卡驅動進行安裝;等待安裝完成即可;安裝完成之后,即可正常上網。
(來源:文章屋網 )
3、然后在設備管理器下面找到“網絡適配器”。
4、在下面的網卡驅動中發現有黃色感嘆號和黃色問號。
5、在有問號、感嘆號的程序上面單擊右鍵選擇“更新驅動程序軟件”。
步驟2 由于這個Windows PE專做下載之用,因此還要為它安裝上本本的網卡驅動。對此可運行“智能光盤驅動2008”,單擊“驅動備份”,按提示選擇上網卡驅動,點擊“下一步”將網卡驅動提取到“D:\本機驅動程序備份\WinXp”文件夾中(如圖11)。完成后使用winRAR打開提取出的網卡驅動,將其中的NET目錄解壓到D盤下備用。
步驟3 現在運行“xcab.exe”系統封包程序,在打開窗口中,定位到“待壓縮”欄,并輸入要添加的網卡驅動所在文件夾,這里為“d:\net”。在“保存為”輸入欄內,鍵入SD卡上Windows PE系統“外置程序”目錄的位置,這里為“e:\外置程序\PE_OUTERPART\DRlVERS_NET01.CAB”(如圖12)。完成后點擊“壓縮”按鈕,即可將當前網卡驅動重新壓縮為CAB文件,并放置在Windows PE的“外置程序”目錄下。這樣當進入Windows PE系統后。便可自動安裝好本本的網卡驅動。
步驟4 現在重啟Windows XP系統,進入本本BIOS設置窗口,將SD卡設置為第一啟動設備。保存退出后,本本即可由SD卡啟動到Windows PE系統,雙擊桌面上的“啟動網絡支持”圖標。Windows PE便會自動加載網絡服務和本本的網卡驅動。當成功加載后,可看到網絡配置窗口(如圖13)。
小提示
如果Windows PE提示無法安裝網卡時,可手動為其安裝網卡驅動。方法是右擊點擊“我的電腦’選擇“管理”命令,在打開窗口中切換到“設備管理器”標簽,單擊菜單欄上的“查看””顯示隱藏設備”,之后轉到右側窗格中,依次展開“others device”“以太網控制器”,在其上右擊選擇“更新驅動程序”,在彈出窗口中選擇“在這些位置搜索最佳的驅動程序”,然后勾選上“在搜索時包含這個位置”,并在輸入欄內鍵入“c:\windows\lnf”路徑,這樣即可自動搜索硬盤上Windows XP的網卡驅動,接著按提示指定驅動文件位置“c:\Wlndowsksystem32\drivers”,就可成功安裝網卡。注意在安裝完成后,系統提示是否需要重啟時,一定要選擇“否”。
步驟5 一切就緒,只要雙擊桌面上的“寬帶連接”圖標,按提示輸入ADSL帳號密碼就可以聯機上網了。現在再來試試是否能夠進行下載操作,點擊“開始”“程序”“聊天下載工具”“迅雷5.0”(如圖14),之后在網上找到要下載的電影和軟件。點擊下載鏈接后便可使用迅雷開始下載了。注意在選擇下載文件保存路徑時,要將其保存到SD卡上,這樣才不會對硬盤進行讀寫操作。
步驟6 考慮到要整夜下載軟件,所以盡管此時本本上的硬盤已不在有讀寫操作,但為更好保護本本硬盤,達到節能、降溫、減噪的效果,此時不妨將硬盤關閉。對此,如果是采用SATA接口硬盤的本本,可在Windows PE系統托盤中,點擊“安 全刪除硬件”圖標,在彈出的提示條中選擇硬盤即可將其關閉。
小提示
如果本本采用的是lDE接口硬盤,那么可在Windows PE系統中,右鍵點擊“我的電腦”,選擇“管理”,在打開窗口中依次展開“存儲”“磁盤管理”鏈接,之后在右側窗格的各個硬盤盤符上,逐個點擊右鍵選擇“更改驅動器號和路徑”,并在彈出窗口中單擊“刪除”按鈕,將所有硬盤盤符刪除。這樣即可在windowsPE中進行下載操作時避免數據的讀寫,從而使硬盤處于“停用”狀態。
第四次親密接觸SD卡全面加速系統
使用過Windows Vista的朋友,可能知道其帶有一個“ReadyBoost”功能,它能夠利用高速閃存存儲設備來加速系統。而由于本本內存槽有限,加到2GB內存后基本就占滿了,這時把手中的高速SD卡拿出來用作加速,可是個額外提升性能的不錯選擇。
SD卡為Windows XP加速
由于Windows XP系統沒有內置ReadyBoost功能,因此要想獲得同等的效果,就要借助“eBoostr”這款軟件。除此之外,用來做加速的SD卡必須是SDHC高速產品,本本上的讀卡器也要工作在USB 2.0接口上。
步驟1 安裝并運行“eBoostr”,完成后系統將會重新啟動并自動打開程序設置窗口,此時可在“選擇裝置”欄中的下拉列表內,選取本本上的SD卡,并設置“選擇快取大小”為一個較合適的范圍。比如這里采用4GB的高速SD卡,就可選擇1GB空間用于系統加速(如圖15)。
步驟2 設置完成后,單擊“確定”按鈕,程序便開始設置加速參數并切換到控制臺窗口,在這里將顯示當前硬盤負載等參數。現在同時運行多個大型程序,看看運行速度是不是有了明顯提升呢(如圖16)。
SD卡啟動ReadyBoost
如果使用了Windows Vista系統。那么其已內置了“ReadyBoost”加速功能,只要將其開啟并應用在SD卡上即可。對此,可在本本上插入SD卡后,打開“我的電腦”,右鍵點擊SD卡盤符選擇“屬性”,然后在打開的屬性窗口中切換到“ReadyBoost'’標簽,選擇“使用這個設備”單選框,接著在“用于加快系統速度調節的保留空間”選項中,拖動滑塊選擇適當的存儲空間用作加速即可(如圖17)。
小提示
要在Windows Vista中激活“ReadyBoost”功能,所使用的SD卡要支持在4K隨機讀取時不低于2.5MB/s或512K隨機寫入時不低于1.75MB/s的傳輸率,并保證帶有64MB到8 GB的空閑空間。
因為開啟“ReadyBoost”功能需要SD卡具備一定條件。所以當某些兼容性較差的SD卡插入本本后,在windows Vista系統下可能會自動屏蔽“ReadyBoost”功能。如果確認SD卡為高速產品,這時可手動開啟該功能。
步驟1 插入SD卡,并切換到“ReadyBoost”設置窗口后,如果系統提示該設備無法用于加速,那么可取消系統默認勾選的“插入設備時不要再測試此設備”復選框,并單擊“確定”退出(如圖18)。
1 背景
當今的物聯網時代,移動終端設備的通信得到廣泛的應用。各種設備相繼接入無線網絡,從而實現更靈活、更方便快速的網絡通信。
無線網卡模塊是實現無線網絡通信的硬件條件,目前來看主要有兩種形式(1)內置式無線網卡:即將網卡芯片與主板集成在一起,如手機、筆記本電腦等;(2)外置式無線網卡:利用USB接口外接USB無線網卡。這兩種方式各有優勢,本文主要研究外置式無線網卡的實際應用。
2 無線網卡驅動程序的配置與移植
2.1 無線網卡的選擇
從技術角度看,無線網卡的選擇要注意以下幾點:
(1)支持802.11b/g/n無線傳輸協議。
(2)采用主流廠商的無線網卡芯片.
(3)具備外置增益天線。
根據以上要求,本論文中選用了磊科的NW335型號的無線網卡來進行測試操作。
2.2軟硬件平臺
硬件平臺:S3c6410
軟件平臺:linux2.36.2
交叉編譯工具:arm-linux-gcc 4.3.2
2.3 NW335驅動程序的移植
不同廠商,不同型號的無線網卡的驅動程序不盡相同。因此,對于無線網卡驅動程序的移植就必不可少了。下面開始介紹對該款網卡的驅動程序移植到嵌入式linux操作系統的過程:
(1)登錄realtek官網:http://.tw/Default.aspx,獲取驅動程序源代碼,rtl8188C_8192C_usb_linux_v3.4.4_4749.20120730.tar.gz
(2)將驅動程序以共享文件夾的方式移動到ubuntu虛擬機中,然后解壓縮,運行: tar xzvf rtl8188C_8192C_usb_linux_v3.4.4_4749.20120730.tar.gz
(3) 打開解壓后的文件夾,如下圖:
修改Makefile,運行gedit Makefie,打開文件,將原來的代碼
CONFIG_PLATFORM_ANDROID_X86=y
CONFIG_PLATFORM_ARM_S3C6K4 =n
改為:
CONFIG_PLATFORM_ANDROID_X86=n
CONFIG_PLATFORM_ARM_S3C6K4 =y
執行make命令,會生成一個.ko文件,這里生成一個8188cu.ko文件。即是我們生成的linux下無線網卡的驅動程序。將該文件復制到開發板存儲器中,執行:insmod /8188cu.ko 即可加載該網卡的驅動程序。
3 安全認證與加密
對于無線網絡來說,由于信號不是在密閉的線路中傳輸,其安全性是必須要考慮的因素,數據傳輸過程中的協議與加密算法是非常重要的。目前主要的加密算法有兩種(1) WEP安全加密方式(2) WPA安全加密方式,其中wpa加密方式是目前最安全的加密技術,其配置過程如下:
一、下載并解壓縮源碼
登錄 http://hostap.epitest.fi/wpa_supplicant/,下載wpa_supplicant-0.7.3.tar.gz (openssl用到0.7.3提供的補丁),并進行解壓縮:
#tar xvfz wpa_supplicant-0.7.3.tar.gz
下載/source/openssl-0.9.8e.tar.gz,并進行解壓縮
#tar zxvf openssl-0.9.8e.tar.gz
二、編譯openssl庫
將wpa_supplicant中的補丁拷貝到openssl中 ,修改配置文件,如下圖所示:
三、編譯wpa_supplicant ,修改配置文件后進行編譯,如下圖所示:
經過編譯后的wpa_supplicant源程序可以看到兩個主要的可執行工具:wpa_supplicant和wpa_cli。 wpa_supplicant是核心程序,它和wpa_cli的關系就是服務和客戶端的關系:后臺運行wpa_supplicant,使用wpa_cli 來搜索、設置、和連接網絡。
四、配置wpa_supplicant工具
修改wpa_supplicant.conf配置文件,其內容如下:
wpa_supplicant -B -i wlan0 -c /mnt/disk/home/wireless/wpa_supplicant.conf
4 保證不斷網的方案
因為各種各樣的原因,網絡有可能會連接不成功。如網絡設備故障,斷電,設備自身重啟,軟件硬件故障等。為了保證網絡連接的穩定性,需要制定的聯網策略,對斷網情況進行修復處理。
1.啟動時進行網絡檢測,若不能通過便重新啟動,代碼如下:
2.在運行期間每隔一段時間檢測網絡,若不成功便重新連接網絡:
5 結論
通過對磊科NW335無線網卡的移植,可以實現帶有USB接口的LINUX設備的聯網,實用效果比較理想。在具備網絡連接檢測軟件運行的情況下,設備可以實現不間斷的網絡通信。
參考文獻
[1] 李俊.嵌入式Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008.126-167
[2] 宋寶華.Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008.477-528
[3] 劉淼.嵌入式系統接口設計與Linux驅動程序開發[M].北京:航空航天大學出版社,2006.205-234
中圖分類號:TP319文獻標識碼:A文章編號:1009-3044(2011)24-5928-03
A Shell Extension of Ghost Software for Network Multicast Clone
LUO Hai-feng
(School of Politics and Public Administration, Shaoguan University, Shaoguan, 512005, China)
Abstract: This paper analyzes the start process and command-line format in the Ghost software cloning process, makes a shell extension of the Ghost software by using the C programming language. Through the application of software at boot stage, The Ghost setup and operating procedure is automatically set to simplify the Ghost software, make it possible to restore large numbers of computer system rapidly in a LAN (Local Area network). The article also introduce the client universal boot disk production, and the implementation process of the network multicast cloning.
Key words: Ghost; multicast; clone; system restore
Ghost是著名的硬盤復制備份工具,具有硬盤克隆、硬盤分區備份、系統安裝等功能。Ghost一對多的克隆方式,可通過TCP/IP網絡協議可同時從一臺電腦上克隆多臺電腦的硬盤數據,使Ghost具有網絡安裝功能。通常稱為Ghost的網絡多播克隆技術。
使用Ghost,管理員可以在數分鐘之內把一個操作系統鏡像或者應用程序部署或者恢復到另一臺PC機器上。利用多播技術遠程克隆多個計算機,可實現快速、安全、批量地恢復操作系統。
1 簡介
同一個計算機實驗室內的機器,可能硬件配置不一致,但軟件環境要求都是相同的。面對這種應用環境,為了實現多播克隆,有兩個關鍵步驟:一是“樣機”的準備。先做好一個通用的系統“樣板”,再針對不同硬件配置的計算機分別安裝不同的設備驅動程序,每種樣機需要備份出一個.gho文件;二是如何引導計算機進入準備克隆狀態。計算機啟動到準備克隆狀態,需要運行一系列命令。每臺機器需要執行的啟動命令都不一樣,因為網卡不同的機器需要不同的網卡驅動程序,同一批次克隆的每臺機器也需要分別賦以不同的IP地址。這一系列命令如果使用手工輸入,將會非常繁瑣,工作效率低。經過試驗,采用C語言編程實現引導命令的自動生成,制作出通用的引導光盤,使客戶端進入準備克隆狀態的過程盡量減少手工鍵盤輸入,系統維護工作變得易行、快速、高效。
2 實現方法
多播克隆進行系統恢復的步驟是,首先在服務器運行多播服務器程序,選擇要廣播的.gho文件,執行一個會話(Session),等待客戶機的連接。需要恢復軟件系統的計算機(稱為客戶機)使用網絡引導盤啟動,連接到多播服務器,處于準備克隆狀態,等待接受數據。所有客戶機都連接好后,在多播服務器程序窗口選擇“發送”(Send),即可將操作系統樣板多播發送到每個客戶機。克隆過程完成后,客戶機重新啟動,修改機器名和IP地址,軟件系統的恢復宣告完成。
下面對引導客戶機啟動進入到準備克隆過程的實現方法進行論述。
2.1 客戶機的引導過程
客戶機可采用光盤啟動、U盤啟動、軟盤啟動或硬盤啟動等多種方式。引導過程分成啟動進入Windows 98命令行界面、運行網卡驅動程序、運行ghost程序三步。
以光盤啟動為例,光盤根目錄下的內容有Windows 98引導程序文件、網卡驅動程序和ghost程序。下面是Win98啟動盤自動批處理文件(autoexec.bat)的實例:
@echo off
prompt $p$g
0x60 rem 運行網卡驅動程序
set ghostip=wintcp.cfg rem 該句句用來指定該計算機使用的配置文件
ghost.exe rem 運行ghost程序連接多播服務器進行克隆
其中是8139網卡的封包驅動程序。封包驅動程序是介于TCP程序與網卡之間的橋梁,以軟件中斷呼叫的方式提供一個標準的界面服務。網卡不同的機器需要不同的網卡驅動程序,該程序可在網卡的驅動程序軟盤上找到。
配置文件wintcp.cfg用于設置ghost.exe程序的運行參數(IP地址、子網掩碼、網關),典型內容如下:
IP = 192.168.0.10
NETMASK = 255.255.255.0
GATEWAY = 192.168.0.1
同一批次克隆的每臺機器也需要分別賦以不同的IP地址。若服務器安裝有DHCP服務,有可自動給每臺機器分配IP地址,則配置文件wintcp.cfg的第一行可以略去。也可以采取程序交互方式,由用戶手工指定IP地址。多播服務器同時也作為網關,按默認設置將該機的IP地址修改為192.168.0.1。
ghost.exe是客戶機進行網絡克隆的執行程序。由于程序運行過程中需要對配置文件wintcp.cfg進行寫操作,在制作啟動盤時要求設置成將以上所有程序和文件裝載到內存虛擬盤中存放和執行,這樣還能保證程序執行速度非常快,在程序啟動后、ghost程序運行前還能將光盤(或U盤、軟盤)取出放到其他機器上運行,這樣一張引導盤能夠同時引導多臺機器。
2.2 Ghost的命令行參數
為了使克隆過程自動進行,減少人工干預,可在執行ghost程序時使用命令行參數。多播克隆時涉及的命令行參數如下:
1) -rb本次 Ghost 操作結束退出時自動重啟。
2)Csure對所有要求確認的提示或警告一律回答“Yes”。
3) 這是實現 Ghost 無人備份/恢復的核心參數。使用語法為:
-clone,mode=(operation),src=(source),dst=(destination),[SZE(size),SZE(size)...]
此參數行較為復雜,且各參數之間不能含有空格。其中 operation意為操作類型,值可取:copy:磁盤到磁盤;load:文件到磁盤;dump:磁盤到文件;pcopy:分區到分區;pload:文件到分區;pdump:分區到文件。Source 意為操作源,值可取:驅動器號,從1開始;或者為文件名,需要寫絕對路徑。Destination 意為目標位置,值可取:驅動器號,從 1開始;或者為文件名,需要寫絕對路徑。
例如輸入以下命令:
ghost Cclone,mode LOAD,src=@MCa,dst=1 Csure -rb
表示從網絡會話a克隆系統到本機第1個硬盤,不詢問,完成后重啟系統。
2.3 引導程序的設計
在本設計中引導程序取名為go.exe,存放在啟動盤根目錄。該程序的任務是引導客戶機進入到準備克隆狀態。
引導程序分成三部分:
1) 選擇并運行網卡封包驅動程序。為了將引導程序做成一個通用的程序,能引導實驗室所有裝有不同的網卡的機器,需要事先在網卡的驅動程序軟盤上提取相應的程序。例如8139網卡的封包驅動程序名稱為“”。
為了便于擴充,將網卡名稱和對應的驅動命令成對存放在文本文件“netcard.txt”中,當增加新的網卡時,只需將新的驅動程序添加進指定目錄,并修改網卡信息文件“netcard.txt”即可。如果用戶愿意,甚至可將網卡命名為自己習慣的名字。網卡信息文件示例如下:
//網卡描述與驅動程序指引文件。由程序讀入。
//Script=:網卡描述。Driver=:DOS下網卡驅動命令,必須跟在上一行Script之后。
Script=Realtek RTL8139(A) PCI fast Ethernet Adapter
Driver=RTSPKT 0x60
Script=Realtek RTL8139 Family PCI fast Ethernet NIC
Driver=RTSPKT2 0x60
Script=Macronix MX987x5 Family Fast Ethernet Adapter
Driver=MX32PD 0x60
Script=Accton En1207D Series PCI fast Ethernet Adapter
Driver=ACCPKT 0x60
Script=D-Link DFE-530TX fast Ethernet Adapter
Driver=DLKFET 0x60
2) 生成配置文件wintcp.cfg。如果局域網有DHCP服務器,則可以采用固定格式的配置文件,文件內容只有兩行,“NETMASK = 255.255.255.0”和“GATEWAY = 192.168.0.1”,無需用戶干預。對于手工設置IP地址的情形,只需鍵入一個1~255之間的數,生成形如“IP = 192.168.0.*”的字符串添加進配置文件wintcp.cfg中,作為IP地址的配置。其中“*”號代表輸入的數字(通常是機器編號)。
3) 運行帶命令行參數的Ghost程序命令。命令實例見上一小節。
引導程序采用TC 2.0進行了編程實現,代碼并不復雜,主要用到了讀寫文本文件函數和調用外部命令函數system()。
2.4 客戶端通用引導盤的制作
首先按常規方法制作出DOS啟動盤,在自動批處理文件autoexec.bat的最后面添加一行“go”,調用上一小節編制出的go.exe程序。
再將引導程序go.exe,網卡信息文件netcard.txt,客戶端克隆程序ghost.exe,各種網卡的封包驅動程序包括、、等復制到啟動盤根目錄。
通過以上兩步,引導盤制作完畢,已經可以使用了。
實現過程中使用WinImage、WinISO、NERO等軟件配合,將以上所列內容制作成引導光盤。需要注意的是,引導程序go.exe運行時會寫配置文件wintcp.cfg,而光盤是只讀的。解決辦法是光盤啟動初始階段在計算機內存中建立一個虛擬盤。
由于提取了本實驗室現有各種網卡的封包驅動程序,該引導盤能引導所有計算機通過網絡連接到多播服務器,進入準備克隆狀態。因此稱之為“客戶端通用引導盤”。
3 網絡多播克隆的實施
準備好了克隆服務器、樣板計算機的.gho映像文件,以及客戶端引導盤,接下來就可以實施網絡多播克隆了。
事先將服務器IP地址設置為“192.168.0.1”,然后啟動多播克隆服務器程序GhostCast Server,在服務器程序界面的會話名“Session Name”框中,輸入會話名稱“a”(與引導程序中ghost的命令行參數相一致)。選中加載到客戶的單選框“Load To Clients”。在映像文件“Image File”框中,給出映像文件所在的路徑,如輸入“d:\system\P 4 2.4G\win2k.gho”。選中“Disk”單選框。單擊接受客戶“Accept Clients”按鈕,等待客戶機的連接。
克隆服務器啟動后,客戶機就可以開始連接服務器了。用按第2節實現方法制作的啟動光盤啟動計算機,出現下面的交互式界面(圖1)。
鍵入“1”選擇第1種網卡,出現以下提示行(圖2)。
鍵入客戶機編號(比如“10”)并按下回車鍵,就會自動連接上克隆服務器,此時在服務器端的窗口中可看見客戶機10的地址,表示客戶機10已經登錄,等待服務器開始克隆。再用引導盤啟動其他客戶機,操作方法同上。當所有的客戶機都連結上服務器后,就可以在服務器端按發送“Send”按鈕,開始網絡多播克隆(如圖3)。
4 應用效果
由于界面易于使用,技術門檻降低,即使是非技術人員也能協助進行系統維護工作。每臺客戶機在引導過程只需要輸入1到2個數字即可進入到克隆預備狀態,在進行大面積系統恢復時更體現出高效率。以一個配備百兆以太網絡的計算機房為例,每批同時克隆30~40臺機,一個小時內可將這些機器的軟件系統全部恢復完畢。本文所述方案在高校實驗室成功應用兩年多,減輕了實驗室工作人員的工作壓力,加快了計算機系統快速恢復的過程,也提高了工作效率,取得了很好的應用效果,對學校計算機實驗室建設和管理工作有著積極的促進作用。
參考文獻:
[1] 李欣.機房管理中Ghost軟件的應用[J].實驗室研究與探索,2004(6):14-16.
[2] 瞿波,陳偉.如何用GHOST進行網絡多播克隆[J].計算機應用與軟件,2004(9):115-117.
[3] 蘇航,王勇軍,于淼.基于Ghost軟件的快速數據恢復方法的研究[J].科技資訊,2008(28):20.
[4] 王月,鄭浩,宮豪,等.用Ghost軟件快速備份和恢復操作系統[J].吉林師范大學學報:自然科學版,2009(3):154-156.
[5] 楊海瑞.淺談機房使用GHOST恢復系統的方法[J].河套大學學報,2009(4):69-71,82.
一、引言
隨著互聯網技術的不斷發展,個人用戶在網絡中的活動不僅僅是瀏覽網頁和查詢信息,越來越多的用戶開通網上支付功能進行網上購物和炒股等商業性活動。如何防備計算機病毒和黑客的威脅成為用戶非常關注的問題,越來越多的用戶選擇安裝個人防火墻來抵御黑客的攻擊,保護自己信息的安全,因此,研究和實現高性能的個人防火墻,提高個人計算機的安全是一件非常重要的工作。
個人防火墻的核心技術是網絡數據包截獲技術,在Windows平臺上網絡數據包的攔截有多種方案,本文選取核心態的NDIS中間驅動程序與用戶態的Winsock2 SPI技術相結合。
二、應用層過濾的實現
(一)Winsock2 SPI技術原理
Winsock是為上層應用程序提供的一種標準網絡接口,它為應用程序提供透明服務。而 SPI是Winsock 2.0版本提供的一種允許用戶編寫服務提供者接口程序的新機制,利用該技術在Winsock的下方插入一層或幾層處理程序,完成諸如傳輸質量控制、擴展TCP/IP協議棧、封包過濾及網絡安全控制等功能。
Winsock2 SPI對網絡的傳輸是通過傳輸服務提供者來完成的,傳輸服務提供者又分為分層服務提供者和基礎提供者如圖1。
(二)SPI的實現
SPI的實現就是編寫一個動態鏈接庫,并且將其安裝到Winsock目錄中的基礎服務提供者上,讓應用程序先調用用戶編寫的服務提供者函數,實現數據的過濾。再由用戶編寫的服務提供者再調用下層的提供者。在本文所編寫的分層服務提供者主要是截獲了Ws_32.dll對以下7個函數的調用:WSPSocket、WSPBind、WSPCloseSocket、WSPAccept、WSPConnect、WSPSendTo、WSPRecvFrom。
(三)LSP的安裝與卸載
本文中的用戶層過濾模塊實際上就是一個分層服務提供者。編寫好服務提供者后,再將它安裝在Winsock目錄中:
(1)安 裝 新 的 分 層 服 務 提 供 者 即 向 Winsock 目 錄 中 安 裝 一 個WSAPROTOCAL_INFO 結構(協議的入口),使創建套接字的應用程序可以枚舉到它。
(2)每一個安裝的提供者都必須用一個 GUID 唯一標識它的入口。在卸載 LSP 時,首先根據分層協議的 GUID 找到其目錄 ID 號,然后逐個移除各協議鏈,最后再調用系統函數移除分層協議的提供者。
三、核心層過濾的實現
(一)NDIS中間驅動程序原理
NDIS中間驅動程序拓撲結構如圖2所示。利用NDIS中間驅動程序可以在網卡驅動程序和傳輸驅動程序之間插入一層自己的處理,從而用來截獲網絡封包并重新進行封包、加密、網絡地址轉換和過濾等操作。中間層驅動源于Windows NT中的分層設計,允許系統在協議層驅動和微端口驅動之間存在任意多個中間層驅動,以完成所需的工作。
(二)NDIS中間驅動程序的實現
Windows 2003 DDK中的PassThru提供了一個用戶接口框架,本核心層過濾模塊就是在這個框架基礎上進行擴展的。擴展的流程如下:
(1)驅動初始化過程DriverEntry。所有的驅動程序在開始調用前都要進行程序的初始化操作。這個初始化過程和DLL的初始化操作過程相似。
(2)微端口的注冊。中間層驅動程序在進行為端口程序的注冊時,調用NdisIMRegisterLayeredMiniport的導出函數。
(3)注冊中間層驅動協議。在中間層驅動程序中,通過調用NdisRegisterProtoco1向NDIS注冊Protocolxxx函數。
聲明方式如下:
VOID
NdisRegisterProtocol(
OUT PNDIS_STATUS Status,
OUT PNDIS_HANDLE NdisProtocolHandler,
IN NDIS_PROTOCOL_CHARACTERISTICS Protoco1Charaeter-
istics,
IN UINT CharaeteristicsLength);