内核启动流程分析之编译体验与配置
/*
*硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
*软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
*参考资料:《嵌入式Linux应用开发手册》
*/
1、解压缩
把linux内核文在linux系统上解压缩
tar xjf linux-2.6.22.6.tar.bz2
2、打补丁
进入到linux-2.6.22.6文件中,执行打补丁命令:patch -px <补丁文件
-px
:x——你所需要忽略的目录路径的前x个路径。
如:补丁文件中说明了补丁打到以下目录,此时已经在linux-2.6.22.6目录下所以需要忽略一行
·
出现以下信息则证明补丁已经打好
3、配置
配置的方法有三种:
-
直接使用make menuconfig
对于这种方法,由于配置项可能成千上万,不推荐 -
使用默认的配置,再上面加以修改
-
使用系统默认的配置文件
3.1 方法一:修改默认的配置文件
具体步骤如下:
1、进入内核代码的目录下,查找已存在的配置文件xxx_defconfig,命令如下
find -name "*defconfig*"
会出来已经存在的架构的配置文件信息
2、进入到arm架构的文件配置文件目录下
cd ././arch/arm/configs
在当前目录下有如下的配置文件,找到名字与我们所需要配置的芯片信息相似的文件进行修改
3、返回到…/linux-2.6.22.6目录下,make上述相似文件
make s3c2410_defconfig
出现菜单则amke成功
4、执行指令
make menuconfig
成功后出现以下画面,在此界面上进行修改
下面为操作说明
英文 | 中文 |
---|---|
selects submenus | Enter键选择菜单。 |
Highlighted letters are hotkeys | 粗体的开头字母是热键 |
Pressing includes | Y键,编译在内核里运行 |
excludes | N键,不编译在内核中 |
modularizes features | M键,进行模块化 |
Press to exit | Esc键退出 |
<?> forHelp, | ?键帮助 |
</> for Search | /键搜索 |
[*] built-in | [*]:已经内置在内核中 |
[ ] excluded | [ ]:不编译在内核中 |
module | :已经模块化 |
< > module capable | < >:表示这选项能被模块化(按下M键有响应) |
3.2 方法二:使用系统默认的配置文件
1、进入到config_ok目录下拷贝配置文件到.config中
ls config_ok | cp config_ok .config
(|符号用来分开两条指令,实际应用中不需要打)
2、执行指令
make menuconfig
遇到问题:
解决:
sudo apt-get install libncurses5-dev
成功后出现以下画面
4、编译
执行指令:
make uImage