您的位置:首页技术文章
文章详情页

对话 UNIX: 启动

【字号: 日期:2024-06-12 13:30:09浏览:2作者:猪猪

引言

AIX 操作系统是具有特定 IBM 风格的 Unix。IBM 最初于 1986 年发布了 AIX 1.0 版本,在过去 22 年中经过多次更新(撰写本文时的最新版本为 AIX 6.1),AIX 已发展成为稳定的 UNIX 系统。

虽然许多人混用术语 AIX 和 RS/6000,但它们实际上表示不同的事物。AIX 是 UNIX 操作系统,IBM RS/6000® 是可供 AIX 运行的精简指令集计算机 (RISC) 服务器硬件。IBM 最初在 IBM 6150 RT 工作站上运行 AIX,多年以来,AIX 经历了从 IBM PS/2 Intel® 386 计算机、IBM 主机,直到 POWER 体系结构的变迁。现在,AIX 可以在 IBM System p™(以前称为 RS/6000)和 System i™(以前称为 IBM iSerIEs® 和 AS/400®)计算机上运行。

AIX 启动方法

有三种方法可以启动 AIX 操作系统:正常、独立和网络启动。

正常启动

典型的 AIX 启动方法是正常启动选项。正常启动选项从本地磁盘启动服务器上的 AIX。启动完成时,操作系统将处于多用户模式。

独立启动

AIX 系统的第二种启动类型称为独立启动或维护模式选项。独立启动选项与正常启动选项类似,但启动时不进入多用户模式,而是进入单用户维护模式。您可以使用多种方法以独立方式启动 AIX 系统,如从可移动介质(磁带或光盘)启动服务器,在初始硬件外围设备检查过程中,当键盘完成初始化时,或者在可能出现问题(文件系统损坏)并且必须修补系统才能进入正常启动时,单击 F5(或 F6,具体取决于硬件)。同样,一些系统可能具有允许您进入维护模式的钥匙。独立启动服务器允许您在没有其他用户登录的情况下安装软件、修复问题、运行诊断程序,以及配置硬件,从而降低资源锁定的风险。

网络启动

第三种启动类型是网络启动选项。同样,与正常启动选项类似,AIX 系统启动时进入多用户模式。但是,使用该选项时,AIX 从网络上的另一台服务器接收其启动信息。

启动列表及其管理方法

因为您可以从多种不同类型的介质上启动 AIX 系统,因此您必须具备管理各种介质类型的方法。于是启动列表派上了用场。启动列表维护系统的各种启动方法所对应的所有启动设备的列表。

若要查看特定启动方法的启动列表,只需添加选项 -o。在以下示例中,演示了正常启动方法。服务器将尝试启动的介质顺序是第一本地磁盘 (hdisk0),然后是光盘 (cd0),最后通过磁带 (rmt0) 启动。

# bootlist -m normal -ohdisk0cd0rmt0

若要设置特定启动方法的启动列表,请键入选项 -m 和相应的启动方法,后跟着所需的启动设备。在下列示例中,将正常启动的启动列表修改为尝试以 hdisk0、cd0、cd1 的顺序启动服务器:

bootlist -m normal hdisk0 cd0 cd1

正如您从上面的示例所看到的,每次都使用 -m 选项来指定要修改或显示的启动方法。该选项支持的值包括 normal(正常)、service(单用户维护模式)、both(正常和服务)和 prevboot(先前的启动列表)。

AIX 启动顺序

既然已经选择了启动方法,接下来了解服务器上电后实际发生的事件顺序。

注意:在本文的其余内容中,您将使用正常启动模式启动服务器。

POST

在您打开电源并开启服务器后,将检验服务器的硬件是否可能存在问题。该步骤称为上电自检(power-on self-test,POST)。当服务器执行此步骤时,POST 将检查内存、键盘、声卡和网络设备。在此期间,如果您要进入独立模式(单用户模式),请在键盘初始化之后单击 F5 或 F6。但在本文中,请不要按任何键,让服务器进入正常启动模式。

引导程序

在 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 的格式如下:

<ID>:<Run Level>:<Action>:<Command>

/etc/inittab 文件中定义的字段的说明如下:

ID:用于标识对象的唯一字符串。

Run Level:在系统进入 init 级别时执行 <Command>。例如,如果 /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 文件。如果进程终止,则重新启动进程。

wait:启动进程,并等待其终止。

once:启动进程,但不等待其终止。如果进程终止,则不重新启动它。

boot:只在系统启动时处理条目。

bootwait:在服务器最初从单用户进入多用户模式时处理条目。

powerfail:只在 init 收到电源故障信号时执行命令。

powerwait:只在 init 收到电源故障信号时执行命令,并且等待进程终止后再继续扫描 inittab 文件。

off:如果目前进程正在运行,则发送信号 SIGTERM,并在 20 秒后发送 SIGKILL。

ondemand:该值与 respawn 相同,但只适用于运行级别 a、b 和 c。

initdefault:仅在 init 最初执行时扫描条目。

sysinit:在登录和 init 访问控制台之前执行条目。

Command:/etc/inittab 中最后输入的字段是 command 字段。这是在 <run level> 已启动时,<action> 在认为有必要的情况下执行的实际命令。当命令准备执行时,AIX 将以如下方式启动子进程:sh -c exec <command>。

以下示例演示在启动运行级别 2 时运行名为 /usr/bin/rc.atc_bin 的 Shell 脚本,并在每次调用运行级别 2 时 respawn 该进程:

CORMANY_BIN:2:respawn:/usr/bin/rc.atc_bin

若要为运行级别 0、1、3、6 和 9 禁用相同的脚本,请使用:

CORMANY_BIN:245780:respawn:/usr/bin/rc.atc_bin

查看和修改 inittab

AIX 提供了比手动更改 /etc/inittab 文件更方便的命令。这些命令遵从与其他 AIX 命令相同的命名约定:

mkitab:向 inittab 文件添加记录。

以下示例将具有运行级别 2 的 /usr/bin/rc.atc_bin 脚本添加到 inittab 中。

mkitab “CORMANY_BIN:2:respawn:/usr/bin/rc.atc_bin

chitab:更改 inittab 文件中的记录。语法与 inittab 文件中的实际记录相同。

以下示例将上一示例的 inittab 文件中的 /usr/bin/rc.atc_bin 脚本的运行级别更改为 3:

chitab "CORMANY_BIN:3:respawn:/usr/bin/rc.atc_bin"

lsitab:列出 inittab 文件中的记录。使用 lsitab 是单独或一起查看 inittab 记录的安全手段。

以下示例查看 inittab 文件中的所有记录:

lsitab -a

以下示例仅查看标识为 CORMANY_BIN 的记录:

lsitab CORMANY_BIN

rmitab:从 inittab 文件中删除记录。

以下示例将标识为 CORMANY_BIN 的记录从 inittab 文件中删除:

rmitab CORMANY_BIN

结束语

现在已读取 inittab 文件并执行了所有应该执行的进程,系统已准备好进行登录!您现在可以登录并畅游您的 AIX 系统。

当您按下服务器上的电源开关时,系统魔术般地启动了,这一切似乎很简单,但正如您从本文中看到的,AIX 系统启动时发生了很多事情。希望您通过阅读本文能够更清楚地了解 AIX 需要执行哪些过程来支持稳定的操作系统。

标签: Unix系统