1.  init.rc文件结构
文件位置:
init.c  : /system/core/init
init.rc  : /system/core/rootdir

首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on、service、import。
我们可以看下init.rc文件是怎么写的:
1.import

import /init.usb.rc

import /init.${ro.hardware}.rc

import /init.trace.rc


上面的内容很容易懂,就是导入其他的.rc文件,所以当你在android源码里添加了产品并要添加开机启动项时,就可以往这里添加。

2.on
一般on类型都是做一些chown、mkdir、write、export、symlink等简单的shell指令
而且init.rc本身带了些注释,比较好懂。

on post-fs-data

     # We chown/chmod /data again so because mount is run as root + defaults

     chown system system /data

     chmod 0771 /data



3.service
service类型的模块表示一个可执行程序,例如:

service bootanim /system/bin/bootanimation

      class main

      user graphics

      group graphics

      disabled

      oneshot


bootanim为模块名
/system/bin/bootanimation为可执行文件的路径
class、user、group、onrestart这些关键字所对应的行是用来描述service一些特点。,不同的service有着不同的特点。

init.rc的结构大概就如此,那么这个init.rc是如何运行起来的呢?这个就要看init.c文件了
首先我们知道每个on模块都有自己的名字,如上边post-fs-data。然后你可以在init.c里发现这样一句:

action_for_each_trigger("post-fs-data", action_add_queue_tail);

这就把 ” on  post-fs-data“开始的这样一个section里的所有命令加入到一个执行队列,在未来的某个时候会顺序执行队列里的命令,所以调用action_for_each_trigger()的先后决定了命令执行的先后。
那这个service什么时候被执行呢?
在某个on模块的指令里会存在“class_start”,例如:

class_start core

class_start main

on nonencrypted

class_start late_start


当执行到这里是service模块就会被调用。

最后关于init.c就不分析了,有兴趣的朋友应该可以通过函数名和注释很好的理解里面的内容是做些什么的。

android启动过程之init.rc文件浅析相关推荐

  1. Android源码之init.rc文件详解

    一.引言 .rc文件是 android系统一个十分重要的文件. 其是资源文件,包括比如对话框.菜单.图标.字符串等资源信息. 使用.rc资源文件的目的是为了对程序中用到的大量的资源进行统一的管理. 本 ...

  2. android insmod命令,android的启动脚本(init.rc)文件的语法

    android的启动脚本(init.rc)文件的语法,参考资料: Android 初始化语言(Android Init Language) Android初始化脚本语言包含四种类型的语句: 动作(Ac ...

  3. 我的Android进阶修炼:安卓启动流程之init(1)

    文章目录 我的Android进阶修炼:安卓启动流程之init(1) 一.前言 二.init进程简介 1.文件位置 2.主要功能 三.init进程源码分析 3.1 main() 源码注解 3.1.1 参 ...

  4. Android init.rc文件解析过程详解(三)

    Android init.rc文件解析过程详解(三) 三.相关结构体 1.listnode listnode结构体用于建立双向链表,这种结构广泛用于kernel代码中, android源代码中定义了l ...

  5. Android init.rc文件解析过程详解(一)

        Android init.rc文件解析过程详解(一) 一.init.rc文件结构介绍 init.rc文件基本组成单位是section, section分为三种类型,分别由三个关键字(所谓关键字 ...

  6. Android 9.0 在init.rc中启动一个服务

    现在有一个blink .bin文件,需要拷贝到/system/bin/目录下面去,然后再init.rc文件中启动该服务 一.init.rc文件中启动服务 1.在init.rc文件中启动服务 代码路径: ...

  7. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  8. Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  9. Android 的 init.rc 文件简介【转】

    转自:http://blog.csdn.net/yimiyangguang1314/article/details/6268177 init.rc由许多的Action和Service组成.每一个语句占 ...

最新文章

  1. 【OpenCV 】反向投影
  2. api工程IOS学习:在IOS开发中使用GoogleMaps SDK
  3. Spring Boot定时任务应用实践
  4. C语言 | 结构体指针
  5. IIS 启动不了(服务没有及时响应启动或控制请求)解决
  6. matlab作业5答案,《matlab作业题答案》.doc
  7. AcWing 1055. 股票买卖 II
  8. php相差天数,php获取给定日期相差天数
  9. Redis无法保存ef复杂对象
  10. UG10.0塑胶模具设计从入门到精通全套视频教程500讲
  11. 计算机学院毕设中期检查报告,毕业设计中期检查报告
  12. C语言读取GPT分区信息
  13. CentOS 6.X yum源更新(阿里云默认最新更新为CentOS6.10)
  14. Python必会的12道面试题,看看你会几题?
  15. 【看表情包学Linux】插叙:实现简易的 Shell | 通过内建命令实现路径切换 | 再次理解环境变量
  16. 第四集 孤胆翻越橡皮山,丈量生命之厚度
  17. 远程桌面打开任务管理器
  18. 清理localstorage_localstorage文件夹可以删除吗
  19. C语言入门基础知识【完整版】
  20. 22、p2p信贷术语

热门文章

  1. Rails + Bootstrap个人博客搭建的完整过程(4)
  2. 不要把a href=当作按钮用
  3. IDEF企业软件系统建模方法
  4. Win8下用DOSBox编写汇编语言
  5. matlab神经网络不常见问题
  6. 前端怎么自我介绍_实习|猫眼前端面试经历,问问题很关键(已拿offer)
  7. Javascript第五章innerHTML/innerText/创建新节点元素添加内容第八课
  8. ogg for java_luogg_java学习_04_数组
  9. mysql 物化视图_Mysql物化视图应用
  10. mongoDB 基础指令