linux启动流程分析-内核解压缩过程 叁歲伎倆 2022-08-13 19:59 189阅读 0赞 linux启动流程分析-内核解压缩过程 内核压缩和解压缩代码都在目录kernel/arch/arm/boot/compressed, 编译完成后将产生vmlinux、head.o、misc.o、head-xscale.o、piggy.o这几个文件, head.o是内核的头部文件,负责初始设置; misc.o将主要负责内核的解压工作,它在head.o之后; head-xscale.o文件主要针对Xscale的初始化,将在链接时与head.o合并; piggy.o是一个中间文件,其实是一个压缩的内核(kernel/vmlinux),只不过没有和初始化文件及解压文件链接而已; vmlinux是(没有--lw:zImage是压缩过的内核)压缩过的内核,就是由piggy.o、head.o、misc.o、head-xscale.o组成的。 在**BootLoader**完成系统的引导以后并将**Linux**内核调入内存之后,调用bootLinux(), 这个函数将跳转到kernel的起始位置。如果kernel没有压缩,就可以启动了。 如果kernel压缩过,则要进行解压,在压缩过的kernel头部有解压程序。 压缩过得kernel入口第一个文件源码位置在arch/arm/boot/compressed/head.S。 它将调用函数decompress\_kernel(),这个函数在文件arch/arm/boot/compressed/misc.c中, decompress\_kernel()又调用proc\_decomp\_setup(),arch\_decomp\_setup()进行设置, 然后使用在打印出信息“Uncompressing Linux...”后,调用gunzip()。将内核放于指定的位置。
还没有评论,来说两句吧...