以lineage OS - msm8996 内核为例
https://github.com/zzq1996/android_kernel_xiaomi_msm8996
之前一篇文章写了如何配置交叉编译工具链:
https://blog.csdn.net/zzq1824837536/article/details/89488058
$ git clone https://github.com/zzq1996/android_kernel_xiaomi_msm8996
$ unzip kernel-file
$ cd kernel-file
export ...
make menuconfig
编译目标:去除蓝牙&Wi-Fi
vim kernel/arch/arm64/configs/natrium_defconfig
找到
238 #CONFIG_BT=y
239 #CONFIG_MSM_BT_POWER=y
240 #CONFIG_CFG80211=y
241 #CONFIG_CFG80211_INTERNAL_REGDB=y
243 #CONFIG_NFC=y
244 #CONFIG_NFC_PN548=y
282 #CONFIG_DUMMY=y
283 #CONFIG_TUN=y
284 #CONFIG_RNDIS_IPA=y
285 #CONFIG_PPP=y
298 #CONFIG_WCNSS_MEM_PRE_ALLOC=y
299 #CONFIG_CNSS_CRYPTO=y
300 #CONFIG_CNSS=y
301 #CONFIG_CNSS_PCI=y
302 #CONFIG_CNSS_ASYNC=y
303 #CONFIG_CLD_LL_CORE=y
304 #CONFIG_BUS_AUTO_SUSPEND=y
305 #CONFIG_WLAN_FEATURE_RX_WAKELOCK=y
306 #CONFIG_INPUT_EVDEV=y
488 #CONFIG_QCACLD_WLAN_LFR3=y
489 #CONFIG_PRIMA_WLAN_OKC=y
490 #CONFIG_PRIMA_WLAN_11AC_HIGH_TP=y
491 #CONFIG_WLAN_FEATURE_11W=y
492 #CONFIG_WLAN_FEATURE_LPSS=y
494 #CONFIG_WLAN_FEATURE_NAN=y
497 #CONFIG_WLAN_OFFLOAD_PACKETS=y
498 #iCONFIG_QCA_WIFI_AUTOMOTIVE_CONC=y
499 #CONFIG_WLAN_UDP_RESPONSE_OFFLOAD=y
2.6.28版本起,内核代码的drivers下增加了一个staging目录,这个目录也是用来存放驱动程序,只是这里的驱动和上层目录的不同,加载的时候内核log会打印如下的语句:
MODULE_NAME: module is from the staging directory, the quality is unknown, you have been warned.
drivers/staging究竟所谓何物,需要从Linux staging tree说起。
Greg KH于2008年6月10号在Linux内核邮件列表里发出一封信,宣布建立了另外一棵kernel tree,这就是Linux staging tree。Greg解释到,staging tree建立之目的是用来放置一些未充分测试或者因为一些其他原因未能进入内核的新增驱动程序和新增文件系统。在信中,Greg罗列了开发者把代码提交到staging tree应该遵循哪些规则,以及哪些行为是在staging tree不受欢迎的: