分享
 
 
 

Solaris系统的启动和关机

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

Solaris 2.x 采用了基于 UNIX 系统 System V Release 4.0 标准的灵活的启动过程 , 使得很容易产生和定制在各个主机和系统上都通用的启动和关机过程,这与 Solaris 1.x 所用的简单的 BSD 风络的启动过程形成了对比,后者缺少针对不同的系统状态的启动脚本的不同组织形式。本章的目的是向读者介绍一些基本术语和初始化参数,它们在将 Solaris 系统引入到单用户和多用户运行等级或者 init 状态的过程中扮演了重要角色,其中 init 状态是非常独特的操作状态, init 状态间的切换由 init 进程管理。阅读本章后, Solaris 2.x 的管理员们在诊断他们自已系统的启动和关机过程时就会觉得有些自信了,并且在升级 Solaris 1.x 系统时,会对启动时各过程的顺序和之间的依赖关系有清楚的理解。

在许多方面, Solaris 的启动和关机于许多其它系统有相似性,然而,认识和理解 Solaris 操作系统于其它服务器不同的特性也是非常重要的。 SPARC 硬件的一个重要的功能是称为 OpenBoot 的固件监视系统,它负责启动前的一些重要任务:

· 通过键入下面的字符启动 Solaris 操作系统 :

ok boot

在 OpenBoot 提示符下 , 它将启动 Solaris 内核 ( 在 Solaris x86 上, boot 命令必须通过 Primary Boot Subsystem 菜单执行 )

· 设置系统配置参数,如启动设备,它可以是几个硬盘之一(由设备的全路径名确定),或者是网络上的一台其它主机,也可以是一个 CD-ROM 驱动器。

· 通过执行下面这条命令监测网络流量 :

ok watch-net

在 OpenBoot 提示符下运行

· 对系统设备执行简单的诊断和测试 ( 例如,检测 SCSI 总线的终结状态,或者执行称为上电自检的 POST ( Power-On Self Test POST )检测 )

和许多 Linux 版本带的 LILO Linux 加载器不一样, OpenBoot 不只是一个简单的操作系统加载器,它还允许地启动进程开始前写入、加载和运行用基于堆栈的 Forth 编程语言写的程序,当为一个大企业定制服务器时,常要求在启动时显示公司的标志而不是缺省的 Sun 标志,这时, OpenBoot 的这一特性就非常有用了,可以生成一个用合适的象素构成的 Forth 数组,然后运行 oem-logo 命令。另外,在单用户和多用户 init 状态中,也可以在启动后对变量的值进行设定,这可以通过以超级用户的身份运行 eeprom 命令实现。

例如, eeprom 可以用来将启动时自检的 RAM 改成 64M :

L 4-3

server# eeprom selftest-#megs=64

在 Solaris x86 系统中,固件不直接支持 eeprom 这样的功能 : 每个 PC 厂商有不同的 BIOS 系统,使得很难做到这一点, 做用替代,用 bootenv.rc 文件中的变量集仿真内存。

要想看 OpenBoot 为你的系统中的固件发布的信息,可以下面这一命令: :

L 4-4

ok banner

SPARCstation 10, Type 5 Keyboard

ROM Rev. 2.4, 64 MB memory installed, Serial #6745644

Ethernet address 6:3:10:a:cc:4a HostID 5767686

如果 OpenBoot 的提示符不是 ok ( 如,它显业为 >> ) ,那么只需简单地键入 n 回到 ok 提示符:

L 4-5

>>

n

ok

Solaris 操作系统的第二个重要特性是通过高效的内核和用户程序模式设计,达到 up-time 最大化的目的。在一些非 Solaris 服务器的环境中,每次安装一个新应用时必须重起系统,或者需要重新配置内核。对 Solaris 系统来说,只在极少的情况下才需重起系统,因为应用程序从逻辑上与系统配置选项是分开的,许多系统级的配置选项可以在超级用户的 shell 中设置,例如,许多 TCP/IP 选项可以用下面的命令动动修改:

L 4-6

server# ndd /dev/tcp

在一些比较新的硬件配置中,甚至不需要重起就可以安装新的硬件,这些优点可以减轻系统管员的工作,因此受到新的 Solaris 管理员的欢迎。

