对话 UNIX: 启动( 二 )


引导程序
在 POST 过程完成后 , 将引导程序(用于加载大型程序的小型程序)加载到内存中 。然后 , 引导程序将启动逻辑卷 (BLV) 加载到内存中 。加载了 BLV 后 , 内核将接管启动过程 。
启动逻辑卷和 bosboot 命令
BLV 是包含 AIX 可启动映像的位置 。通常 , 可以在服务器的本地磁盘上找到 BLV 。BLV 包含 AIX 内核、rc.boot 文件、启动过程所需的命令 , 以及精简版本的对象数据管理器 (ODM) 。
若要创建可启动映像 , 请使用 bosboot 命令 。使用 bosboot 命令可以从 RAM 磁盘、文件系统或内核创建启动文件(即可启动映像) 。可启动映像以及一些接口是通过服务器的启动只读存储器 (ROS) 和可擦可编程只读存储器 (EPROM) 创建的 。
下列示例演示如何在用于启动系统的本地固定磁盘上的缺省 BLV 上创建可启动映像:
bosboot -a
AIX 内核
存储在 BLV 中的 AIX 内核在内存中创建 / (root)、/usr 和 /var 文件系统 。请记住 , 在操作系统启动过程中 , 这些文件系统以及内核最初是存储在内存中的 。由于它们位于内存中 , 因此无法访问 BLV 以外的任何内容 。
文件系统加载到内存后 , 内核执行 init 进程 , 该进程现在接管启动过程 。
init 进程
AIX 内核为进程 init 分配进程标识符 (PID) 1 。该进程是 AIX 上运行的所有其他进程的父进程或根 进程 。加载 init 进程并运行了该根进程后 , init 调用 rc.boot 。
rc.boot 文件
在 AIX 引导过程中 , rc.boot 文件包括三个重要的执行阶段 。rc.boot 的第一阶段是初始化系统硬件 , 为启动操作系统做准备 。此时 , 使用配置管理器命令 cfgmgr 配置启动系统所需的有限数量的设备 。
在 rc.boot 的第二阶段 , 挂载文件系统 /、/usr 和 /var , 以及分页空间 。挂载这些文件系统后 , init 被替换为磁盘上的 init , PID 为 1 , 并清除内存 。
最后 , 在 rc.boot 的第三阶段 , 从磁盘执行实际的 init 进程 。在执行 init 时 , 读取 /etc/inittab 文件 , 并执行其中的每个项目 。在此期间 , 将 /tmp 文件系统挂载磁盘 。到了启动过程的最后阶段 , 在 rc.boot 的第一阶段未进行配置的其余设备上再次运行 cfgmgr 命令 。
/etc/inittab 文件
执行 init 进程后 , 接下来由 init 打开 /etc/inittab 并读取每个条目 。/etc/inittab 文件的目的是为 init 进程提供在引导和正常运行过程中启动的那些进程 。
/etc/inittab 文件的格式非常特别 , 各个字段通过冒号分隔 。/etc/inittab 的格式如下:
:::
/etc/inittab 文件中定义的字段的说明如下:
ID:用于标识对象的唯一字符串 。
Run Level:在系统进入 init 级别时执行 。例如 , 如果 /etc/inittab 中的条目设置为具有运行级别 2 , 那么当操作系统进入 init 级别 2 时 , 将执行命令 。init 或运行级别在 AIX 上与其他基于 Unix 或 Linux?的系统不同 。在 AIX 中定义了下列运行级别:
0、1:保留用于将来的操作系统扩展
2:缺省运行级别
3 至 9:可由用户定义
a 至 c:专用级别(当 init 执行至运行级别 a、b 或 c 时 , 进程不会被终止 。那些处于这些运行级别并且未运行的进程将开始执行 , 但是处于之前运行级别的进程保持不变 。)
Q、q:通知 init 重新扫描 /etc/inittab 文件的快速方法
Action: action 字段通知 init 进程如何处理 inittab 文件的各个条目中的进程 。以下是 AIX 所使用的 action 字段的值: respawn:如果进程不存在 , 则启动进程 。不等待其终止 , 并继续扫描 inittab 文件 。如果进程终止 , 则重新启动进程 。

推荐阅读