Linux启动过程分析.doc

Linux启动过程分析.doc

ID:51190206

大小:59.50 KB

页数:2页

时间:2020-03-20

Linux启动过程分析.doc_第1页
Linux启动过程分析.doc_第2页
资源描述:

《Linux启动过程分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux启动过程分析当PC启动时,Intel系列的CPU首先进入的是16位实地址模式,并开始执行位于内存地址OxFFFF:0000处的代码,也就是ROM-BIOS起始位置的代码。BIOS先进行一系列的系统自检,然后初始化位于地址0的中断向量表。最后BIOS将启动盘的第一个扇区装入到0X07C0:0000,并开始执行此处的代码。这就是对内核初始化过程的一个最简单的描述。一般PC在电源加电时,是由内存中地址0xFFFF:0000开始执行(这个地址一定在ROMBIOS中,ROMBIOS-般是在OxFEOOOh到FFFF

2、Fh中),而此处的内容则是一个jump指令,jump到另一个位于ROMBIOS中的位置,开始执行一系列的动作,包括检查RAM、keyboard.显示器、软硬磁盘等等,这些动作是由系统测试代码(systemtestcode)来执行的。紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROMbootstraproutine),这个程序会将磁盘上的第0柱面第0磁头第1扇区读入内存中(这就是一般所谓的bootsector),读入到内存的绝对位置0x07C0:0000(即0x7C00h处),这是IBM系列PC的特性。而

3、位在linux磁盘的bootsector上的正是linux的bootsect程序,也就是说,bootsect是第一个被读入内存中并执行的程序。现在,我们可以开始来看看到底bootsect做了什么。第一步首先,bootsect将它咱己'从被ROMBIOS载入的绝对地址0x7C00处搬到0x90000处,然后利用一个jmpi(jumpindirectly)的指令,跳到新位置的jmpi的下一行去执行。第二步接着,将其他segmentregisters包括DS>ES、SS都指向0x90000这个位置,与CS看齐。另外将SP

4、及DX指向一任意位移地址(offset),这个地址等一下会用来存放磁盘参数表(diskparametertable)第三步接着利用BIOS中断服务int13h的第0号功能,重置磁盘控制器,使得刚才的设定发挥功能。第四步完成重置磁盘控制器之后,bootsect就从磁盘上读入紧邻着bootsect的setup程序,也就是setup.S,此读入动作是利用BIOS中断服务int13h的第2号功能。setup的image将会读入至程序所指定的内存绝对地址0x90200处,也就是在内存中紧邻着bootsect所在的位置。待se

5、tup的image读入内存后,利用BIOS中断服务int13h的第8号功能读取冃前磁盘的参数。第五步再来,就要读入真正linux的kernel了,也就是你可以在linux的根冃录下看到的nvmlinuz在读入前,将会先调用BIOS中断服务int10h的第3号功能,读取游标位置,之后再调用BIOS中断服务int10h的第13h号功能,在萤幕上输出字串”Loading”,这个字串在启动linux时都会首先被看到。第六步接下来做的事是检查rootdevice,之后就仿照一开始的方法,利用indirectjump跳至刚刚

6、已读入的setup部分第七步setup.S完成在实模式下版本检查,并将硬盘、鼠标、内存参数写入到INITSEG中,并负责进入保护模式。第八步操作系统的初始化。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。