首页 / 操作系统 / Linux / Android init 进程 init.rc init.*.rc
1. init 进程是Android 启动后由内核启动的第一用户级进程,init 进程是系统的守护进程,init进程有四个作用依次为:子进程终止处理,生成设备驱动节点,分析及运行init.rc 文件和init.*.rc 文件, 初始化属性服务。init 进程源码位于android_root_dir/system/core/init/init.c 内。2.init 进程执行流程:注册与子进程相关的SIGCHLD信号处理器,创建并挂载启动所需的文件目录,解析init.rc 文件,初始化qemu设备,设置模拟器环境,解析init.*.rc 文件,创建进程中已经定义好的设备节点文件,生成静态设备节点,初始化属性服务,显示logo 在LCD屏幕上,只支持rle565格式的图片,设置系统初始值,执行与action_list 相关的init区块的命令,启动属性服务,创建套接字,因为子进程若要修改属性值必须向Init申请,故生成“dev/socket/property_service" 套接字,以接收申请,执行与action_list 相关的init区块的命令,设置事件处理循环的监听事件,循环处理事件,2. init.rc 是init进程启动后执行的启动脚本,定义android系统通用的环境设置及与记录进程相关设置,Init.*.rc 是定义android 在不同平台下的特定进程和环境设置,与Init.rc类似。init.rc 主要包括以On开头的 action list和以service开头的service list, action list 创建所需目录,指定特定文件的权限,service list 记录初始化程序需要启动的程序。
on init 部分:设置环境变量,挂载文件系统,主要设置根文件系统目录,以及编译时所需的库目录, android 采用NAND FLASH 所以挂载文件系统格式为yaffs2 , 主要挂载 /system /data 两个目录,/system/bin 存放shell 命令集, app- 基本应用, framework- java lib, lib- bionic lib , /data 及其子目录存放user data.
on boot 部分:设置应用程序终止条件以及驱动目录和文件权限等,在应用程序终止条件中为各应用指定了OOM 的调整值,值越大,终止优先级越高service部分 记录 init 进程启动的进程,一般是一次性程序或运行在后台的deamon 进程