bzImage的更多疑惑

Sen*_*Sen 5 linux kernel executable file-format

bzImage维基百科中对 的描述真的让我感到困惑。 替代文字

上图来自维基百科,但旁边的一行是:

bzImage 文件采用特定格式:它包含连接的 bootsect.o + setup.o + misc.o + piggy.o。

我在图像中找不到其他(misc.opiggy.o)。
我还想更清楚地了解这些目标文件。

在信息这篇文章我们为什么不能引导vmlinux文件也很困惑我。

另一个疑问是关于System.map. 它如何与bzImage? 我知道它包含vmlinux创建之前的符号bzImage。但是在启动时,如何bzImage附加到System.map?

wag*_*wag 4

直到 Linux 2.6.22,bzImage包含:

Linux 2.6.23 将 bbootsect 和 bsetup 合并为一个 ( header.o)。

启动时,内核需要初始化一些序列(请参阅上面的头文件),这些序列只是使系统进入所需的可用状态所必需的。在运行时,这些序列不再重要(那么为什么将它们包含到正在运行的内核中?)。

System.map与 相关vmlinuxbzImage只是压缩容器,在启动时从中vmlinux提取(=>bzImage并不真正关心System.map)。

Linux 2.5.39 推出CONFIG_KALLSYMS。如果启用,内核将保留它自己的符号映射 ( /proc/kallsyms)。

System.map主要由用户空间程序(例如klogd和)用于ksymoops调试目的。

放置在哪里System.map取决于参考它的用户空间程序。尝试从或
ksymoops获取符号映射。在、和中搜索。/proc/ksyms/usr/src/linux/System.map
klogd/boot/System.map/System.map/usr/src/linux/System.map

/boot/System.map在内核为 2.6.27.19 的 Linux 系统上删除不会产生任何问题。