在 Linux 用 Windows 無線網路卡驅動程式
2010年9月26日 星期日
張貼者:
夢無痕
相信有在玩Linux的玩家們一定常常為了驅動沒支援感到很煩惱吧!雖然Linux是由歷史悠己久的Unix-Based開發而成的,但是可能因為銷量不大或基於成本考量,廠商很少有出 Linux 驅動程式,但一定有給 Windows 的驅動程式,此時 Linux 只好使用一些「特別」方式,來想辦法使用這些只有 Windows 驅動程式的硬體。
因此Linux 使用 NDISwrapper 這個軟體載入 Windows 驅動程式針對只有Windows驅動程式的無線網路卡,照樣能在 Linux 上面驅動這些只有 Windows 驅動程式的無線網路卡。
NDISwrapper軟體下載-連結
使用指令「tar -zxvf ndiswrapper-XXX.tar.gz」解開包裹
使用指令「cd ndiswrapper-XXX」進入目錄
使用指令「make」編譯程式
使用指令「make install」安裝程式,主要安裝了 ndiswrapper 程式與核心模組 ndiswrapper.ko 檔案。
編譯期間若遇到『Kernel tree not found』錯誤的話(如下圖)應該是缺少 kernel 開發相關套件造成的錯誤。
遇到上述情況,只要把 kernel-devel 套件安裝起來即可( yum 設定正常的情況下)指令「yum install kernel-devel」(請注意是相對應的 kernel 版本)
編譯期間 gcc 套件也請記得安裝上去,不然會發生『gcc: command not found』錯誤,使用指令「yum install gcc」安裝 gcc 及相關套件即可。
安裝 Windows 驅動程式
依照網站說明,先不將無線網路卡插上去,就先安裝 Windows 驅動程式。
遇到 zip 檔案使用「unzip XXXXX.zip」指令將他解開,會看到一個 Driver/ 目錄以及一堆檔案,其中「XXXX.inf」是用來安裝驅動程式的 inf 檔案。
使用指令「ndiswrapper -i Driver/XXXX.inf」來安裝驅動程式(看似安裝正常)。
使用指令「ndiswrapper -l」來列出安裝後驅動程式,請注意:出現『無效的驅動程式』訊息,應該是尚未將相關檔案拷貝過去所造成的問題。
依照網站指示來拷貝相關檔案(使用小寫字母)
指令「cp Driver/RNDISMPK.sys /etc/ndiswrapper/bcmrndis/XXX.sys」(注意大小寫)
指令「cp Driver/usb8023k.sys /etc/ndiswrapper/bcmrndis/XXX.sys」
接下來「ndiswrapper -l」就會是 driver installed 的正常訊息。
接著使用 ip、ifconfig 或 iwconfig 就會看到 wlan0 這個網路介面。
故障排除與常見問題
底下針對驅動無線網路卡所遇到的常見問題,作較詳細的說明:
載入內建無線網卡核心模組
Linux可以透過lsmod指令來列出已經載入的核心模組,如果沒有發現硬體驅動模組沒有被載入的話可以透過find(搜尋)核心模組所放置的目錄,通常位於 /lib/modules/「核心版本」下。
最後再透過modprobe XXXX(核心版本) 自動偵測相依性載入 XXXX 核心模組,之後在 lsmod 應該就可以看到。
載入 ndiswrapper 核心模組
小弟有發生過因 ndiswrapper 模組沒有載入,導致 wlan0 介面出不來的情況。理論上 Linux 會自動偵測並載入 ndiswrapper 這個模組(如果有用到相關功能的話),但有時候卻不見得會自動偵測並載入,就只好手動載入啦!使用指令「modprobe ndiswrapper」就載入了,可使用 lsmod 來觀察已經載入的核心模組(若設定「/etc/modprobe.conf」可使之開機自動載入會更方便) 。
參考資料-Albert Hsu
因此Linux 使用 NDISwrapper 這個軟體載入 Windows 驅動程式針對只有Windows驅動程式的無線網路卡,照樣能在 Linux 上面驅動這些只有 Windows 驅動程式的無線網路卡。
NDISwrapper軟體下載-連結
編譯與安裝 NDISwrapper
拿到 NDISwrapper 原始程式碼後,接著就是「解開」「進入目錄」「編譯」與「安裝」的流程如下: 使用指令「tar -zxvf ndiswrapper-XXX.tar.gz」解開包裹
使用指令「cd ndiswrapper-XXX」進入目錄
使用指令「make」編譯程式
使用指令「make install」安裝程式,主要安裝了 ndiswrapper 程式與核心模組 ndiswrapper.ko 檔案。
編譯期間若遇到『Kernel tree not found』錯誤的話(如下圖)應該是缺少 kernel 開發相關套件造成的錯誤。
遇到上述情況,只要把 kernel-devel 套件安裝起來即可( yum 設定正常的情況下)指令「yum install kernel-devel」(請注意是相對應的 kernel 版本)
編譯期間 gcc 套件也請記得安裝上去,不然會發生『gcc: command not found』錯誤,使用指令「yum install gcc」安裝 gcc 及相關套件即可。
安裝 Windows 驅動程式
依照網站說明,先不將無線網路卡插上去,就先安裝 Windows 驅動程式。
遇到 zip 檔案使用「unzip XXXXX.zip」指令將他解開,會看到一個 Driver/ 目錄以及一堆檔案,其中「XXXX.inf」是用來安裝驅動程式的 inf 檔案。
使用指令「ndiswrapper -i Driver/XXXX.inf」來安裝驅動程式(看似安裝正常)。
使用指令「ndiswrapper -l」來列出安裝後驅動程式,請注意:出現『無效的驅動程式』訊息,應該是尚未將相關檔案拷貝過去所造成的問題。
依照網站指示來拷貝相關檔案(使用小寫字母)
指令「cp Driver/RNDISMPK.sys /etc/ndiswrapper/bcmrndis/XXX.sys」(注意大小寫)
指令「cp Driver/usb8023k.sys /etc/ndiswrapper/bcmrndis/XXX.sys」
接下來「ndiswrapper -l」就會是 driver installed 的正常訊息。
接著使用 ip、ifconfig 或 iwconfig 就會看到 wlan0 這個網路介面。
故障排除與常見問題
底下針對驅動無線網路卡所遇到的常見問題,作較詳細的說明:
載入內建無線網卡核心模組
Linux可以透過lsmod指令來列出已經載入的核心模組,如果沒有發現硬體驅動模組沒有被載入的話可以透過find(搜尋)核心模組所放置的目錄,通常位於 /lib/modules/「核心版本」下。
最後再透過modprobe XXXX(核心版本) 自動偵測相依性載入 XXXX 核心模組,之後在 lsmod 應該就可以看到。
載入 ndiswrapper 核心模組
小弟有發生過因 ndiswrapper 模組沒有載入,導致 wlan0 介面出不來的情況。理論上 Linux 會自動偵測並載入 ndiswrapper 這個模組(如果有用到相關功能的話),但有時候卻不見得會自動偵測並載入,就只好手動載入啦!使用指令「modprobe ndiswrapper」就載入了,可使用 lsmod 來觀察已經載入的核心模組(若設定「/etc/modprobe.conf」可使之開機自動載入會更方便) 。
參考資料-Albert Hsu
歡迎分享
標籤:
電腦軟體,
Linux,
Suse Linux
Comments
Leave a comment
訂閱:
張貼留言 (Atom)