本文简单介绍下CentOS 5、6、7的启动流程。
1. CentOS5
POST开机自检
运行CMOS中的BIOS程序,加载第一个启动磁盘的Bootloader
由Bootloader读取kernel
通过挂载临时根目录initramfs加载核心模块(驱动程序…),然后卸载临时根目录,挂载真正的根目录。
启动init程序;
读取/etc/inittable查看默认运行级别;
执行初始化脚本/etc/rc.d/rc.sysinit
运行运行级别的脚本/etc/rc.d/rcN.d/*
运行/etc/rc.local
启动mingetty,进入系统登陆界面;
如果运行级别为5则启动图形桌面;
2. CentOS6
POST开机自检
运行CMOS中的BIOS程序,加载第一个启动磁盘的MBR中的Bootloader
由Bootloader读取kernel
通过挂载临时根目录initramfs加载核心模块(驱动程序…),然后卸载临时根目录,挂载真正的根目录。
启动init程序;
指定/etc/inittab设置默认运行级别;
执行/etc/init/rcS.conf启动系统初始化脚本;
执行/etc/init/rc.conf启动运行级别脚本(它会读取/etc/rc.d/rc,有/etc/rc.d/rc读取/etc/rc.d/rcN.d/*下的服务脚本);
执行/etc/rc.d/rc.local
执行/etc/init/start-ttys.conf启动终端脚本;
如果运行级别为5则启动图形桌面;
3. CentOS7
POST开机自检
BIOS 开机启动设备,读取MBR中的Bootloader
通过Bootloader读取kernel
通过挂载临时根目录initramfs加载核心模块(驱动程序…),然后卸载临时根目录,挂载真正的根目录。
启动systemd程序。
使用default.target进入开启流程(假设是multi-user.target)
执行sysinit.target初始化系统(检测硬件,载入所需的核心模组)、basic.target准备系统(载入硬件驱动和防火墙相关任务)
执行multi-user.target下面的服务(如果启动了/etc/rc.d/rc.local,则需要启动里面的命令)
执行multi-user.target下的/etc/rc.d/rc.local
启动tty
如果运行级别是graphical.target则会启动图形桌面;