【Linux】启动过程与启动目录解析



    Linux启动过程

    redhat的启动方式和执行次序是:

    1. 加载内核
    2. 执行init程序
    3. /etc/rc.d/rc.sysinit # 由init执行的第一个脚本
    4. /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式
    5. /etc/rc.d/rc.local
    6. /sbin/mingetty # 等待用户登录

    init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab中/etc/rc.d/rc的action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。

    至此,Linux的启动结束。

    Linux的引导过程


    系统启动之后,在进入 init.d之前,我们先来看看系统都做了什么工作.

    系统加电之后,首先进行的硬件自检,然后是bootloader对系统的初始化,加载内核。内核被加载到内存中之后,就开始执行了。一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个叫 init的用户级程序,完成引导进程。

    运行级别(run level)

    init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。init进程上来首先做的事是去读取/etc/目录下inittab 文件中initdefault id值,这个值称为运行级别(run-level)。它决定了系统启动之后运行于什么级别。运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到 6 ,具有不同的功能。不同的运行级定义如下:

      # 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)

      # 1 - 单用户模式

      # 2 - 多用户,没有 NFS

      # 3 - 完全多用户模式(标准的运行级)

      # 4– 系统保留的

      # 5 - X11 (x window)

      # 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启)

    常用的是2、3、5。

    Linux启动目录

    /etc/rc.d/ 包括rc.d, rcx.d目录和rc.sysinit, rc, rc.local三个脚本文件。

    /etc/rc.d/init.d/存放启动时要运行的脚本(一般为linux以rpm包安装时设定的一些服务的启动脚本),在系统启动的时候某些指定脚本将被执行。

    /etc/rc.d/rcx.d/ 各启动级别对应的启动目录,存放链接到init.d目录下脚本的符号链接(软链接),指定特定启动级别下哪些脚本被运行。x为启动级别,0-6。

    /etc/rc.d/init.d这个目录下的脚本在系统启动的时候执行,但不是全部都执行,而是有选择的执行,因为系统并不需要启动所有的服务。

    那么,系统是如何选择哪些需要启动哪些不要呢?这时刚才说的运行级别就起作用了。在决定了系统启动的run level之后,/etc/rc.d/rc这个脚本先执行。在RH9和FC7的源码中它都是一上来就check_runlevel()(虽然实现的代码不一样,也大同小异),知道了运行级别之后,对于每一个运行级别,在rc.d下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。每个目录下都是到init.d目录的一部分脚本一些链接。每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在rc5.d下,但是放在这个rc5.d下的都是一些链接文件,链接到init.d中相对应的文件,真正运行的是init.d里的脚本。

    以下是rcx.d目录下符号链接名称的一些说明:

    1、链接文件前面为什么会带一个Kxx或者Sxx呢?

    带K的表示停止(Kill)一个服务,S表示开启(Start)的意思,凡是以Kxx开头的,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。调用的顺序按xx从小到大来执行。

    2、K和S后面带的数字呢?干什么用的

    数字的作用是用来排序,就是决定这些脚本执行的顺序,数值小的先执行,数值大的后执行。很多时候这些执行顺序是很重要的,比如要启动Apache服务,就必须先配置网络接口,不然一个没有IP的机子来启动http服务那岂不是很搞笑。。。

     参考资料:启动信息与RC.d



    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《【Linux】启动过程与启动目录解析
    标签:
    分享:

还没有人抢沙发呢~

无觅相关文章插件,快速提升流量