嵌入式Linux的内核镜像生成过程
2015-09-02 14:49
323 查看
嵌入式Linux的内核镜像生成过程
最近读了《embedded linux primer》,里面讲到了Linux内核镜像的生成过程。感觉在这方面算是讲的比较好的。在这里翻译一下。
顶层目录的vmlinux
配置好交叉编译环境后,就可以以开始准备编译内核了。首先需要编译生成内核头文件,然后开始编译内核。内核编译完成后,会在
顶层目录生成vmlinux ELF文件。
这个vmlinux文件包含整个内核代码,包括注释,调试符号信息等。
piggy.o
piggy.o是包含经过压缩的内核代码的object文件。piggy.o主要是为了方便与其他object文件链接生成最终Linux内核镜像文件。
生成piggy.o文件主要包含:
利用objcopy去掉vmlinux的一些辅助信息,生成镜像文件Image。
利用gzip将Image压缩成piggy.gz。
利用asm编译piggy.gzip.S生成piggy.o。
到此内核二进制镜像制作完成。
Bootstrap Loader
许多CPU架构都设计成通过两个阶段来加载Linux内核镜像。第一阶段为BootLoader,第二阶段为Bootstrap Loader。每个阶段都有各自的设计目的。
Bootstrap Loader主要提供检查内核镜像完整性,解压内核镜像,内核镜像重定位功能。
Bootstrap Loader主要包括:
misc.o 内核解压,重定位相关代码。
head.o CPU启动相关底层代码。配置cache,建立C运行环境等。
其他.o
另一个vmlinux
将Bootstrap Loader和piggy.o链接成vmlinux。这个vmlinux在/arch/arm/boot/compressed/目录下。
zImage
使用objcpoy将刚刚提到的vmlinux打包成Boot Loader需要的zImage文件。结束
把之前的过程总结为下图:相关文章推荐
- Linux 自检和 SystemTap
- Linux内核链表实现过程
- C++中Semaphore内核对象用法实例
- 提升Python程序运行效率的6个方法
- cocos2dx 交叉编译 iconv库 protobuf库
- 我的 ARM+Linux 学习路线
- 开发学习记录之看门狗驱动
- 时钟+温度+遥控设置,综合时钟例子
- 修改内核 内存分配 root、文件系统和内核镜像的位置
- 移植linux-2.6.30.4到S3C2440
- 看《Linux0.11内核完全注释2.01》的方法
- Linux下运行openwebos- -(转)
- Linux下运行openwebos- -(转)
- 升级LINUX内核(支持8G内存)的命令
- FreeBSD系统优化部分内核参数调整中文注释
- BusyBox 简化嵌入式 Linux 系统
- Linux2.6X内核中文件相关结构体总结
- Android 内核源代码交叉编译
- Android内核源码交叉编译
- 内核的主要配置文件的详细说明