CentOS 6.x 启动流程
这篇文章我们来了解一下CentOS 6系列启动流程,
1、 POST(Power On Selt Test) 上电自检:
按下电源键首先要检测硬件设备是否能正常运行,如:cpu、内存、硬盘等硬件设备。当然POST不是由硬件去检测(硬件也不会啊!),而是依靠一个软件来完成的,这个软件就是BIOS(Basic Input Output System)基本输入输出系统,它安装在CMOS芯片上,上电就是给CMOS加电,然后启动BIOS程序,BIOS会根据CMOS上记录的硬件信息去读取硬件并检测是否能正常运行,之后初始化硬件设备。
2、 MBR(Master Boot Record)主引导分区:
BIOS初始化硬件后会通过硬件的INT13中断功能实现读取MBR,读取MBR中的Boot Loader,Boot Loader是一个软件,它具有提供菜单功能,直接加载内核信息及相关控制权转换,MBR只有512bytes,其中前446bytes存储的是Boot Loader,46bytes存储分区表信息,2bytes为分区标志位。446bytes不足以安装Boot Loader,事实上MBR前446bytes只是安装了Boot Loader的最小主程序,即stage1,因为Boot Loader 分为stage1、stage1.5、stage2三个阶段来执行的,stage1.5存放在MBR随后的扇区中,主要用于和stage2所在分区的文件系统交互,stage2加载硬盘分区/boot目录下所有文件、配置文件与环境参数信息。
3、 Kernel、initrd/initramfs:
/boot目录下包含vmlinuz,initramfs等内核相关的文件,Boot Loader读取/boot目录下所有文件、配置文件与环境参数信息后,会把内核解压加载到内存中,根据内核提供的功能开始检测,加载各个设备,此次检测与BIOS自检不同,执行到此,后续工作都由内核来完成(因为Boot Loader已把vmlinuz,initramfs加载到内存中),此时内核还没有加载磁盘,因为还没有磁盘驱动程序,内核通过/boot目录下的虚拟文件系统,也就是initramfs,模拟一个rootfs(根文件系统),加载启动过程中所需要的核心模块,加载后释放rootfs(根文件系统),且以只读方式挂载真实的根文件系统,开始正常的启动过程。
4、 Init:
用户空间第一个执行程序,在内核,硬件及驱动加载完成后,内核会执行用户空间的第一个执行程序/sbin/init,init 程序主要功能为准备软件运行环境,包括系统主机名称,网络配置,文件系统格式等其他服务配置。 Init的配置文件: CentOS 6:采用Upstart的方式,其特点是守护进程间的通信依赖于D-Bus进行,因此,可基本实现类似并行启动,配置文件:/etc/inittab、/etc/init/*.conf —如内容有异议,请回复,谢谢!