原文网址: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分区中的位置
   <2>console:指定了内核启动后首选的控制台.
   <3>init:指定了Linux内核启动完毕后调用的第一个、也是唯一的一个用户态进程,即进程号为1的进程.其中,参数"init=linuxrc"非常重要.由于init进程是kernel启动后的第一个、也是唯一的一个用户态进程,用户的许多应用程序,比如Mplayer、Qt、Boa都由该进程来启动,换句话说,init进程是所有进程的发起者.
(2)linuxrc文件的作用
   <1>在嵌入式Linux中,init进程的执行程序通常是二选其一.这两个执行程序分别是/sbin/init程序,或者是Busybox生成的linuxrc程序.init进程的作用即这个程序的功能.init进程具体运行哪个程序,则由uboot的环境变量bootargs决定,即init=/linuxrc.通常采用命令行参数"init=xxxx"指定某个程序作为init进程运行.比如,init=linuxrc.可以说,linuxrc程序的作用就是init进程的作用.
   <2>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 toactivate 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子进程退出时,重新启动它,永不结束.
 

【转】inittab文件的更多相关文章

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

    /etc/inittab文件中每个登记项的结构都是一样的,共分为以冒号“:”分隔的4个字段.具体如下:       identifier :  run_level  :  action  :  pro ...

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

    嵌入式系统下的linux启动配置文件,不同与普通的PC linux启动配置,启动相关文件与文件的内容也要少得多.嵌入式系统下的linux启动过程一般是:     1 在bootloader中制定各种要 ...

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

    inittab文件剖析[CentOS 5.X] grep -v "^#" /etc/inittab | more #过滤掉以#开头的行 inittab文件格式 id:runleve ...

  4. /etc/inittab文件详解

    /etc/inittab由/sbin/init程序解析调用,用于系统初始化,/sbin/init可参考源码busybox中init.c的实现方式. 原址如下: http://leejia.blog.5 ...

  5. Linux  改动inittab文件及忘记密码等导致无法进入系统的解决办法

    改动inittab文件及忘记密码等导致无法进入系统的解决办法[摘] by:授客 QQ:1033553122 inittab是linux的系统启动模式配置文件,在”/etc“文件目录下没,其内容是: # ...

  6. linux中inittab文件详解

    init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/ ...

  7. Linux下inittab文件详解

    /etc/inittab文件详解 Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动ke ...

  8. 【转】linux中inittab文件详解

    原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出, ...

  9. [转载]嵌入式linux启动时运行的inittab文件

    源地址:https://www.cnblogs.com/yfz0/p/5853826.html 嵌入式系统下的linux启动配置文件,不同与普通的PC linux启动配置,启动相关文件与文件的内容也要 ...

随机推荐

  1. IDFA踩坑记录

    IDFA踩坑记录: 1.iOS10.0 以下,即使打开“限制广告跟踪”,依然可以读取idfa: 2.打开“限制广告跟踪”,然后再关闭“限制广告跟踪”,idfa会改变: 3.越狱机器安装开发证书打的包, ...

  2. 居于mtk芯片安卓车机系统具体流程

    一:车机系统框架  MCU 功能  电源控制  Radio 控制(RDS)  按键检测(Panel/Remote/SW)  常见信号检查(倒车/大灯/刹车)  CAN 模块通讯  ARM- ...

  3. SQL学习笔记三(补充-1)之MySQL存储引擎

    阅读目录 一 什么是存储引擎 二 mysql支持的存储引擎 三 使用存储引擎 一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的 ...

  4. 20145122 《Java程序设计》第5周学习总结

    教材学习内容总结 1.在Java中,异常分为受检查的异常,与运行时异常. 两者都在异常类层次结构中. 2.受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕 ...

  5. Python3基础 三元运算符 简单示例

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. 从0开始学习 GITHUB 系列之「初识 GITHUB」【转】

    本文转载自:http://stormzhang.com/github/2016/05/25/learn-github-from-zero1/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...

  7. 《EMCAScript6入门》读书笔记——2.let和const命令

  8. UVa 11552 最小的块数(序列划分模型:状态设计)

    https://vjudge.net/problem/UVA-11552 题意:输入一个正整数k和字符串S,字符串的长度保证为k的倍数.把S的字符按照从左到右的顺序每k个分成一组,每组之间可以任意重排 ...

  9. 【安全测试】安全测试威胁建模设计方法STRIDE

    背景 目前安全测试一般都存在如下问题: 安全测试人员不懂业务,业务测试人员不懂安全,安全测试设计出现遗漏是无法避免的 安全测试点繁多复杂,单点分析会导致风险暴露,不安全 目前的状态: TR2阶段测试人 ...

  10. 递归--练习3--noi7592求最大公约数问题

    递归--练习3--noi7592求最大公约数问题 一.心得 两个低级错误:1. ll setMax(ll &m,ll &n)中无引用,结果只传值,没传地址2. return f(n,m ...