我下载了3.12-8内核文件linux-headers-all.deb,linux-headers-generic_i368.deb;linux-image-generic_i386.deb来自 kernel.org 并通过以下方式安装:
dpkg -i *.deb
现在,我正在尝试消除一些 wifi 信号丢失问题,这可能是由驱动程序本身引起的。显然,ath9k 驱动程序已经有一些修复,所以我想用反向移植版本替换默认版本。
我下载了backports-3.12.8-1.tar.gz来自 kernel.org 并尝试通过以下方式准备好 ath9k 模块:
cd ~/.source/backports-3.12.8-1/
sudo apt-get install build-essential
sudo apt-get build-dep linux-image-$(uname -r)
sudo ln -s /usr/src/linux-headers-$(uname -r) /usr/src/linux
make defconfig-ath9k
这让我遇到以下“缺少原型错误”:
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o conf.o conf.c
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o zconf.tab.o zconf.tab.c
cc conf.o zconf.tab.o -o conf
但当我继续:
sudo modprobe -r ath9k
sudo make
sudo checkinstall
一切正常!
我的问题是:
该模块是否依赖于某些其他内核模块?
是的,以下命令确实告诉您:
modinfo ath9k
如果是的话,关于这些东西的信息在哪里?
请查看 wireless.kernel.org/en/users/Drivers/ath9k。
是否有正确的方法来安装此内核模块和驱动程序?
可能通过获得内核编译方面的专业人员:-)。
谢谢
答案1
对于那些可能偶然发现这个问题的人,就像我刚才一样:
这让我遇到以下“缺少原型错误”:
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o conf.o conf.c cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o zconf.tab.o zconf.tab.c cc conf.o zconf.tab.o -o conf
这些行实际上不是错误。该make
命令运行一堆其他命令,如名为的文件中所述Makefile
。默认情况下,make
将在运行这些命令之前将其写入终端。例如,如果Makefile
说运行foo
然后bar
然后baz
,make 将写入foo
终端然后运行命令foo
;然后它将写入bar
终端并运行bar
;然后它将写入baz
终端并运行baz
。
在这种情况下,这些cc
行是make
指示运行的命令Makefile
。该cc
命令将运行系统默认的C 编译器,这可能是海湾合作委员会. 以开头的东西-
是选项,这会影响 C 编译器的行为。
对于 GCC 这样的编译器,以...开头的选项-W
告诉编译器在看到技术上有效但通常不合适的代码时发出警告(例如,代码中的一些模式,许多程序员思考会以某种方式行动,但实际上会以另一种方式行动。
在这种情况下,-Wall
会打开许多(不是全部!)GCC 的警告。-Wmissing-prototypes
并-Wstrict-prototypes
打开额外的警告,以发现与 C 相关的问题函数原型特征。
因此,这些消息实际上告诉我们命令cc
即将运行,并且(除其他事项外)如果它认为代码不可靠,它应该警告我们;特别是,如果函数原型被误用。
GCC 警告如下所示:
main.c: In function ‘main’:
main.c:1:5: warning: traditional C rejects ISO C style function definitions [-Wtraditional]
int main(int argc, char **argv) {
^
由于输出中没有出现类似内容,因此没有发生任何警告或错误;甚至和这些额外的-W
检查已启用。
答案2
我建议安装一个较新的内核,尽管它从 2.6.30 或类似的版本开始就应该可以正常工作。我将其用作内核中的 AP 3.13.0-24-generic
,尽管我知道最好安装一个新内核。我一直在使用它http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.12-vivid/
或类似的版本(直到我的硬盘崩溃)。我可以为您提供上述内核中使用的版本的详细信息。
- 依赖:ath9k_hw、mac80211、ath9k_common、cfg80211、ath
- 我曾在某处看到过这些信息和硬件功能,但我不记得在哪里了
- 当然是了 :) 查找 compat-wireless