免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3328 | 回复: 16
打印 上一主题 下一主题

SA-238读书笔记17 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-11-01 13:43 |只看该作者 |倒序浏览
第13章系统启动过程

Solaris操作环境下的运行级
一个运行级用一个数字或者一个字母表现用户当前可用的资源或者服务状态的系统的定义。系统总是运行在一个运行级。

运行级有时使用init状态,因为init过程是用于在运行级之间传送的。用户可以使用init命令手动初始化运行级变化。

Solaris操作环境有8个运行级,下面进行了描述
0:关闭Solaris操作环境和显示boot PROM ok提示符用于安全的关闭系统电源。
S or s:运行所有文件系统都被装配和可理解的单用户模式
1:要求系统运行在单用户管理状态,并且所有文件系统都可用
2:要求系统运行多用户操作。多个用户可以访问系统。所有系统守护进程都运行,除了NFS服务器的守护进程
3:要求系统运行多用户操作,并且NFS资源共享可用。这是在/etc/inittab中指定的默认运行级
4:这一级别还没有起用
5:停掉Solaris操作环境,并且关闭系统电源
6:停掉系统到0运行级,然后重新启动多用户操作,或者在/etc/inittab中指定默认的运行级。

决定系统当前的运行级
要决定一个系统当前的运行级,使用命令:
# who –r
  .     run level 3     Jun 9    08:30      3    0      S

启动过程
在普通情况下,当一个系统被打开,PROM监视器运行一个快速自检程序来检测在系统上的硬件和内存。如果没有错误被找到,系统就开始自动启动过程

全部的启动过程包括下面描述的四个阶段:
。Boot PROM阶段
。启动程序阶段
。内核初始化阶段
。init阶段
书上有图,在13-6
Boot PROM阶段
下面描述了Boot PROM阶段
。PROM运行POST
boot PROM固件运行开机自检程序去检测系统的硬件和内存。

PROM显示系统识别标题,(比如模式类型,内存数量,PROM版本号,PROM序列号,网卡的mac地址和hostID)
。boot决定启动设备
。boot定位在启动设备上的bootblk上
。boot从位于启动设备上的bootblk读入内存

主要的boot程序,bootblk是装载在扇区1-15中一个boot设备

他的主要目的是读入位于在启动设备上的ufs文件系统第二个启动程序。

启动程序阶段

启动程序阶段的描述

。bootblk读入第二启动程序,ufsboot从启动设备进入内存

ufsboot是通过Solaris实用程序installboot安装记录在bootblk中的

。ufsboot定位和读入适当的两个部分的内核

内核是由两个片静态核心叫做genunix和unix组成的。Genunix是无约束平台的内核文件,而unix是指定指定平台的内核文件。

当ufsboot读入他们这两个文件到内存的时候,他们在正在运行的内核中是组合着的。

在32位系统上,两个部分的内核是位于目录/platform/’uname –m’/kernel中的
在64位系统上,两个部分的内核是位于目录/platform/’uname –m’/kernel/sparcv9中的

内核初始化阶段
内核初始化阶段的描述
。内核初始化自己并且开始读入模块

内核使用ufsboot去读文件。当他读入足够的模块去装配root文件系统,他不镜像ufsboot程序。并且继续

。内核读的设置文件叫做/etc/system
。内核启动/sbin/init进程

SunOS内核由小的,静态的core(genunix和unix)和许多动态可承载的内核模块组成。

模块可以由设备驱动,文件系统,流,也有其他类型的用于在系统中的指定任务。

包含内核代表性的内核模块位于目录/kernel和/usr/kernel。依赖于平台的模块则位于/platform/’uname –m’/kernel和/platform/’uname –I’/kernel目录

每个子目录位于这些目录是类似模块的集合之下。

下列描述模块子目录的类型包含在/kernel,/usr/kernel,/platform/’uname –m’/kernel或者/platform/’uname –I’/kernel目录
。sys:系统调用(定义为应用程序使用的接口)
。exec:可执行文件格式
。fs:文件系统类型,比如ufs,nfs和proc
。misc:混合模块(虚拟交换)
。sched:调度类(进程执行调度)
。strmod:流模块(在用户和设备驱动之间的无显著特点的连接)
。drv:设备驱动

/kernel/drv目录包含所有用于系统启动的设备驱动

