`

Linux引导及配置文件加载过程解读

阅读更多

 

本文包括3部分内容
  1、 Linux的引导过程
  2、
Linux 的运行级别
  3、 /etc/inittab与/etc/rc.d/ 与/etc/rc.d/init.d的关系

关键词:Linux引导过程、运行级别、inittab与 init.d rc.d


  一、 Linux的引导过程

  系统加电之后,首先进行的硬件自检,然后是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,否则将一直在重启 )

  三、 /etc/rc.d/与/etc/rc.d/init.d的关系

  先解释一下init.d。这个目录存放的是一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本
系统在安装时装了好多rpm包,这里面就有很多对应的脚本。执行这些脚本可以用来启动、停止、重启这些服务。
   /etc/rc.d/init.d这个目录下的脚本就类似与windows中的注册表,在系统启动的时候执行。程序运行到这里(init进程读取了运行级别),就开始有选择地启动服务了, 这时刚才说的运行级别就起作用了。在决定了系统启动的run level之后,/etc/rc.d/rc这个脚本先执行。 在RH9的源码中它都是一上来就check_runlevel(),知道了运行级别之后,对于每一个运行级别,在rc.d下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。每个目录下都是到init.d目录的一部分脚本一些链接。 每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在rc5.d下,但是放在这个rc5.d下的都是一些链接文件,链接到init.d中相对应的文件,真正干活到init.d里的脚本。

 

附: inittab以及/etc/rc.d的内容

 

rc.d的内容如下:
init.d/ :各种服务器和程序的二进制文件存放目录。
rcx.d/: 各个启动级别的执行程序连接目录。里面的东西都是指向init.d/的一些软连接。
rc.d下还有三个脚本:rc.sysinit, rc, rc.local 。另外/etc/目录下面也有和rc.d一样的文件或目录,它们都是指向rc.d下面对应文件或目录的链接。

 

init执行的配置文件是/etc/inittab,它定义各种rc脚本的执行顺序。其内容大致分为如下几部分:
/etc/rc.d/rc.sysinit # 由init执行的第一个脚本
/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式
/etc/rc.d/rc.local #有的版本inittab中有rc.local的记录,有的没有。
/sbin/mingetty # 等待用户登录

 

rc*.d目录中的文件都是指向init.d中脚本的链接,命名方式为(K|S)[0-9]*ServerName。K表示Kill ,S表示start。数字小的先执行。inittab中没有rc.local记录的,在rc*.d的目录中一般有指向rc.local的链接 (eg,S99local)。rc脚本复制调用rc*.d中的脚本,K开头的传递stop参数,S开头的传递start参数。

了解了这些文件之间的关系,就可以改变这些文件的位置,名称。

 

 

 

分享到:
评论

相关推荐

    Linux操作系统内核引导程序详细剖析

    这篇文章将深入探讨Linux内核引导程序的工作原理、流程以及它在系统启动中扮演的角色。 首先,我们要明白Linux内核引导程序的主要任务是加载内核到内存中,并初始化必要的硬件设施,以便为用户空间应用程序提供服务...

    ADRV9009配置文件(验证可用).zip

    4. **配置流程**:FPGA在上电或复位后,需要加载配置文件到内部存储器,这个过程称为配置流程。对于静态配置,配置文件可能是在外部存储设备如SPI Flash中,而动态配置则可能通过JTAG或串行接口在线加载。 5. **...

    LINUX安装与配置简明手册

    本书详细介绍如何在个人电脑上安装配置Caldera和Red Hat两种发行版本的Linux操作系统,并能帮助用户解决安装和配置过程中出现的各种问题。本书既能指导你进行基本的安装步骤,也能指导你定制独具特色的Linux 操作...

    完美解读Linux文件系统的目录结构.pdf

    - **作用**:包含Linux内核、引导加载程序(`GRUB`或`LILO`)以及与引导过程相关的配置文件。 - **示例文件**:`vmlinuz`、`initrd.img` **4、/dev** - **简介**:设备文件存放目录。 - **作用**:包含各种硬件设备...

    LinuxC的xml文件遍历

    XML(Extensible Markup Language)文件是一种用于存储结构化数据的标准格式,广泛应用于网络通信、配置文件和数据交换等领域。本文将深入探讨如何使用C语言来遍历XML文件,包括递归和迭代两种方法,以保持数据的树...

    Linux中文件夹的解读

    在某些Linux发行版中,系统引导加载程序如GRUB或LILO也位于这个目录。 4. **/dev**:设备文件通常存放在此目录中,包括硬件设备的驱动程序,如声卡、磁盘等。这些文件允许用户和应用程序与硬件进行交互。 5. **/...

    LINUX 内核解读

    ### LINUX内核解读:系统引导与初始化详解 #### 一、引言 本文将深入探讨Linux系统的引导和初始化过程,特别是在Linux 2.4.22版本中的具体实现细节。通过对关键代码片段的分析,结合实际操作场景,帮助读者更好地...

    Linux 内核解读入门

    1. **系统的引导和初始化**:Linux的引导过程多样化,常见的包括Lilo、Loadin和自举引导(bootsect-loader)。自举引导对应的源代码位于`arch/i`目录下,具体负责引导程序的加载和执行,是内核启动的第一步。 ### ...

    完美解读Linux中文件系统的目录结构

    - **/boot**:存放Linux内核和引导加载程序所需的文件,如`vmlinuz`、`initrd.img`等。 - **/dev**:设备文件存储目录,包含各种硬件设备对应的文件。 - **/etc**:系统配置文件的主要存放位置,包括各种服务和应用...

    fst 配置文件读取

    7. **动态加载与热更新**:某些系统支持配置文件的动态加载,这意味着在程序运行时可以修改配置并立即生效,而无需重启服务。热更新功能对于调试和快速响应需求变化非常有用。 8. **自动化配置**:在大规模部署场景...

    尚硅谷大数据之Linux文件与目录结构

    包括内核文件、引导加载程序的配置文件和镜像文件等。需要注意的是,通常不需要把安装软件放在这个目录。 11. /srv:该目录用来存放系统服务启动之后需要提取的数据。 12. /sys:Linux 2.6内核引入了新的文件系统...

    Linux 驱动工作原理和代码解读

    Linux内核的启动过程涉及从引导程序(比如GRUB)加载内核映像开始,一直到内核完全启动并运行init进程的整个过程。这个过程包括内核初始化、硬件设备检测、模块加载、运行级别设置、服务启动等步骤。其中,内核初始...

    Linux内核解读入门

    Linux内核的编译与配置是一个自定义化的过程,用户可以根据自己的需求选择内核支持的功能。通过运行`make menuconfig`命令,用户可以在图形界面下配置内核选项,包括启用或禁用特定的硬件驱动、选择文件系统类型等。...

    Linux From Scratch

    3. **U-BOOT的目录结构和系统启动流程**:U-BOOT是一个通用的引导加载程序,它的目录结构反映了其功能模块,如源代码、板级支持包(BSP)、配置文件等。理解U-BOOT的启动流程,包括硬件初始化、加载内核映像和设备树...

    linux内核解读入门

    这个"linux内核解读入门"资料包很显然是为了帮助初学者理解和探索Linux内核的工作原理,它可能是由一系列教程、文档或者源代码分析组成。在深入探讨之前,我们先了解一下Linux内核的基本概念。 Linux内核主要负责...

    Linux 2.6.28 内核配置选项详解

    通过以上对Linux 2.6.28 内核配置选项的详细解析,我们可以看到内核配置不仅涉及到了硬件支持、文件系统、网络服务等多个方面,还涵盖了安全性和模块管理等高级功能。正确地配置内核对于优化系统性能和确保系统稳定...

    linux安装与配置简明手册

    8.2.12 查找缺省的用户配置文件 103 8.2.13 查找容易被破译的口令字 104 8.2.14 冻结一个用户 104 8.2.15 通过linuxconf程序冻结一个用户 104 8.2.16 删除一个用户 104 8.2.17 通过linuxconf程序删除一个用户 ...

Global site tag (gtag.js) - Google Analytics