读书笔记一 IA32 System Boot Process
时间:2005-03-23 来源:paroca
From Linux 0.0.1内核分析与操作系统设计 Chapter5
========================================================
Title: IA32 System Boot Process
Key: System Boot
Tools in Experiment:NONE
Reference:Linux 0.0.1内核分析与操作系统设计
========================================================
IA32架构的系统引导简介:
- 硬盘启动步骤
- 软盘启动步骤
- POST(上电自检)
- 初始化硬件设备
- 搜索一个操作系统来启动
- 找到一个有效设备,并把该设备第一个扇区的内容(即引导装入程序)拷贝到RAM中从物理地址0x00007C00处,然后跳转到这个地址处,开始执行刚才装载进来的代码。
- 从软盘启动。
当BIOS装载软盘的第一个扇区时,实际上就是拷贝引导装入程序的代码。装入程序执行以下操作:
a) 首先,把自己从0x00007C00处移到0x00090000处;
b) 然后,设置从0x00003ff4开始的,向低地址方向延伸的实模式堆栈;
c) 建立磁盘参数表,这是BIOS用来处理软盘设备驱动程序的;
d) 调用一个BIOS过程显示 Loading信息;
e) 调用一个BIOS过程从软盘装载内核映像的setup()代码,并把该代码放入从0x00090200开始的RAM中;
f) 调用一个BIOS过程从软盘中装载其余的内核映像,并把内核放入低地址(0x00010000)或高低之(0x00100000)开始的RAM中;
g) 跳转到setup()函数; - 从硬盘启动。
在启动过程中装入引导程序被执行时,用户可以选择装入那个操作系统。
a) 首先,把自己装入到0x00007C00处并执行;
b) 然后,从0x00007C00处移到0x0009A000处;
c) 从0x0009B000处到0x0009A200处设置实模式堆栈;
d) 显示Loading Linux信息;
e) 装载内核映像的setup()代码,并把该代码放入从0x00090200开始的RAM中;
f) 把内核映像的其余部分放入低地址(0x00010000)或高低之(0x00100000)开始的RAM中;
g) 跳转到setup()函数;
相关阅读 更多 +
排行榜 更多 +