01_busybox之init_main分析

本文详细分析了busybox中的init_main函数,解析了如何读取并执行配置文件/etc/inittab,包括创建init_action结构、执行系统初始化、等待应用程序执行完毕等步骤。还介绍了INITTAB的格式和不同执行时机(如CTRLALTDEL、SHUTDOWN、RESTART等)。最后回顾了最小根文件系统所需组件,强调了init程序和C库的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回顾:
U-boot最终目的:启动内核
内核最终目的:启动应用程序,(init进程,通过sbin/init或其它)


init程序包括以下内容:
(1)读取配置文件
(2)解析配置文件
(3)根据配置文件,启动/执行用户程序


配置文件中包括:
(1)指定用户程序
(2)何时执行

/

busybox-> init_main
               parse_inittab                        // 解析init表
                     file = fopen(INITTAB, "r");    // 打开配置文件 "/etc/inittab"
                     new_init_action                // (1)创建一个init_action结构,内容用上面的内容填充
                                                       (2)把这个结构放入init_action_list链表
               run_actions(SYSINIT);                //执行SYSINIT这一类的action,即执行系统初始化
                     waitfor(a, 0);                 //执行应用程序,等待它执行完毕
                            run(a)                  //创建precess子进程(子进程就是<process> 里面的指定的程序)
                            waitpid(runpid, &status, 0);   //等待它结束
                     delete_init_action(a);         //把init_action结构在init_action_list链表里删掉
               run_actions(WAIT);
                     waitfor(a, 0);                 //执行应用程序,等待它执行完毕
                            run(a)                  //创建precess子进程(子进程就是<process> 里面的指定的程序)
                            waitpid(runpi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值