一、小机启动时,可以再引导过程中,选择不同的系统运行模式:
1)从 磁带或者cdrom引导系统进入维护模式(单用户模式)
2)从硬盘引导系统进入到维护模式(单用户模式)和正常模式(多用户模式)
3)进入系统管理维护模式(SMS模式:System Management Services)
二、一般引导过程概述
经典的RS6000机器(MCA)结构系统硬件自检分两个阶段:内置设备自检阶段(BIST)和加电自检阶段(POST),对于PCI的机器,则由单独的加电自检(POST)完成硬件检查。
经过硬件检查,系统就尝试加载引导逻辑卷(BLV:Boot Logical Volume),并在内存中形成RAMFS,并把控制权交给BLV,但由于内存中没有加载任何LVM(logic volume manager,LVM)的驱动,因此系统必须在不适用LVM的情况下正确找到BLV数据在硬盘上的位置。正确的BLV的地址信息(包括偏移量和长度)保存在引导磁盘的第一个物理扇区(这个扇区有512字节的块)上,这个扇区称之为引导记录(Boot Record)。
==========RAM文件系统===============
RAMFS是引导镜像的一部分,完全常驻内存,而且包含很多能让引导继续的程序。在RAM文件系统中运行的init进程实际上是ssh(simple shell)程序,这个程序通过调用rc.boot脚本来控制系统引导过程,rc.boot脚本第一步决定操作系统从哪个设备上引导,决定引导的设备应该在RAM文件系统中的配置(rc.boot脚本找到引导设备以后,从RAM文件系统中条用相应的程序来进行配置)
====================================
引导逻辑卷BLV也成为引导镜像,它包括下边这几个部分:
1)软件ROS——ROS是“只读存储器”的意思,软件ROS只存在于PCI的机器中,执行一些系统初始化的工作,PCI机器的ROS不提供软件ROS,而由AIX提供
2)AIX内核——AIX内核总是从BLV加载。/unix(软连接到/usr/lib/boot/unix_mp或unix_up)是一份内核副本,这个版本被用于构建hd4文件系统(也就是根文件系统)。在系统引导时,从hd4文件系统读取内核镜像。
3)rc.boot——rc.boot是一个shell命令文件,它是配置系统的脚本,在系统引导期间,init进程要执行这个脚本三次:
====================================
当加载BLV以后,由于rootvg没有被激活,并不可用,引导所需的信息都包含在用于在内存中创建RAM文件系统的BLV中,之后,init进程被加载运行,并由init进程开始配置基本信息:这就是第一引导阶段,这个阶段,init执行rc.boot的时候,带个参数1。
下一步为第二引导阶段(init执行rc.boot的时候,带个参数2),主要目的是激活rootvg(也是最容易出现问题的阶段,比如文件系统或者是jsflog损坏),接着把控制权交给rootvg中的init进程,然后释放RAM文件系统。
第三引导阶段,init进程(从磁盘加载的init进程,而不是BLV中的init进程)带参数3执行rc.boot脚本配置剩余的设备,并从/etc/inittab启动其他进程
====================================
4)简化的ODM——只提供最基本的设备配置信息
5)引导命令——比如cfgmgr和bootinfo等
三、基于PCI的系统引导模式
基于PCI的只有两种引导模式,分别是normal模式和service模式,多用户模式一般从内置硬盘启动,单用户模式可以从磁盘,cdrom或者硬盘启动。
以维护模式引导系统,就会进入到系统诊断状态,用户可以查看和更改系统的设备和配置,可以进行系统的诊断和维护工作。此时系统中只有一个root用户,所以称之为单用户模式。PCI系统的维护模式分为两种,一种:独立诊断模式(从磁带或者是cdrom引导到维护模式)。另一种是在线诊断模式(从硬盘引导)
在POST时确定引导模式,系统根据引导设备列表来引导,比如:“软磁盘-cdrom-硬盘-网络设备”类似这样一个设备组成。用户可以自己修改引导设备列表(用bootlist命令)也可以用SMS来自定义引导设备列表。自定义引导设备列表保存在NVRAM中,默认的引导列表保存在ROS中。
启动POST完成时,在第一个图标出来之后和最后一个图标出来之前,按键盘某个按键,进入相应模式:
F1/1 ---->SMS系统管理维护模式
F5/5 ---->默认引导设备列表引导维护模式,进入独立诊断模式
F6/6 ---->自定义引导设备列表引导维护模式,进入在线诊断模式
F8/8 ---->正常模式引导
在支持AIX的操作系统的机器是上,无论是否已安装AIX,都可以进入到独立诊断模式,只有安装了系统的机器可以进入在线诊断模式,诊断模式类型由系统从什么介质启动决定。
通过磁带、cdrom和网络方式启动系统,rootvg卷组不会激活,因为root卷组可能不存在(重新安装系统)。一旦进入独立诊断模式,就不能取出光盘,只能在给机器加电之后和POST完成之前才能去除光盘。
四、多用户模式启动流程
+++++++++++ROS内核初始化阶段+++++++++++++
1)首先由OCS(On-chip Sequencer)调用微处理器检查系统主板是否有问题,然后将控制权交给只读存储器(ROS),并执行系统加电自检(POST)
2)ROS初始化载入程序(IPL)检查用户自定义引导设备列表(Boot List),如果找不到自定义列表或者自定义引导设备列表不正确,就会使用默认引导列表,然后使用在引导列表中找到的第一个设备来引导。
3)到找到第一个可以引导的设备后,就检测引导设备上的第一个记录或物理扇区号(PSN:physical sector number)。如果是合法的引导记录。则把它读入内存,并附加到初始装入程序(IPL)的控制块上。然后根据引导记录中包含的“引导逻辑卷(BLV)长度和BLV的地址(BLV)在引导设备上的位置”把BLV装入到内存。
4)从引导设备中顺序的把引导逻辑卷(也就是引导镜像)读入到内存,建立RAM文件系统(RAMFS)。引导逻辑卷(BLV)由“内核、一个RAM文件系统和基本初始化设备信息(简化的ODM)组成。”
5)把控制权移交给在RAM文件系统中开始系统初始化的内核。
6)系统初始化的内核运行init程序(进程号为1),init进程继续去执行rc.boot脚本,并附带参数1
7)内核初始化阶段和硬件检测阶段结束。
++++++基本设备配置阶段(rc.boot第1阶段)+++++++
现在的情况是,系统完成硬件检测,找到BLV,简历了RAM,启动了RAM中的init进程,但是rootvg还没有激活。rc.boot第一阶段主要是完成基本的设备配置
1)RAMFS中的init进程执行引导脚本rc.boot带参数1,在这个过程中,rc.boot调用restbase命令,把引导逻辑卷(BLV)上的简化ODM数据库复制到RAMFS,如果这个操作时被,LED面板显示548.
2)然后rc.boot执行cfgmgr -f命令(配置管理器),让cfgmgr从简化的ODM数据库中读取Config_Rules类,在Config_Rules类中,属性值为1的设备都被认为是基本设备,基本设备是为访问rootvg所需的全部设备。rc.boot这个阶段执行cfgmgr来配置基本设备,以便在下一个rc.boot阶段能够激活rootvg。
以下就是这个文件的位置
顺便可以查出这个类下边phrase=1的对象:
3)在rc.boot第一个引导阶段的最后,执行bootinfo -b命令来检测最后一次引导设备,这时LED显示511.
++++++++++++rc.boot第2引导阶段++++++++++++++++++
1)rc.boot执行ipl_varyon命令激活rootvg,若这个命令和执行不成功,则显示522、554、556中的一个
2)ipl_varyon执行成功以后,用fsck -fp /dev/hd4命令检查rootvg(位于磁盘上)的根文件系统,然后把rootvg的根文件系统(/dev/hd4)安装在RAMFS的临时安装点上(/mnt),这一步失败,显示错误代码555、557
3)安装/var和/usr文件系统。如果失败,显示518.一旦安装了/var文啊进系统,就用copycore命令把默认的dump设备(/dev/hd6)里最后的dump复制到默认的副本目录(/var/adm/ras),复制完dump之后,就卸载/var文件系统。
4)运行swapon(/usr/sbin/swapon)命令来激活rootvg上基本的页面空间(/dev/hd6)
5)用mergedev命令把RAMFS中/dev目录复制到磁盘上的文件系统中,再用cp Cu* /mnt/etc/bojrepos命令吧RAMFS中用户化的ODM数据库复制到磁盘上,这里/mnt/etc/bojrepos这个路径是因为,根目录/本临时挂在到RAMFS中的/mnt这个安装点上
6)从RAMFS中卸载/var和rootvg的根文件系统/dev/hd4(挂在到/mnt)
7)在RAMFS的根文件系统所在的安装点上永久性安装rootvg(位于磁盘)的根文件系统,由newroot命令完成RAM文件系统到rootvg的文件系统的切换。root卷组中的文件系统安装点可以使用以后,就将root卷组中的/usr和/var文件系统安装到相应的安装点
8)此时没有可使用的控制台,所有的引导信息都被复制到错误日志alog中
9)退出执行rc.boot脚本,把控制权移交给root卷组中的init进程,然后释放RAM文件系统
10)位于硬盘上的init进程将执行整个启动过程的最后一部分
· 因为控制台不可用,所以输出信息都记录在alog中。
init程序读取/etc/inittab文件,如果/etc/inittab存在,则init程序在/etc/inittab中寻找默认的系统启动初始记录(记录标识符是init,第三个字段是initdefault),整个记录中包含了预先登记在文件/etc/inittab中的进程。初始记录不存在,则init进程就会要求用户从系统控制台(/dev/console)输入一个运行级别。(用户输入S、s、M、m则进入单用户模式,只有进入单用户模式才不要求/etc/inittab内容必须是完整的)
· 如果/etc/inittab不存在,init默认直接进入系统维护运行级别
· init进程每隔60秒重新读取一次/etc/inittab文件,如果init进程上次读过该文件之后,新增删了东西,这一次读取也会执行这些变化。
++++++++++++rc.boot第3引导阶段++++++++++++++++++
在/etc/inittab文件中第一条记录为initdefault,第二条记录的标识符为brc,这条记录就是指示init去执行rc.boot第3阶段。
第3阶段工作为:
1)安装/tmp文件系统
2)同步rootvg(通过执行命令#syncvg -v rootvg &),这可能会花一些时间,如果执行失败,则显示错误代码553
3)如果是正常(normal)引导,则执行cfgmgr -p2命令;如果是维护(service)模式引导,则执行cfgmgr -p3命令。cfgmgr读取ODM数据库中的Config_rules类,检查属性值是2或者是3的设备,并对其进行配置(属性值为1的设备在第1阶段就检查完了),即配置所有剩余设备。
4)用cfgcon命令配置控制台。不同的终端设备,在LED上显示的代码不同。
5)执行savebase命令把/(根)文件系统中的ODM数据库保存引导逻辑卷(BLV)中
6)退出执行rc.boot脚本,然后由init进程顺序启动/etc/inittab文件中的其他进程
五、操作系统运行级别
操作系统真正的运行级别有11个,是0-9,再加一个S、s、M、m,其中级别2表示多用户模式,S、s、M、m这写个级别表示单用户模式(维护模式)
六、init进程重读/etc/inittab文件
不论进程犹豫什么原因停止,init进程都会收到这个进程停止运行的信号,并且在/etc/utmp中记录它结束运行的原因,同时还会在文件/var/adm/wtmp中保存进程启动的历史记录。
当用户编辑了/etc/inittab文件,增加了一条记录或者修改了其中的command字段,init进程不会马上重读该文件,所增加或者是修改的进程不会被立刻创建,除非以下3个条件之一发生,新进程才能被创建——
1)init进程的子孙进程中有一个进程结束了
2)出现电源失败信号SIGPWR
3)用户用init命令发出改变系统运行级别和重新检查/etc/inittab文件的信号
其中,以上三个条件最简单的方法就是用init命令发出重新检查/etc/inittab文件的信号
#init Q
#telinit -q