Wifi

執行 makefile 會導致“/sbin/modprobe: invalid option – ’l’”

  • September 19, 2017

我正在嘗試在華碩 EEE PC Flare 系列上網本上設置 Slackware 14.0。目前我正在嘗試配置wifi。當我輸入以下內容時:

# iwconfig

我得到:

lo        no wireless extensions.

我發現這意味著我沒有安裝無線網卡的驅動程序(基於此 - 請參閱無線子標題)。我查了一下lspci,這是我網卡上的資訊:

02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev-01)

我設法在這裡找到了詳細說明如何安裝正確驅動程序的指南。我從教程中下載了 tarball,通過 USB 將其傳輸到執行 Slackware 的電腦上,解壓縮,然後執行教程中的命令。但是,當我到達我執行的部分make時,我得到了以下輸出:

# make
/sbin/modprobe: invalid option -- 'l'
/sbin/modprobe: invalid option -- 'l'
./scripts/gen-compat-autoconf.sh config.mk > include/linux/compat_autoconf.h

在這一點上它卡住了。我最終用Ctrl+取消了它C並嘗試執行make clean. 這也給了/sbin/modprobe: invalid option -- 'l'錯誤很多次,但最終完成了。

在這一點上,我用Google搜尋了一下,最終從 2 年前發現了這個-l,它指出當時核心中沒有實現該標誌,但它在 TODO 列表中。我檢查了 man modprobe 並-l沒有在任何地方提到該標誌,也沒有 TOOD 部分。我還檢查了 make 文件,果然它嘗試/sbin/modprobe使用-l標誌呼叫,導致make程序失敗。

以前有人遇到過這個問題modprobe嗎?是否有一些替代命令可以替代它?(我可以編輯makefile)。任何幫助將不勝感激。

modprobeUbuntu 12.04 中的版本(來自module-init-tools version 3.16確實有一個-l選項,帶有描述

  -l --list List  all  modules  matching the given wildcard (or "*" if no
            wildcard is given).  This option is  provided  for  backwards
            compatibility  and  may  go  away  in future: see find(1) and
            basename(1) for a more flexible alternative.

例如,

$ modprobe -l 'ath*'
kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
kernel/drivers/net/wireless/ath/ath6kl/ath6kl.ko
kernel/drivers/net/wireless/ath/ath.ko
kernel/drivers/bluetooth/ath3k.ko

基於此,可以將命令替換為命令,find /path/to/kernel/drivers -name 'xxx'例如

$ find /lib/modules/`uname -r` -name 'ath*.ko' -type f -printf '%P\n'
kernel/drivers/net/wireless/ath/ath6kl/ath6kl.ko
kernel/drivers/net/wireless/ath/ath.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
kernel/drivers/bluetooth/ath3k.ko

引用自:https://unix.stackexchange.com/questions/151262