字号:    

IBM AIX V5.3 系统管理(Test 222)认证指南: 第 1 部分:启动过程(下)

作为一名系统管理员,您应该对启动过程具有全面的认识。对于解决影响系统正常启动的问题来说,这种认识是非常有帮助的。这些问题可能涉及软件和硬件两方面。我们还建议您应该熟悉您的系统的硬件配置。文章是节选自 IBM 的红皮书《IBM Certification Study Guide eServer p5 and pSeries Administration and Support for AIX 5L Version 5.3 》。

“访问无法启动的系统”中所描述的过程来访问您的 rootvg。

2. 检查 / and /tmp 文件系统。如果它们几乎满了,那么创建更多的空间。

3. 使用 lslv -m hd5 命令来确定启动磁盘。

4. 使用 bosboot -a -d /dev/hdiskn 重建启动镜像,其中 n 是包含启动逻辑卷的磁盘的编号。

5. 在错误日志中检查 CHECKSTOP 错误。如果找到了这样的错误,它很可能表示硬件的故障。

6. 关闭并重新启动系统。 LED 223-229 - 无效的启动列表 1. 将键模式切换到 Service(或者 F5,对于那些没有键盘锁的系统),并打开计算机的电源。

2. 如果显示正常继续,则将键模式切换到 Normal 并继续第3步。如果没有得到提示,则进入第 4 步。

3. 当出现登录提示符时,登录并按照“bootlist 命令”中所描述的过程来更改启动列表。然后继续执行第 7 步。

4. 按照“访问无法启动的系统”中所描述的过程来访问您的 rootvg,并继续执行第 5 步。

5. 使用 lslv -m hd5 命令来确定启动磁盘。

6. 按照“bootlist 命令”中所描述的过程来更改启动列表。

7. 关闭并重新启动您的系统。 LED 551、555 和 557 - 损坏的文件系统、损坏的 JFS 日志等等 1. 在装入任何文件系统(“Volume Group Information”屏幕中的选项 2)之前,按照“访问无法启动的系统”中所描述的过程来访问 rootvg。

2. 验证并修改文件系统,如下所示:

fsck -y /dev/hd1

fsck -y /dev/hd2

fsck -y /dev/hd3

fsck -y /dev/hd4

fsck -y /dev/hd9var

3. 使用如下命令再次格式化 JFS 日志:

/usr/sbin/logform /dev/hd8

4. 使用 lslv -m hd5 获得启动磁盘。

5. 使用下面的命令重新创建启动镜像:

bosboot -a -d /dev/hdiskn

其中,n 是包含启动逻辑卷的磁盘的编号。 LED 552、554 和 556 - 损坏的超级块和损坏的自定义 ODM 数据库 1. 重复 LED 551、555 和 557 中的步骤 1 到 2。

2. 如果 fsck 显示 block 8 被破坏,那么说明文件系统的超级块遭到破坏,并且需要对其进行修复。输入下面的命令:

dd count=1 bs=4k skip=31 seek=1 if=/dev/hdn of=/dev/hdn

其中,n 是该文件系统的编号。

3. 使用如下的命令重新构建 JFS 日志:

/usr/sbin/logform /dev/hd8

4. 如果这样做可以解决问题,那么就停止;否则,继续执行第 5 步。

5. 您的 ODM 数据库遭到破坏。重新启动您的系统,在“Volume Group Information”屏幕中,使用选项 2 按照“访问无法启动的系统”中所描述的过程来访问 rootvg。

6. 装入根文件系统和 usr 文件系统,如下所示:

mount /dev/hd4 /mnt

mount /usr

7. 将系统配置复制到备份目录:

mkdir /mnt/etc/objrepos/backup

cp /mnt/etc/objrepos/Cu* /mnt/etc/objrepos/backup

8. 复制 RAM 文件系统的配置,如下所示:

cp /etc/objrepos/Cu* /mnt/etc/objrepos

9. 使用 umount all 命令卸载所有的文件系统。

10. 使用 lslv -m hd5 命令来确定启动磁盘。

11. 使用下面的命令保存干净的 ODM 到启动逻辑卷:

savebase -d/dev/hdiskn

其中,n 是包含启动逻辑卷的磁盘的编号。

12. 重新启动,如果系统无法引导,则重新安装 BOS。

常见的启动 LED 和解决方案

LED 553 - 损坏的 /etc/inittab 文件
1. 按照“访问无法启动的系统”中所描述的过程来访问所有已装入的文件系统的 rootvg。

2. 使用 df 命令,检查 /、/var 和 /tmp 中的空闲空间。

