1、linux内核配置
linux内核的配置,其本质是获取到.config文件,配置的方法一般分为以下三种:
(1)直接执行Make menuconfig,自行选择每一项(很少这样用);
(2)根据控制器类型在arcn/arm/configs中选择合适的xxx_defconfig文件,执行make xxx_defconfig,然后再执行make menuconfig进行简单修改即可(初次开发常用);
(3)别人已经开发完产品的.config文件直接复制过来,然后再根据需求执行make menuconfig进行简单修改(项目组开发常用)。
选择上述其中一种方法进行配置,然后执行make命令即可编译内核。
2、Make menuconfig用法
执行Make menuconfig的目的一般是对.config文件进行简单调整,执行该命令后会进入如下图文界面:
具体操作方法如下:
(1)按上、下、左、右键进行菜单选择
(2)按enter键进入当前菜单的子菜单
(3)按esc返回上一级
(4)y键选择将模块编译进内核,n键不编译进,m键编译为模块(ko文件)
(5)?键查看帮助
(6)/键进入查找框,可以查询模块的路径
3、.config文件的使用
以DM9000网卡为例,首先在make menuconfig中将其配置为Y:
退出menuconfig后在.config文件中可以查看到该项的配置:
3.1 内核源码的使用
在内核的源码中有类似如下的使用 :
CONFIG_DM9000这个宏定义位于include/linux/autoconf.h中, 该文件中定义的宏是根据.config中的配置来自动生成的,如果DM9000在执行make menuconfig的时候设置为n,那么在include/linux/autoconf.h文件中就不会出现#define CONFIG_DM9000 1这行代码。
3.2 子目录的Makefile使用
在drivers/net/Makefile 中有以下使用:
$(CONFIG_DM9000)即对CONFIG_DM9000变量进行取值,在进行编译的时候,obj-y表示编译进内核,obj-m则表示编译为模块,CONFIG_DM9000这个变量在include/config/auto.conf中定义,该文件也是根据.config生成的,查看该文件可以发现CONFIG_DM9000被赋值为y:
4、总结
内核的配置过程主要是为了生成.config文件,配置完成后执行make编译内核,内核源码和Makefile文件会根据配置对各个模块进行处理,最终生成uImage文件。