zoukankan      html  css  js  c++  java
  • 构建根文件系统1-概述

    应用程序在根文件系统中,没有根文件系统就跑不了程序。

    烧写了根文件系统后可以用ps命令看有哪些应用程序在运行。

    像ls等命令都是一个个应用程序,成千上百个应用程序如果要自己找源码编译非常麻烦,所以用busybox工具。

    busybox是ls.cp.cd命令的组合,这些命令都是到busybox的链接,运行ls 和运行busybox ls 是一样的

    busybox的init程序是linux启动后执行的第一个进程,后续进程也是由init进程创建的,比如init进程启动/bin/sh程序后,才能够在控制台上输入各种命令。

    init程序通过读取、解析inittab配置文件,执行用户程序

    busybox-->init_main()

          parse_inittab()

            file = fopen("INITTAB",)

            new_init_action(...)①创建一个init_action结构,根据new_init_action传入的参数填充结构体成员

                        ②把这个结构体放入init_action_list链表

            run_actions(...);

           

    static void new_init_action(int action, const char *command, const char *cons)

    new_init_action(ASKFIRST, bb_default_login_shell, VC_2)  ==  new_init_action(ASKFIRST, "-/bin/sh", "/dev/tty2") 

    构建最小根文件系统需要:

    ①/dev/console

    ②/dev/null(如果不设置initab里的id,标准输入输出的内容就会到dev/null这个文件里)

    ③/etc/inittab

    ④配置文件里指定的应用程序

    ⑤c库

    INITTAB格式:

    <id>:<runlevels>:<action>:<process>

    id => /dev/id   用作终端: stdin, stdout, stderr: printf, scanf, err

    runlevel      : 忽略

    action    :执行时机

    process       :应用程序或脚本

    参考文章:https://blog.csdn.net/fc34235/article/details/71515128

  • 相关阅读:
    catalina_home与catalina_base
    log4j配置
    lsof
    定时任务-crontab
    access日志配置
    java常识
    mysql事务隔离级别与实现原理
    文件描述符设置
    gpio 預設值
    synchronous interrupt and asynchronous interrupt
  • 原文地址:https://www.cnblogs.com/physworld/p/14789495.html
Copyright © 2011-2022 走看看