内核映像的构建过程

本文详细介绍了内核映像的构建过程,包括三次编译链接及一次组合。首次编译链接生成vmlinux;第二次编译链接创建压缩后的内核映像vmlinux.bin.gz并构建piggy.o;第三次编译链接生成setup.bin;最终将vmlinux.bin和setup.bin合并为bzImage。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内核映像的构建过程

内核映像构建过程大体上可以概括为“三次编译链接,一次组合”。
1、第一次编译链接链接
kbuild分别编译各个子目录下的目标文件,生成builtin.o、lib.a等文件,然后调用链接器将这些文件链接为vmlinux,并保存到顶层目录下。
2、第二次编译链接链接
kbuild使用工具objcopy,将顶层Makefile构建好的内核映像vmlinux复制到arch/boot/compressed目录下,去掉其中的符号信息和重定位信息,删除段“.comment”,并命名为vmlinux.bin。
kbuild压缩内核映像vmlinux.bin为vmlinux.bin.gz。
kbuild借助内核自带的程序mkpiggy构建一个汇编程序piggy.S,该汇编程序就是vmlinux.bin.gz加上一些解压内核时所需要的信息。并调用汇编器将其编译为piggy.o。
kbuild调用链接器编译arch/boot/compressed目录下的head_32.c、misc.c等,并将head_32.o、misc.o以及包含压缩映像的piggy.o等文件链接为vmlinux.bin,保存到arch/boot目录下。
3、第三次编译链接链接
kbuild将arch/boot下的a20.o、bioscall.o等目标文件链接为setup.elf,使用objcopy将其转换为裸二进制格式,并命名为setup.bin。
4、一次组合
最后,kbuild调用内核自带的程序build,将vmlinux.bin和setup.bin合并为bzImage。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值