一、BIOS
1.POST(Power-On Self-Test)
2.初始化硬件设备
3.搜索一个操作系统来启动
4.只要找到一个有效的设备,就把第一个扇区的内容拷贝到RAM中从物理地址0x00007c00开始的位置,然后跳转到这个地址处,开始执行刚刚装载进来的代码。
二、Boot Loader:引导装入程序
boot loader是由BIOS用来把操作系统的内核映像装载到RAM中所调用的一个程序。引导装入程序可以指定使用哪个内核文件来启动。
从磁盘启动Linux内核需要一个两步的引导装入程序。早起Linux默认使用LInux LOader(LILO),主流的为GRand Unified Bootloader(GRUB),还有人用spfdisk
三、setup()
setup()函数必须初始化计算机中硬件设备,并为内核程序的执行建立环境。
四、startup_32()
有两个startup_32()函数
arch/i386/boot/compresed/head.S
arch/i386/kernel/head.S
这两个函数使用相同的名字不会产生任何问题,因为这两个函数会跳转到自己的起始物理地址去执行。
五、start_kernel()
start_kernel()函数完成Linux内核的初始化工作。
最后就会在控制台上出现熟悉的登录提示符~\^v^/~