inittab文件

一、inittab文件背景

(1)init进程的作用

使用uboot下载Linux内核时,环境变量bootargs决定了kernel向根文件系统传递的参数,这些参数包括

bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0

  • root:指定了根文件系统在Flash分区中的位置
  • console:指定了内核启动后首选的控制台.
  • init:指定了Linux内核启动完毕后调用的第一个、也是唯一的一个用户态进程,即进程号为1的进程.其中,参数"init=linuxrc"非常重要.由于init进程是kernel启动后的第一个、也是唯一的一个用户态进程,用户的许多应用程序,比如Mplayer、Qt、Boa都由该进程来启动,换句话说,init进程是所有进程的发起者.

(2)linuxrc文件的作用

  • 在嵌入式Linux中,init进程的执行程序通常是二选其一.这两个执行程序分别是/sbin/init程序,或者是Busybox生成的linuxrc程序.init进程的作用即这个程序的功能.init进程具体运行哪个程序,则由uboot的环境变量bootargs决定,即init=/linuxrc.通常采用命令行参数"init=xxxx"指定某个程序作为init进程运行.比如,init=linuxrc.可以说,linuxrc程序的作用就是init进程的作用.
  • linuxrc是一个程序,它的执行流程如下所示.其中,如何解析inittab文件可以由用户设定,其它两个一般都不会修改.
  1. 设置信号处理函数.
  2. 初始化控制台.
  3. 解析inittab文件.

(3)/etc/inittab文件的作用

从上可知,init进程,或者说linuxrc程序最后会解析inittab文件.inittab,可以理解为init table(初始化表),它只是一个普通文件,但系统会根据/etc/inittab的内容启动相关进程或脚本.

二、inittab文件格式

(1)如果存在/etc/inittab文件,Busybox init程序解析它,然后按照它的指示创建各种子进程,否则使用默认的配置创建子进程.

(2)/etc/inittab文件中每个条目用来定义一个子进程,并确定它的启动方法,格式如下

<id> : <runlevels> : <action> : <process>

<1>id :表示这个子进程要使用的控制台,如果省略,则使用与init进程一样的控制台.

<2>runlevels:这个字段没有意义,可以省略。在linux有意义.

<3>action:表示init进程如何控制这个子进程,具体取值见下表.

<4>process:要执行的程序,它可以是可执行程序,也可以是脚本.如果process字段前有“-”字符,这个程序被称为“交互的”.

【attention】action取值

名称             执行条件                                           说明

sysinit        系统启动后最先执行         指定初始化脚本路径,只执行一次,init进程等待它结束才继续执行其它动作

wait           系统执行完sysinit进程后   只执行一次,init进程等待它结束才继续执行其它动作

once           系统执行完wait进程后     只执行一次,init进程不等待它结束

respawn     启动完once进程后           init进程监测发现子进程退出时,重新启动它,永不结束.如Shell命令解释器

askfirst       启动完respawn进程后     与respawn类似,不过init进程先输出“Please press Enter to activate this console”,等用户输入回车后才启动子进程

shutdown    当系统关机时                  即重启、关闭系统时执行的程序

restart        系统重启时                     init进程重启时执行的程序,通常是init程序本身先重新读取、解析/etc/inittab文件,再执行restart程序

ctrl+alt+del  按下Ctrl+Alt+Del键时   按Ctrl+Alt+Del组合键时执行的程序

(3)inittab文件例程

<1>::sysinit:/etc/init.d/rcS

1.该条目的id省略,表示使用与init进程一样的控制台.

2.该条目的runlevels在嵌入式Linux中都会省略.

3.该条目的action是sysinit,表示系统启动后最先执行.

4.该条目的process是/etc/init.d/rcS,表示系统启动后最先执行脚本/etc/init.d/rcS.

<2>::respawn:-/bin/login

1.该条目的id省略,表示使用与init进程一样的控制台.

2.该条目的runlevels在嵌入式Linux中都会省略.

3.该条目的action是respawn,表示init进程监测发现子进程退出时,重新启动它,永不结束.

4.该条目的process是/bin/login,表示init进程监测发现/bin/login子进程退出时,重新启动它,永不结束.

原文地址:https://www.cnblogs.com/yangjiquan/p/11368317.html

时间: 2024-08-03 10:02:59

inittab文件的相关文章

Linux启动之inittab文件

