本文介绍linux启动过程的第三步
busybox--------------------> rc init
busybox位置即内容
busybox/init/init.c
1.各种设置信号
signal(SIGHUP, exec_signal)
......
2. ...public/apps/busybox/init/init.c function: console_init 作用:初始化窗口大小
3. ..../busybox/init/init.c function: parse_inittab 作用:读取etc/inittab file
rootfs/VD625/etc/inittab
sys初始化时会执行/etc/rcS
rootfs/VD625/etc/rcS
设置环境变量
挂载文件系统
调用rc命令:rc init
.../apps/rc/rc.c程序中
rc_init 函数
由user/private/apps/rc/rc_fun.c编译得到
工作:mkdir创建文件目录
将flash块挂载到对应目录
初始化配置,加载驱动模块,启动各种服务rc xxx start/stop/restart
rc xxx start/stop/restart/create过程解析
对于rc xxx start/stop/restart
在rc/rc.c中
发现传递到了rc_action(argc, argv)中 argv为 xxx start
在rc/rc_fun中
action函数
假如说为start时, 传递给了 rc_start(ap, ap_name, xargc, xargv) 其中ap_name为xxx
在rc_fun.c中 存在 rc_start()
可以看到start函数逐个查找ap中的name与 ap_name (即xxx) 比较,当相同的时候执行(*ap->startfun)(argc, argv)
我们观察ap指向的数组(在文件apps.h中),可以发现
startfun 即为 服务xxx的启动函数
该服务的定义函数以及头文件都在rc文件夹中。