Android 源码分析 - 系统 - init (2 初始化流程)
2021/12/9 14:17:41
本文主要是介绍Android 源码分析 - 系统 - init (2 初始化流程),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
初始化流程
初始化主流程在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博客
这篇关于Android 源码分析 - 系统 - init (2 初始化流程)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路