Chinaunix首页 | 论坛 | 博客
  • 博客访问: 730603
  • 博文数量: 140
  • 博客积分: 5097
  • 博客等级: 大校
  • 技术积分: 991
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-05 19:13
文章分类

全部博文(140)

文章存档

2018年(1)

2015年(5)

2014年(5)

2013年(2)

2011年(16)

2010年(6)

2009年(9)

2008年(45)

2007年(26)

2006年(25)

分类: LINUX

2011-10-12 21:14:10

今天在学习Linux启动流程的时候,发现了/etc/inittab这个文件里面的内容和以前的版本相差很多,在中,这个文件中只能设置运行的等级了,其它的相关设置全部移动到/etc//里面了。经查询才知道,红帽使用新的Upstart启动服务来替换以前的init。 
我们可能通过man inittab来查看

DESCRIPTION 
       The /etc/inittab file was the configuration file used by the original System V init(8) daemon.

       The Upstart init(8) daemon  does  not  use  this  file,  and instead  reads  its  configuration  from files in /etc/init. 
       See init(5) for more details.

UpStart: 基于事件的启动系统 
Sysvinit:基于结果的启动系统

 

SysVinit守护进程(sysvinit软件包)是一个基于运行级别的系统,它使用运行级别(单用户、多用户以及其他更多级别)和链接(位于/etc /rc?.d目录中,分别链接到/etc/init.d中的init脚本)来启动和关闭系统服务。Upstart init守护进程(upstart软件包)则是基于事件的系统,它使用事件来启动和关闭系统服务。

几个很重要的定义 
event: 事件, 是指系统状态的一种改变,这种改变会被通知给init进程。举例来说,boot loader会触发startup事件,系统进入runlevel 2的时候会触发runlevel 2事件,某个文件系统被挂载时会触发path-mounted事件, USB设备的插拔也都会产生相应的事件。这些时间会被通知给init进程,然后init进程来决定系统如何处理这些事件。 
job: 作业,一项作业是init进程读入的一系列指令。你可以使用initctl start或initctl stop命令来开始或停止某项作业,这是调用作业的一种方式。另一种方式是当系统被告知发生什么事件event后,运行该事件所对应的作业。可用sudo initctl list命令列出所有系统作业的运行状态。 
task: 任务, a job that performs its work and returns to a waiting state when it is done. 中文是一种完成指定工作后进去等待状态的作业。 
service: 服务,a job that does not normally terminate by itself. 举个例子来说, gettys 是以服务来实现的。 init进程监视所有服务,并在服务失败的时候重启服务。

原有的System V init启动过程的缺点是,它基于包含了大量启动脚本的runlevel目录。而Upstart则是事件驱动型的,因此,它只包含按需启动的脚本,这将使启动过程变得更加迅速。经过良好调优并使用Upstart启动方式的Linux服务器的启动速度要明显快于原有的使用System V init的系统。 
为了使Upstart更容易理解,它仍然使用了一个init进程。所以,你仍然可以看到/sbin/init,它是所有服务的根进程。 
有一个好消息,那就是RHEL 6对启动过程的改变很少。你还是可以处理那些在目录/etc/init.d中的包含服务脚本的服务,所以runlevel的概念一直存在。因此,在使用yum增加一个服务后,照样可以像以前那样使用chkconfig命令激活它。此外,仍然可以用service命令来启动它。

所有先前由/etc/ inittab中处理的条目,现在都在目录/etc/init中以单个文件的形式存在(不要与目录/etc/init.d混淆,/etc/init.d中包含的是服务脚本)。下面列举几个要使用的脚本:

/etc/init/rcS.conf 
通过启动大部分的基本服务来对系统进行初始化的设定 
  
/etc/init/rc.conf 
对启动各自的运行级别(runlevel)的设定 
  
/etc/init/control-alt-delete.conf 
定义当用户按“control-alt-delete”三个键时的系统行为 
  
/etc/init/tty.conf 
and 
/etc/init/serial.conf 
定义了系统处理终端登录的方式 
 

除了这些通用的文件,在文件/etc/sysconfig/init中还有一些额外的配置。在这里,定义了一些参数来决定启动信息的格式。除了那些不很重要的设置,有三行我们需要注意: 
AUTOSWAP=no 
ACTIVE_CONSOLES=/dev/tty[1-6] 
SINGLE=/sbin/sushell 
其中,第一行的值你可以设定为Yes,这样可以让你的系统能够自动检测交换分区。使用此选项意味着你再也不必在/etc/fstab中挂载交换分区了。在ACTIVE_CONSOLES这一行决定了虚拟控制台的创建。在大多数情况下,tty[1-6]工作得很好,同时这个选项也允许您分配更多或者更少的虚拟控制台。但是要注意,不要使用tty [1-8],因为tty7是专门为图形界面预留的。

最后很重要的一行是single= /sbin/sushell。这一行可以有两个参数:/sbin/sushell(系统默认的参数),它会在启动单用户模式时将你带入一个root的 shell,参数/sbin/sulogin会在单用户模式启动之前弹出一个登录提示,你必须输入root账户的密码才能继续下去。

RHEL 6通过将System V替换为Upstart加快了其启动速度。采用了这项新服务,红帽仍然可以向下兼容地保持以前的管理方式,这就意味着,作为管理员,你仍可以使用原来的方式来管理服务。

阅读(2096) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~