QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1344|回复: 1

Linux Kernel 2.4 Internals

[复制链接]
发表于 2003-5-7 09:57:43 | 显示全部楼层 |阅读模式
系统引导过程:

概述:
总的来说,系统引导包括以下几个步骤:
1、BIOS选择引导设备
2、BIOS从引导设备中装入引导扇区
3、引导扇区装入setup例程,解压缩例程和压缩的内核
4、进入保护模式,解压缩内核
5、低级的初始化(汇编代码)
6、高级初始化(C代码)


一、BIOS加电自检

1、电源启动时钟发生器8284A,并向总线发出加电信号
2、8284A复位CPU,CPU进入16位实模式
3、DS、ES、FS、GS、SS清零,CS=0xFFFF0000,EIP=0x0000FFF0
这一部分由BIOS POST代码完成
4、屏蔽中断,完成自检
5、初始化中断向量表(0x0 ~ 0x400)
6、BIOS自举装入函数调用19H功能调用(作用:返回当前驱动器号),DL中保存引导设备号,装入引导设备的0道1扇区到0x7C00(0x07C0:0000)
 楼主| 发表于 2003-5-7 10:12:50 | 显示全部楼层
二、引导扇区和setup例程

;BOOTSEG(0x07C0)送DS
movw $BOOTSEG, %ax
movw %ax, %ds

;INITSEG(0x9000)送ES
movw $INITSEG, %ax
movw $ax, %es

;CX中保存256(后边要用到)
movw $256, %cx

;SI、DI清零
subw %si, %si
subw %di, %di

;清标志寄存器
cld

;装MBR(现在位于内存中0x7C00)拷贝到0x90000
;CX中为256,每次传送一个,传送256次,即完成了拷贝,共传送了512字节数据
rep
movsw

;跳转到0x90000,执行go处的指令
ljmp $INITSEG, $go
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 07:08 , Processed in 0.035723 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表