linux系统的代码量大,复杂设计的深度,广度需要长期的积累才能了然于胸。不过通常我们需要了解最多的是各个模块的驱动。
下面举例说明如何添加一个系统驱动(wifi为例):
tar -xzvf rtl8723bu.tar.gz
cp -Rf rtl8723bu/ kernel/drivers/net/wireless/ # drivers/net/wireless/ 为wifi驱动目录
拷贝厂商源码目录rtl8723bu/之后,可以查看源码的Makefile,Kconfig ,
cat rtl8723bu/Kconfig 查看模块名称configRTL8723BU
在kernel/drivers/net/wireless/Kconfig 中添加 wifi_vendor/Kconfig
source "drivers/net/wireless/rtl8723bu/Kconfig" 包含嵌套新加的模块
在kernel/drivers/net/wireless/Makefile中,导入新模块
obj-$(CONFIG_RTL8723BU) += rtl8723bu/
添加好模块之后,就需要使用make menuconfig来选择新增的模块,决定是编入内核还是生产KO动态加载
make menuconfig --> Device Drivers ---> Network device support ---> Wireless LAN ---> Realtek 8723B USB WiFi 选择M即可编译得到KO库。
对应的Kconfig分别是:
drivers/Kconfig
drivers/net/Kconfig
drivers/net/wireless/Kconfig
drivers/net/wireless/rtl8723bu/Kconfig