Android 源码分析 - 系统 - init (2 初始化流程)

本文详细介绍了Android系统的初始化过程,从初始化根目录文件系统到解析/init.rc文件,包括标准输入输出的重定向、属性系统初始化、selinux设置、boot参数解析等关键步骤。此外,还涉及了动作队列的构建和执行,以及服务进程的启动和管理。通过对这些核心流程的分析,读者可以深入理解Android系统启动的工作原理。
摘要由CSDN通过智能技术生成

初始化流程

初始化主流程在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)        处理事件

动作所处的链表:

服务所处的链表:

Android 源码分析 - 系统 - init (2 初始化流程)_luansxx的专栏-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值