BusyBox init工作流程
linux启动完成后,运行由Busybox产生的init进程。
/sbin/init是系统启动的第一个用户进程,pid=1。
init的工作是根据/etc/inittab脚本来进行系统的初始化工作,关机前的工作等等。
init代码在BusyBox中init/init.c中,主要进行以下工作:
》为init进程设置信号处理进程。
》对控制台进行初始化。
》解析inittab文件即/etc/inittab。
》若无/etc/inittab,采用默认的inittab,运行初始化脚本/etc/init.d/rcS.
》运行inittab中其他命令。
----------------------------------------------------------------------------
系统默认的inittab:
# ::sysinit:/etc/init.d/rcS
# ::askfirst:/bin/sh
# ::ctrlaltdel:/sbin/reboot
# ::shutdown:/sbin/swapoff -a
# ::shutdown:/bin/umount -a -r
# ::restart:/sbin/init
# tty2::askfirst:/bin/sh
# tty3::askfirst:/bin/sh
# tty4::askfirst:/bin/sh
不管自己的inittab,还是系统默认inittab,一般首先运行/etc/init.d/rcS脚本,之后再进行后续工作。
-----------------------------------------------------------------------------
action解析:
sysinit:为init提供初始化命令行的路径。
respawn:在紧跟进程结束后,重启启动该进程(后边的process)。--复位,重启
askfirst:类似respawn,主要用途是减少系统上执行的终端应用程序的数量,
会在控制台上显示“Please press Enter to active this console"的信息,
并在系统重启之前等待用户按下”Enter“键。
wait:通知init必须等到相应的进程执行完之后才能继续执行其他的动作。
once:进程只执行一次,而且不会等待它完成。
ctrlaltdel:当按下ctrl-Alt-Del组合键时运行的进程。
shutdown:当系统关机时运行的进程。
restart:当init进程重启启动时执行的进程,事实上就是init本身。
-------------------------------------------------------------------------------
跟踪init/init.c中init的执行流程,可知其工作流程:
在init_mian()中完成inittab解析后,组成init_action[],然后顺序阻塞执行:
SYSINIT -> WAIT -> ONCE -> 循环RESPAWN|ASKFIRST
命令执行通过run_actions:
阻塞执行SYSINIT|WAIT|ONCE|CTRLALTDEL|SHUTDOWN -> RESPAWN|ASKFIRST仅执行一次
中间接受到信号(CTRLALTDEL)执行信号处理,一般重启设备。
BusyBox init工作流程的更多相关文章
- struts2工作流程
struts2的框架结构图 工作流程 1.客户端请求一个HttpServletRequest的请求,如在浏览器中输入http://localhost: 8080/bookcode/Reg.action ...
- Hadoop随笔(一):工作流程的源码
一.几个可能会用到的属性值 1.mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution 这两个 ...
- 利用 Gulp 处理前端工作流程
最近做项目,因为每次做完后都要手动压缩CSS.JS 等文件,压缩后另存为 *.min.xxx. Less 还要手动输入命令进行编译,调整页面也经常要手动刷新页面看效果,很麻烦,就尝试用 gulp 去处 ...
- ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...
- BusyBox Init
嵌入式系统内核启动后的第一个程序就是init,一般位于/sbin/init(一般是符号链接到/bin/busybox), 但有些也会直接放在根目录下如linuxrc,busybox的init不支持多级 ...
- ecshop 工作流程加载配置介绍
ecshop 工作流程加载配置介绍 分类: ecshop2014-09-14 09:36 729人阅读 评论(2) 收藏 举报 模板引擎工作流 这里简单介绍下echsop工作流程: 首先,你会发现一般 ...
- 前端工作流程自动化——Grunt/Gulp 自动化
什么是自动化 先来说说为什么要自动化.凡是要考虑到自动化时,你所做的工作必然是存在很多重复乏味的劳作,很有必要通过程序来完成这些任务.这样一来就可以解放生产力,将更多的精力和时间投入到更多有意义的事情 ...
- GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...
- 第2章 rsync算法原理和工作流程分析
本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是本文的姊妹篇: 1.rsync(一):基本命令和用法 2.rsync(二):ino ...
随机推荐
- HDUOJ---1213How Many Tables
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDUOJ----(4706)Children's Day
Children's Day Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- XML编辑器之XMLSpy2005
http://baike.baidu.com/link?url=79rnCuCnvoYJZHmQUBdc9INRvBTsWO_RYjWXgWI2sP1thb2WV5_6j_ygzInE7bdE7zaC ...
- gVim 中文内容显示为乱码的解决办法
http://blog.csdn.net/sunmanzth/article/details/6143600打开vimrc文件,在vim的安装目录下可以找到该文件,或在windows下是在vim/gv ...
- iOS - TouchLock 手势锁
1.绘制手势锁 具体实现代码见 GitHub 源码 QExtension QTouchLockView.h @interface QTouchLockView : UIView /// 提示信息框 @ ...
- OGG_GoldenGate日常监控(案例)
2014-03-11 Created By BaoXinjian
- EXTJS 5 学习笔记2 - Components
1. The Components Hierachy 组件体系 2. XTypes and Lazy Instantiation xtype与延迟初始化 1) 每个compo ...
- 使用springBoot搭建REATFul风格的web demo
1 Spring boot 核心特性 自动配置:针对常见 spring 应用程序的常见应用功能,Spring boot 自动提供相应配置 起步依赖:告诉springboot 需要什么功能,他就会自动引 ...
- SQL SERVER树形结构数据——批量删除分组数据
定义函数获取某结点下所有子结点: CREATE FUNCTION [dbo].[fn_GetSubGroupInfoById] ( @id AS INT --某分组Id ) RETURNS @SubG ...
- linux下man手册简介
Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可.Linux 的man手册共有以下几个章节: 1.Standard commands (标准命令)2.S ...