由於純淨的Linux內核本來就支持這個型號的網卡,因此只需要打開相關內核配置即可:
①打開內核對802.11的支持:
-> Networking support
-> Wireless
-> 【*】cfg80211 - wireless configuration API
-> 【*】Generic IEEE 802.11 Networking Stack (mac80211)
②打開AP功能的支持:
-> Device Drivers
-> Network device support (NETDEVICES [=y])
-> Wireless LAN (WLAN [=y])
【*】IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
③打開內核對SDIO/MMC的支持:
-> Device Drivers
->【*】 MMC/SD/SDIO card support --->
④打開Marvell 8686 SDIO驅動:
-> Device Drivers
-> Network device support
-> Wireless LAN
-> Marvell 8xxx Libertas WLAN driver support
->【*】 Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards
⑤打開SDIO Host Interface:
-> Device Drivers
-> MMC/SD/SDIO card support
【*】Secure Digital Host Controller Interface support
【*】SDHCI support on Samsung S3C SoC
對於WIFI網卡(類似於部分USB攝像頭,例如Apple的個別型號),一般驅動初始化時需要在根文件系統下提供相應的固件,這個時候就需要到http://wireless.kernel.org或者http://linuxwireless.sipsolutions.net/en/users/上面去搜索固件,並且將固件放到跟文件系統下面,對於.fw文件需要放在/lib/firmware下,路徑有特殊要求的固件,需要根據源碼中的描述進行更改。
對於Marvell 8686這個SDIO藉口的網卡,需要有兩個固件:
sd8686_helper.bin和sd8686.bin(可以在http://dev.laptop.org/pub/firmware/libertas/獲得),將這兩個文件直接放在/lib/firmware目錄下面即可。
在試驗中,由於我的根文件系統是通過有線網卡DM9000 掛載nfs的,遇到了一個非常奇怪的問題:確認/lib/firmware目錄下存在兩個固件,但是每次系統上電自動初始化網卡的時候,總是提示找不到固件:
多次調試後,終於發現是由於在掛載nfs前,系統已經開始初始化無線網卡了,這樣當然找不到文件了,解決方法有兩個:
①繼續使用nfs,將sdio網卡的驅動編譯成模塊(模塊在內核中的相關項更改之後,最好還是重新對根目錄下的文件進行覆蓋),手動insmod或者通過rcS腳本加載網卡;
②將文件系統放在mtd設備上面。