移植第四天(内核配置)

Linux配置
zImage
软硬可裁剪

make config
make xconfg
make oldconfig
make menuconfig
cd ..../linux-2.6.35.7
ls -a

.config :隐藏文件,一开始没有这个文件
menu config打开配置界面
在内核源码目录下执行make menuconfig时,就会看到配置菜单,这就是配置内核的主界面,在此界面中可以配置内核的功能,增加某些选项,或者去掉某些选项等等,这就是对内核的配置(内核的裁剪)
经过配置:
[*]: 通过空格,选中,表示该选项对应源文件要被编译进内核
[ ]: 通过空格,不选,表示该选项对应源文件不被编译
<*>: 通过空格,选中,表示该选项对应源文件要被编译进内核
< >: 通过空格,不选,表示该选项对应源文件不被编译
: 通过空格,选M,表示该选项对应源文件要被编译成模块

Second extended fs support
CONFIG_EXT2_FS = m // 在菜单中配置的时候,其实就是对CONFIG_EXT2_FS进行设置,一个选项会对应一个变量,设置的时候就是对变量进行赋值
<*> Second extended fs support
CONFIG_EXT2_FS = y
<*> Second extended fs support
CONFIG_EXT2_FS is not set

所有配置变量保存在根目录中的.config隐藏文件中
通过内核的配置,配置结果会默认保存在内核源码根目录下的.config文件中。.config就相当于一张购物清单

Kconfig文件:
该文件用于生成配置内核的界面,是各种配置界面的源文件,内核的配置通过读取各个目录下的Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config文件。

Kconfig文件语法规则:
File systems —>
[*]Miscellaneous filesystems —>
<*>Compressed ROM file system support
例如,如果一旦选中这个文件类型,zImage就能够安装(挂载)cramfs类型文件。
它对应的代码目录为:
linux-2.6.35.7/fs/crmfs
这里写图片描述
打开它的Kconfig文件:
这里写图片描述

config CRAMFS:使用config生成一个CRAMFS的变量,变量默认为CONFIG_CRAMFS,将来配置的时候其实就是对这个变量进行赋值
tristate “Compress ROM file system support(cramfs)” :tristate定义类型,三态(三种取值,要么m,要么yes,要么no),”Compress ROM file system support(cramfs)” 表示菜单选项对应的信息
depends on BLOCK:depends on 定义了当前定义的变量依赖于BLOCK
select ZLIB_INFLATE:反向依赖,指明定义的变量被其他变量依赖
help ….:帮助信息

Kconfig语法:
1,config 条目
config条目用来生成一个配置选项,或者说,用来生成一个变量,这个变量会连同它的值一起被写入配置文件.config中。变量生成过程中默认添加CONFIG_
2,变量类型
bool(布尔类型 y[*] /n[])
tristate(三态,y<*>/n< >/m)
string(字符串)
int(整形)
hex(十六进制)
3,depends on:依赖关系
如果依赖 配置选项没有选中,那么当前的选项也无法配置
4, select 反向依赖
如果当前选项被选中,那么也可以配置select后面的选项
5,help:帮助信息

menu 条目
用于生成菜单

choice条目
将多个类似的配置选项组合在一起供用户单选或多选

comment条目
用于定义一些帮助信息,配置过程中出现在界面的第一行

这里写图片描述

ctrl + ” - “:调小屏幕
ctrl + “+” + shift:调大屏幕

移植案例:
1,编译源文件(开发板文件)
cd arch/arm/mach-s6pv210
cp mach-smdkv210.c mach-smdkv210.c
2,修改与源文件同目录下的Kconfig文件
mach-aquila.c
mach-goni.c
mach-smdkc110.c
mach-smdkv210.c
3,修改完kConfig后,修改Makefile
修改根目录的makefile:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
4,执行makemenu ,加载默认的配置文件
Load an Alternate Configuration File
arch/arm/configs/s5pv210_defconfig
System type —>
5, 查看内核根目录下的.config
CONFIG_MACH_TARENA210=y
通过配置,配置保存.config
6,修改与源文件同目录下Makefile,定义编译规则
cd arch/arm/mach-s5pv210
obj-y: 就会编译进内核
obj-n:不会编译进内核
obj-m:会编译成模块

CONFIG_MACH_TARENA210 = y;
obj-$(CONFIG_MACH_TARENA210) += mach-tarena210.o

7,编译zImage
回到根目录
make zImage
查看zImage位置:arch/arm/boot/zImage
看没有成功,看是否存在这个文件:arch/arm/mach-s5pv210/mach-tarena210.o

总结:
1,新增源文件
2,修改改目录Kconfig
3,修改Makefile架构,交叉编译器
4,执行make menuconfig,加载默认配置文件,给变量赋值CONFIG_XX = y
5,config
6,修改同目录Makefile,使用变量CONFIG_XX
7,编译zImage

pm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值