目录/usr/kernel/drv是用于所有其他设备的驱动

模块是自动读入的。如果需要通过一个应用程序,同样需要每一个在启动时间或者在需求上自动读入模块。当模块不再使用的时候,就从基本内存中释放出来以用于其他需要的任务。

这个动态内核变量的优势是内核的全面长度是较小的建立更多的内存使用效率并允许单独改变和调整。
书上有图,位于13-10

设置内核
/etc/system文件是为指定的在系统启动时读入模块和参数的控制文件。默认情况下,文件中的所有行都是注释的。

改变内核的行为需要编辑/etc/system文件。改变这个文件允许系统管理员去改变内核读入模块的处理,如同做一些内核参数的性能调整。

启动程序包含一个默认的读入内核的模块的列表。可是,用户可以不考虑这个列表而直接改动/etc/system文件去控制模块。类似读入参数。

改变这个文件后,重新启动的结果
/etc/system文件明确的控制了:
。在启动的时候,为默认的模块搜索路径。
。root类型和设备
。在启动的时候,不能被自动读入的模块
。在第一次访问的时候,模块可以在启动时间强制的读入。
。以新数值代替默认内核的参数值

/etc/system文件范例
见系统吧!!!!

/etc/system文件被分成5个部分:
。moddir
设置默认读入内核模块的搜索路径。用户可以列出搜索的共同的目录,通过空格和冒号进行区分。
。root设备和root文件系统设置:
设置root文件系统类型去列出数值。默认的是rootfs:ufs
设置root设备。启动程序所在的默认的是设备的物理路径名。物理路径名是平台和依赖的设置。比如:rootdev:/sbus@1,f8000000/esp@0,800000/sd@3,0:a
。exclude
在内核初始化期间不允许读的内核模块。比如exclude:sys/shmsys
。forceload
在内核初始化期间强制读入的内核模块。比如forceload:drv/vx
当他在运行时间第一次访问服务的时候,默认的动作是自动的读内核模块
。set
改变内核参数变更系统的运做。

编辑/etc/system文件

在编辑/etc/system文件之前,用户需要建立备份的拷贝。如果用户在文件中输入错误的数值,系统将不能启动。

下面显示如何拷贝最初的/etc/system文件到一个备份文件。然后编辑/etc/system文件。
# cp /etc/system /etc/system.orig
# vi /etc/system

如果一个启动过程因为/etc/system文件出错,就输入交互式启动命令:boot –a。当需要输入系统文件名时,输入备份的文件名或者输入dev/null。一个空的设置文件。

Init阶段
启动过程的最后阶段是/etc/init阶段。在这个阶段,init启动运行启动其他过程的控制脚本。

Init进程执行rc脚本

一旦init阶段成功完成,系统登陆提示符就可以显示了。

/etc/inittab文件
当用户启动系统,或者使用init或者shutdown命令改变运行级,通过从/etc/inittab文件读的信息,来启动init守护进程。

Inittab文件为init进程定义了三个重要的条款
。系统默认的运行级
。如果中断,什么系统就启动,监视,或者重新启动。
。当系统进入新的运行级时,提取什么动作。

在/etc/inittab文件中的每行条目都有四个部分
id:restate:action:process

下面描述了在一个inittab条目中的四个部分
id:为条目定义的1到4字符识别名
rstate:条目允许的一个或多个运行级
action:进程被如何对待
process:可执行的脚本或者命令

一些用于action部分的可能的键值包括
initdefault:定义默认的运行级。当init是最初调用的,就读这个参数。使用init去决定哪个是最初的运行级。默认是运行级3
sysinit:在init尝试访问控制台之前执行的进程。Init在读inittab文件之前等待他完成。
Wait:启动进程和启动到下一个包含相同运行级的条目之前等待完成
Respawn:如果进程死了,init将重新启动他。如果进程不存在,init启动他并且继续读inittab文件。如果进程已经存在了,不需要任何动作,并且init继续读inittab文件。
Powerfail:只在如果init返回电源错误信号时执行进程。

默认的/etc/inittab文件:见书13-17。每个系统中也都有

init进程
下面描述如何使系统到默认的第三运行级
见书上图13-18
/etc/init进程读/etc/inittab文件做下面的事:
1.识别initdefault条目,默认的定义是运行级3
2.执行有sysinit动作的每个进程条目。所以指定的初始化可以在用户登陆之前发生。
3.执行每个在rstate部分是3的进程条目

