2.6内核的源码树目录下一般都会有两种文件:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig等时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的Makefile。

驱动程序可以编译成内核模块也可以直接编译进内核。下面以字符设备驱动为例
1.将驱动代码拷贝到drivers/char/
#cp hello.c  /root/linux-2.6.32.2/drivers/char/  Kconfig   
#pwd
/root/linux-2.6.32.2   
#vim  /root/linux-2.6.32.2/drivers/char/  
2.在drivers/char/Kconfig中添加代码
如下:颜色部分为添加的代码
menu "Character devices"
config HELLO_WORD
        bool "helloword"
3.选中hello模块
#pwd
/root/linux-2.6.32.2 
# make menuconfig ARCH=arm
进入Device  Deivers -->Charater  devices -->
选中helloword
将驱动程序直接编译进内核 - 至庸 - THE BOLG OF CHEN
 配置完后在.confi中就自动生成了如下代码
CONFIG_HELLO_WORD=y
4.修改对应的Makefile
#pwd
/root/linux-2.6.32.2   
# vim ./drivers/char/Makefile       
添加
obj-$(CONFIG_HELLO_WORD)        += hello.o  //添加部分
obj-$(CONFIG_LEGACY_PTYS)       += pty.o
obj-$(CONFIG_UNIX98_PTYS)       += pty.o

 注:obj-y则直接编译进内核
         obj-m则直接编译成模块
         obj-$(CONFIG_HELLO_WORD)模型要根据配置项而定
5. 编译内核
# make uImage ARCH=arm CROSS_COMPILE=arm-linux-