下面是一個簡單全面的使用NdisWrapper的指南.這是從
Beginning Ubuntu Linux, Second Edition
中提煉出來的.
這份指南是第8章的一部分.該章給出了在Ubuntu下配置硬件(包括網絡設備,打印機,掃描儀,3D顯卡等等)的詳細說明.
除了詳細介紹怎樣安裝/刪除NdisWrapper驅動,這份3500多字的指南還包括了精確匹配正確的硬件驅動,從Windows驅動文件中提取必要的文件等關鍵步驟.這些步驟在其他的指南中往往被忽視了,但它們往往是許多用戶
難以逾越的障礙.
這份指南主要是針對Ubuntu Edgy Eft (6.10)的用戶的.當然,在其他的Ubuntu版本中,包括Feisty Fawn (7.04),也同樣好用.實際上,這份指南應該可以用在大部分其他的發行版中(我最近一本書中,
Beginning SUSE Linux, Second Edition
, 有一個修改過的版本)
使用NdisWrapper
NdisWrapper實際上是一個開源的驅動(從技術上講,是內核的一個模塊),它能夠讓Linux使用標準的Windows XP下的無線網絡驅動.你可以認為NdisWrapper是Linux內核和Windows驅動之間的一個翻譯層.Windows驅動可以通過NdisWrapper的配置工具進行安裝.
有下面兩種情況之一時,使用NdisWrapper:
-
你的無線網絡硬件沒有被Ubuntu識別出來.也就是說,在網絡環境設置對話框中的網絡設備列表里沒有發現你的無線網絡硬件.
-
你的無線網絡硬件被Ubuntu識別出來了,但是當你配置它的時候,它不能正常工作.比如,它不能連接到無線基站.如果發生這種情況,除了要安裝NdisWrapper,你還要進行另外的一步來把現在的Ubuntu驅動放入黑名單.這個后面再講.
使用NdisWrapper比較簡單,僅僅需要幾個命令.然而,得到必須的Windows驅動則是較難的工作,因為,不幸的是,NdisWrapper不能和通常的驅動發布格式.exe一起工作.相反,NdisWrapper需要由特定的.inf和.sys文件(Windows系統文件)組成的驅動.很多時候,這些文件包含在.exe文件中,必須手工提取出來.
注意
當然,有時候有的驅動是以.zip的格式發布的,這樣這些相關的文件就很容易得到了.祈禱吧,讓這種情況發生在你硬件上.
NdisWrapper還遠不是完美的.并不是所有的無線驅動都能和它一起工作,在Windows下能工作的驅動,在Linux下則不一定能好用.有時候,試驗和錯誤是不可避免的.惱人的是,有時候Windows驅動好像是工作了,但是是不可靠的.有的甚至會搞垮你的系統.最好的方案就是試一試.
技巧
NdisWrapper隨著版本的更新在不斷進步.
這就是為什么要規律的更新你的系統.在
Beginning Ubuntu Linux, Second Edition
的第9章,我給出這樣做的全部細節.
我將要講解怎樣使Asus 802.11g (Asus A6R 筆記本)在Ubuntu下利用NdisWrapper來工作.這些指令本質上來說對所有類型的無線網絡設備都一樣.然而,一些特別的細節,比如(驅動)下載地址,就會不一樣了.
首先,我會解釋一下怎樣安裝NdisWrapper. 接著,我會講怎樣找到你需要的Windows驅動.然后,我會講怎樣從驅動文件中提取必要的文件.最后,是怎樣在Ubuntu下安裝Window驅動.你可能還需要把你的現有的Linux驅動放入黑名單,這個我也會講的.
這些步驟僅僅是讓你在Ubuntu下可以得到你的無線網絡設備.一旦完成,你應該就可以用標準的網絡配置工具來連到你的路由器或基站上了.這在
Beginning Ubuntu Linux, Second Edition
的第8章有詳細的說明.
安裝NdisWrapper配置工具(
NdisWrapper Configuration Tools
)
NdisWrapper包含兩個部分:內核模塊和配置工具.內核模塊是默認內核的一部分,所以默認是安裝了的.因此,你所需要做的就是安裝配置工具.打開Synaptic包管理工具,搜索并安裝ndiswrapper-utils-1.8. 你會被告知ndiswrapper-common也需要被安裝.這樣就行了.
注意
如果你在使用
Edgy Eft (6.10),請確保你選擇了
ndiswrapper-utils-1.8,而不是別的版本.
安裝Windows XP驅動
安裝好NdisWrapper配置工具之后,你就可以安裝Windows XP的無線網絡設備驅動了.這個過程包括3個部分:
-
確定你的無線網絡設備,然后找到合適的Windows驅動.
-
從驅動文件中(有可能是.bin格式,盡管這種情況較少)提取必要的.sys和.inf文件
-
利用NdisWrapper配置工具來安裝Windows驅動,修改配置文件使得NdisWrapper模塊在每次你重啟的時候自動加載.
確定你的無線網絡設備并找到找到合適的Windows驅動
要確定你的無線網絡設備,你需要知道兩件事情:你的硬件的make/model信息和PCI ID號.
前者是硬件的make/model信息,Ubuntu是根據系統探測的結果來確定的.Ubuntu發現的這些信息通常跟底層組件的制造商有關,而跟硬件的生成廠家無關.
PCI ID是兩個4位的16進制數,它是你的計算機在內部用來識別設備的.Windows和Ubuntu使用相同的PCI ID編號系統.
執行下面的指令來得到你需要的信息:
-
你可以用設備管理工具來找到PCI ID和make/model信息.點擊Start System -> Administration -> Device Manager.(譯者注: 也可以直接運行hal-device-manager).
-
你現在要做的依賴于是否Ubuntu識別出了你的設備(也就是說,它出現在了你的網絡設置里,但是不能正常工作).如果你的設備沒有被識別出來,跳到下一步.如果它被識別出來了,在硬件列表里找到那個叫做WLAN Interface的一行.在這一行的上邊一行,你就可以看到這個硬件的make/model信息.記下來.在我測試用的筆記本上,這一行上寫著BCM4318 [AirForce One 54g] 802.11g Wireless Lan Controller.這個信息通常跟無線網絡設備文檔中列出的信息是不一樣的.(筆記本的手冊上列出的僅僅是ASUS 802.11g device). 選擇WLAN Interface那一行, 并點擊在設備管理程序窗口右邊的Advanced項. 接著查看以net.physical_device開頭的一行. 看這行的末尾, 記錄下以pci開頭,以下劃線分隔開來的兩組字母和數字串.在我的筆記本上, 它們分別是14e4和4318.看下面的圖, 相關的區域已經被標出來了.
-
如果Ubuntu并沒有識別出你的無線設備(也就是說,它沒有出現在網絡設置對話框里).在設備管理列表中查找標有802.11, WLAN, 或可能僅僅是"wireless"的一行.這一行里會有你需要的make/model信息.點擊在設備管理程序窗口右邊的Advanced項.查看info.udi叫做的一行.看這行的末尾,記錄下以pci開頭,以下劃線分隔開來的兩組字母和數字串.參看下面的圖示.
注意
這兩組字母和數字串實際上是16進制數字.關于16進制數的更多信息,請參看
http://en.wikipedia.org/wiki/Hexadecimal
.
-
把你從第二步或第三步記下來的兩組數字寫在一起就是PCI ID號碼.寫在一起時,在它們中間加一個冒號.就我的而言,我的無線網絡設備的PCI ID號碼是14e4:4318.如果這兩組數字中,任一個少于4個字符,則在它前面加0來變成4個字符.例如,在我的桌面電腦上,從net.physical_device得到的是1814_201.我在201前加了一個0,使得完整的PCI ID號碼變成1814:0201. 在我測試的另外一臺機器上,從net.physical_device得到的是168c_13.因此,在13前加2個0.PCI ID號碼變成168c:0013.
-
從另外一臺可以上網的計算機上,訪問
http://ndiswrapper.sourceforge.net/m...index.php/List
.這個是NdisWrapper支持的無線網絡設備列表.
-
利用你的瀏覽器的搜索功能(Firefox中使用Ctrl+F),查找你前邊得到的PCI ID號碼(以第四步中的格式).例如,對我測試的筆記本來說,搜索14e4:4318.在這個列表中,查看下面幾個東西(按重要性列出):
- PCI ID.
- 無線設備的制造商和model名字(正如上面的設備管理器中所得到);這將會被列到這一條的Card:項和/或Chipset:項.
- 筆記本的制造商和model名字.這將會被列到這一條的Card:項或Chipset:項或Other:項中.
在這個列表中,很有可能有很多項都能匹配你的PCI ID.這樣的話,搜索跟你的硬件制造商和model最匹配的那一項.如果仍然還有很多匹配的項,搜索跟你的筆記本制造商和model最匹配的那一項.你可能很不走運的發現沒有跟你的筆記本制造商和model精確匹配的項.那么,就不得不找一個最像的了.利用你的常識和判斷力.例如,你的筆記本是Asus生產的,但是你沒有找到能精確匹配的驅動,那么選擇另外一個Asus的驅動.
注意
如果你沒有用64位的Ubuntu,當心驅動文件的描述信息中是否提及
x86_64.如果你沒有選用64位Linux,你很可能用的是32位的.如果你找到的是
x86_64的驅動,繼續找直到找到32位的驅動.
-
在列表里這一項中查找那個連接到驅動文件的鏈接,下載Windows Xp的驅動.有時,這個鏈接沒有給出時,制造商的站點會被提及,這樣你可以訪問該站點去下載相應的驅動.
提取驅動組件
下載了驅動之后,就需要提取和你的無線網絡硬件相關的.sys和.inf文件了.這些就是NdisWrapper所需要的所有東西了,剩下的文件就可以丟棄了.但是,提取這些文件有時比較難,因為它們往往被包含在一個.exe文件里了.
注意
大多數的.exe格式的驅動文件實際上是自解壓的文件.
另外,這個驅動文件可能含有硬件的多個不同模式下的多種驅動.找到那個和你的無線網絡設備相關的特定驅動的.inf文件是很必要的:
-
如果你下載的是一個.zip驅動文件,那么你的工作就簡單多了.雙擊下載的.zip文件,在里面查找包含有真正驅動文件的目錄.一般這個目錄叫做"driver",或者有時它以驅動適用的操作系統命名,比如Win_XP.如果你以前安裝過Windows驅動,你會覺得很熟悉的.一旦你找到了相關的目錄,點擊并把.inf,.sys和.bin文件拖拽到一個獨立的目錄(也有可能沒有任何的.bin文件).你可以忽略任何其他的文件,比如.cab和.cat文件.然后,去第四步.
-
如果驅動是.exe格式的文件,我們必須從里面提取出相關的文件.幸運的話, 如果你是用Windows下載的文件的話你也許能夠利用像WinZip(
www.winzip.com
)這樣的工具來做這件事.在WinZip里,用File -> Open菜單選項打開這個文件.你可能需要在File Type下拉列表中選擇All Files來使得.exe文件顯示在文件列表中.然而,如果你在使用Windows,我推薦一個開源并且免費的程序Universal Extractor,它可以從
http://www.legroom.net/software/uniextract
下載.這個程序幾乎可以各種文件(包括大多數的驅動安裝文件)中來提取文件.裝上它之后,右鍵點擊.exe驅動文件,然后選擇UniExtract to Subdir.這將會在.exe驅動文件相同的文件夾生成一個新的目錄,里面包含安裝文件的內容.
-
正如第一步提到的,你需要的驅動文件很有可能包含在叫做"Driver"或"Win_XP"的目錄中.一旦你找到了這個相關的目錄,查找.inf,.sys和.bin文件(盡管你可能找不到任何.bin文件;它們只用在有些驅動中).點擊并把這些文件拖拽到一個獨立的目錄.你可以忽略任何其他的文件,比如.cab和.cat文件.
-
現在的工作就是為你的硬件找到相應的.inf文件.如果那兒只有一個.inf文件,那么你就可以進行下一步了.如果有多個.inf文件,你就需要搜索每一個直到你找到你需要的.你需要查找對應于前面記下來的PCI ID的文本.在一個文本編輯器中打開第一個.inf文件(在Windows中雙擊就可以了),然后用搜索功能來搜索PCI ID的第一部分,這樣能搜索的快一點.例如,我搜索的是14e4. 如果在這個文件里沒有找到,那么就去下一個文件里繼續找.如果你能夠匹配到的話,它很有可能是出現在一句很長的文本行里,并且是在文本"VEN_"的右邊.接著,看看這行是否含有PCI ID的第二部分,這部分很有可能出現在文本"DEV_"的右邊.就我下載的驅動文件而言,在.inf中的這一整行的內容如下(PCI ID的兩部分已經被用粗體標出來了):
Code:
%BCM430B_DeviceDesc% = BCM43XX, PCI\VEN_
14E4
&DEV_
4318
&SUBSYS_12F3103C
如果你在這行里找到了PCI ID的這兩個部分,就像我的例子一樣,那么你就找到了你所需要的.inf文件了(實際上,你可能找到很多行匹配你需要的;這沒有關系的.)
-
你現在就需要把這個.inf文件和.sys文件以及.bin文件(如果這個驅動里有任何的.bin文件的話)轉移到你想安裝驅動的計算機上.你可以通過把它們考到軟盤上,或者燒制一個CD,再或者用一個USB優盤來干這件事.
把現有的驅動放入黑名單
下面這幾步是否要做依賴于是否Ubuntu在你第一次啟動的時候識別出了你的無線網絡設備,但是又不能讓它正常工作.如果是這樣的話,你就需要把內置的驅動放入黑名單,這樣Ndiswrapper就可以和硬件聯系起來了.如果設備沒有被識別,你就可以直接跳到"用Ndiswrapper來安裝驅動"那一步了.
要把現有的驅動放入黑名單,你需要找到這個內核模塊的名字,然后把它加入到/etc/modprobe.d/blacklist文件中.步驟如下:
-
打開設備管理器(System -> Administration -> Device Manager, 譯者注: 也可以運行hal-device-manager),然后在列表中選擇對應于你的無線網絡設備的那一項.點擊含有你的網絡硬件的make/model名字的那一項.
-
點擊在設備管理程序窗口右邊的Advanced項,查找以info.linux.driver開頭的那一行.然后查看value那一列,并記錄下那個值是什么.例如,在我測試的筆記本上,value那一列的值是bcm43xx.
-
關閉設備管理器,打開一個terminal窗口(Applications -> Accessories -> Terminal).鍵入以下命令來在Gedit中打開黑名單配置(blacklist configuration)文件:
Code:
gksu gedit /etc/modprobe.d/blacklist
-
在這個文件的最后面新加上下面一行:
Code:
blacklist <modulename>
用你剛才找到的模塊的名字來代替上面的<modulename>.例如,在我測試的系統里,我鍵入的內容如下(參見下圖):
保存這個文件,然后重啟你的計算機.你現在應該發現你的無線網絡設備在你的網絡設置(Network Settings)程序里不見了.非常好,因為這說明你的硬件現在沒有相應的驅動了.現在,我們可以讓Ndiswrapper來使用硬件了.
用Ndiswrapper來安裝驅動
在那個你想安裝驅動的Ubuntu計算機上,根據前面的步驟,你現在應該有了.inf文件和.sys文件,可能還有.bin文件,這些組成了硬件的驅動.假設這些文件被放在桌面(desktop)上一個名字為"driver"的目錄里.
要用Ndiswrapper來安裝驅動,使用下面的步驟:
-
打開一個terminal窗口(Applications -> Accessories -> Terminal).在這個窗口里,鍵入下面的命令來轉到含有驅動文件的目錄下:
Code:
cd /home/<username>/Desktop/driver
用你自己的用戶名來取代<username>.
-
鍵入下面的命令來安裝驅動:
Code:
sudo ndiswrapper –i filename.inf
用你前面找到的.inf文件(譯者注:就在本目錄下)的名字來代替filename.inf.
-
然后,鍵入下面的命令:
Code:
sudo ndiswrapper –m
gksu gedit /etc/modules
這將打開模塊配置(modules configuration)文件,來進行編輯.在該文件的底部,新加入下面的一行:
請確保你在加入了這一行后,又按了Enter鍵.
-
保存該文件,關閉Gedit,然后重啟你的計算機.
完成這些步驟后,你應該就能發現這個無線網絡設備就可以進行配置了,比如連接一個無線基站,配置WEP/WPA.我在
Beginning Ubuntu Linux, Second Edition
的第8章解釋了如何配置WEP和更新的WPA.
刪除NdisWrapper驅動
正如前面提到的,盡管NdisWrapper可以解決一些無線網絡設備驅動的問題,但是它并不是完美的.你可能會發現你安裝的Windows驅動并不能工作.如果是這樣的話,你可以下載一個不同版本的驅動,然后再試一下.但是,首先你需要卸載現有的驅動.
打開一個terminal窗口,然后鍵入下面的命令,這將使得NdisWrapper列出所有現在所安裝的Windows驅動:
Code:
sudo ndiswrapper –l
找到返回的一行的第一部分.在我測試的筆記本上,返回的這一行是:
Code:
bcmwl5 driver installer, hardware present
這一行的第一部分是你需要刪除的驅動的名字.要刪除它,鍵入下面這行:
Code:
sudo ndiswrapper –e <drivername>
用驅動的名字來替代<drivername>.例如,我鍵入的命令如下:
Code:
sudo ndiswrapper –e bcmwl5
現在,你可以重復前面的步驟來安裝新的驅動了.
|
|