在这个运行级执行的命令包括:
。/usr/sbin/shutdown:init进程只在如果系统返回电源错误信号时运行shutdown命令。
。/sbin/rcS:装配和检测/(root),/usr,/var和/var/adm文件系统
。/sbin/rc2:启动系统守护程序,使系统进入第二运行级
。/sbin/rc3:为第三运行级启动NFS资源共享
。/usr/lib/saf/sac:启动或者重新启动端口监视器和UUCP网络访问。
。/usr/lib/saf/ttymon:启动或者重新启动为登陆需要而监视控制台的ttymon进程。Terminal_type在SPARC系统上是sun。terminal_type在IA系统上是AT386。

运行控制脚本
Solaris操作环境提供一组停止和启动普通的与运行级有关的控制脚本(rc)

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

Rc脚本是同init执行去设定变量,测试环境,和调用其他启动和停止其他运行级进程脚本。
Rc脚本rc0,rc5和rc6文件都是硬链接

SunOS为兼容性考虑提供同一rc脚本组在/etc目录中。

这些脚本是到/sbin下面的rc脚本的链接文件

/etc/rc#.d目录
每个/sbin/rc脚本,都有一个相应的目录名/etc/rc#.d

/etc/rc#.d目录包括为这个运行级启动和关闭进程的附加的脚本
文件起始是K是中断(kill)一个系统进程。
文件其实是S则是启动一个系统进程。

/etc/init.d目录
位于/etc/init.d目录中的运行控制脚本。这些文件硬链接到在/etc/rc#.d目录中相应的运行控制脚本。

这样做的好处是通过root运行/etc/init.d目录中的运行脚本时分开每个运行级的脚本。用户可以关闭或者启动一个进程而不必改变系统运行级。

运行控制脚本和功能的统计
/sbin/rc0:运行/etc/rc0.d/K*脚本去执行下列任务
停止系统服务和守护进程
中断所有正在运行的进程
卸载所有的文件系统
/sbin/rc1:运行/etc/rc1.d脚本去执行下列任务
停止系统服务和守护进程
中断所有运行的进程
卸载所有的文件系统
/sbin/rc2:运行/etc/rc2.d脚本去执行下列任务
装配所有的本地文件系统
从/tmp目录中删除每个文件
设置系统帐号
设置默认路由
启动大部分的系统守护进程
/sbin/rc3:运行/etc/rc3.d脚本可以执行下列任务
清除/etc/dfs/sharetab文件
启动nfsd和mountd
/sbin/rc5:运行/etc/rc0.d/K*脚本可以执行下列任务
/sbin/rc6:kill所有活动的进程和卸载文件系统
/sbin/rcS:运行/etc/rcS.d脚本是系统到运行级S
建立微型网络
如果必要,装配/usr
设定系统名
检测/(root)和/usr文件系统
装配伪文件系统(/proc和/dev/fd)
为重新设置启动重建设备条目
在单用户模式中,装配其他文件系统

建立一个新的运行控制脚本。
用户可以建立新脚本去启动和停止附加的进程或者服务,用来定制系统

比如,为在网络服务停止之前不得不手动启动的数据库服务器排除需要的条件,建立一个脚本一旦适当的网络服务启动,就自动的启动数据服务器

用户也可以建立其他脚本去中断这个服务和在网络服务停止之前关闭数据库服务器。

添加运行控制脚本去启动和停止服务,要在/etc/init.d目录中建立脚本,并且链接进适当的/etc/rc#.d目录

可以通过看各个运行级的/etc/rc#.d目录中的README文件获取更多的信息。

下面描述了如何建立运行控制脚本:
1.在/etc/init.d目录中建立脚本
# vi /etc/init.d/文件名
# chmod 0744 /etc/init.d/文件名
# chown root:sys /etc/init.d/文件名
2.建立对/etc/rc#.d目录适当的连接
# cd /etc/init.d
# ln 文件名 /etc/rc#.d/S###文件名
# ln 文件名 /etc/rc#.d/K###文件名
3.使用ls命令检测脚本链接的情况
# ls /etc/init.d /etc/rc#.d /etc/rc#.d
4.使用下列命令测试文件名
# /etc/init.d/文件名 start

