WEB开发网
开发学院手机开发Android 开发 Android 启动流程: Init.c 阅读笔记 阅读

Android 启动流程: Init.c 阅读笔记

 2010-09-10 00:55:00 来源:WEB开发网   
核心提示:< !-- [if gte mso 10]>Androidkernel 启动后执行Init 初始化,代码在system/core/init 中,Android 启动流程: Init.c 阅读笔记,- 创建/dev /proc /sys 目录,创建/dev/pts 目录( 伪终端) 和/dev/socket

< !-- [if gte mso 10]>

Androidkernel 启动后执行Init 初始化,代码在system/core/init 中。

- 创建/dev /proc /sys 目录,创建/dev/pts 目录( 伪终端) 和/dev/socket ,并分别mount

- 创建空设备节点,创建kmsg 设备节点,初始化log

- 解析init.rc

- 读取保存在/proc/cmdline 中的kernel 启动参数:

- qemu

- androidboot.console

- androidboot.mode

- factory

- factory2

- androidboot.serialno

- androidboot.baseband

- androidboot.carrier

- androidboot.bootloader

- androidboot.hardware

- 读取hardware 信息,如果cmdline 中没有指出则到/proc/cupinfo 中找

- 解析/init.“hardware 信息”.rc

- early-init

- 设备初始化,coldboot /sys/class /sys/block /sys/devices, 将这些目录下的uevent 文件找出,并使kernel 重新生成那些在init 的设备管理器开始前的设备添加事件。

- 初始化property ,从/default.prop 中读取property 。

- 如果ro.debuggable 为1 ,则初始化组合键(keychord )监听

- 打开console, 如果cmdline 中没有指定console 则打开默认的/dev/console

- 读取/initlogo.rle, 是一张565 rle 压缩的位图,如果成功则在/dev/fb0 显示Logo, 如果失败则将/dev/tty0 设为TEXT 模式并打开/dev/tty0, 输出文本的ANDROID 字样。

- 判断cmdline 中的参数:

- 如果 bootmode 为

- factory, 设置ro.factorytest 值为1

- factory2, 设置ro.factorytest 值为2

- 其他的设ro.factorytest 值为0

- 如果有serialno 则设置ro.serialno ,否则为""

- 如果有bootmod 则设置ro.bootmod ,否则为"unknown"

- 如果有baseband 则设置ro.baseband ,否则为"unknown"

- 如果有carrier 则设置ro.carrier ,否则为"unknown"

- 如果有bootloader 则设置ro.bootloader ,否则为"unknown"

- 设置ro.hardware

- 设置ro.version

- 执行所有触发标识为init 的action

- 开始property 服务,读取一些property 文件,这一动作必须在前面那些ro.foo 设置后做,以便/data/local.prop

1 2  下一页

Tags:Android 启动 流程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接