作家
登录

Linux启动分析——init进程与app启动

作者: 来源: 2017-08-31 16:12:53 阅读 我要评论

概述

本文经由过程扼要分析init过程源码,梳理其处理流程,重点存眷init过程若何启动应用法度榜样,总结启动脚本文件的编写思路

init过程源码分析

init过程是linux内核启动的第一个过程,怎么知道的?大年夜内核源码linux-2.6.xxx/init/main.c代码的kernel_init()函数分析,可以发明,内核会根据uboot传入的参数来启动第一个过程,一般都是init

怎么启动的呢,调用kernel_execve()函数完成的,猜测是大年夜根文件体系的/sbin/init来启动的,linux的任何应用法度榜样都是基于文件体系的,启动应用法度榜样前提是根文件体系已经挂载好了。好,那么根文件体系又是大年夜哪里来的呢,是由busybox这个对象设备编译生成的,所以要分析init源码,要去busybox里找init的源码

源码地位:/busybox/init/init.c,在个中查找main()函数,发明只有init_main(),没有main(),可以猜测busybox是经由过程一些办法将init过程的人口修改为init_main(),实际上所有busybox的敕令对象都是一个到busybox法度榜样的链接,

  1. cd /sbin 
  2. ls -l init 
  3. lrwxrwxrwx 1 root 0 14 Nov 16 2016 init -> ../bin/busybox  

可以看到,init过程其实是到busybox的链接,不消管它,知道init过程的人口是init_main()函数就行了

  1. /* Check if we are supposed to be in single user mode */ 
  2. if (argv[1] 
  3.  && (strcmp(argv[1], "single") == 0 || strcmp(argv[1], "-s") == 0 || LONE_CHAR(argv[1], '1')) 
  4. ) { 
  5.     /* ??? shouldn't we set RUNLEVEL="b" here? */ 
  6.     /* Start a shell on console */ 
  7.     new_init_action(RESPAWN, bb_default_login_shell, ""); 
  8. else { 
  9.     /* Not in single user mode - see what inittab says */ 
  10.  
  11.     /* NOTE that if CONFIG_FEATURE_USE_INITTAB is NOT defined, 
  12.      * then parse_inittab() simply adds in some default 
  13.      * actions (i.e., INIT_SCRIPT and a pair 
  14.      * of "askfirst" shells) */ 
  15.     parse_inittab(); 
  16.  

这一段代码是一个if断定,注释说如不雅是single user mode,则走上半段代码,如不雅不是single user mode,则调用parse_inittab() 函数,因为内核启动init过程没有传入附加参数,所以argv[1]不存在,法度榜样走parse_inittab()

在busybox中履行make meunconfig,进入熟悉的设备界面

大年夜概浏览一下,和init有关系的似乎有个Init Utilities项,进去

注释还说如不雅没有定义CONFIG_FEATURE_USE_INITTAB 这个宏,法度榜样会履行一些默认的action,那怎么知道这赋J定义了没有呢,猜测这个宏应当是对busybox设备时的选项,好,怎么查看busybox设备呢,和linux内核设备一样的事理,结合make menuconfig和各级config文件来看

 1/6    1 2 3 4 5 6 下一页 尾页

  推荐阅读

  关于ES6的10个最佳特性

ES6,正式名称是ECMAScript2015,然则ES6这个名称加倍简洁。ES6已经不再是JavaScript最新的标准,然则它已经广泛用于编程实践中。如不雅你还没用过ES6,如今还不算太晚...下面是10个ES6最>>>详细阅读


本文标题:Linux启动分析——init进程与app启动

地址:http://www.17bianji.com/lsqh/37057.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)