对话 UNIX: 启动

了解 UNIX 计算机如何启动

您是否曾经对计算机的运行原理和 UNIX® 服务器执行任务的方式感到好奇?如果您对按下计算机上的电源按钮后所发生的事情感到好奇,本文将为您解开这背后的秘密。本文将讨论各种启动类型、管理 IBM® AIX® 启动列表,以及 AIX 启动顺序。阅读本文后,您将更好地理解服务器启动时所发生的事情。

Adam Cormany, 国家数据中心经理, Scientific Games Corporation

Adam Cormany 目前是国家数据中心经理,在最近几年中,他在任此职的同时还一直担任 Scientific Games 的 UNIX 系统工程师、UNIX 管理员和运营经理。Adam 潜心从事 AIX 以及 Solaris 和 Red Hat Linux 管理已有 10 多年。他是一位 pSeries AIX 系统管理方面的 IBM eServer 认证专家。除管理外,Adam 还在 BASH、CSH 和 KSH 的 Shell 脚本编写以及 C、PHP 和 Perl 编程方面具有渊博的知识。



2008 年 7 月 10 日

引言

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

虽然许多人混用术语 AIXRS/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 -o
hdisk0
cd0
rmt0

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

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 需要执行哪些过程来支持稳定的操作系统。

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文
  • 对话 UNIX:查看本系列中的其他部分。
  • Wikipedia 上的 AIX 条目:阅读 Wikipedia 上有关 AIX 操作系统的优秀条目,以了解有关其背景和开发的更多信息。
  • inittab 文件信息:从联合 IBM 系统信息中心了解有关 inittab 文件的更多信息。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为你把本专区的所有专题进行汇总,让您更方便的找到你需要的内容。
  • developerWorks 技术事件和网络广播:了解最新的 developerWorks 技术事件和网络广播。
  • AIX Wiki:访问此 AIX 相关技术信息的协作环境。
  • Podcast:收听 Podcast 并与 IBM 技术专家保持同步。

获得产品和技术

  • IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=318963
ArticleTitle=对话 UNIX: 启动
publish-date=07102008