一、什么是INIT:
内核自行启动(早已被载入显存,开始运行,并已初始化所有的设备驱动程序和数据结构等)以后,就通过启动一个用户级程序init的形式,完成引导进程。所以,init仍然是第一个进程(其进程编号一直为1)。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。假如内核找不到init,它还会试着运行/bin/sh修改linux开机启动权限,假如运行失败长春linux培训,系统的启动也会失败。
二、运行级别
简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6,具有不同的功能。
不同的运行级定义如下
0-停机(千万不能把initdefault设置为0)
1-单用户模式#sinits=init1
2-多用户,没有NFS
3-完全多用户模式(标准的运行级)
4-没有用到
5-X11多用户图形模式(xwindow)
6-重新启动(千万不要把initdefault设置为6)
这种级别在/etc/inittab文件里指定。这个文件是init程序找寻的主要文件,最先运行的服务是置于/etc/rc.d目录下的文件。在大多数的Linux发行版本中,启动脚本都是坐落/etc/rc.d/init.d中的。这种脚本被用ln命令联接到/etc/rc.d/rcn.d目录。(这儿的n就是运行级0-6)
三,linux下开机手动启动脚本所涉及的知识和技巧如下:
在Linux系统中,系统服务的启动脚本通常置于/etc/init.d目录下。不同的开机模式,则分别对应到/etc/rcx.d目录下。虽然/etc/rcx.d上的文件,通常都是链接到/etc/init.d目录下的对应文件的。/etc/rcx.d下的文件名,是以S+数字或K+数字打头的,这儿的S表示启动,K表示关掉,数值其旁边的数值则表示服务启动或服务退出时的顺序。这么,这种数值怎么更改,不是在/etc/rcx.d下去更改文件名,而是如下步骤:
打开/etc/init.d下的脚本,查找类似下边的一句:
#chkconfig:23456436
这儿的64,就是启动的次序值修改linux开机启动权限,36则是退出的次序值,假如须要改变次序,就在这儿改。之后执行下边的命令:
#chkconfig--delservicename
#chkconfig--addservicename
#chkconfigservicenameon
servicename对应您的服务名称。
linux的启动方法和执行顺序是:先加载内核,之后执行init程序
/etc/rc.d/rc.sysinit#由init执行的第一个脚本
/etc/rc.d/rc$RUNLEVEL#$RUNLEVEL为缺省的运行模式
/etc/rc.d/rc.local#相应级别服务启动以后、在执行该文件(虽然也可以把须要执行的命令讲到该文件中)
/sbin/mingetty#等待用户登入
在linux中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作有如下步骤:
调入keymap以及系统字体;启动swapping;设置主机名;设置NIS域名;
检测(fsck)并mount文件系统;打开quota;装载声卡模块;设置系统时钟;
/etc/rc.d/rc则依据其参数指定的运行模式(运行级别linux主机,你在inittab文件中可以设置)来执行相应目录下的脚本。但凡以Kxx开头的,都以stop为参数来调用;但凡以Sxx开头的,都以start为参数来调用。调用的次序按xx从小到大来执行。(其中xx是数字、表示的是启动次序)诸如,假定缺省的运行模式是3,/etc/rc.d/rc都会按上述方法调用/etc/rc.d/rc3.d/下的脚本。运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,所以用户可以自己在这个文件中添加一些须要在其他初始化工作以后,登陆之前执行的命令。
init在等待/etc/rc.d/rc执行完毕以后(由于在/etc/inittab中/etc/rc.d/rc的
action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登陆操作。
四,实例介绍:在linux下安装了apache服务(通过下载二补码文件经济编译安装、而非rpm包)、apache服务启动命令:/server/apache/bin/apachectlstart。让apache服务运行在运行级别3下边。
命令如下:
touch/etc/rc.d/init.d/apache
vi/etc/rc.d/init.d/apache
chown-Rroot/etc/rc.d/init.d/apache
chmod700/etc/rc.d/init.d/apache
ln-s/etc/rc.d/init.d/apache/etc/rc.d/rc3.d/S60apache#S是start的缩写、代表启动、K是kill的缩写、代表关掉。60数字
代表启动的次序。
apache的内容:
#!/bin/bash