Linux 系统启动流程
Fedora/Linux 启动时先载入内核 (Kernel),随后启动名为 init 的程序,再由 init 执行任务并调用其他程序。
在了解 Linux 的启动流程之前,先来认识认识运行级别 (Runlevels)。不同的运行级别有不同的用途,因此启用的服务也不一样。
Linux 包含七个默认级别
Runlevel | 描述 |
0 | 关机 |
1 | 单用户模式,用于维护(备份/还原)和修复系统 |
2 | 无网络功能的多用户模式 |
3 | 多用户模式 |
4 | 保留 (未定义) |
5 | 默认为 X11 图形界面 |
6 | 重启 |
系统的默认级别设置保存在 /etc/inittab 文档中
上面配置说明系统的默认运行级别是 5,要更改默认级别,只需使用 root 权限更改其中的数字,然后重启就行了。
启动流程
kernel 通过执行 /etc/rc.d/rc.sysinit 脚本激活 init 进程,它会完成“配置网络环境”、“挂载分区”、“设置计算机名称”等等一系列工作。然后 init 通过查看 /etc/inittab 文档,取得 initdefault 条目设置的运行级别。再依照运行级别调用 /etc/rc.d 目录下的相关脚本。
/etc/rc.d 目录下存在下列目录,除 init.d 外,每个目录都对应一个运行级别,如运行级别为 5 时,则执行 rc5.d 目录下的脚本
rc[0-6].d 目录下的文档都是以 K 或者 S 开头,K 表示 Kill,S 表示 Start,可以使用 "ls -la /etc/rc.d/rc5.d" 命令查看,结果类似于以下输出
不难看出,rc[0-6].d 目录下的文件都是指向 init.d 目录下的链接文件。在启动时,init 会停止以 K 开头的进程,再启动以 S 开头的进程,有相同开头的服务按照数字大小的顺序依次执行,如 K01 > K10 > S01 > S06
待指定运行级别下的脚本全都执行完成之后,系统启动就完成了。