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