7.1. 简介

启动 Linux 系统牵涉到好些任务。该过程须挂载虚拟和现实两个文件系统,初始化设备,激活 swap,检查文件系统是否完整,挂载所有的 swap 分区和文件,设置系统时钟,配属网络,起动系统需要的守护进程,并完成用户想要完成的那些自定义的任务。该过程必须有组织有纪律,以确保任务能被井然有序地实施,并尽可能快地执行。

7.1.1. System V

1983 年以来,System V 便是 Unix 和类 Unix (例如 Linux)系统中的经典启动过程。它包括小程序 init 用于启动诸如 login (由 getty 启动)这样的基础程序,并运行着名为 rc 的脚本。该脚本,控制着一众附加脚本的执行,而那些附加脚本便是实施系统初始化所需要的任务的脚本。

程序 init 由文件 /etc/inittab 控制着,并且被组织成用户能够运行的运行级别形式:


0 — 停止
1 — 单用户模式
2 — 多用户,无网络
3 — 完整的多用户模式
4 — 用户可定义
5 — 完整的多用户模式,附带显示管理
6 — 重启

常用的默认运行级为 3 或 5。

益处

  • 公认的,容易理解的体系。

  • 方便定制。

弊端

  • 启动较慢。中等速度的 LFS 的系统,从内核的第一个消息至登录提示需花费 8-12 秒。网络连接一般在登录提示后约 2 秒内建立。

  • 串联执行启动任务。与上一点有些关联。过程中的任何一个,比方说,文件系统检查有延迟,就会拖延整个启动的过程。

  • 不支持控制组群(control groups,缩写为 cgroups)这样的新特性,根据每个用户公平地分享调度。

  • 添加脚本需手动的、静态的排序决策。