关注重点:
- init进程做了什么
- ro.hardware 属性值是什么时候设置的
init进程简介
是linux内核启动的第一个进程,进程号为1.
6.0代码: android/system/core/init/init.cpp , main()函数为入口
init进程做了什么:
大概了解下,并不是学习的重点
- 创建和安装设备文件/进程文件/系统文件节点
- 启动属性服务 property service
- 解析并启动init.rc
- 初始化系统后, init进程进入循环,不断地检查是否有action要执行,是否要重启某项挂掉的服务
启动属性服务
- 加载属性的默认值
- property_load_boot_defaults();
- 从PROP_PATH_RAMDISK_DEFAULT = /default.prop 文件去加载
- load_system_props()
- PROP_PATH_SYSTEM_BUILD = /system/build.prop
- PROP_PATH_VENDOR_BUILD = /vendor/build.prop
- PROP_PATH_FACTORY = /factory/factory.prop
- load_override_properties()
- PROP_PATH_LOCAL_OVERRIDE = /data/local.prop
- process_kernel_cmdline( )
- 从 "proc/cmdline" 中读取androidboot. *的属性, 并保存到ro.boot.* 上去
- 例如: androidboot.hardware = qcom , 那么ro.boot.hardware = qcom
- 启动了一个socket服务