OpenBSD PC 平台引导分析

2009-05-13 11:55:50来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

1前言
i386和amd64处理器上电或者复位后进行一系列的初始化,然后执行ROM中固化的程序,即我们通常所说的BIOS程序;
[url=javascript:;]硬盘[/url]
[url=javascript:;]启动[/url]
的情况下,BIOS程序尝试将引导硬盘的0柱面0磁道1扇区—称为
[url=javascript:;]引导扇区[/url]
内容读入
[url=javascript:;]内存[/url]
0x07C00处,如果检查到特定的标志就跳转到0x07C00处继续执行。
引导扇区中保存的数据则称为MBR(MasterBootRecord)—包含了系统启动所需的代码和重要的数据;MBR会加载PBR(PartitionBootRecord)—其中也包含了引导程序和信息;
[url=javascript:;]OpenBSD[/url]
的i386和amd64平台上,PBR并不直接引导
[url=javascript:;]内核[/url]
而是加载/boot程序;最终,/boot程序完成引导内核的功能,引导过程至此结束。
上述描述中忽略了很多细节问题,但对于理解OpenBSD的引导过程已经足够,感兴趣的读者可以查阅处理器、硬盘结构和硬盘分区相关的资料以获得更详细的信息。
阅读实际的代码之前,最好浏览一遍biosboot(8)boot(8)booti386(8)bootamd64(8)以及工具installboot(8)的手册,了解引导流程以及各个引导程序的功能。
OpenBSD的汇编代码采用的是AT&T风格,跟常见的IBMPC汇编不同,所以最好先行阅读一些相关的文档。
2 MBR引导
3初级引导
4次级引导
4次级引导
5小结
操作系统引导部分并不是操作系统的范围,因此,常常被人忽略。
笔者本意是分析一下OpenBSD-amd64的启动过程,点到即可。虽然OpenBSD的代码注释做的非常好,但是想理解代码的细节还是需要做很多的相关工作,这样一来分析NetBSD的事情就搁置下来了。
当笔者分析到PBR的时候,分析NetBSD引导的时候一些疑问也突然解开;而分析到/boot引导的时候,很多代码跟内核的代码已经完全一致了,例如ELF文件的加载以及内存管理等,本想继续深入却又想起NetBSD的教训,索性将大致的流程走完,等有机会分析内核的时候再仔细考虑。
在分析OpenBSD引导的过程还算顺利,因为分析NetBSD引导期间做了很多的准备,但是,反过来分析OpenBSD又解开了NetBSD的一些疑问,我想多数情况下,事情都是这样的。
写这篇文章,算是抛砖吧,我也希望能看到有更多好文章,也希望能与感兴趣的朋友互相交流。
希望BSD发展的更好。
内容很长,详见附件


openbsd引导过程.zip(231 KB)
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4206/showart_501232.html

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:搭建NetBSD完美调试环境

下一篇:NetBSD PBR 引导的函数调用关系图(FFSV2 文件系统)