1.1.1. Android 系统分区结构1.1.2. Android 系统启动1.1.3. init进程1.1.4. Vold1.1.5. servicemanager1.1.1. Android 系统分区结构
bootloader分区
系统加载器 相当于bios 通常厂商进行加密 仅能引导相应固件
boot分区
存储boot.image 其中包括linux kernel initrd等文件
Splash分区
开机图片 动画
radio分区
基带所在分区 存储通信质量相关的驱动,常用驱动存在于linux内核boot分区
recovery分区
mini Android boot镜像 用来做系统恢复 故障维修
System 分区
存储系统镜像文件包括framework libraries 以及预装应用 即/system 目录
User Data分区
内部存储分区 即挂载后 /data目录
Cache分区
存储 日志 ota更新包等 cache
1.1.2. Android 系统启动
bootloader加载阶段
boot分区加载kernel initrd到ram 跳转kernel
初始化设备服务 启动init
加载系统服务 启动adbd vold zygote servicemanager等
虚拟机初始化 startVM 启动framework服务
启动完成 发送boot_complete广播
1.1.3. init进程
pid = 1 0号是kernel
解析init.rc脚本
初始化属性服务 property servcie
for循环 建立子进程 对关键服务进行重启和异常处理
init.rc脚本
启动系统开启service和deamons
指定不同的service在不同的用户或者用户组运行
修改设置全局的属性服务
注册一些动作和命令在特定的时间执行
1.1.4. Vold
Volume Daemon 存储类守护进程 负责CDROM USB MMC 存储挂载任务。
处理过程
创建链接
vold一方面接收驱动信息,将信息传给应用层,另一方面接受上层命令完成相应功能。
vold socket:负责vold与应用层信息传递
访问udev的socket:负责vold与底层信息传递
引导
vold启动时,对现有外设存储设备处理。首先加载vold.conf,并检查挂载点是否被挂载,执行mmc卡挂载,最后处理usb大容量存储
事件处理
通过对两个链接舰艇,完成对动态事件的处理
1.1.5. servicemanager
打开dev/binder 并在内存映射128kb的空间
通知bidner设备,把自己变成context_manager
循环读取binder设备,如果有对service的请求,就去调用svcmgr_handler函数回调处理请求1
Copyright © tracyliu-FE 2021 all right reserved,powered by Gitbook文件修订时间:
2022-03-06 12:52:33