Linux系统启动流程
启动流程:
1、BIOS(硬件检测,查找加载磁盘上的MBR)
2、MBR(储存BootLoader信息,加载GRUB)
3、GRUB(查找并加载kernel)
4、Kernel(装载驱动,挂在rootfs,执行/sbin/init)
5、Init(OS初始化,执行runlevel相关程序)
6、Runlevel(启动指定级别的服务)
一、BIOS
BIOS叫做基本输入输出系统,该系统储存于主板的ROM芯片上,计算机开机时,会最先读取该系统,然后会有一个加电自检过程,检查CPU、内存等硬件系统,若没有异常就开始健在BIOS程序到内存当中。
BIOS会按照启动顺序去查找第一个磁盘头的MBR信息并加载和执行MBR中的BootLoader程序,如果第一个磁盘不存在MBR,则会继续查找第二个磁盘
二、GRUB
GRUB叫做多系统启动程序,其执行过程可分为三个步骤:
1、第一个其实就是MBR,它的主要工作就是查找并加载第二段的BootLoader程序;
2、识别文件系统;
3、GRUB程序会根据/boot/grub/grub.conf文件查找Kernel的信息,然后开始加载Kernel程序,当Kernel程序被检测并加载到内存中,GRUB就将控制权交给了Kernel程序。
三、 Kernel
Kernel即Linux的内核,Kernel是Linux系统最主要的程序,kernel的文件很小,只保留了最基本的模块,并以压缩文件的形式储存在硬盘中,当GRUB将Kernel读进内存,内存开始解压内核文件。kernel以只读方式挂载根文件系统,当根文件系统被挂载后,开始装载第一个进程,执行初始化程序之后,就将控制权交给了init程序。
四、Init
INIT初始化,操作系统在进行初始化操作时,实际上是根据/etc/inittab文件中设定的动作进行脚本的执行。
五、Runlevel
Runlevel是系统的运行级别,不同的级别启动的服务是不一样的,init会根据定义的级别去执行相应目录下的脚本。
至此,系统启动完毕
MBR(存储启动引导程序。)
MBR 也就是主引导记录,位于硬盘的 0 磁道、0 柱面、1 扇区中,主要记录了启动引导程序和磁盘的分区表。
MBR 共占用了一个扇区,也就是 512 Byte。其中 446 Byte 安装了启动引导程序,其后 64 Byte 描述分区表,最后的 2 Byte 是结束标记。我们已经知道,每块硬盘只能划分 4 个主分区,原因就是在 MBR 中描述分区表的空间只有 64 Byte。其中每个分区必须占用 16 Byte,那么 64 Byte 就只能划分 4 个主分区。