u-boot 或者 Linux 在进行配置内核时,其调用步骤如下:
make ARCH=<arch> <xxx_defconfig> menuconfig
- ARCH : 指定要配置的构架
: 指定默认的参考配置,比如arm默认配置位于 arch/arm/configs/
- 一般都可以参考这些配置,不然内核的配置项太多了。比如
make ARCH=arm s3c2410_defconfig menuconfig
- 一般都可以参考这些配置,不然内核的配置项太多了。比如
- 配置工具都会提取
./Kconfig
文件,此文件source
读取arch/${ARCH}/Kconfig
arch/${ARCH}/Kconfig
再source其他文件夹下的Kconfig
,层层调用来完成整个界面的映射.配置界面的显示,也是对应层层显示的.- 在完成配置后,在内核根目录下会生成文件 .config(新配置) 和 .config.old(之前配置),用户根据查看这两个文件可以以一个全局视野查看内核配置以及相对上次修改的配置
经过上面的配置,然后分别编译内核文件和模块文件:
make ARCH=<arch> CROSS_COMPILE=<arm-gcc> zImage
:编译内核文件(比如make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage
)- 编译完成后,在内核根目录会有未压缩的
vmlinux
和符号表System.map
,以及在arch/xxx/boot/
目录下会有已经压缩的zImage
- 编译完成后,在内核根目录会有未压缩的
make ARCH=<arch> CROSS_COMPILE=<arm-gcc> modules
: 编译内核模块- 内核模块对应的存在于其源码的路径中
- 为了便捷的将编译的模块安装在文件系统,一般还会执行
make modules_install
,默认会安装在目标文件系统的/lib/modules/$(KERNELRELEASE)