概括来讲,运行Linux内核的PC机启动过程是这样的:
power on —> bios —> bootloader —> kernel —> init
一、BIOS启动
CPU在上电后处于实地址模式,并且代码段寄存器CS的内容为0xffff,指令寄存器IP的内容为0x0;也就是说,从线性地址0xffff0处执行BIOS的汇编程序。BIOS首先进行POST(Power-On Self-Test,上电自检),然后初始化硬件,最后从磁盘MBR装载bootloader到ram并开始执行,此时BIOS的工作就完成了。
二、BOOTLOADER
针对不同的体系,有不同的引导转载程序Bootloader。Bootloader的主要任务把内核印象转入ram。在X86体系中,大家熟悉的有LILO和GRUB。GRUB是目前最流行的引导加载程序,其过程分成两个阶段。第一阶段是保存在MBR中的主引导程序的加载。第二阶段是次引导加载程序的加载,其任务加载Linux内核。
三、KERNEL