一:linux的引导过程
1.linux引导过程:
(1)开机自检:服务器开机后,根据主板BIOS中的设置对cpu,内存,硬盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权限,如果硬盘是第一启动项则系统控制权会交给硬盘。
(2)MBR引导:当从本机硬盘启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)设置,将系统控制权限传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用启动菜单
(3)加载内核(kenel):Linux内核是一个预先编译好的二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核结果操作系统控制权之后,将完全掌控整个linux系统的引导过程。
(4)INIT进程初始化:为了完成进一步的系统引导过程,linux内核首先将系统中"/sbin/init"程序加载到内存中运行(运行中的程序称为进程),INIT进程负责完成一系列初始化过程;读取配置文件/etc/inittab,根据配置内容首先执行初始化脚本文件/etc/rc.d/rc.sysinit,并通过脚本文件/etc/rc.d/rc控制应该启动哪些服务和程序,最后运行终端程序/sbin/mingetty等待用户登录。
2.系统初始化进程及文件:
(1)INIT进程:INIT进程是内核第一个加载到内存中的程序,所以说init是所有进程的父进程其对应的PID号总是1.
(2)inittab配置文件:inittab文件位于/etc/目录中,是init程序的配置文件。当init程序运行后,将按照/etc/inittab文件指定的配置依次启动系统中对应的脚本和程序。inittab文件中每一记录都从新的一行开始,每个记录项最多可有512个字符,每一项的格式通常如下:id:rstate:action:process,下面分别解释。
1.id字段是最多4个字符的字符串,用来唯一标志表项。
2.rstate(run
state)字段定义该记录项被调用时的运行级别,rstate可以由一个或多个运行级别构成,也可以是空,空则代表运行级别0~6。当请求init改变运行级别时,那些rstate字段中不包括新运行级别的进程将收到SIGTERM警告信号,并且最后被杀死;只有a、b、c启动的命令外(a、b、c不是真正的运行级别)
3.action字段告诉init执行的动作,即如何处理process字段指定的进程,action字段允许的值及对应的动作分别为:
1)respawn:如果process字段指定的进程不存在,则启动该进程,init不等待处理结束,而是继续扫描inittab文件中的后续进程,当这样的进程终止时,init会重新启动它,如果这样的进程已存在,则什么也不做。
2)wait:启动process字段指定的进程,并等到处理结束才去处理inittab中的下一记录项。
3)once:启动process字段指定的进程,不等待处理结束就去处理下一记录项。当这样的进程终止时,也不再重新启动它,在进入新的运行级别时,如果这样的进程仍在运行,init也不重新启动它。
4)boot:只有在系统启动时,init才处理这样的记录项,启动相应进程,并不等待处理结束就去处理下一个记录项。当这样的进程终止时,系统也不重启它。
5)bootwait:系统启动后,当第一次从单用户模式进入多用户模式时处理这样的记录项,init启动这样的进程,并且等待它的处理结束,然后再进行下一个记录项的处理,当这样的进程终止时,系统也不重启它。
6)powerfail:当init接到断电的信号(SIGPWR)时,处理指定的进程。
7)powerwait:当init接到恢复电信号(SIGPWR)时,处理指定的进程,并且等到处理结束才去检查其他的记录项。
8)off:如果指定的进程正在运行,init就给它发SIGTERM警告信号,在向它发出信号SIGKILL强制其结束之前等待5秒,如果这样的进程不存在,则忽略这一项。
(3)rc.sysinit脚本文件:此文件是进程init所调用的初始化脚本。位于/etc/rc.d目录下,此脚本程序主要完成设置网络,主机名,加载文件系统,设置时钟,检测文件系统等一系列初始化工作。
(4)rc脚本文件:同样由init进程调用,文件位于/etc/rc.d目录下,rc脚本通过使用不同的级别参数,分别加载不同的系统服务,进入相应的系统运行级别。如图
rcx.d目录中保存了一些特殊的符号链接文件,rc脚本根据目录下的链接文件调用对应的服务控制程序。如当前的参数为3时rc会自动执行rc3.d目录下的链接文件。(5)rc.local脚本文件:此脚本文件是一个额外的控制文件,于/etc/rc.d/rc.local目录下,由rc脚本在最后进行加载。
二:服务控制及优化启动过程
1.系统服务控制:使用专门的控制工具service或者直接使用控制脚本文件/etc/rc.d/init.d
service 服务名称 控制类型 如图所示
2.runlevel:查看上次和当前运行级别如图
3.开机自动加载服务:可以使用ntsysv和chkconfig2种工具进行设置如图