1.内核、补丁文件下载,解压缩,打补丁
patch -px < xx.patch
2.配置
2.1配置文件
- 如果.config不存在,运行make config(字符型)/menuconfig(菜单型)时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。
- 如果.config存在,运行make config/menuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。
- arch/arm/defconfig是一个缺省的配置文件,make defconfig时会根据这个文件生成当前的.config。
- arch/arm/configs文件夹中有许多命名为xxx_defconfig的配置文件,如果运行make xxx_defconfig,当前.config文件会由xxx_defconfig文件生成。
- make oldconfig的作用是备份当前.config文件为.config.old,如若make config/menuconfig设置不当可用于恢复先前的.config。
2.2配置过程
1.在2.1节中,若内核目录中不存在.config文件
make config/menuconfig
称为直接配置,生成.config文件。信息量较大,不推荐。
2.使用
make defconfig
或
make xxx_defconfig
方法,会将defconfig或xxx_defconfig中的默认配置生成.config文件。(这是make 产生的.config文件,不可用defconfig或xxx_defconfig直接重命名得到)
3.使用厂家提供的配置文件,重命名为.config。(这是修改文件名产生.config文件)
3.如果内核目录中已经存在.config文件,则
make config/menuconfig
会在.config文件的基础上修改,生成新的.config文件。
2.3配置方法
通常我们使用
make menuconfig
命令,打开内核的菜单配置界面。
1. 箭头,用来到导航菜单项。
2. enter,进入子菜单。
3. 菜单中高亮的字母是hotkey。
4. Y 表示编译进内核。此时图标为[*]
5. N 表示不编译进内核。此时图标为[]
6. M 表示编译成模块,需要使用时再插入内核。此时图标为,<>表示可以被编译成模块。
7. 输入?,显示菜单项的帮助文件。
8. 输入/,用于查找。
9. exit,退出。
3.编译
- 在内核目录执行
make
开始构建内核,生成vmlinux内核文件。
vmlinuz是可引导的、可压缩的内核镜像,vm代表Virtual Memory.Linux支持虚拟内存,因此得名vm.它是由用户对内核源码编译得到,实质是elf格式的文件.也就是说,vmlinux是编译出来的最原始的内核文件,未压缩.这种格式的镜像文件多存放在PC机上。
- 在内核目录执行
make uImage
开始构建u-boot能引导的内核,生成uImage内核文件。uImage文件位于kernel dir/arch/arm/boot/uImage
.
- 其他
elf格式文件 ELF,Executable and Linkable Format,可执行可链接格式,是UNIX实验室作为应用程序二进制接口而发布的,扩展名为elf.可以简单的认为,在elf格式的文件中,除二进制代 码外,还包括该可执行文件的某些信息,比如符号表等.
objcopy 是GNU使用工具程序objcopy作用是拷贝一个目标文件的内容到另一个目标文件中,也就是说,可以将一种格式的目标文件转换成另一种格式的目标文件. 通过使用binary作为输出目标(-o binary),可产生一个原始的二进制文件,实质上是将所有的符号和重定位信息都将被抛弃,只剩下二进制数据.
Image Image是kernel镜像格式,它是经过objcopy处理的只包含二进制数据的内核代码,它已经不是elf格式了,但这种格式的内核镜像还没有经过压缩。
bzImage bz表示big zImage,其格式与zImage类似,但采用了不同的压缩算法,注意,bzImage的压缩率更高。
引用
https://blog.csdn.net/pi408637535/article/details/38438309