android系统启动
recovery升级模式:启动recovery分区内核和文件系统
正常启动模式: 引导内核和启动Android系统

android系统由uboot启动:
1、输入模式,输入了recover命令,重启uboot就会引导recover分区,
2、uboot启动的过程中会等待 按键输入,如电源 + 音量上键 进入recover模式
3、系统正常重启后,点击了系统升级,重启就会启动recover模式,升级下载的安装包
三种不满足就boot正常启动。
升级2种升级方式:
差量包升级
完整包升级
当升级完后,就会擦除掉recovery模式。
Android init 进程(系统守护进程)
在系统源码位置: system/core/init/init.c
当编译生成系统后,会放在文件系统根目录: /init,这里我链接自己手机输入:
adb root
adb devices
adb shell
ls -l
ps -A // 查看所有进程

在手机根目录可看到init,它是init.c生成的执行文件,ps -A查看系统的进程可以看到init进程为1。
下图为 init主要做的事情:


init的启动log信息也在 根目录/proc/kmsg中
cat /proc/kmsg
查看cpu的一些信息
cat /proc/cpuinfo
获得环境变量信息:
getprop ro.hardware
getprop ro.revision
内核启动参数
cat /proc/cmdline
默认环境变量
cat default.prop
Init进程消息处理
1、根据系统中消息设置或者shell设置系统的prop
2、守护系统服务 如果系统退出,重启系统服务
创建socket套接字服务:


设置prop
设置和处理prop消息流程图

例子
adb root
adb shell
getprop // 查看所有prop设置
setporp propName value //向 propoty sevice sockt发生消息,调用setProp 设置prop参数
守护服务

init中signal_init_action 函数init时,触发sigchld_handler 的信号函数,同时创建
signal_fd 、signale_recv_fd 2个sokect ,并监听这2个socket。 通过 这2个套接字 init进程和子进程通信,重启服务。
本文介绍了Android系统启动,包括recovery升级模式和正常启动模式,以及由uboot启动的不同情况和两种升级方式。还阐述了Android init进程,说明了其在系统源码位置和文件系统根目录的情况,以及init主要做的事和启动log信息位置。最后讲解了Init进程消息处理,如设置系统prop、守护系统服务等。
4512

被折叠的 条评论
为什么被折叠?



