下载此文档

Android init 启动过程分析.doc


文档分类:IT计算机 | 页数:约20页 举报非法文档有奖
1/20
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/20 下载此文档
文档列表 文档介绍
Android init 启动过程分析
分析android的启动过程,从内核之上,我们首先应该从文件系统的init开始,因为 init
是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/,
/bin/ 等目录下查找默认的init,如果没有找到那么就报告出错。
下面是曾经用过的几种开发板的命令行参数:
S3C2410 启动参数:
noinitrd
root=/dev/nfs  nfsroot=:/nfsroot/rootfs  
ip=:::::eth0:on
console=ttySAC0
S3C2440 启动参数:
setenv bootargs console=ttySAC0
root=/dev/nfs nfsroot=:/nfsroot/rootfs
ip=:::::eth0:on
mem=64M init=/init         
marvell 310 启动参数:
boot root=/dev/nfs
nfsroot=:/nfsroot/rootfs,rsize=1024,wsize=1024
ip=:::::eth0:-On 
console=ttyS2,115200 mem=64M init=/init
init的源代码在文件:./system/core/init/ 中,init会一步步完成下面的任务:

/init.%hardware%.rc文件  
3. 执行 early-init action in the two files parsed in step 2.  
4. 设备初始化,例如:在/dev 下面创建所有设备节点,下载 firmwares.  
5.
初始化属性服务器,Actually the property system is working as a share memory.
Logically it looks like a registry under Windows system.  
6. 执行 init action in the two files parsed in step 2.  
7. 开启属性服务。
8. 执行 early-boot and boot actions in the two files parsed in step 2.  
9. 执行 Execute property action in the two files parsed in step 2.  
10.
进入一个无限循环 to wait for device/property set/child process exit ,
如果SD卡被插入,init会收到一个设备插入事件,它会为这个设备创建节点。系统中比较重要的进程都是由init来fork的,所以如果他们他谁崩溃
了,那么init 将会收到一个 SIGCHLD 信号,把这个信号转化为子进程退出事件, 所以在loop中,init 会操作进程退出事件并且执行
*.rc 文件中定义的命令。
例如,,因为有:
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
    socket zygote stream 666
    onrestart write /sys/android_power/request_state wake
    onrestart write /sys/power/state on
所以,如果zygote因为启动某些服务导致异常退出后,init将会重新去启动它。
int main(int argc, char **argv)
{
    ...
    //需要在后面的程序中看打印信息的话,需要屏蔽open_devnull_stdio()函数
    open_devnull_stdio();
    ...
    //初始化log系统
    l

Android init 启动过程分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数20
  • 收藏数0 收藏
  • 顶次数0
  • 上传人875845154
  • 文件大小0 KB
  • 时间2015-12-25