系统关闭程序

用户在已知电源会关闭或者移动系统到一个新的位置的时候,可以关闭Solaris操作环境以执行管理员任务或者维护活动。

Solaris操作环境需要有秩序的关闭程序,用来停止进程,将内存的数据保存到磁盘和卸载文件系统。

当然,根据工作的类别,用户可以决定如何关闭系统

下面是不同类别的系统关闭
。关闭系统到单用户模式
。关闭Solaris操作环境,显示ok提示符
。关闭系统到电源关闭
。关闭系统并且自动重新启动到多用户模式

用于关闭系统的可用命令包括:
。/sbin/init
。/usr/sbin/shutdown
。/usr/sbin/halt
。/usr/sbin/poweroff
。/usr/sbin/reboot

/sbin/init命令
用户可以使用init命令去关闭,掉电或者重新启动系统。可是,这个命令不能警告用户系统即将关闭,并且没有延迟
关闭系统到单用户模式
# init S
停止Solaris操作环境并显示ok提示符
# init 0
关闭系统电源
# init 5
关闭系统并且重新启动到多用户模式
# init 6

/usr/sbin/shutdown命令
shutdown命令是一个调用init去关闭,掉电或者重新启动的脚本。他不能执行rc0的kill脚本去关闭进程。不象init命令,shutdown命令做下列操作:
。通报登陆进系统的用户即将关机
。默认延迟60秒
。给你可以向用户描述理由的能力

命令格式
shutdown [-y] [-g 延迟时间] [-I init状态] [描述信息]
-y选项是用于提前回答全部shutdown问题。
-g 延迟时间允许root改变默认60秒的数字
-i init状态指定init状态,默认是S

/usr/sbin/halt命令
halt命令执行一个直接的关闭。他不执行rc0的kill脚本,他不能通知登陆用户,并且没有延迟。

Halt命令关闭Solaris操作环境并显示ok提示符
# halt

/usr/sbin/poweroff 命令
poweroff命令执行一个直接的关闭。他不执行rc0的kill脚本。不通知登陆用户,没有延迟。

Poweroff命令直接到关闭系统电源的状态
# poweroff

/usr/sbin/reboot命令
reboot命令执行一个直接的关闭,并且使系统自动的重新启动到运行级3。Reboot命令不同于init 6因为他不执行rc0的kill脚本,并且没有对用户的通知

# reboot

论坛徽章:
0
2 [报告]
发表于 2002-11-01 14:26 |只看该作者

SA-238读书笔记17

好,谢谢。你这17篇是概要,还是全部翻译呀?

论坛徽章:
0
3 [报告]
发表于 2002-11-01 14:38 |只看该作者

SA-238读书笔记17

应该是全部的吧,因为我发现少写点逻辑都不够完整。书样的用词还是很严谨的

论坛徽章:
0
4 [报告]
发表于 2002-11-01 15:06 |只看该作者

SA-238读书笔记17

太佩服!

论坛徽章:
0
5 [报告]
发表于 2002-11-01 15:20 |只看该作者

SA-238读书笔记17

还好了!!!

论坛徽章:
0
6 [报告]
发表于 2002-11-01 15:25 |只看该作者

SA-238读书笔记17

球球,等你把三本读书笔记写完了,我就考试去了。哈哈!太谢谢你了

论坛徽章:
0
7 [报告]
发表于 2002-11-01 16:37 |只看该作者

SA-238读书笔记17

好人阿.又是sun的代理,有极多调试sun设备的机会,很快就会成为专家阿.
真幸福阿.羡慕ing.

论坛徽章:
0
8 [报告]
发表于 2002-11-01 16:45 |只看该作者

SA-238读书笔记17

下面引用由mynix2002/11/01 04:37pm 发表的内容:
好人阿.又是sun的代理,有极多调试sun设备的机会,很快就会成为专家阿.
真幸福阿.羡慕ing.
是你吗?
那不是有很好的机会!

论坛徽章:
0
9 [报告]
发表于 2002-11-01 17:06 |只看该作者

SA-238读书笔记17

厉害!!!!

论坛徽章:
0
10 [报告]
发表于 2002-11-01 17:14 |只看该作者

SA-238读书笔记17

太夸张了吧,你写得比我看的都快!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP