Init.c
1. 初始化属性(包括建立/dev、/proc等目录、初始化属性、执行init.rc等初始化文件中的action等)。
2. 处理配置文件的命令(主要是init.rc文件),包括处理各种Action。
3. 性能分析(使用bootchart工具)。
4. 无限循环执行command(启动其他的进程)。
ramdisk.img中存放init.c文件
property_init();
1.import /init.${ro.hardware}.rc导入其他配置文件。
2.加载default.prop文件
3.把属性内存区域创建在共享内存上,(init_workspace()),映射到本地进程空间。
4.当属性服务器收到客户端请求uevent=POLLIN时
执行handle_property_set_fd()
(setprop ctl.start bootanim命令就执行开机动画。
5.客户端发送请求(properties.c)-》property_set()中
get_hardware_name(hardware, &revision);
打开/proc/cpuinfo文件中获取Hardware字段的值(小写)
不难看出获取到的hardware字段值是用在import /init.${ro.hardware}.rc中。
process_kernel_cmdline();
import CMD命令,通过内核的属性设置应用层配置文件的属性。
Init.rc
1.文件内容:
On init: section init
On boot: section boot
…
Class_start defult 这是一个COMMAND,对应函数do_class_start
service 也是一个section
2.解析section的函数:
parse_new_section(state,kw,nargs,args);
K_service:
parse_service(state, nargs,args);
service->classname=”default”;