您的位置:首页 > 移动开发 > Android开发

android init 进程分析 (2 初始化流程)

2014-06-08 09:25 344 查看

初始化流程

初始化主流程在init.c中实现。

1. 初始化根目录下的文件系统/dev、/proc、/sys

2. 重定向标准输入输出到/dev/__null__(open_devnull_stdio,设备号0x0103)

3. 初始化klog(klog_init,/dev/__kmsg__设备号0x010B)

4. 初始化属性系统(property_init)

5. 解析/proc/cpuinfo,获取hardware、revision

6. 处理内核传过来的命令行参数(/proc/cmdline)

7. selinux_initialize

8. 解析boot参数为相应属性(/default.prop)

9. 解析/init.rc文件

10. 动作队列插入一系列动作

a) early-init

b) 内建动作

i. wait_for_coldboot_done(/dev/.coldboot_done)

ii. mix_hwrng_into_linux_rng(/dev/hw_random,/dev/urandom)

iii. keychord_init(/dev/keychord)

iv. console_init

c) init

d) early-fs、fs、post-fs、post-fs-data

e) 内建动作

i. mix_hwrng_into_linux_rng

ii. property_service_init(PROP_SERVICE_NAME)

iii. signal_init

iv. check_startup

f) early-boot

g) boot

h) 内建动作queue_property_triggers

11. 死循环

a) 执行一个动作的一个命令(execute_one_command)

b) 重启服务进程(restart_processes)

c) 确定等待时间

d) 等待事件

i. property_set_fd(在property_service_init动作中初始化)

ii. signal_fd(在signal_init动作中初始化)

iii. keychord_fd(在keychord_init动作中初始化)

e) 处理事件

动作所处的链表:



服务所处的链表:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: