深入了解 Linux 系统初始化:System V init 与 systemd
1. 引言
在 Linux 系统中,初始化程序(init)是系统启动过程中的关键组件,它负责启动和管理系统中的各种服务和进程。本文将详细介绍两种常见的初始化方案:System V init 和 systemd,并通过具体的例子展示它们在嵌入式系统中的应用。
2. System V init
System V init 是 Buildroot 和 Yocto Project 中的一个可选初始化方案。在这两个项目中,init 脚本都经过了处理,去除了 Bash 特定的语法,以便能够在 BusyBox 的 ash 外壳中运行。不过,Buildroot 做了一些特殊处理,它用 System V init 替换了 BusyBox 的 init 程序,并添加了模仿 BusyBox 行为的 inittab 文件。需要注意的是,Buildroot 没有完全实现 runlevels,只是在切换到 0 或 6 级时会停止或重启系统。
2.1 inittab 文件
init 程序首先会读取 /etc/inittab
文件,该文件定义了在每个运行级别(runlevel)下要执行的操作。其格式是 BusyBox inittab 的扩展版本,这并不奇怪,因为 BusyBox 最初就是从 System V 借鉴了这个格式。
inittab 文件中每行的格式如下:
id:runlevels:action:process