三种不同的启动方式之sysvinit

上一篇文章讲到了系统从开机到内核加载的过程,本文继续接着讲用户运行模式启动的过程。

当内核加载之后必须要运行用户程序才能是系统变为可用,现在一般有三种init系统:

1.传统的sysvinit方式缺点:启动较慢,适用于服务器和PC,不适合于移动端。

sysvinit首先会去读取系统的配置文件/etc/inittab。/etc/inittab的语法是利用冒号(:)将每条设置语句分割成四个字段,每个字段的含义如下:

[设定项目]:[run level]:[init的动作行为]:[执行命令或者脚本]

1.设定项目:最多四个字符,代表init的主要工作项目,只是一个简单的说明;

2.run level:该项目在哪些run level地下执行的意思,如果是123则代表在run level 1,2,3都会执行,注意有些行为和 run level无关,如sysinit、boot、bootwait;

3.init的动作行为:

init动作行为 说明

initdefault指定系统启动之后进入的run level,如果没有指定那么需要在控制台手动输入

wait在进入指定的run level之后立即执行,init脚本会在它结束之后执行。

ctrlaltdel当收到SIGINT信号时执行的动作。

respawn该脚本在终止之后会立即重启。

sysinit、boot、bootwait等action将在系统启动时无条件运行,而忽略其中的runlevel。其余的action(不含initdefault)都与某个runlevel相关。更多的信息请参考man inittab。

4.执行指令或者脚本:表示在相应的条件满足的时候需要执行的指令或者脚本。

下面是inittab文件## inittab This file describes how the INIT process should set up# the system in a certain run-level.# Default runlevel. The runlevels used by RHS are:# 0 – halt (Do NOT set initdefault to this)# 1 – Single user mode# 2 – Multiuser, without NFS (The same as 3, if you do not have networking)# 3 – Full multiuser mode# 4 – unused# 5 – X11# 6 – reboot (Do NOT set initdefault to this)#id:3:initdefault:

sysvinit使用运行级别来定义“预定的运行模式”从而实现不同情况下实现不同的初始化,不同模式下需要初始化启用的进程和需要初始化的准备是不一样的,用户只需要指定需要进入哪种模式,sysvinit 将负责执行所有该模式所必须的初始化工作。上面的语句设定系统的启动级别是3.# System initialization.si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6

。而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。常见的守护进程有:amd:自动安装NFS守护进程  apmd:高级电源管理守护进程  arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库  autofs:自动安装管理进程automount,与NFS相关,依赖于NIS  crond:Linux下的计划任务的守护进程  named:DNS服务器  netfs:安装NFS、Samba和NetWare网络文件系统  network:激活已配置网络接口的脚本程序  nfs:打开NFS服务  portmap:RPC portmap管理器,它管理基于RPC服务的连接  sendmail:邮件服务器sendmail  smb:Samba文件共享/打印服务  syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的脚本  xfs:X Window字型服务器,为本地和远程X服务器提供字型集  Xinetd:支持多种网络服务的核心守护进程,可以管理wuftp、sshd、telnet等服务这些守护进程也启动完成了,rc程序也就执行完了,然后又将返回init继续下一步。

以下是/etc/rc.d/rc脚本,是通过此脚本传入运行级别参数间接调用/etc/rc.d/rc$RUNLEVEL.d下面的脚本文件的。

argv1="$1"//将参数1,即脚本运行级别存入argv1变量

累死累活不说,走马观花反而少了真实体验,

三种不同的启动方式之sysvinit

相关文章:

你感兴趣的文章:

标签云: