初始化阶段

  1. 内核启动 /etc/init 守护进程(PID 为 1)。

  2. /etc/init 守护进程启动负责启动和停止服务的 svc.startd 进程。

  3. /etc/init 守护进程使用名为 /etc/inittab 的文件将系统引导至该文件中提到的适当运行级别。

传统运行级别
运行级别指定特定服务和资源可供用户使用的状态。

0         - system running PROM monitor (ok> prompt)
s or S    - single user mode with critical file-systems mounted.(single user can access the OS)
1         - single user administrative mode with access to all file-systems.(single user can access the OS)
2         - multi-user mode. Multiple users can access the system. NFS and some other network related daemons does not run
3         - multi-user-server mode. Multi user mode with NFS and all other network resources available.
4         - not implemented.
5         - transitional run level. Os is shutdown and system is powered off.
6         - transitional run level. Os is shutdown and system is rebooted to the default run level.

启动 PROM 阶段

  1. 启动 PROM 运行开机自检 (POST) 以测试硬件。

  2. 开机PROM显示以下信息的banner
    型号
    处理器类型
    内存
    以太网地址和主机 ID

  3. Boot PROM 读取 PROM 变量 boot-device 来确定引导设备。

  4. Boot PROM 读取主引导程序(bootblk)[sector 1 to 15] 并执行。

引导程序阶段

  1. bootblk将二级引导程序ufsboot加载到内存中。

  2. ufsboot 读取并加载内核。
    内核由两部分组成:

  • unix(特定于平台的内核)
  • genunix(独立于平台的内核)
  1. ufsboot 将这2个内核合并成一个完整的内核并加载到内存中。
on  it road.com

内核初始化阶段

1.内核读取配置文件/etc/system。

  1. 内核初始化自身并加载内核模块。
    这些模块通常位于 /kernel 和 /usr/kernel 目录中。
    (平台特定的驱动程序在 /platform/‘uname -i‘/kernel 和 /platform/‘uname -m‘/kernel 目录)
Solaris 10 SPARC 引导过程

SPARC 平台的引导过程包括 5 个阶段,如下图所示。
基于 SPARC 和基于 x86/x64 的 Solaris 操作系统的引导过程略有不同。

svc.startd 阶段

  1. 内核启动 svc.startd 守护进程后。
    svc.startd 守护进程根据运行级别执行 /sbin 目录中的 rc 脚本。

rc脚本

现在,每个运行级别在 /sbin 目录中都有一个关联的脚本。

# ls -l /sbin/rc?
-rwxr--r--   3 root     sys         1678 Sep 20  2012 /sbin/rc0
-rwxr--r--   1 root     sys         2031 Sep 20  2012 /sbin/rc1
-rwxr--r--   1 root     sys         2046 Sep 20  2012 /sbin/rc2
-rwxr--r--   1 root     sys         1969 Sep 20  2012 /sbin/rc3
-rwxr--r--   3 root     sys         1678 Sep 20  2012 /sbin/rc5
-rwxr--r--   3 root     sys         1678 Sep 20  2012 /sbin/rc6
-rwxr--r--   1 root     sys         4069 Sep 20  2012 /sbin/rcS

每个 rc 脚本运行相应的 /etc/rc?.d/K* 和 /etc/rc?.d/S* 脚本。
例如,对于运行级别 3,以下脚本将由 /sbin/rc3 执行:

/etc/rc3.d/K*
/etc/rc3.d/S*

启动和停止运行脚本的语法是

S##name_of_script - Start run control scripts
K##name_of_scrips - Stop run control scripts

注意大写中的 S 和 K。
以小 s 和 k 开头的脚本将被忽略。
这可用于禁用该特定运行级别的脚本。

日期:2020-09-17 00:15:27 来源:oir作者:oir