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 ...
随机推荐
- [转载]在rhel 6 x86_64 上安装oracle 11g xe
原文地址:在rhel 6 x86_64 上安装oracle 11g xe作者:pccom Oracle 11g xe for linux目前只有x86_64 版本,没有i386, i686 版本,如果 ...
- try语句...
#include<stdio.h>#include<iostream>using namespace std; int main( ){ try { throw "嗨 ...
- HDUOJ----More is better(并查集)
More is better Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) ...
- SpringBoot定时器
使用Component注解注解一个类,这个类就变成了一个组件.组件可以有很多不同的特性,比如Scheduled注解为组件的某个函数添加了定时的特性. @Component public class M ...
- Linux命令-定时任务命令:crontab
linux定时任务命令相当于windows=>附件=>系统工具=>计划任务程序. 要想让linux定时任务生效,首先应该先启动crond服务,并且给这个服务设置开机自自动. 默认li ...
- Red hat linux ping: unknown host www.baidu.com
"ping: unknown host www.baidu.com" 解决方案: 如果某台Linux服务器ping不通域名, 如下提示: [root@localhost ~]# p ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少. ...
- Eclipse安装goclipse插件方法
第一步:打开菜单栏“Help”-----"Eclipse Maketplace". 第二部:在弹出框的Find框中输入GoClipse,等待搜索结果出来后结果如下: 第三步:点击“ ...
- 查看python selenium 的api
DOS窗口输入: python -m pydoc -p 4567 python -m pydoc : 打开pydoc模块,pydoc是查看python文档的首选工具 -p 4567: 在4567端口启 ...
- struts2 ValueStack详解,页面获取值el表达式、ognl表达式
http://www.blogjava.net/max/archive/2007/04/28/114417.html 我想用的是el表达式! http://www.cnblogs.com/belief ...