当我启动 4.4.x 内核时,我想确保有缺陷的暂存驱动程序r8723au
被列入黑名单,以支持经过大量改进的主线rtl8xxxu
。
但是,当我启动较旧的 4.2.x 内核时,我仍然需要使用旧的r8723au
驱动程序。
有没有办法将模块列入黑名单仅有的针对特定的内核版本?(更新:我想将老的模块,,r8723au
来自新的内核,以防止它接管新的驱动程序。)
我的想法:
/etc/modprobe.d/blacklist-r8723au.conf
-- 据我所知,不可能只为一个内核版本指定黑名单/etc/default/grub
-- 无法modprobe.blacklist=r8723au
为某些版本指定内核命令行,而无法为其他版本指定
我得到的快速而简单的解决方案是手动编辑/boot/grub/grub.cfg
并将相关的黑名单参数添加到特定的内核版本......但当然这会在我下次运行时自动覆盖update-grub
(也许是在安装更新的 Xenial/16.04 内核时)。
答案1
据我所知,模块 rtl8xxxu 不存在于内核版本 4.2.0-xx 中,因此启动 4.2.0-xx 内核应该没问题。
我不知道这两个驱动程序是否覆盖相同的 usb.id,但是,您可以通过重命名模块来阻止 r8723au 在 4.4.0-xx 中加载。例如:
sudo mv /lib/modules/4.4.0-21-generic/kernel/drivers/staging/rtl8723au/r8723au.ko /lib/modules/4.4.0-21-generic/kernel/drivers/staging/rtl8723au/r8723au.bak
sudo mv /lib/modules/4.4.0-22-generic/kernel/drivers/staging/rtl8723au/r8723au.ko /lib/modules/4.4.0-22-generic/kernel/drivers/staging/rtl8723au/r8723au.bak
当更新管理器安装了更新的内核版本(例如 -23)时,您将需要重复该过程。