从接触Linux到现在,期间用过Redhat,Slackware,Kali.不同的发行版本启动文件略有差异,但大体流程都是相同的.按下电源键后首先进行开机自检,然后进入bootloader引导系统.bootloader一般都是Lilo或是Grub,Grub2.选择好系统后便是载入内核文件以及initrd文件. 首先启动的第一个进程是init,init读取/etc/inittab文件,从而产生其他进程. inittab文件描述了需要在启动是执行的进程.其中的条目的格式如下: id:runlevel

Linux的/etc/inittab文件中init级别设置成6(重启)或者不支持级别的解决方法

如果不小心将/etc/inittab文件中的init级别设置成6(重启)或者不支持级别,系统就不能正常启动.本博客讲解如何通过Grub来解决这个问题. 1. 在Linux启动过程中,按Esc键进入Grub界面 2. 按e修改当前Linux系统的配置 3. 选择第二行,按e键,并按如下步骤执行 1)在出现的命令行后加1(单用户模式): 2)按Enter键接收操作并后退到当前Linux配置页面: 3)按b重启Linux. 4. 重启后进入Linux系统,修改/etc/inittab文件.将init级

转:嵌入式linux启动时运行的inittab文件

嵌入式系统下的linux启动配置文件,不同与普通的PC linux启动配置,启动相关文件与文件的内容也要少得多.嵌入式系统下的linux启动过程一般是: 1 在bootloader中制定各种要求传给linux内核的参数,制作ramdisk或ramfs文件系统,并在开机后首先mount上,该文件系统主要负责包含启动运行的配置文件,嵌入式系统主要是/etc/inittab和/etc/rc文件: 2 在init进程启动后,进程首先执行/etc/inittab文件,该文件语法下面介绍,一般包括三项内容就

转:/etc/inittab文件的字段及其说明

/etc/inittab文件中每个登记项的结构都是一样的,共分为以冒号“:”分隔的4个字段.具体如下:       identifier :  run_level  :  action  :  process 其中,各字段以及与其相关的说明如下: identifier 登记项标识符,最多为4个字符.用于惟一地标识/etc/inittab文件中的每一个登记项 run_level 系统运行级,即执行登记项的init级别.用于指定相应的登记项适用于哪一个运行级,即在哪一个运行级中被处理.如果该字段为空

ubuntu为什么没有/etc/inittab文件? 深究ubuntu的启动流程分析

最近,因和队友一起做linux开发,因为用的不是同一版本linux(他用arch, 我用ubuntu),再配置上经常就不一样,就如这个inittab文件,于是深究了一下原因: Linux 内核启动 init ,init进程ID是1,是所有进程的父进程,所有进程由它控制. Ubuntu 的启动由upstart控制,自9.10后不再使用/etc/event.d目录的配置文件,改为/etc/init. 查看当前的运行级别,Ubuntu 桌面默认是2. ? 1 runlevel Ubuntu 的系统运行

inittab文件剖析[CentOS 5.X](第二版)

inittab文件剖析[CentOS 5.X] grep -v "^#" /etc/inittab | more #过滤掉以#开头的行 inittab文件格式 id:runlevels:action:process id: 标识符,一般为两位数字或字母 runlevels: 运行级别,可以指定多个,若为空,则表示从0-6各个运行级别都执行 action: 指定运行状态 process: 制定运行的脚本或命令,最重要 /etc/inittab正文分析 语句1: id:5:initdefa

linux中inittab文件详解

init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/inittab.inittab是一个不可执行的文本文件,它有若干行指令所组成. 理解Runlevel: runlevel用来表示在init进程结束之后的系统状态,在系统的硬件中没有固定的信息来表示runlevel,它纯粹是一种软件结构.init和inittab是runlevel影响系统状态的唯一原因

【转】inittab文件

原文网址:http://blog.csdn.net/shuaishuai80/article/details/6202482 一.inittab文件背景(1)init进程的作用   使用uboot下载Linux内核时,环境变量bootargs决定了kernel向根文件系统传递的参数,这些参数包括      bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0   <1>root:指定了根文件系统在Flash分区中

【转】linux中inittab文件详解

原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/inittab.inittab是一个不可执行的文本文件,它有若干行指令所组成. 理解Runlevel: runlevel用来表示在init进程结束之后的系统状态,在系统的硬

Linux下inittab文件详解

/etc/inittab文件详解 Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动kernel-->启动init进程 我们看到,Linux系统启动的最后是启动init进程,而init进程是怎么工作的呢?init进程就是根据/etc/inittab这个文件来在不同的运行级别启动相应的进程或执行相应的操作. /etc/inittab这个文件中定义的登记项都是以:隔开的四个段,即: id:ru