应用程序在根文件系统中,没有根文件系统就跑不了程序。
烧写了根文件系统后可以用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