内核映像内存布局

本文详细介绍了Linux内核映像的内存布局,包括实模式下的内核代码、grub加载内核映像的过程以及内存中的各个部分,如bootsect、setup代码和保护模式下的内核代码。通过理解这一过程,读者可以更好地了解Linux启动机制。
摘要由CSDN通过智能技术生成

3 实模式下的内核代码

通过上一章节,大家都看到了,最终每个Linux系统都有一个类似/boot/vmlinuz-2.6.x的文件,就是所谓的内核映像。而大家对从源代码到内核映像的形成有了一个较完整的认识。前面也提到了,系统启动的时候,grub会把内核映像加载到内存,然后执行它。总结一下Grub的这一个过程,就是:

1.       调用一个BIOS过程显示“Loading”信息。

2.       调用一个BIOS过程从磁盘装入内核映像的初始部分,即将内核映像的第一个512字节加载到物理地址0x00090000开始的内存中,而将setup程序的代码(参见后面的内存布局)从地址0x00090200开始存入RAM中。

3.       调用一个BIOS过程从磁盘中装载其余的内核映像,并把内核映像放入从低地址0x00010000(适用于使用make zImage编译的小内核映像)或者从高地址0x00100000(适用于使用make bzImage编译的大内核映像,也就是我们现在的情况)开始的RAM中。大内核映像的支持虽然本质上与其他启动模式相同,但是它却把数据放在不同的物理内存地址,以避免ISA黑洞问题。

4.       跳转到arch/x86/boot/header.S_start处开始执行。

 

注意grubstage2会临时地打开保护模式,完成上述的第3步,把内核映像vmlinuz-2.6.x

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值