Linux上电初始化--BOSI启动和boot环境设置

本文详细介绍了Linux系统启动过程中,BOSI阶段的head.s程序如何设置系统堆栈、中断描述符表、全局描述符表,检测A20线、数学协处理器,并为main函数执行做准备,包括分页机制的初始化。通过ret指令,系统进入main函数,开始后续的初始化工作。
摘要由CSDN通过智能技术生成
BIOS:
上电启动时,最开始由硬件控制进入BIOS,BIOS代码一般存放在0xfe000~0xfffff最后几kb中;启动中cs:eip == 0xffff:0x00000 === 0xffff0 这是最开始启动的(BIOS执行的第一条指令)
下面是BIOS程序执行的内容:
1、在0x00000处开始的1kb内存空间(0x00000~0x003fff)安装中断向量表(256个中断,cs和ip各占2字节==>1kb)
2、在紧挨着它的位置用256字节创建BIOS数据区(0x400~0x4ff)
3、在0xe2ce处加载中断向量表相应的服务程序
 
当BIOS完成自检后,会调用中断0x19来加载第一扇区内容(启动扇区,引导扇区,bootsect)把该内容加载到0x7c00处


××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

bootsect:
bootsect.s代码是磁盘引导程序,驻留在磁盘的第一号扇区中:0号磁道(柱面)、0号磁头、第一个扇区。第一号扇区是指虚拟的扇区号,比如:0号磁道、1号磁头、第一个扇区的扇区号为19(1.44Mb软驱磁道总扇区数为18,1.2Mb软驱磁道总扇区数为12);系统会检查0x7c00以后的256个字节是否为有效的引导扇区(最后两字节是否为 0xaa55)
下面是bootsect程序执行的内容:
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值