红联Linux门户
Linux帮助

AIX多用户模式启动过程

发布时间:2014-07-22 22:19:37来源:linux作者:linux

一般情况下,系统正常启动时,会直接进入到多用户模式,也就是正常(Normal)模式下,为应用程序正常运行做好了准备。

把机器前面板上的钥匙扳到Normal位置时,或者在机器启动过程中不按任何键,就会让系统从硬盘启动。当用户打开机器电源(冷启动)或通过shutdown热启动来重启系统时,要经过一系列的处理过程才能为用户准备好系统。这个启动过程分为三个阶段:

只读存储器(Ros)内核初始化阶段(Read Only Storage Kernel Init Phase)

基本设备配置阶段,即rc.boot第一引导阶段。

系统引导阶段,包括rc.boot的第2和第3个引导阶段


ROS内核初始化阶段:

以基于pci的rs/6000机器为例,ROS内核初始化阶段包括下面几个步骤。

(1)首先由OCS调用微处理器检查系统的主板是否有问题,然后将控制权交给只读存储器ROS,执行系统加电自检。

(2)ROS初始化载入程序(IPL)检查用户自定义引导设备列表,如果用户自定义引导列表不正确或者没有找到引导设备,就会检查默认的引导列表。无论使用哪一个引导列表,只会在引导列表中找到第一个设备用来引导系统。如果在NVRAM中找到了引导列表,将检查位于总线上的所有适配器和设备。无论是否找到自定义引导列表,将继续循环检查设备,直到找到一个能够用于启动系统的设备为止。

(3)当找到第一个可以引导的设设备后,就会检测引导设备上第一个记录或物理扇区号(PSN)。如果它是合法的引导记录,则把它读入内存,并附加到初始装入程序的控制块上。然后根据引导记录中包含的引导逻辑卷(BLV)长度和BLV地址把BLV装入内存。

(4)从引导设备中顺序地引导逻辑卷(即引导镜像)读入到内存,建立RAM文件系统。引导逻辑卷有内核、一个RAM文件系统和基本用户设备信息组成。

(5)控制权移交给在RAM文件系统中开始系统初始化的内核。

(6)系统初始化的内核运行Init程序(其进程号为1),init进程继续去执行rc.boot脚本第一个引导阶段。

至此,结束了硬件检测阶段。


基本设备配置阶段:

到现在为止,系统已经完成硬件检测,找到BLV,建立起RAM文件系统,启动了RAM文件系统中的进程init,但是rootvg还没有被激活。从现在开始,MCA机器和PCI机器的引导过程完全相同。

rc.boot第一个引导阶段主要完成基本设备配置,它是由RAMFS上的init进程执行带1参数的rc.boot程序。这个阶段的工作过程如下:

RAMFS中PID为1的init进程 --->执行rc.boot的第1引导阶段----->执行cfgmgr -f 配置基本设备 ----->执行bootinfo -b 命令


rc.boot第一个引导阶段包括下面的步骤:

一、RAMFS(RAM文件系统)中的init进程执行引导脚本rc.boot 1.在这个过程中,rc.boot程序调用restbase命令,把引导逻辑卷上简单的ODM数据库复制到RAMFS。如果这个操作失败,则会在LED上显示548;

二、然后rc.boot程序执行cfgmgr -f命令,让cfgmgr从简化的ODM数据库中读取Config_Rules类。在congfig_rules类中,属性phase为1的设备被认为是基本设备,基本设备是为访问rootvg所需的全部设备。rc.boot1 这个阶段执行cfgmgr命令来配置基本设备,以方便在下一个rc,boot阶段能够激活rootvg;

三、在rc.boot第一个引导阶段最后,执行bootinfo -b命令来检测最后一次引导设备,这时LED显示511;


rc.boot第二个引导阶段

RAMFS中的进程init接着执行带2的参数的rc.boot程序,进入到rc.boot的第二个引导阶段,这个阶段的工作过程如下:

执行ilp_varyon命令来激活rootvg ----> 安装/dev/hd4文件系统 ----->安装/usr文件系统---->安装/var文件系统;执行/copycore命令;卸载/var文件系统----->执行swapon命令,以激活/dev/hd6----->执行mergedev命令把RAMFS中的/dev复制到磁盘----->用cp Cu* /mnt /etc/objrepos命令把RAMFS中的ODM复制到磁盘----->卸载/usr文件系统和/dev/hd4 ---->安装/文件系统;然后再安装/usr和/var文件系统---->把引导信息复制到alog中。


rc.boot第二个引导阶段包括下面的步骤:

一、rc.boot程序执行ipl_varyon命令激活rootvg。如果这个命令没有执行成功,LED将显示552,554,556三个代码中的一个。

二、当ipl_varyon命令执行成功后,用fsck -fp /dev/hd4命令检查rootvg的根文件系统,然后把rootvg的根文件系统安装在RAMFS的临时安装点(/mnt)上,如果失败,LED将显示555或557.

三、安装/usr和/var文件系统。如果失败,LED显示518.这时,一旦安装了/var文件系统,用copycore命令把默认的dump设备(/dev/hd6)里最后的dump复制到默认的副本目录(/var/adm/ras),复制完dump之后,就卸载/var文件系统;

四、运行swapon(/usr/sbin/swapon)命令来激活rootvg上的基本的页面空间(/dev/hd6)。

五、用mergedev命令把RAMFS中的/dev目录复制到磁盘上的文件系统中,在用cp Cu* /mnt/etc/objrepos命令把RAMFS中用户化的ODM数据库复制到磁盘上,这是因为临时安装点(/mnt)被用于安装根文件系统。

六、从RAMFS中卸载/usr文件系统和rootvg中的根文件系统(/dev/hd4)。

七、 在RAMFS的根文件系统所在的安装点上永久性安装rootvg的根文件系统,有newroot命令完成RAM文件系统到rootvg的根文件系统的切换。root卷组中的文件系统安装点在使用之后,就将root卷组中的/usr和/var文件系统安装到相应的安装点上。

八、 这时仍然没有可以使用的控制台,因为所有的引导信息都被复制到错误的日志(alog)中,因此要检查这个过程的问题,最好用alog命令查看错误日志中的引导信息。

九、退出执行rc.boot脚本,把控制权交给root卷组中的init进程,然后释放RAM文件系统。


完成了rc.boot脚本的第二个阶段后,引导过程将从RAM文件系统切换到硬盘文件系统上,然后把控制权交给硬盘文件系统中的init进程,init进程将按照以下顺序执行完整个过程的最后一部分。

(1)init程序读取/etc/inittab文件,如果该文件存在,则init程序在/etc/inittab文件中寻找默认的系统启动初始记录,这个记录(记录标示符是:init,第3个阶段是initdefault)中包括了预先登记在文件/etc/inittab中的进程。

如果这个默认的系统初始记录存在,则init进程使用指定的运行级别作为初始化系统的运行级别。

如果这个默认的系统启动初始记录不存在,则init进程要求用户从控制台(/dev/console)输入一个运行级别。

如果用户输入一个S,s,M,或者m运行级别时,则init进程就进入了系统维护运行级别,也就是单用户模式,只有进入到单用户模式才不必须要/etc/inittab文件的内容是完整的。

(2)如果/etc/inittab文件不存在,init进程就会默认以系统维护运行级别进入系统,也就是系统处于单用户模式下。

(3)init进程每隔60秒钟会读取一次/etc/inittab文件,如果在init进程上次读过该文件之后,/etc/inittab文件发生了修改变化,则在/etc/inittab文件里增加或修改的新命令也会被执行。