2.1 Linux内核镜像构建 笔记

2019-07-12 15:04发布

1.内核、补丁文件下载,解压缩,打补丁

patch -px < xx.patch

2.配置

2.1配置文件

  1. 如果.config不存在,运行make config(字符型)/menuconfig(菜单型)时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。
  2. 如果.config存在,运行make config/menuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。
  3. arch/arm/defconfig是一个缺省的配置文件,make defconfig时会根据这个文件生成当前的.config。
  4. arch/arm/configs文件夹中有许多命名为xxx_defconfig的配置文件,如果运行make xxx_defconfig,当前.config文件会由xxx_defconfig文件生成。
  5. make oldconfig的作用是备份当前.config文件为.config.old,如若make config/menuconfig设置不当可用于恢复先前的.config。

2.2配置过程

1.在2.1节中,若内核目录中不存在.config文件 make config/menuconfig称为直接配置,生成.config文件。信息量较大,不推荐。
2.使用make defconfigmake 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.编译

  1. 在内核目录执行make开始构建内核,生成vmlinux内核文件。
    vmlinuz是可引导的、可压缩的内核镜像,vm代表Virtual Memory.Linux支持虚拟内存,因此得名vm.它是由用户对内核源码编译得到,实质是elf格式的文件.也就是说,vmlinux是编译出来的最原始的内核文件,未压缩.这种格式的镜像文件多存放在PC机上。
  2. 在内核目录执行make uImage开始构建u-boot能引导的内核,生成uImage内核文件。uImage文件位于kernel dir/arch/arm/boot/uImage.
  3. 其他
    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