构建根文件系统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

原文地址:https://www.cnblogs.com/physworld/p/14789495.html