(1) 系统 V 启动过程 从 OpenBoot 启动后, Solaris 有几个不同的操作模式,称为“运行等级”或“ init 状态”,之所以这么叫是因为常用 init 命令来改变运行等级,当然也可以用 init-wrapper 脚本(如关机)。这些 init 状态可以是单用户的也可以是多用户的,常常每一个状态都代表不同的管理目的,而且是完全不相关的(也就是说,一个系统任何时候只能在一个 init 状态上)。通常,一个设计成需不定期开机的 Solaris 系统将完成一系列预先定义好的步骤,以便启动为提供基本系统服务、主要的用户服务和可选应用服务所需的所有软件程序。这些服务一般只在 Solaris 系统运行在多用户状态时才提供,它们都通过运行控制 ( rc ) shell 脚本初始化。通常,在 Solaris 安装过程中会为管理员自动生成一个运行控制脚本,然而,如果你想安装第三方软件(比如数据库服务器),就需要在 /etc/init.d 目录下生成你自已的运行控制脚本,以便在系统启动时能自动加载这些服务。本章后面将全面介绍这个过程。

如果因为某些原因(例如,定期的电源损耗)系统需要断电或切换到一个特殊的管理模式来执行诊断测试,也可依据一系列预先定义好的控制脚本来杀死各个服务并保存用户数据。保证这些事件的执行顺序非常重要,因为这样才能保证用户数据的完整性。例如,对数据库服务器的操作通常关系到服务器端的写数据进程和后台的监听进程之间的通信,监听进程负责接受新的信息存储请求。如果这个后台进程没有在写数据进程之前关闭,它可能从网络客户端继续接受数据并将它存在一个已经被数据库关闭的缓存里,这将导致数据库以一种不协调的状态关闭,很可能会引起数据损坏或者记录丢失。图 4 - 1 说明了这个过程。 Solaris 管理员应利用他们的 shell 脚本知识严格管理系统的关机过程,就象利用运行控制脚本管理系统启动过程那样,这一点非常重要。

管理员应注意三种类型的启动方式。除了在超级用户 shell 下用下面命令发起的正常重起过程

L 4-7

server# shutdown

重配置启动关系到在 /dev 和 /devices 目录下重新组织设备信息,恢复启动关系到在系统对控制台输入的命令不做响应时对毁坏的文件进行保存和分析。在早年的 SPARC 系统中,当有新的硬盘加入系统时,常需要重新配置启动,在新一些的系统中就可能不需要这么做了,比如 E450 就有 hot-swapping 功能。在超级用户 shell 下,在发出 shuddown 命令前输入同的命令就可以执行重配置启动:

L 4-8

server# boot -r

at the OpenBoot monitor prompt, or by issuing the command:

server# touch /reconfigure

虽然在一个巨型系统中,硬件故障、内核模块冲突和不正确的内核参数时有发生,但恢复启动在 Solaris 系统中极少用到。如果在系统中发生了冲突经常会用堆栈跟踪,它利用内核的诊断器( kadb )可以提供跟踪系统错误原因的重要线索。

运行等级 虽然 Solaris 有八个 init 状态,但在正常操作中管理员只用得到其中的五个,它们是:

· 运行等级 S 这是一个用于系统管理任务和修复被损坏的文件系统的单用户 init 状态,可用这个命令 :

server# /usr/sbin/fsck

· 运行等级 2 除了 NFS exported network resources ,这个运行等级第一次转入多用户状态。

· 运行等级 3 在这个运行等级下,所有的用户都可以登录,并可利用所有系统和 NFS 网络资源。

· 运行等级 6 这个运行等级将停止操作系统运行并开始重起系统。

· 运行等级 0 在这个运行等级下操作系统将关机并确保可安全地关电。

在早一些的 SPARC 系弘中,要想安装新的硬件,比如磁盘驱动器、外设或内存模块,必须先让系统进入运行等级 0 ,但象 E450 这样新一些的系统,当新硬盘“热交换”到特定的驱动上去时可以继续在多用户 init 状态下运行。这也就是说,这些机器可能根本用不着进行运行等级 6 ,而且,连续开机几个月的状况也并不少见。

用户可以很容易地发现系统是在单用户运行等级 0 、 S 和多用户运行等级 3 ,运行等级 S 下将显示 Bourne shell 的缺省提示符 :

L 4-10

#

运行等级 0 将显示 OpenBoot 的提示符 :

L 4-11

ok

运行等级 3 显示如下提示:

L 4-12

server console login:

要想确定系统当前的运行等级,也可用下面的命令:

L 4-13

server# who -r

who 命令的输出也可以通过管道过滤去执行其它命令,具体命令决定与当前的运行等级,例如,如果一个数据库应用要求在本地服务器上有 NFS 空间,如果当前的运行等级不是 3 ,可以在数据库的初始化脚本中快速地查一下当前的运行等级:

