本文包括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内核引导程序的主要任务是加载内核到内存中,并初始化必要的硬件设施,以便为用户空间应用程序提供服务...
本书详细介绍如何在个人电脑上安装配置Caldera和Red Hat两种发行版本的Linux操作系统,并能帮助用户解决安装和配置过程中出现的各种问题。本书既能指导你进行基本的安装步骤,也能指导你定制独具特色的Linux 操作...
- **作用**:包含Linux内核、引导加载程序(`GRUB`或`LILO`)以及与引导过程相关的配置文件。 - **示例文件**:`vmlinuz`、`initrd.img` **4、/dev** - **简介**:设备文件存放目录。 - **作用**:包含各种硬件设备...
XML(Extensible Markup Language)文件是一种用于存储结构化数据的标准格式,广泛应用于网络通信、配置文件和数据交换等领域。本文将深入探讨如何使用C语言来遍历XML文件,包括递归和迭代两种方法,以保持数据的树...
在某些Linux发行版中,系统引导加载程序如GRUB或LILO也位于这个目录。 4. **/dev**:设备文件通常存放在此目录中,包括硬件设备的驱动程序,如声卡、磁盘等。这些文件允许用户和应用程序与硬件进行交互。 5. **/...
### LINUX内核解读:系统引导与初始化详解 #### 一、引言 本文将深入探讨Linux系统的引导和初始化过程,特别是在Linux 2.4.22版本中的具体实现细节。通过对关键代码片段的分析,结合实际操作场景,帮助读者更好地...
1. **系统的引导和初始化**:Linux的引导过程多样化,常见的包括Lilo、Loadin和自举引导(bootsect-loader)。自举引导对应的源代码位于`arch/i`目录下,具体负责引导程序的加载和执行,是内核启动的第一步。 ### ...
- **/boot**:存放Linux内核和引导加载程序所需的文件,如`vmlinuz`、`initrd.img`等。 - **/dev**:设备文件存储目录,包含各种硬件设备对应的文件。 - **/etc**:系统配置文件的主要存放位置,包括各种服务和应用...
7. **动态加载与热更新**:某些系统支持配置文件的动态加载,这意味着在程序运行时可以修改配置并立即生效,而无需重启服务。热更新功能对于调试和快速响应需求变化非常有用。 8. **自动化配置**:在大规模部署场景...
包括内核文件、引导加载程序的配置文件和镜像文件等。需要注意的是,通常不需要把安装软件放在这个目录。 11. /srv:该目录用来存放系统服务启动之后需要提取的数据。 12. /sys:Linux 2.6内核引入了新的文件系统...
Linux内核的启动过程涉及从引导程序(比如GRUB)加载内核映像开始,一直到内核完全启动并运行init进程的整个过程。这个过程包括内核初始化、硬件设备检测、模块加载、运行级别设置、服务启动等步骤。其中,内核初始...
Linux内核的编译与配置是一个自定义化的过程,用户可以根据自己的需求选择内核支持的功能。通过运行`make menuconfig`命令,用户可以在图形界面下配置内核选项,包括启用或禁用特定的硬件驱动、选择文件系统类型等。...
3. **U-BOOT的目录结构和系统启动流程**:U-BOOT是一个通用的引导加载程序,它的目录结构反映了其功能模块,如源代码、板级支持包(BSP)、配置文件等。理解U-BOOT的启动流程,包括硬件初始化、加载内核映像和设备树...
这个"linux内核解读入门"资料包很显然是为了帮助初学者理解和探索Linux内核的工作原理,它可能是由一系列教程、文档或者源代码分析组成。在深入探讨之前,我们先了解一下Linux内核的基本概念。 Linux内核主要负责...
通过以上对Linux 2.6.28 内核配置选项的详细解析,我们可以看到内核配置不仅涉及到了硬件支持、文件系统、网络服务等多个方面,还涵盖了安全性和模块管理等高级功能。正确地配置内核对于优化系统性能和确保系统稳定...
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程序删除一个用户 ...
内核源码中还包含了一些脚本和配置文件,比如`Makefile`、`config.in`等,这些文件用于管理内核构建过程中的配置选项。通过这些文件,开发者可以编译特定配置的内核版本。 ### Linux内核源码中的关键文件和组件 ...