1. 按电源
当电源打开后80x86结构的CPU将自动进入实模式,并从0xFFFF0开始自动执行程序代码,这个地址通常是ROM BIOS中的地址。之后BIOS执行某些系统的检测,并在物理地址0处开始初始化中断向量。
此后,它将可启动设备的第一个扇区读入内存绝对地址0x7C00处,并跳转到这个地方。
2.bootsect.s linux引导程序
利用BIOS功能调用将setup.s和内核映像加载到内存的相应位置。内核加载完毕之后,系统跳转到setup.s的开始位置执行,主要是设置系统参数(包括内存,磁盘,) 检测和设置显示器和显示模式并为进入保护模式做准备,最后进入保护模式并跳转到内核映像的头部运行内核。
3.setup.s
负责数据区,中断描述表idt,段描述表GDT,页表和寄存器的初始化,同时在进行一些必要的检查。
4.head.s
主要初步初始化中断描述符表中的256项门描述符,然后初始化内存页目录表,为内存的分页管理做好准备工作,然后准备执行init.c
5.init/main.c
首先利用setup.s程序取得的系统参数设置系统的根文件设备号以及一些内存全局变量。然后内核进行所有方面的硬件初始化工作。包括陷阱门,块设备,字符设备和tty,包括人工创建的第一个任务(task 0),然后开启中断。
内核初始化完成后,内核将执行权切换到了用户模式,即从0切换到了3级。