首页 > 代码库 > Linux操作系统的启动

Linux操作系统的启动

最近一直在看0.12版本的内核,一直想实现一个简单的多任务内核,发现还真得先了解linux操作系统的启动过程。

1.BIOS

开机程序被写入ROM当中,计算机通电之后的第一件事就是读取它。

这块芯片里的程序叫做基本输入输出系统,简称BIOS

1.1硬件自检

检查计算机硬件能否满足运行的基本条件,这叫做硬件自检

1.2启动顺序

硬件自检完成之后,BIOS就把控制权转交给下一阶段的启动程序。

这时,BIOS需要知道,”下一阶段的启动程序“具体放在那里。也就是说,BIOS需要有一个外部存储设备的排序,排在最前面的设备就是优先转交控制权的设备,这中排序叫做启动排序。

2.主引导记录

BIOS按照启动顺序,把控制权转交给排在第一位的存储设备,这是计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55AA表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权转交给启动顺序下一个设备,这前512个字节,就叫做主引导记录(MBR)

3.硬盘启动

4.操作系统

控制权转交给操作系统后,操作系统的内核首先被载入

要注意的几点:

1)BIOS是通过INT 13中断来读取MBR的

2)BIOS会加载MBR到内存的0x7C00处:PC机在加电,ROM BIOS自检之后,引导扇区由BIOS加载到0x7C00处,然后将自己移动到内存0x90000处

总结:PC电源打开之后,80x86结构的CPU将自动进入实模式,并从地址0xFFF0开始自动执行程序代码,这个地址通常是ROM-BIOS中的地址。PC的BIOS将执行某些系统的检测(硬件自检),并在物理地址0处开始初始化中断向量。此后,它将启动设备的第一个扇区(引导扇区,512B)读入内存绝对地址0x7c00处,并跳转到这个地方执行。

参考文章:

http://www.ruanyifeng.com/blog/2013/02/booting.html