Linux启动流程

Linux启动流程
1.BIOS(Basic Input/Output System),基本输入输出系统,开机先读取,进行加电自检,主要检查控制器、运算器、存储器等,无异常则加载
BIOS程序到内存,主要功能是存储了磁盘的启动顺序(可在BIOS界面修改),BIOS会按照启动顺序去查找第一个磁盘头的MBR信息,并加载和执行MBR中的Bootloader程序,若不存在则找下一个磁盘。

2.读取MBR(主引导记录)
MBR(Master Boot Record),主引导记录,MBR存储于磁盘的头部,大小为512bytes,其中,446bytes用于存储BootLoader程序,64bytes用于存储分区表信息,最后2bytes用于MBR的有效性检查。接管控制权,加载GRUB。

3.GRUB引导
GRUB(Grand Unified Bootloader),多系统启动程序,其执行过程可分为三个步骤:
1.查找并加载第二段Bootloader程序(但系统在没启动时,MBR根本找不到文件系统)。
2.识别文件系统。
3.GRUB程序会根据/boot/grub/grub.conf文件查找Kernel的信息,然后开始加载Kernel程序,当Kernel程序被检测并在加载到内存中,GRUB就将控制权交接给了Kernel程序。
要点:实际上这个步骤/boot还没被挂载,GRUB直接识别grub所在磁盘的文件系统,所以实际上应该是/grub/grub.conf文件

4.加载Kernel
Kernel,内核,Kernel是Linux系统最主要的程序,实际上,Kernel的文件很小,只保留了最基本的模块,并以压缩的文件形式存储在硬盘中,当GRUB将Kernel读进内存,内存开始解压缩内核文件。
通过挂载临时根目录initramfs加载核心模块(驱动程序…),然后卸载临时根目录,挂载真正的根目录。

5.加载rc.sysinit

6.启动运行级别程序

7.设定运行级别(init0~init6)

8.启动mingetty进程

9.执行/bin/login程序