3. 检查 /etc/inittab 文件,如果存在一个空的 inittab 文件、inittab 文件缺失,或者在 inittab 文件中存在错误的条目,则纠正 inittab 问题。

4. 检查下列文件的问题:

/etc/environment file

/bin/sh

/bin/bsh

/etc/fsck

/etc/profile

/.profile

5. 关闭系统,并重新启动。

上半部分的“/etc/inittab 文件”,以获得更详细的信息。 S、s、M、m 维护模式。当系统从其他运行级别进入维护模式时,只有系统控制台可以作为终端使用。

确定当前运行级别

在命令行中,输入下面的命令:

# cat /etc/.init.state 2 #

系统将显示一个数字,即当前运行级别。

显示以前的运行级别的历史

使用 fwtmp 命令,您可以显示以前的运行级别的历史,如下所示:

1. 以 root 用户的身份登录。 2. 输入下面的命令,系统将显示与下面所示类似的信息:

# /usr/lib/acct/fwtmp < /var/adm/wtmp |grep run-level run-level 2 1 0 0062 0123 1132072406 Tue Nov 15 10:33:26 CST 2005 run-level 2 1 0 0062 0123 1132075614 Tue Nov 15 11:26:54 CST 2005 run-level 2 1 0 0062 0123 1132092491 Tue Nov 15 16:08:11 CST 2005 run-level 2 1 0 0062 0123 1132094756 Tue Nov 15 16:45:56 CST 2005

更改系统运行级别

系当系统第一次启动时,它会进入 /etc/inittab 文件中的 initdefault 项所定义的缺省运行级别。系统会一直在该运行级别中运行,直到它收到一个更改运行级别的信号。您可以执行 lsitab 命令,以查看您的系统的缺省运行级别:

# lsitab init init:2:initdefault: #

要更改运行级别,请执行下面的过程:

  • 1. 检查 /etc/inittab 文件,以确认您将要改变到的运行级别是否支持您正在运行的进程。进程 getty 是很重要的,因为它可以控制系统控制台和其他登录的终端线路访问。确保 getty 进程在所有的运行级别中都可以运行。
  • 2. 使用 wall 命令通知所有的用户,您将要改变系统运行级别,并要求这些用户退出系统。
  • 3. 使用 telinit 命令(以您将要切换到的运行级别作为该命令的参数),例如:

    # telinit M

telinit 命令

通过接受单个字符的参数,并发送信号以告知 init 进程执行适当的动作,telinit 命令可以直接控制 init 进程(进程 ID 为 1)的操作。通常情况下,telinit 命令将使系统进入到指定的运行级别。telinit 命令可以向 init 进程传递下列参数作为指令:

  • 0-9:告知 init 进程将系统置于运行级别 0-9。
  • S、s、M、m:告知 init 进程将系统置于维护模式。
  • a、b、c:告知 init 进程仅检查 /etc/inittab 文件中在运行级别字段中包含 a、b、c 的那些记录。
  • Q、q:告知 init 进程重新检查整个 /etc/inittab 文件。
  • N:向重新生成的进程发送中止进程的信号。
例如,要进入到维护模式,可以输入:

# telinit M

注意:您还可以使用 shutdown -m 命令进入到维护模式。

执行运行级别脚本

运行级别脚本允许用户在更改运行级别时启动和停止所选择的应用程序。以 K 开头的脚本是停止脚本,以 S 开头的脚本是启动脚本。

这些脚本保存于它们所从属的运行级别的特定子目录中,每个子目录的格式为 rcn.d,其中 n 表示运行级别:

/etc/rc.d/rc2.d

/etc/rc.d/rc3.d

/etc/rc.d/rc4.d

/etc/rc.d/rc5.d

/etc/rc.d/rc6.d

/etc/rc.d/rc7.d

/etc/rc.d/rc8.d

/etc/rc.d/rc9.d

/etc/rc.d/rc 脚本将运行它在指定目录中发现的启动脚本,并在运行级别更改时执行该启动脚本。脚本将首先运行停止应用程序的脚本,然后运行启动应用程序的脚本。

rc.* 文件的介绍

rc 文件作为初始化过程中的一部分加以执行;它们为系统做好配置的准备,并做好运行的准备。

rc.boot 文件

/sbin/rc.boot 文件是一个可以由简单的 Shell init和标准 init 命令调用的、用来使系统启动的脚本。它可以控制计算机的启动进程。当系统启动时,在每个启动阶段都会调用 /sbin/rc.boot 文件,每次都使用一个不同的参数。

