1.init时设置设备权限
init可执行文件是Android系统运行的第一个用户空间的程序,它以守护进程的方式运行
2. init.rc中的内容
在Android中使用启动脚本init.rc,init启动脚本路径:system/core/rootdir/init.rc可以在系统的初始化过程中进行一些简单的初始化操作,init.rc脚本被直接安装到目标系统的根文件系统中,被init可执行程序解析
init.rc是在init启动后被执行的启动脚本,其语法主要包含了以下的内容:
commands:命令
actions:动作
triggers:触发条件
services:服务
options:选项
properties:属性
init脚本的关键字可以参考init进程的system/core/init/keyword.h文件
commands:命令是一些基本的操作
export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
mount yaffs2 mtd@system /system
mount yaffs2 mtd@system /system ro remount
mount yaffs2 mtd@userdata /data nosuid nodev
mount yaffs2 mtd@cache /cache nosuid nodev
这些命令在init可执行程序中被解析,然后调用相关的函数来实现
Actions:动作,表示一系列的命令,通常在triggers触发条件中调用,动作和触发条件的形式
on <trigger>
<command>
on init
export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
init表示一个触发条件初始化过程,在这个触发事件发生后,进行设置环境变量和建立目录的操作称为一个动作
Properties属性是系统中使用的一些值,可以进行设置和读取
在启动脚本中,属性的使用如下所示
setprop ro.FOREGROUND_APP_MEM 2048
setprop ro.VISIBLE_APP_MEM 3072
on property:ro.secure=0
start console
on property可以用于判断属性,这里的属性在整个Android系统运行中都是一致的。
Services服务,通常表示启动一个可执行程序,options选项是服务的附加内容,用于配合服务使用。
例如,启动电话的进程ril-daemon和开机动画的服务
service ril-daemon /system/bin/rild
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio sdcard_rw
service bootanim /system/bin/bootanimation
user graphics
group graphics
disabled
oneshot
ril-daemon和bootaim表示服务的名称,/system/bin/rild和system/bin/bootanimation表示服务所需要执行的可执行程序的路径。
oneshot选项表示该服务只启动一次,而如果没有oneshot选项,这个可执行程序会一直存在,如果可执行程序被杀死,则会重新启动,ril-daemon是一个守护进程,如果退出,需要重新启动,因此没有使用oneshot; bootaim开机动画,只执行一次,因此加上了oneshot.