我有一台 Lenovo IdeaPad Yoga 13。 WLAN 无法在 Fedora 18 上开箱即用。所以我在 google 上搜索并找到了这 2 个链接:
https://askubuntu.com/questions/139632/wireless-card-realtek-rtl8723ae-bt-is-not-recognized https://ask.fedoraproject.org/question/9633/i-can-not-get-my-realtek-8723-chip-to-work/
所以我下载了源码安装 gcc、kernel-header、kernel-devel 和 patch。我将base.c中的第320行注释掉。但我仍然收到错误。
make -C /lib/modules/3.8.9-200.fc18.x86_64/build M=/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012 modules
make[1]: Entering directory `/usr/src/kernels/3.8.9-200.fc18.x86_64'
CC [M] /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o
In file included from /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:39:0:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/pci.h:245:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtl_pci_probe’
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_action_proc’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: error: ‘RX_FLAG_MACTIME_MPDU’ undeclared (first use in this function)
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: note: each undeclared identifier is reported only once for each function it appears in
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_send_smps_action’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1432:16: error: ‘struct <anonymous>’ has no member named ‘sta’
make[2]: *** [/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o] Error 1
make[1]: *** [_module_/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.8.9-200.fc18.x86_64'
make: *** [all] Error 2
pci.h 上的第 245 行是这样的:
int __devinit rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
是的,我以普通用户和 root 身份尝试它。
我的问题是如何编译这个或必须修复什么。
答案1
所以解决方案非常简单,获取最新来源: https://github.com/lwfinger
制作并安装
所以这对于 realtek-8723 来说效果很好。
我写了一篇关于它的小博文 ->http://l33tsource.com/blog/2013/05/08/Yoga-with-WLAN.html
答案2
看来__devinit
宏是在 3.8 中从内核中删除。我通过删除和来rtl8192ce
编译和加载驱动程序(来自同一源树),并从每个实例中删除所有实例(每个驱动程序目录一个)。__devinit
pci.h
pci.c
__devinitdata
sw.c
源根目录中的Agrep -R __devinit
应显示您必须修改的所有文件。
答案3
你试过这个吗?
int __devinit = rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
答案4
Fedora 有相当新的内核,通常浮动的驱动程序源是针对旧内核版本的。检查必要的内核版本,翻阅 Fedora 论坛,检查可能相关的错误报告,寻找内核黑客提供的尚未官方的驱动程序(不是供应商;供应商经常生活在一种幻想中,认为一个源代码可以适用于各种内核版本,其他供应商只是将另一个无法命名的系统的源代码块硬塞到与本机 Linux 驱动程序表面相似的东西中,这是一些无可救药的异端两者都尝试一下)。