SA 239 翻译 第九章 执行启动和关闭程序( 三 )


在你编辑/etc/system文件之前,你应该做一个备份 。如果你在这个文件里输入一个错误的值 。系统可能不能启动 。
下面的例子显示怎样做一个原始的/etc/system文件的备份,并编辑/etc/system文件 。
# cp /etc/system /etc/system.orig
# vi /etc/system
如果一个启动进程因为/etc/system文件的错误而失败了,使用交互式启动命令:boot –a 。当你被要求输入一个system文件名的时候,输入你的备份的system文件的名称,或/dev/null为一个空的配置文件 。
Init 阶段
系统启动进程的最后阶段是init阶段 。在这一阶段期间,init守护进程启动运行控制(rc)脚本,启动其他进程 。Init守护进程是一个通用程序 。它的主要角色是从存储在/etc/inittab文件中的信息创建进程 。
Init守护进程执行系统启动(rc)脚本,依次,执行一系列其他脚本 。
Init接成功完成之后,默认的行为是显示系统命令行登陆符或GUI登陆窗口 。
/etc/inittab文件
当你启动一个系统或使用init或shutdown命令改变运行级别时,init守护进程通过读取/etc/inittab文件中的信息,停止进程,启动程序,或执行二者,
inittab文件为init进程定义了三个重要的条目:
系统默认运行级别 。
系统进入一个新的运行级别时要采取的动作
启动,监视,在终止后重启的进程
/etc/inittab文件中的每一行条目都包含下面的四个域:
id :rstate :action :process
注意:从rc脚本输出的信息是直接指向/dev/msglog文件的 。Solaris 8 OE及以前的版本,所有这些信息都被写到/dev/console文件 。/dev/msglog文件常常被用做系统启动或后台应用信息输出的收集 。
Action域关键词
Initdefault :标识默认的运行级别,当init程序被初始调用的时候读取 。Init程序决定初始进入哪一个运行级别时使用 。默认是运行级别3 。
Sysinit :在init程序企图访问控制台之前(在控制台登陆提示符之前)执行这个程序 。Init进程继续读取inittab文件之前,等待这个进程的完成 。
Wait :在移动到同一运行级别的下一条之前启动一个进程并等它完成 。
Respawn :如果进程死掉了,init进程重启它 。如果进程不存在,init启动它并继续读取inittab文件 。如果程序不存在,不需要任何动作,init进程继续读取inittab文件 。
Powerfail :仅仅init进程收到一个电源失败信号的时候执行这个进程 。
警告:如果rstate域是空的,并且initdefault行被使用,rstat域被译为0123456,并且init进程默认进入运行级别6 。这讲引起系统连续重启 。
接下来将按顺序描述inittab文件每一行:
1. 初始化流模块
2. 配置套接字传输提供者
3. 初始化文件系统
4. 定义默认运行级别
5. 描述一个电源失败shutdown
6. 定义一个单用户模式
7. 定义运行级别0
8. 定义运行级别1
9. 定义运行级别2
10. 定义运行级别3
11. 定义运行级别5
12. 定义运行级别6
13. 定义到firmware的转换
14. 定义到power off的转换
15. 定义到reboot的转换
16. 初始化服务访问控制器
17. 初始化ttymon端口监视器,放置一个命令行提示符到控制台
init进程

init程序读取/etc/inittab文件做接下来的事情:
1. 标识initdefault条目,定义默认运行级别3 。
2. 执行在action域有sysinit的任何进程条目以至于任何指定的初始化能够在用户登陆前发生 。这包括/sbin/rcS的执行,它挂载并检查/(root),/usr,/var和/var/adm文件系统 。、
3. 执行在rstat域有3和action域有一个合适的关键词(同默认的运行级别3三匹配的关键词)的任何进程条目 。
在这个运行级别执行的命令包括:
/usr/sbin/shutdown – 仅仅在系统收到一个电源fail信号后init进程运行shutdown命令

推荐阅读