拿到一个linux内核后,要使用它先要进行配置,编译,
选择linux运行的处理器架构,比如arm,在arch/arm/configs目录下,有很多arm架构的linux配置文件,可以在内核顶层目录下,使用,make xxx_defconfig,或者拷贝arch/arm/configs目录下的配置文件,到内核源码顶层目录下的.config,然后执行make menuconfig进行配置。
总之,配置的作用就是生成了一个.config文件,这个文件非常重要,它的作用主要在1,在make 编译内核时,会根据.config文件,自动生成配置选项的宏,在include/linux/autoconf.h文件中,这个文件就是编译时生成的。这个文件里,系统配置时所有选中的选项,里面的宏到定义为1,不管配置时选中的是y还是m,那么选中y和m的区别体现在哪呢?2,在make编译时,会由.config生成include/config/auto.conf文件,这个文件中的内容和.config中的挺像的,会结合makefile进行内核的编译,选择是编译成模块还是编译进内核。
内核的最终作用是挂接根文件系统,启动应用程序,内核被UBOOT引导启动后做了些什么呢?我这里是总结的韦东山视频里的,大体写下
内核在开始执行的时候,首先要做的就是处理uboot传入的参数,刚开始内核执行的函数是arch/arm/kernel/head.s
主要做的有,判断内核是否支持这个CPU,根据uboot传入的机器ID判断是否支持这个单板,建立页表,让虚拟地址与物理地址线性对应,使能MMU,然后就是跳转到start_kernel这个c函数,打印内核信息就在这,经过一系列初始化,解析UBOOT启动参数后,执行reset_init(),这个函数里有kernel_init,里面会有根据启动命令行参数挂接根文件系统,以及执行应用程序的函数。
内核启动大体就是这么个过程,具体的细节太多了,太复杂了,慢慢研究吧