打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux内核学习(9)启动全过程概述之内核映像结构

linux内核学习(9)启动全过程概述之内核映像结构

分类: linux内核学习 311人阅读 评论(0) 收藏 举报

启动过程这块内容还蛮多的,因此得慢慢来分析,在此之前我也收集到了很多资料,这里将这些整理加上自己的一些理解。好不容易啊,总算开始内核源代码之旅了,我们要珍惜这来之不易的这个时刻。

要得到内核结构,我们有很多种方法,比如查看kbuild Makefile、Documentation,但是我选择了在网络上找,因为我们关注的重点是在于怎么分析源代码,特别是后面要分析设备驱动那块。

我们以bzImage大内核映像为例,它由setup.elf和vmlinux组成,而vmlinux又由二进制文件setup.bin和vmlinux.bin组成,而vmlinux.bin会进行压缩存储,变成vmlinux.bin.gz。因此bzImage有三部分组成setup.elf、setup.bin、vmlinux.bin.gz。

在来看看它们的分布图,这里用文字描述:

0x00007c00  --  BootLoader     加载程序,位于硬盘的MBR中
0x00090000  --  0x00090000  --  setup.elf的启动扇区512B
                          0x00090200  --  setup.elf的setup部分
0x00100000  --  vmlinux
(这是大内核)

现在在来简单介绍一下各个部分:
1、BootLoader:PC机的Boot Loader遵从linux引导协议2.03,PC 机中的引导加载程序由 BIOS(位于主板flash rom中的固化程序)和位于硬盘 MBR 中的操作系统Boot Loader(如LILO 和 GRUB 等)组成。BIOS 在完成硬件检测和资源分配后,将硬盘 MBR 中的 Boot Loader 读到系统的 RAM 中,然后将控制权交给操作系统Boot Loader。Boot Loader将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。
2、setup.elf:分为启动扇区和setup扇区,第一部分启动扇区(bootsect)为bzImage前512字节,以前的版本用于从软盘启动引导Linux部分。当前版本不支持将它用于从软盘引导,否则,将打印错误信息"Direct booting from floppy is no longer supported.",这将在代码中看到。第二部分为setup扇区,是从512个字节开始的程序,它运行在实模式下,为保护模式的Linux内核启动准备环境。这个部分最后会切换进入保护模式,跳转到保护模式的内核执行,也就是0x10000的vmlinux处。
3、vmlinux:这部分是进入保护模式后的代码部分,由解压程序和内核映像压缩包组成。

好了,内核映像的结构和被加载入内存的结构有一个感性认识后,对我们讨论后面的内容会有很大的帮助,后面就是源代码分析来了解启动全过程,这样的认识会更加的深刻。希望我们能克服困难走到最后。我会加快分析的步伐,你也一样,最好将一些重要的东西和我分享,我们共同进步,这样的学习才是最和谐和快乐的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深度探索Linux操作系统:系统构建和原理解析
GRUB2加载linux
Linux内核x86架构引导协议2(翻译)
Linux内核启动:BIOS启动阶段
linux系统启动过程详解
深入理解Linux启动过程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服