根据启动设备的类型,rc.boot 文件对设备进行配置,并调用合适的应用程序。合适的应用程序包括:

  • 从磁盘进行启动(启动阶段 1)
  • 激活根卷组(启动阶段 2)
  • 启用文件系统(启动阶段 2)
  • 调用 BOS 安装程序或者诊断程序
注意:rc.boot 程序只能由 init 进程调用;在一个正在运行的系统上执行 rc.boot 脚本会产生不可预知的结果。

/etc/rc 文件

/etc/rc 文件执行正常的启动初始化;在 /etc/inittab 文件中,它的条目位于 rc.boot 条目之后。init 命令将读取 /etc/inittab 文件,并为 /etc/rc 文件创建一个进程。对于不同的安装,/etc/rc 文件的内容也有所不同。如果所有必需的操作都已成功完成,那么文件会出现一个返回码 0,以便允许 init 命令启动登录程序来完成正常的初始化和启动。

/etc/rc 文件可以完成许多启动功能,如:

  • 激活所有标记为自动激活的卷组。
  • 激活 /etc/swapspaces 文件中列出的所有分页空间(使用 swapon -a 命令)。
  • 配置所有的转储设备(使用 sysdumpdev -q 命令)。
  • 执行文件系统检查(使用 fsck -fp 命令)。
  • 装入在 /etc/filesystems 文件中列出的标记为 mount=true 的文件系统(使用 mount all 命令)。
注意:/、/usr、/var 和 /tmp 文件系统会在启动过程(阶段 2)中自动地装入。/etc/rc 文件在运行 mount all 命令时不会尝试再次装入这些文件系统。

rc.net 文件

/etc/rc.net 文件是一个包含网络配置信息的 Shell 脚本。其中的一些节允许您启用网络接口和设置主机名、缺省网关以及当前主机的静态路由信息。这个文件可用于进行单步配置,作为单独配置主机所需的一组命令和文件的替代方法。

rc.net Shell 脚本在配置过程的第二阶段中通过配置管理器程序运行。如果 TCP/IP 已经安装,那么在配置过程的第二阶段完成,并且 init 命令启动了 SRC 之后,由 init 命令运行第二个脚本 rc.tcp。

应该显示该文件中的节,以便提示用户目前的运行状态。

如果在系统配置完成之后运行 cfgmgr 命令,/etc/rc.net Shell 脚本还可以由配置管理器程序 (cfgmgr) 运行。它经常在系统添加新设备后,在系统启动时运行。如果 cfgmgr 命令运行 rc.net,那么配置方法和 rc.net 文件本身都要检查网络设备是否已经处于可用状态。如果是,那么就不改变设备的属性值,以避免覆盖启动之后的任何配置更改。

如果在运行 /etc/rc.net 时没有调用 cfgmgr 命令,那么将设备属性重设为在 ODM 库中的属性值,而不管它当前的状态如何。这就允许系统配置恢复为 ODM 库中指定的属性值。

rc.tcpip 文件

/etc/rc.tcpip 文件是一个 Shell 脚本,当它执行时,使用 SRC 命令初始化所选择的守护进程。在系统每次重新启动时,rc.tcpip 脚本文件都会自动地执行。它也可以在任何时间从命令行加以执行。

大多数守护进程可以由 TCP/IP 特定的 rc.tcpip 文件进行初始化。这些守护进程包括:

  • inetd(在缺省情况下会启动)
  • gated
  • routed
  • named
  • timed
  • rwhod

注意:在一台主机上同时运行 routed 和 gated 会引起不可预知的结果。

还有一些特定于基本操作系统或其他应用程序的守护进程,也可以在 rc.tcpip 文件中启动。这些守护进程包括:

  • lpd
  • portmap
  • sendmail
  • syslogd(在缺省情况下会启动)

以下的示例可以作为参考:

  • 下面的命令将启动 syslogd 守护进程:

    #启动 syslog 守护进程(用于错误和事件日志记录)

    start /usr/sbin/syslogd "$src_running"

  • 下面的节将启动 lpd 守护进程:

    #启动 print 守护进程

    start /usr/sbin/lpd "$src_running"

  • 下面的节将启动 routed 守护进程,但是不启动 gated 守护进程:

    #启动 routing 守护进程(仅启动一个)

    start /usr/sbin/routed "$src_running" -g

    #start /usr/sbin/gated "$src_running"

注意:要在启动时禁用一个进程,可以在启动该进程的那一行前面添加一个号 (#)。

分类:默认分类
?次阅读
 2008-05-08 20:12