zoukankan      html  css  js  c++  java
  • [linux 整理] linux启动过程3


    本文介绍linux启动过程的第三步

          busybox--------------------> rc init

    busybox位置即内容

    Image(33)[4]


    busybox/init/init.c

    1.各种设置信号

      signal(SIGHUP, exec_signal)

      ......

    2.  ...public/apps/busybox/init/init.c  function: console_init    作用:初始化窗口大小

    Image(34)[4]

    3.  ..../busybox/init/init.c  function: parse_inittab    作用:读取etc/inittab  file

    Image(35)[4]


    rootfs/VD625/etc/inittab

    Image(36)[4]

    sys初始化时会执行/etc/rcS

    rootfs/VD625/etc/rcS

    设置环境变量

    挂载文件系统

    调用rc命令:rc init

    Image(37)[4]

    Image(38)[4]

    .../apps/rc/rc.c程序中

    Image(39)[4]

    rc_init 函数

    由user/private/apps/rc/rc_fun.c编译得到

    工作:mkdir创建文件目录

             将flash块挂载到对应目录

             初始化配置,加载驱动模块,启动各种服务rc  xxx start/stop/restart

    Image(40)[4] Image(41)[4]


    rc xxx start/stop/restart/create过程解析

    对于rc  xxx start/stop/restart

    在rc/rc.c中

    Image(42)[4]

    发现传递到了rc_action(argc, argv)中   argv为  xxx start

    在rc/rc_fun中

    action函数

    Image(43)[4]

    假如说为start时, 传递给了  rc_start(ap, ap_name, xargc, xargv)   其中ap_name为xxx

    在rc_fun.c中  存在 rc_start()

    Image(44)[4] Image(45)[4]

    可以看到start函数逐个查找ap中的name与  ap_name (即xxx) 比较,当相同的时候执行(*ap->startfun)(argc, argv)

    我们观察ap指向的数组(在文件apps.h中),可以发现

    Image(46)[4] Image(47)[6]

    startfun 即为 服务xxx的启动函数   

    该服务的定义函数以及头文件都在rc文件夹中。

  • 相关阅读:
    POJ 1321:棋盘问题
    POJ 2251:Dungeon Master
    POJ 3438:Look and Say
    POJ 1094:Sorting It All Out拓扑排序之我在这里挖了一个大大的坑
    杭电1285--确定比赛名次(拓扑排序)
    南阳67--三角形面积
    南阳38--布线问题
    杭电1050--Moving Tables(区间覆盖)
    杭电1217--Arbitrage(Spfa)
    杭电1719--Friend(找规律)
  • 原文地址:https://www.cnblogs.com/sslblog/p/5984637.html
Copyright © 2011-2022 走看看