韦东山衔接班——4.2_构建根文件系统之init进程分析

作者:GWD 时间:2019.8.25

Busybox的引入

根文件系统中有很多命令,命令就相当与一个应用程序,若一个一个编译很麻烦,linux中有一个busybox。当我们执行ls时候就相当于执行了busybox ls;上一节提到的init进程其实也是指向busybox的进程,我们要分析init进程要先找到busybox的源码。
小结:
1)、Init=Busybox;
2)、Inittab是一开始就被解析的配置文件存放busybox中的一些指定程序;
韦东山衔接班——4.2_构建根文件系统之init进程分析_第1张图片
3)、new_init_action作用是往init_action链表中加入新的节点;
4)、run_action选择判断函数体,用于根据不同的程序名调用不同的执行函数;
5)、run(a)创建子进程,被run_action调用;

1、busybox中的init有哪些功能
韦东山衔接班——4.2_构建根文件系统之init进程分析_第2张图片
在这里插入图片描述
2、解析配置文件前,看一看解释文档弄明白两点,指定程序、何时执行程序
韦东山衔接班——4.2_构建根文件系统之init进程分析_第3张图片
3、分析new_init_action
在这里插入图片描述
其功能是创建链表的节点
在这里插入图片描述
在这里插入图片描述
4、从默认的new_init_action反推出默认的配置文件
韦东山衔接班——4.2_构建根文件系统之init进程分析_第4张图片
可以看出,我们解析inittab之后会创建很多init结构然后得到一个链表。这个链表什么时候执行呢,我们继续看代码。
韦东山衔接班——4.2_构建根文件系统之init进程分析_第5张图片
5、执行run_action
韦东山衔接班——4.2_构建根文件系统之init进程分析_第6张图片
韦东山衔接班——4.2_构建根文件系统之init进程分析_第7张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
韦东山衔接班——4.2_构建根文件系统之init进程分析_第8张图片
6、运行run_actions(RESPAWN)、run_actions(ASKFIRST)有什么差别,因为在run_action中是if条件判断语句,所以得看run(a)的实现。为了便于观察再次插入图片。
韦东山衔接班——4.2_构建根文件系统之init进程分析_第9张图片
如果是ASKFIRST就会先打印,并且等待回车,如果不按下回车就不会往下走,区别就在这里
韦东山衔接班——4.2_构建根文件系统之init进程分析_第10张图片
7、这里只讲解了sysinit,别的信号量怎么运行呢?
定义了信号量,当接收到信号时候就会运行这一类程序,比如shutdown举例
韦东山衔接班——4.2_构建根文件系统之init进程分析_第11张图片
先执行用户定义的SHUTDOWN之后,在运行系统定义的SHUTDOWN
韦东山衔接班——4.2_构建根文件系统之init进程分析_第12张图片
8、回顾init需要哪些,一开始会打开dev/console这个终端,/etc/inittab配置文件;
韦东山衔接班——4.2_构建根文件系统之init进程分析_第13张图片
韦东山衔接班——4.2_构建根文件系统之init进程分析_第14张图片
我们要创建根文件系统,这些东西是起码要有的。
韦东山衔接班——4.2_构建根文件系统之init进程分析_第15张图片

你可能感兴趣的:(韦东山衔接班)