BusyBox 是一个轻量级的开源工具箱,其中包含了许多标准的 Unix 工具,例如 shlscpsedawkgrep 等,同时它也支持大多数关键的系统功能,例如自启动、进程管理、启动脚本等等。而 inittab 文件则是 BusyBox 中的一个重要文件,掌握了 inittab 文件的作用及如何配置有助于更好地管理 BusyBox 系统。

BusyBox 启动过程

在了解 inittab 文件的相关内容前,我们先来了解 BusyBox 在启动时的过程。

当我们启动 BusyBox 时,系统会首先进入内核态,这个过程经常称为“引导 boot 过程”。在引导过程中,在系统加载时会先执行一些基本的硬件和内核配置、并在文件系统下搜索可引导的镜像和错误修复等等。接下来,系统会调用 init 程序来完成系统初始化。

init 是一个非常基础的程序,其主要功能是负责从系统引导之后启动一些必要的进程,以便让系统进入可用状态。在 BusyBox 中,init 进程基于编译时确定的 运行级别(也称为系统执行级别)来启动其他应用程序。BusyBox支持多达7个运行级别,包括:

  • 运行级别 0:关闭(或关机)系统
  • 运行级别 1:单用户模式
  • 运行级别 2-5:多用户模式
  • 运行级别 6:重启系统

当 init 进程启动时,它首先会获取用户指定的运行级别或者会默认地进入运行级别 5(图形模式)。接下来,我们将通过 inittab 文件来配置在不同运行级别下所需启动的进程和服务等。

inittab 文件在启动过程中起到的作用

inittab 文件位于 /etc/inittab 或 /etc/rc.d/inittab 路径下,可以认为是系统中的一个配置文件,其中定义了在不同运行级别下需要执行的程序。在 BusyBox 系统中,inittab 文件的作用是告知 init 进程在不同的运行级别下要执行哪些操作。它能确定在不同的运行级别下,系统应该以何种方式启动不同的进程和服务等。根据 inittab 文件中的配置,init 进程将启动不同的进程,以完成通过 inittab 文件定义的启动顺序。

inittab 文件由以下四个字段组成:

id:runlevels:action:process 
  • id 字段:表示进程的唯一标识符。
  • runlevels 字段:表示进程可以在哪些运行级别下运行。
  • action 字段:表示进程在进入该运行级别后要执行的操作,比如启动程序等。
  • process 字段:表示要启动的进程或要执行的命令。

举例说明:

::sysinit:/etc/init.d/rcS 
::shutdown:/sbin/swapoff -a 
::ctrlaltdel:/sbin/reboot 
::respawn:/sbin/getty 38400 tty1 

在上面的示例中,::sysinit 表示该命令在所有的运行级别下执行,::ctrlaltdel 表示该命令在按下 Ctrl+Alt+Del 时执行,::shutdown 表示该命令在系统关闭时执行,::respawn 表示该命令在进程崩溃后重启。

使用这些特定符号,inittab 文件定义了在哪个运行级别下会执行哪些操作,并对系统启动过程进行了管理。

总结

通过对 inittab 文件的介绍,BusBox 的启动过程与 init 进程的作用可以更加深入的了解。通过配置 inittab 文件,我们可以控制哪些进程和服务在不同的运行级别下启动,并以何种方式启动和管理这些进程。当然,我们也可以通过配置 init.d 文件夹来管理并启动其他进程和服务。同时,了解这些知识还可以帮助我们更好地管理和维护 BusyBox 系统。

12-04 21:15