
我正在嘗試修補我的 wifi 驅動程式以修復固定通道 -1 錯誤,但當我嘗試編譯原始程式碼時,我總是遇到 make 錯誤...我在 AMD 機器上運行 Ubuntu x64 13.04。任何幫助,將不勝感激...
$ sudo make
make -C /lib/modules/3.8.0-19-generic/build M=/usr/src/compat-wireless-3.4-rc3-1 modules
make[1]: Entering directory `/usr/src/linux-headers-3.8.0-19-generic'
CC [M] /usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/main.o
In file included from /usr/src/compat-wireless-3.4-rc3-1/include/linux/bcma/bcma.h:8:0,
from /usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/bcma_private.h:9,
from /usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/main.c:8:
/usr/src/compat-wireless-3.4-rc3-1/include/linux/bcma/bcma_driver_pci.h:207:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘bcma_core_pci_init’
In file included from /usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/main.c:8:0:
/usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/bcma_private.h:17:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘bcma_bus_register’
/usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/main.c:142:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘bcma_bus_register’
/usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/main.c:17:21: warning: ‘bcma_bus_next_num’ defined but not used [-Wunused-variable]
/usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/main.c:86:12: warning: ‘bcma_register_cores’ defined but not used [-Wunused-function]
make[3]: *** [/usr/src/compat-wireless-3.4-rc3-1/drivers/bcma/main.o] Error 1
make[2]: *** [/usr/src/compat-wireless-3.4-rc3-1/drivers/bcma] Error 2
make[1]: *** [_module_/usr/src/compat-wireless-3.4-rc3-1] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-19-generic'
make: *** [modules] Error 2
答案1
使用 Ubuntu 12.04 AMD64 和“0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN”我還沒有找到解決方案,儘管我可以嘗試為您指出正確的方向。
編譯錯誤:Compact-wireless 軟體包 (http://wireless.kernel.org/en/users/Download/stable/) 適用於 3.7 之前的核心。您使用的是內核 3.8.0-19,因此您需要使用緊湊型驅動器。由於「net/wireless/chan.c」中的重大變化,通道負一最大值補丁不適用於緊湊驅動程式。根據空氣裂紋維基Channel-Negative-One-Maxim 補丁只需要應用於“v3.3-rc1-2 之前的兼容無線版本”,因此您不需要應用它。我只能假設這個問題在新版本中不應該存在。
我的建議:使用aircrack wiki說明下載3.8核心的緊湊驅動程式(https://www.kernel.org/pub/linux/kernel/projects/backports/stable/),應用mac80211.compat08082009.wl_frag+ack_v1.patch無論補丁是否通過,都進行編譯。安裝後如果還是不行。如果一切都失敗了嘗試另一個發行版,例如 Kali live,可能在虛擬機器中,同時將無線卡片暴露給虛擬機器(如果您有 USB 無線模組,應該相對容易)。
附加資訊:我嘗試透過 apt 安裝 linux-backports-modules-cw-3.8-3.2.0-41-generic,因為我有 12.04 和 3.2.0-41-generic 核心。它不起作用,請注意這些預編譯模組不包含 mac80211.compat08082009.wl_frag+ack_v1.patch。我還發現 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1024568 已針對 ubuntu 12.04 提交,但自 2012 年 7 月 31 日以來沒有任何活動。
PS:如果 aireplay 有一個參數來強制通道,它會為很多人省去很多麻煩,建議像我這樣的菜鳥用隨機不受支援的補丁來修復損壞的驅動程式是很糟糕的。在 Raspbian 上情況更糟(嘗試過核心 3.2 和 3.6)。抱歉,連結已損壞,這是我的第一篇文章。祝你好運!
答案2
./scripts/driver-select
您是否透過 compat-wireless-3.* 目錄選擇了驅動程式?如果沒有,請裸機./scripts/driver-select
查看支援的驅動程式並選擇帶有./scripts/driver-select driver_name
.之後您很可能能夠做到make && sudo make install
。