Linux的启动过程:
POST上电自检--->BIOS进行启动选择--->读取MBR进行系统启动--->加载内核--->执行init
1:POST上电自检,检查输入输出设备是否正常;
2:BIOS,进行启动顺序的选择;
3:MBR,前446个字节存放着Boot Loader,后面的64个字节存放着分区表,最后2个字节用于封装码;
4:加载内核,内核加载进行硬件的探测,设备的驱动初始化,挂载根文件系统,装
载/sbin/init,启动系统PID为1的进程,但是在进行挂载时内核需要读取磁盘上的数据,而此时并没有磁盘的驱动,依然无法读取,所以这就借助一个中间文件init;
5.init进程:判断进入哪个runlevel下跟着就直接进入rc.sysinit文件设置大部分和系统相关的环境,在/etc/inittab文件中,该文件中的内容分为四个字段:
id:runlevels:action:process
(id):标识
(runlevels):运行级别,级别分为六个分别用0-6来进行标识:0-关机;1-单用户模式,不开启网络功能,任何用户登录均不需要密码,因此在这个级别中可以重新设置任何用户的密码包括root用户;2-完全模式,除了网络文件系统NFS不进行加载;3-命令行的完全多用户模式;4-预留级别;5-图形完全模式;6-重新启动。通常我们进入的是3和5级。
(action):常用到的有:respawn--一旦进程终止就会立即重新启动;wait--当进入特别级别的时候,该进程就会启动一次,直到其结束;initdefault--设定默认运行级别;sysinit--系统初始化,在系统启动过程中会被执行一次;powerfail--当电源有故障时立即执行;powerwait:等待电源恢复时执行;powerokwait--电源恢复时执行;ctrlaltdel--当用户同时按下ctrl+alt+del组合键时执行。
(process):在查看/etc/inittab文件时,发现在process字段处写的都是/etc/rc.d/rc 1-6等,其实这都是些链接文件。打开/etc/rc.d/rc2.d中,全部都是些以"K"或者"S"后面跟着数字后面是每个服务的名字,形如:K01dnsmasq、S10network。其中"K"表示Kill的意思"S"表示Start,而后面的数字则均是该服务的启动优先级和关闭优先级,在服务之间也存在着优先级和依赖关系,例如:启动web服务则必须依赖于网络服务。
chkconfig:查看服务
--list:列出当前服务的状态
--level # SERVICE off|on:在某个级别关闭或开启摸个服务
--add:添加某个服务
--del:删除某个服务
也可以用:service SERVICE status|stop|start|restart 查看状态|停止|启动|重启
在使用chkconfig列出的服务其实都在/etc/rc.d/init.d文件中写着。
至此,整个系统就这样启动起来了!
本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/788111,如需转载请自行联系原作者