电源-BIOS自检-系统引导lilo/grub-启动内核-系统初始化
BIOS(Basic Input/Output System)基础输入输出系统,一个永久存储在ROM中软件,是输入输出管理系统一部分。集成在主板,主板使用一种Flash EPROM芯片存储BIOS,可以使用主板供应商提供的程序重新写入,升级BIOS
BIOS功能主要两部分:POST码和RUNTIME,
步骤1:POST码(power-on self test)加电自检,通电后检测系统关键外围设备(硬盘,内存,显卡,I/O,键盘鼠标等)是否正常,若检测到内存松动,BIOS会报错,系统无法启动。
步骤2:RUNTIME,检测本地初始化系统启动设备(硬盘,CD/ROM,USB...),这一步只要是根据BIOS中设置的系统启动顺序来搜索用于系统启动的驱动器。例如硬盘启动,BIOS读取硬盘驱动器的第一个扇区(MBR 512字节),不关心扇区内的内容,只是读取执行。
ps:个人电脑中,Linux启动的第一个地址是0xFFFF0
BIOS任务完成后,启动控制器权MBR
系统引导:
MBR(Master Boot Recorder)主引导记录,0柱面,0磁头,1扇区为主引导扇区。三部分组成(bootloader主引导程序,DPT(disk patition table磁盘分区表),硬盘有效标志(55AA))
lilo、grub等主引导程序存储在MBR的bootloader区域。
举例grub启动过程,两个过程stage 1 和stage2
stage 1:任务非常简单,将0柱面,0磁头,2扇区的内容读入内存中。因为2扇区的内容是stage2过程的入口。
stage2:读入/boot/grub/grub.conf配置文件,加载该启动程序对应的内核到内存中。
内核启动: