Solaris启动过程详解

引导
在Sparc平台下,Solaris系统中有一个类似PC BIOS的芯片程序(EEPROM OpenBoot)负责识别分区、文
件系统和加载内核,在Solaris 2.6之后的版本中,默认的内核文件存放在/platform/`arch`/kernel/Unix
位置,`arch`指令是指明系统的硬件体系,目前一般是i86pc(Intel IA32)或sun4u(Sun UntraSparc) 。

在Intel体系中,因为没有eeprom firmware,所以系统提供了一个模拟eeprom的引导程序,来负责
内核的定位和加载,这个程序是工作在实模式下的,系统必须要给他提供一个fat12/16格式的boot分区,
在系统引导完成之后可以在/boot/solaris下找到他的配置文件 。(Solaris IA使用默认内核/kernel/unix)

整个系统启动过程如下:
===========================================================================
init 0 openboot模式 -> (引导内核,加载硬件驱动) 可以选择从cdrom引导进入维护模式
|
V
init 1 单用户模式 -> (加载/分区) 登陆进入维护模式,或按Ctrl D进入多用户模式
|
V
init 2 网络工作站模式 -> (连接网络,运行网络工作站服务) 运行/etc/rc2脚本连接网络
| |
| ->-> 启动S69inet服务,运行部分inetd网络服务
V
init 3 网络服务器模式 -> (运行各种网络服务) 运行/etc/rc3脚本启动网络服务器




<2>启动
Solaris的启动进程是按照SYS V格式控制的,启动过程分为若干个运行级别(S,1-6),当系统内核
运行完毕,加载好所有的驱动之后,就会把控制权移交给/sbin/init进程(PID:1),也就是所有进
程的父进程,然后由init读取/etc/inittab,依次执行/etc/rc1(2,3)启动脚本,最终到达inittab
中指定的默认运行级别 。rc脚本会读取/etc/rc*.d中的启动脚本,启动脚本以大写字母S开头,在rc
运行期间就会被执行,S后面的两位数字域决定启动顺序,因为启动进程之间有一定的依赖关系 (以K
开头意味着进入这个级别时,服务将会被杀掉,其余字母开头的被忽略) 。

虽然同属于SYSV系统引导方式,但是Solaris的引导过程和我们常见的Linux却有很大差别,并且和
传统Unix的init级别也略有不同 。在Linux中,系统运行级别是并行式的,也就是系统加载完内核和
mount /文件系统之后,就会直接跳转到相应的默认运行级别,而不依次执行各个级别的启动脚本 。但
在Solaris中,采取了一种串行化的引导方式,就是依次执行init 1/2/3,直到默认运行级别,在每
个级别中的所有启动脚本都会被执行 。所以在这里我以一种和传统Unix划分方式不同的说明方法,
把Solaris的启动级别称为: 1,单用户模式 2,网络工作站模式 3,网络服务器模式

下面是/etc中所有的启动运行脚本简要说明
===========================================================================
init inittab rc0 rc1 rc2 rc3 rc5 rc6 rcS init.d
init 系统启动超级进程
inittab 进程启动配置文件
rc0 - rc6 各启动级别的启动脚本
rcS 单用户模式启动脚本
init.d 启动脚本存放目录


rc0.d: eeprom OpenBoot状态,可以进入硬件维护模式,或关闭机器 。


rc1.d: 单用户模式,可以对系统进行软件维护 。
S01MOUNTFSYS加载文件系统
S10lu =当运行live update后清理系统


rc2.d: 多用户模式,启动网络工作站服务 。(最后会启动dtlogin允许图形界面工作站)
S01MOUNTFSYS
S05RMTMPFILES清空/tmp文件系统
/tmp是系统缓存文件目录,和swap分区共享空间,如果分区满的话会
对系统性能造成很大影响

S10lu =

S20sysetup设置系统初始参数

设置hostname等
S21perf = 性能记账服务(无效)
开启accton记账服务,默认无效

S30sysid.net配置基本网络参数
设置系统ip地址等

推荐阅读