本文以RED HAT LINUX9为范例介绍,其实大部分的LINUX都有相同的启动过程.
启动过程大致分为:

1)开机自检,读取MBR中的引导程序(比如,现在的GRUB,LILO引导器);
2)引导器根据用户所选择的系统,引导相应的操作系统,LINUX引导其内核程序;
3)LINUX内核负责启动系统的前期工作,加载INIT进程;(INIT是内核启动的第一个进程)
4)根据不同的运行级别,加载相应的服务;
5)最后,提示用户输入用户名和登录密码;
看看进程吧
一,init进程
init进程是系统引导运行的第一个进程,其是所有进程的祖先,其进程号(PID)永远都是"1".init进程按照
其配置文件,引导运行系统所需的其它进程.
我们看看init进程的配置文件

#more /etc/inittab 

 # 

 #inittab   This file describes how the INIT process should set up 

 # the system in a certain run-level 

 # 

 #Author:  Miquel van Smoorenburn, 

 # Modified for THS Linux by Marc Ewing and Donnie Barnes 

 # 

 #Default runlevel.The runlevels used by RHS are: 

 # 0-halt(DO NOT set initdefault to this) 

 # 1-Single user mode 

 # 2-Multiuer,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: 

 #System initialization. 

 si::sysinit:/etc/rc.d/rc.sysinit 

 10:0:wait:/etc/rc.d/rc 0 

 11:1:wait:/etc/rc.d/rc 1 

 12:2:wait:/etc/rc.d/rc 2 

 13:3:wait:/etc/rc.d/rc 3 

 14:4:wait:/etc/rc.d/rc 4 

 15:5:wait:/etc/rc.d/rc 5 

 16:6:wait:/etc/rc.d/rc 6 

 #Trap CTRL-ALT-DELETE 

 ca::ctrlaltdel:/sbin/shutdown -t3 -r now 


 pf::powerfail:/sbin/shutdown -f -h +2 "Power failure;System Shutting Down" 

 pr::12345:powerokwait:/sbin/shutdown -c "Power Restored;Shutdown Cancelled" 

 #Run gettys in standard rnlevels 

 1:2345:respawn:/sbin/mingetty tty1 

 2:2345:respawn:/sbin/mingetty tty2 

 3:2345:respawn:/sbin/mingetty tty3 

 4:2345:respawn:/sbin/mingetty tty4 

 5:2345:respawn:/sbin/mingetty tty5 
6:2345:respawn:/sbin/mingetty tty6


分析一下INITTAB文件:


inittab是作为init进程的配置文件.用于描述一些系统启动时相应的运行级别和服务进程.


可以看到,inittab文件都有一个通用格式,为:


id:runlevel:action:process


id----用于在inittab文件惟一标识一个配置信息,可以有1~4个字符组成.


runlevel----指定配置信息在哪个运行级别上运行;


action---指定该条配置信息所要发生的动作.具体有以下几个动作:


1)initdefault--指定默认运行级别;


2)sysinit--表示此类进程在boot或bootwait类进程之前运行,运行级别字段被忽略.


3)wait---指定有进入指定运行级别后运行.


4)ctrlaltdel--这个大家很熟悉,重启作用.


5)powerfail,powerwait--指定UPS断电信号发生时所运行的命令.


6)respawn---在启动后重新运行(如控制台getty)


7)process---设置启动进程所进行的命令.


运行级别,一共有0~6六个运行级别,注意级别4没有指定使用.具体运行级别,在配置文件中已给出.


技巧:


#runlevel //查看当前运行级别.


N 3


#init n    //n为运行级别,用这个命令可以转换运行级别.


看看系统初始化脚本:


inittab文件指定作用rc.sysinit作为系统初始化脚本.


#grep sysinit /etc/inittab



有兴趣的用户可以自行阅读.



linux在的独立进程与服务程序


以redhat linux 9为例,它的服务程序有两种:独立服务和受xinetd管理的服务程序.注意其实xinetd也是



作为一个独立进程来运行的.


linux中的每个服务都有相应的运行脚本,可用于设置启动,停止,重启和查询服务等信息;所有的服务脚本



都写在"/etc/rc.d/init.d"中,脚本名称和服务器名称相对应,大都有说明,大家可自己查看,


各运行级别的脚本目录所在位置为:/etc/rc.d当中可以看到以0~6加在RC的后面,构成了相应的运行级别服



务脚本目录.可进入相应级别的脚本目录,查看其有什么设置.比如,我们进入级别3有脚本目录:


这里只列出一行进行分析,可以看到每个服务目录都有一些明显的特点,前面有一个"K"代表"KILL"是指这个服务在这个级别被停止.若前面有一个"s"表示"Start",表示这个服务在这个运行级别被启动.在K或S的后面有一些数字,这是服务的序号,当启动服务时,按序号从小到大启动,当停止服务时,按序号从大到小停止.

#ls /etc/rc.d/rc3.d/ 

 K05saslauthd  K68ipsec K96pcmcia S17keytable  S55sshd



使用SHELL命令来停止或者运行服务---service



#service xinetd stop //停止运行xinetd服务 

 Stopping xinetd: 

 #service xinetd start //启动xinetd服务

技巧:有的时候我们利用LINUX进行上网时,不能联网,其实有些时候是由于LINUX防火墙的原因,我们可能关闭防火墙,使用这个命:#service iptables stop

服务启动状态的配置命令:


1.

ntsysv


2. chkconfig,这个命令功能强大,看看吧:


  查看服务启动状态:#CHKCONFIG --LIST [SERVICES]


  E.G.:


 

#chkconfig --list  //查看系统所有服务的启动状态. 

   #chkconfig --list syslog //查看syslog服务的启动状态.


  设置独立服务的启动状态:#chkconfig --level

e.g.:


#chkconfig --level 123 syslog off //表示syslog这个服务在1,2,3停止运行.