启动过程包含下面的一些步骤:
启动一个系统的初始步骤是上电自检(Power On Self Test,POST)。其目的是验证基本硬件是否处于正常的工作状态。同时初始化内存、键盘、通信,以及音频设备。您可以看到在屏幕上显示了所有的这些设备。在这个步骤中,您可以按下功能键,以选择不同的启动列表。这个阶段中所显示的 LED 值是模型特定的。硬件和软件方面的问题都可能使得系统无法启动。
注意:基于 MCI 体系结构的旧系统在这个步骤之前还将执行一个附加的步骤,即所谓的内建自检(Built In Self Test,BIST)。对于基于 PCI 体系结构的系统,不再需要执行这个步骤。
系统只读存储器(System Read Only Storage,ROS)对于每种类型的系统来说都是特定的。它是启动 AIX 5L Version 5.3 所必需的,但是它并不为启动工作构建所需的数据结构。它将定位和加载引导 (bootstrap) 代码。系统 ROS 中包含通用的启动信息,并且是独立于操作系统的。
软件 ROS(也称为引导程序)构成了 IPL 控制块,它与 AIX 5L Version 5.3 是兼容的,用于接收控制和构建 AIX 5L 的特定启动信息。将在内存中定位一种特殊的文件系统,并创建一种名为 RAMFS 的文件系统。然后,软件 ROS 定位、加载、并将控制权交给 AIX 5L 启动逻辑卷 (BLV)。软件 ROS 是基于计算机类型的 AIX 5L 信息,并且负责完成计算机准备工作,以使得它能够启动 AIX 5L 内核。
可以从 /usr/lib/boot 目录中获得 BLV 中所包含的文件的完整列表。其中最重要的组件包含以下内容:
oAIX 5L 内核
o在启动过程中调用的启动命令,如 bootinfo 和 cfgmgr
oODM 的一个简化的版本。在 hd4 可供使用之前,需要对许多设备进行配置,所以它们的相应方法必须存储在 BLV 中。这些设备都被标记为预定义设备 (PdDv) 中的基础设备。
orc.boot 脚本
加载 AIX 5L 内核,并接管控制权。系统将在 LED 面板上显示 0299。前面所有的代码都是与硬件相关的。通过配置设备和启动 init 进程,内核将完成启动过程。在这个阶段中所显示的 LED 代码都是通用的 AIX 5L 代码。
到此为止,系统对硬件进行了检测、找到了 BLV、创建了 RAMFS,并且从 BLV 中启动了 init 进程。但是尚未激活 rootvg。从现在开始,将调用三次 rc.boot 脚本,并且每次都传递不同的参数。
启动阶段 1
在这个阶段中,将执行下面的步骤:
从 RAMFS 启动的 init 进程将执行启动脚本 rc.boot 1。如果出于某种原因,init 进程执行失败,那么将在 LED 显示屏上显示代码 c06。
在这个阶段中,将调用 restbase 命令,以便将 ODM 的部分镜像从 BLV 复制到 RAMFS。如果这个操作成功完成,那么 LED 显示屏将显示 510;否则,将显示 LED 代码 548。
在执行了该操作之后,cfgmgr -f 命令将从简化的 ODM 中读取 Config_Rules 类。在这个类中,将属性 phase=1 的设备认为是基础设备。基础设备是访问 rootvg 所需的所有设备。例如,如果 rootvg 位于某块磁盘中,那么必须对从主板到磁盘之间的所有设备进行初始化。调用相应的方法,以便能够在启动阶段 2 中激活 rootvg。
在启动阶段 1 结束后,将调用 bootinfo -b 命令以确定最后的启动设备。在这个阶段中,LED 将显示 511。
启动阶段 2
在启动阶段 2 中,向 rc.boot 脚本传递的参数为 2。
在这个阶段中,将执行下面的这些步骤:
可以使用 varyonvg 命令(名为 ipl_varyon 命令)的特殊版本来激活 rootvg 卷组。如果这个命令执行成功,那么系统将显示 517;否则,将显示下面 LED 代码中的某一个:552、554、或者 556,并且停止启动过程。
使用 fsck -f 命令来检查根文件系统 hd4。该操作将验证在上一次关机之前是否已经干净地卸载了这个文件系统。如果这个命令执行失败,那么系统将显示代码 555。
将根文件系统 (/dev/hd4) 装入到 RAMFS 中的临时装入点 (/mnt)。如果这个操作执行失败,那么在 LED 显示屏中将显示 557。
使用 fsck -f 命令检查 /usr 文件系统,然后进行装入。如果这个操作执行失败,那么 LED 将显示 518。
使用 fsck -f 命令检查 /var 文件系统,然后进行装入。使用 copycore 命令检查是否发生了转储。如果发生了转储,那么从缺省转储设备 /dev/hd6 复制到缺省复制目录 /var/adm/ras。然后,卸载 /var。
激活 rootvg 的主分页空间 /dev/hd6。
调用 mergedev 进程,并将 RAM 文件系统的所有 /dev 文件复制到磁盘。
将 RAM 文件系统中所有自定义的 ODM 文件复制到磁盘。对于 hd4 和 hd5 中的两个 ODM 版本,现在进行同步。
最后,将 rootvg(磁盘)中的根文件系统装入到 RAMFS 的根文件系统。rootvg 文件系统的装入点已变得可用。现在,再次将 rootvg 的 /var 和 /usr 文件系统装入到它们的正常装入点。
在这个阶段中,不能使用控制台,所以所有的启动消息都将复制到 alog。alog 命令可以对日志进行维护和管理。
启动阶段 3
在阶段 2 完成之后,激活了 rootvg,并将执行下面的步骤:
启动 /etc/init 进程。它将读取 /etc/inittab 文件,并使用参数 3 调用 rc.boot。
装入 /tmp 文件系统。
通过调用 syncvg 命令(将该命令启动作为一个后台进程)对 rootvg 进行同步。因此,将对 rootvg 中所有过时的分区进行更新。在这个阶段中,将显示 LED 代码 553。
在这个阶段中,将调用 cfgmgr 命令;如果系统以正常模式进行启动,那么将使用选项 -p2 来调用 cfgmgr 命令;如果系统以服务模式进行启动,那么将使用选项 -p3 来调用 cfgmgr 命令。cfgmgr 命令将从 ODM 读取 Config_rules 文件,并且调用与 phase=2 或者 phase=3 相对应的所有方法。所有其他非基础设备的设备,并不在这里进行配置。
接下来,通过调用 cfgcon 命令对控制台进行配置。在配置了控制台之后,如果没有设置 STDOUT 重定向,那么启动消息将发送到控制台。然而,可以在 /var/adm/ras/conslog 中找到所有遗漏的消息。此时,可能显示的 LED 代码包括:
oc31:控制台尚未配置。提供相应的指令以选择控制台。
oc32:控制台是 LFT 终端。
oc33:控制台为 TTY。
oc34:控制台为磁盘中的文件。
最后,使用 savebase 命令对 BLV 中的 ODM 与 / (root) 文件系统中的 ODM 进行同步。
启动 syncd 守护进程和 errdemon。
LED 显示屏将关闭。
如果文件 /etc/nologin 存在,则将其删除。
如果 CuDv 中有设备被标记为缺失,那么将在控制台中显示一条消息。
消息“System initialization completed”发送到控制台。rc.boot 执行完成。进程 init 将继续处理 /etc/inittab 中的下一条命令。