Linux Kernel 2.4 Internals
系统引导过程:概述:
总的来说,系统引导包括以下几个步骤:
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) 二、引导扇区和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
页:
[1]