L 4-14

#!/bin/sh

# Determine run-level

set ‘/usr/bin/who -r'

# Check third argument for current run-level

if [ $3 != "3" ]

then

echo 'Error: NFS services are not available under run level 3.'

echo 'NFS Volumes must be available to run this application.'

exit

fi

# else execute database initialization here

在表 4 - 1 中列出了所有运行等级,以及它们各自的运行控制脚本目录。

运行等级

描述

用户状态

运行控制脚本目录

0

硬件管理模式

通过控制台访问

/etc/rc0.d

1

系统管理状态,只可访问有根文件系统

单用户

/etc/rc1.d

2

第一个多用户状态,可访问 NFS 资源

多用户

/etc/rc2.d

3

可访问 NFS 资源

多用户

/etc/rc3.d

4

用户定义的状态

没有特别规定

N/A

5

关机时的固件状态

通过控制台访问

/etc/rc5.d

6

操作系统停止运行

单用户

/etc/rc6.d

S

执行管理任务和修复被破坏的系统文件

通过控制台访问

/etc/rcS.d

各个启动阶段 对于大多数系统来说,缺省的运行等级是 init 3 ,它允许多个用户登录,并可运行各种程序,包括 NFS ( network research services ),然而,要从 OpenBoot 转入这个状态需要经过一系列预先规定的 init 状态转移,从单用户( 1,S )到多用户 (2 , 3) 运行状态,图 4 - 2 给出了这个转移过程。在这一节中,我们将研究在这些运行等级中系统的相关工作。

Solaris 软件环境提供了一系列详细的运行控制脚本来控制运行等级的转换,我们将逐个地研究这些控制脚本,并将那些对以前的 BSD 风格的 Solaris 1.x 控制脚本所做的改进和创新部分用加亮方式标出。每一个运行等级都在 /sbin 目录下有一个相关的 rc 脚本,它们也分别符号链接到 /etc 目录 : rc0 , rc1 , rc2 , rc3 , rc5 , rc6 , rcS . /sbin/rc0 的作用有:

· 如果 /etc/rc0.d, 这个目录存在的话,执行这个目录下的所有脚本。

· 停止所有系统服务和活着的进程,用 /usr/sbin/killall 和 /usr/sbin/killall 9 对付那些难处理的进程

· 用 /sbin/sync 同步所有 mount 的文件系统

· 用 /sbin/umountall 卸载所有 mount 的文件系统

/sbin/rc5 和 /sbin/rc6 都符号链接到 /sbin/rc0 ,因此不需要分别对待,

/sbin/rc1 负责执行 /etc/rc1.d 目录下存在的所有脚本。这将终止所有系统服务和活着的进程,用 /usr/sbin/killall 和 /usr/sbin/killall 9 对付那些难以处理的进程。 /etc/rc0 和 /etc/rc1 之间的不同在于后者在关闭所有多用户状态下的进程后将系统引入单用户状态,但并不卸载所有文件系统。

在运行等级 2 中, /sbin/rc2 执行 /etc/rc2.d 目录下的所有脚本,将系统引入第一个多用户状态,因此,所有在 /etc/vfstab 下列出的文件系统都被 mount ,磁盘引用和文件系统目志被打开(如果已经配置好的话),编辑了一半的文件将被保存, /tmp 目录将被清空并允许系统计帐和初始化许多网络服务,表 4 - 2 详细列出了这些服务。

在运行等级 3 中, /sbin/rc3 将执行 /etc/rc3.d 目录下所有脚本文件,并将系统引入最终的多用户状态。这里的服务主要于网络资源的共享有关,如 NFS ,但 Solstice Enterprise Agents 和其它基于 SNMP 的系统可能不从这里加载。 /sbin/rcS 执行所有在 /sbin/rcS.d 目录下的脚本,并将系统引入单用户运行等级。如果系统发现了一个网络,还将建立最小网络配置,否则将报告接口错误。如果那些主要的系统文件系统可用的话,还将 mount 这些文件系统,并设置系统的名字。

在 Solaris 1.x 下有两个主要的 BSD 风格的脚本 : /etc/rc 和 /etc/rc.local 。通常,由经销商提供的程序将从 /etc/rc 初始化,用户定义的和本地安装的程序则从 /etc/rc.local 执行。例如, /etc/rc 负责 mount 文件系统、允许引用和加入交换空间、开始 Internet superdaemon ( inetd ) ,而 /etc/rc.local 则负责以后安装的一些服务,如 web 服务器和认证服务以及打印服务。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有