linux内核--引导启动程序(boot)

来源:互联网 发布:金林钣金展开软件2017 编辑:程序博客网 时间:2024/05/17 10:42

linux内核引导启动过程:

1、PC上电,CPU进入实模式(单任务),从地址0xFFFF0处开始执行,此地址位于ROM-BIOS中。

 

2、BOIS执行各种系统检测,并在物理地址0处开始初始化中断向量。

 

3、BIOS将可启动设备的第一扇区(磁盘引导扇区,512字节)读入到绝对地址0x7C00(31K)处,并跳转到此地址。

 

4、bootsect.s存于上步骤中提及的第一扇区,它搬移后执行会再次自己把自己搬移到绝对地址0x90000(576K)处,然后把启动设备中后2KB字节代码(setup.s)读入内存0x90200处,把内核其他部分(system模块)读入到0x10000处。

 

5、setup.s程序再次把system模块移动到内存起始处,这样system模块代码的地址等于实际物理地址。

 

6、head.s程序在编译后会被连接到system模块最前面开始部分,从head.s开始,内核在保护模式(多任务)下运行了,然后跳转到初始化程序init.c程序。

 

PS:此过程全部由汇编语言完成,基于80X86的结构,运行中很多细节没有说明。

 

 

原创粉丝点击