我已经在我的 16.04 系统中成功使用了 Netgear AC600(又名 A6100)wifi 适配器一段时间了,并且也成功地通过 dkms 对其进行了管理,以便它在内核更新时自动重建。
在最新的内核更新到 4.4.0-47-generic 后,该模块已成功重建并由 dkms 加载,但它完全不起作用。它甚至没有显示在 iwconfig 中。
恢复到 4.4.0-45 内核即可恢复功能。
有人知道新内核中发生了什么导致这个问题吗?也许 rtl8812AU 驱动程序包含在这个内核中?如果是这样,我该如何删除为我构建的一个 dkms?
谢谢您的任何建议。
编辑:的输出modinfo 8812au|grep vermagic
是
vermagic: 4.4.0-45-generic SMP mod_unload modversions 686
的输出ls -al /var/lib/dkms/rtl8812au
是
ls: cannot access '/var/lib/dkms/rtl8812au': no such file or directory
编辑2:
的输出ls /usr/src
是
linux-headers-4.4.0-45 linux-headers-4.4.0-47-generic
linux-headers-4.4.0-47-generic rtl8812AU_8821AU_linux-1.0
linux-headers-4.4.0-47
的输出ls /var/lib/dkms
是
dkms_dbversion rtl8812AU_8821AU_linux
编辑3:
的输出dkms status
是
rtl8812AU_8821AU_linux, 1.0, 4.4.0-45-generic, i686: installed
rtl8812AU_8821AU_linux, 1.0, 4.4.0-47-generic, i686: installed
答案1
dkms 8812au 内核模块有一个错误,导致它在包含内核更新的软件更新期间为错误的内核构建。
针对您的具体情况,请执行以下操作:
从以下位置下载较新的源代码(zip 格式)https://github.com/diederikdehaas/rtl8812AU. 解压 zip 文件并将源文件夹复制到/usr/src/rtl8812au-4.3.14
. 编辑 dkms.conf 文件并更改:
MAKE="'make'"
到
MAKE="'make' KVER=${kernelver}"
在终端中(不要费心复制/粘贴# 后的任何内容,它们只是给你的注释):
sudo dkms remove rtl8812AU_8821AU_linux/1.0 --all
# 删除旧的内核模块sudo rm -r /usr/src/rtl8812AU_8821AU_linux-1.0
# 删除旧源代码sudo dkms add rtl8812au/4.3.14
# 将 /usr/src 源添加到 dkms 树sudo dkms build rtl8812au/4.3.14
# 构建驱动程序sudo dkms install rtl8812au/4.3.14
# 安装驱动程序dkms status
# 检查当前内核是否安装了正确的版本modinfo 8812au|grep vermagic
# 检查 vermagic 值是否正确