linux引导启动

 这几天看了赵炯老师的《Linux内核完全注释》引导启动部分, 这里把我的理解和所学到的记录下来, 怕以后忘了。  :)

 

    在系统启动的时候:

  • l BISO把bootsect.s 代码(512b)读到内存绝对地址0x7c00, 并跳到这个地方开始执行.
  • l bootsect程序主要动能是把自己copy到0x90000, 之后转到新地方继续执行. 之后把setup.s的代码加载到0x90200处, 把系统内核加载到0x10000处. 并跳到setup中执行;
  • l setup程序主要得到一下机器系统参数, 并把这些参数保存到0x90000处, 供以后使用; 之后把系统内核加载到0x00000处; 接下来设置中断描述寄存器(IDTR)和全局描述符表寄存器(GDTR); 同时开启A20地址线, 从新设置硬件中断号; 最后设置CR0寄存器, 进入32为保护模式, 并跳到system模块head.s处(地址0x00000)执行;

系统启动程序加载过程变化

  • l head.s 是在保护模式下运行的, 为进入main函数做准备工作; 主要是加载各种数据段寄存器, 重行设置IDTR和GDTR; 这只分页管理相关内容等; 最后跳到main函数执行对linux内核的初始化工作.

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值