Linux 内核配置
一 Linux 内核配置
(1)修改Makefile添加自己的交叉开发工具链
#ARCH ?= (SUBARCH) #CROSS_COMPILE ?= #CROSS_COMPILE ?= (CONFIG_CROSS_COMPILE:"%"=%)
#添加的自己的平台和开发工具链
ARCH = arm
CROSS_COMPILE = arm-cortex_a8-linux-gnueabi-
(2)添加配置文件
第一种方法:
[1]将平台默认的配置文件拷贝到Linux内核的顶层目录,命名为.config
例如:
cp arch/arm/configs/s5pc100_defconfig .config
[2]通过make menuconfig命令配置一下内核
第二种方法:
[1]make 默认配置文件
例如:
make s5pc100_defconfig
注意:
通过make menuconfig需要确认:
[1]当前平台的是否正确
[2]是通过那个串口输出信息
[3]需要配置的设备驱动和服务
(3)make 编译内核
顶层目录:vmlinux elf格式的Linux内核
arch/arm/boot/Image 去掉elf头和符号信息之后的Linux内核
arch/arm/boot/zImage 通过gzip压缩后,添加了自解压代码之后的Linux内核
arch/arm/boot/compressed/vmlinux 通过gzip压缩后,添加了自解压代码之后的Linux内核(elf格式)
二 Kconfig和Makefile
Makefile : 完成对文件编译
基本语法
[1]obj-y += dir/ 或 obj-y += file
表示对应目录需要编译进内核或指定的文件需要编译进内核
[2]obj-CONFIG_XXX += dir/ 或 obj-CONFIG_XXX += file
表示对应目录或文件是否需要编译进内核,取决于CONFIG_XXX宏的定义
Kconfig : 提供内核的配置菜单选项
配置选项
config 选项名
属性1
属性2
[1]选项名
config HELLO
展现的形式:CONFIG_HELLO,在.config文件中定义
[2]属性
(1)选择类型
<1>tristate y:编译进内核 m:编译成模块 n:不编译
<2>bool y:编译进内核 n:不编译
<3>string CONFIG_选项名="字符串"
<4>int CONFIG_选项名=整数
<5>hex CONFIG_选项名=十六进制数
(2)提示字符串
prompt "提示字符串"
(3)range 指定值的范围
(4)help 帮助信息
help
"test help ..."
(5)default 当没有进行配置的时候,默认的选择是什么
例如:
config HELLO
tristate
prompt "hello support"
default y
(6)depends on 配置选项名
[1]depends on 配置选项名
[2]depends on 配置选项名1 || 配置选项名2
[3]depends on 配置选项名1 && 配置选项名3
y:2 m:1 n:0
&& -> 最小值
|| -> 最大值
注意:如果依赖的结果为0:不可见,2:三态,1:2态
(7)select 配置选项名
当前配置选项被选中的时候,同时选择select 指定的配置型选项
注意:(1)和(2)必须有,其它可选择
