3、linux系统启动过程分析(下)资料课件.pptx

3、linux系统启动过程分析(下)资料课件.pptx

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux系统启动过程分析(下)第二节 Linux0.01启动分析引导过程的描述引导流程和内核镜像文件计算机加电过程BIOS程序操作系统引导部分代码的分析Boot.s的分析head.s的分析Head.s的作用 ATT汇编语言初步引导过程的描述引导流程和内核镜像文件计算机加电过程BIOS程序引导的步骤一般来说,操作系统的引导过程分两个步骤:首先,计算机硬件经过开机自检(Power On Self-Test,POST)之后,从软盘或硬盘的固定位置装载一小段代码,这段代码一般称为“引导装载器”。然后,由引导装载器负责装入操作系统内核镜像文件并将控制权交给操作系统进行进一步的初始化和运行操作系统引导装载器非常小,一般只有几百个字节,而操作系统庞大而复杂,上述分成两阶段的引导过程,可将计算机中的固化软件保持得足够小,同时也便于实现对不同操作系统的引导。Linux0. 01内核镜像文件由build.c程序生成写入到磁盘(make disk dd)计算机加电过程当机算机的电源键被按下时,同这个键相联的电信号线就会送出一个电信号给主板,主板将此电信号传给供电系统,供电系统开始工作,为整个系统供电,并送出一个电信号给BIOS,通知BIOS 供电系统已经准备完毕。随后BIOS 启动一个程序,进行主机自检,主机自检的主要工作是确保系统的每一个部分都得到了电源支持,内存储器、主板上的其它芯片、键盘、鼠标、磁盘控制器及一些I/O 端口正常可用,此后,自检程序将控制权还给BIOS。接下来BIOS 读取BIOS 设置,得到引导驱动器的顺序,然后依次检查,直到找到可以用来引导的驱动器(或说可以用来引导的磁盘,包括软盘、硬盘、光盘等),然后调用这个驱动器上磁盘的引导扇区进行引导。基本输入输出系统BIOS 存放在ROM中的BIOS程序执行开机是系统个部分自检,经过一系列操作之后,BIOS会将有关代码和数据存放在内存低端1MB末端的64KB处,然后跳转到这个地方让CPU进入实地址模式工作将内核文件加载到内存后,LINUX不再使用BIOS功能,因此BIOS中断向量表在引导过程中被覆盖。BIOS 是怎么知道或说分辨哪一个磁盘可以用来引导的呢?BIOS 将所检查磁盘的第一个扇区(512B)载入内存,放在0x0000:0x7c00 处,如果个扇区的最后两个字节是“55 AA”,那么这就是一个引导扇区,这个磁盘也就是一块可引导盘。通常这个大小为512B 的程序就称为引导程序(boot)。如果最后两个字节不是“55AA”,那么BIOS 就检查下一个磁盘驱动器。引导程序所具有的特点:它的大小是512B,不能多一字节也不能少一字节,因为BIOS 只读512B 到内存中去。它的结尾两字节必须是“55 AA”,这是引导扇区的标志。它总是放在磁盘的第一个扇区上(0 磁头,0 磁道,1 扇区),因为BIOS 只读第一个扇区。利用BIOS 13 号中断读取磁盘扇区AH 寄存器:存放功能号,为2 的时候,表示使用读磁盘功能DL 寄存器:存驱动器号,表示欲读哪一个驱动器CH 寄存器:存磁头号,表示欲读哪一个磁头CL 寄存器:存扇区号,表示欲读的启始扇区AL 寄存器:存计数值,表示欲读入的扇区数量在设置了这几个寄存器后,我们就可以使用 int 13 这条指令调用BIOS 13 号中断读取指定的磁盘扇区,它将磁盘扇区读入ES:BX 处,因此,在调用它之前,我们实际上还需要设置ES 与BX 寄存器,以指出数据在内存中存放的位置操作系统引导流程0.01版内核,以软盘启动为例:1 开机2 BIOS 加电自检 ( Power On Self Test,POST ),内存地址为 0ffff:00003 将软盘第一个扇区 (0头0道1扇区, 也就是Boot Sector)读入内存地址 0000:7c00 处。4 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则转去尝试其他启动介质, 如果没有其他启动介质则显示No ROM BASIC 然后死机。5 跳转到 0000:7c00 处执行 MBR 中的程序。6 MBR将自己移动到9000:00007 将内核模块从软盘读入到1000:00008 将内核模块移动到0000:00009 进入保护模式10 读取COMS信息,设置有关表格,然后调用操作系统初始化程序MAIN.C1-5完全由BIOS完成,6-10由 BOOT\BOOT.S HEAD.S完成其中BOOT.S的目标代码就是MBR(主引导记录Master Boot Record)中的程序 Linux0.01系统引导过程中内核代码在内存中的位置变化 操作系统引导部分代码的分析Boot.s的分析head.s的分析Head.s的作用 ATT汇编语言初步操作系统引导部分代码0.01版

文档评论(0)

151****3101 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体成都禄星动辰科技文化有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510104MA6368873E

1亿VIP精品文档

相关文档