recovery下的init.rc语法解析
来源:互联网 发布:炸群软件 编辑:程序博客网 时间:2024/06/03 21:46
#import <filename>一个init配置文件,扩展当前配置。import /init.recovery.${ro.hardware}.rc# 触发条件early-init,在early-init阶段调用以下行on early-init # Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls. write /sys/fs/selinux/checkreqprot 0 # write <path> <string> [ <string> ]* # 打开路径为<path>的一个文件,并写入一个或多个字符串。 # Set the security context for the init process. # This should occur before anything else (e.g. ueventd) is started. setcon u:r:init:s0 #这段脚本的意思是init进程启动之后就马上调用函数setcon将自己的安全上下文设置为“u:r:init:s0”,即将init进程的domain指定为init。 start ueventd #执行start ueventd的命令。ueventd是一个service后面有定义 start healthd #看后面的定义可知healthd服务所在的进程为u:r:healthd:s0 位于root下的 /sbin/healthd下的pid为1的进程# 触发条件init,在init阶段调用以下行on init #export <name> <value> //全局环境变量中设在环境变量 <name>为<value>。(这将会被所有在这命令之后运行的进程所继承) export PATH /sbin:/system/bin export ANDROID_ROOT /system export ANDROID_DATA /data export EXTERNAL_STORAGE /sdcard #symlink <target> <path> //创建一个指向<path>的软连接<target>。 symlink /system/etc /etc #mkdir <path> [mode] [owner] [group] //创建一个目录<path>,可以选择性地指定mode、owner以及group。如果没有指定,默认的权限为755,并属于root用户和root组。 mkdir /sdcard mkdir /system mkdir /data mkdir /cache #insmod <path> //加载<path>中的模块。安装一个驱动模块 insmod /sec.ko #mknod命令用于创建Linux中的字符设备文件和块设备文件。 mknod /dev/sec c 182 0 #chmod <octal-mode> <path> //更改文件访问权限。 chmod 0660 /dev/sec mkdir /sideload #mount <type> <device> <dir> [ <mountoption> ] //在目录<dir>挂载指定的设备。<device> 可以是以 mtd@name 的形式指定一个mtd块设备。<mountoption>包括 "ro"、"rw"、"remount"、"noatime"、 ... mount tmpfs tmpfs /tmp #chown <owner> <group> <path> //文件的所有者和组。 chown root shell /tmp chmod 0775 /tmp chmod 666 /dev/jmt101 chown system media/dev/jmt101 write /proc/sys/kernel/panic_on_oops 1 write /proc/sys/vm/max_map_count 1000000#触发器条件为fson fs write /proc/bootprof "start mobicore (on fs)" chmod 0600 /dev/mobicore chown system system /dev/mobicore chmod 0666 /dev/mobicore-user chown system system /dev/mobicore-user chmod 666 /dev/jmt101 chown system media/dev/jmt101 # MobiCore Daemon Paths export MC_AUTH_TOKEN_PATH /efs #开启服务 mobicore start mobicore write /proc/bootprof "start mobicore end (on fs)" #创建一个目录 权限0770 并属于shell 用户和shell 组。 mkdir /dev/usb-ffs 0770 shell shell mkdir /dev/usb-ffs/adb 0770 shell shell # 试图在目录/dev/usb-ffs/adb挂载指定的设备adb 类型是functionfs 参数为uid=2000,gid=2000 mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000 write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 0BB4 write /sys/class/android_usb/android0/idProduct 0c01 write /sys/class/android_usb/android0/f_ffs/aliases adb write /sys/class/android_usb/android0/functions adb#触发条件为boot的Actionon boot #ifup <interface>网络接口 ifup lo #设置主机名为localhost hostname localhost #设置域名localdomain domainname localdomain #启动所有default服务类下的未运行服务。(和服务中的class对应) class_start default# Load properties from /system/ + /factory after fs mount.on load_all_props_action #从/system,/vendor加载属性。默认包含在init.rc load_all_propson firmware_mounts_complete #删除/dev/.booting rm /dev/.booting# Mount filesystems and start core system services.on late-init #触发一个事件。用于将一个action与另一个 action排列。 trigger early-fs trigger fs trigger post-fs trigger post-fs-data # Load properties from /system/ + /factory after fs mount. Place # this in another action so that the load will be scheduled after the prior # issued fs triggers have completed. trigger load_all_props_action # Remove a file to wake up anything waiting for firmware trigger firmware_mounts_complete trigger early-boot trigger boot#当条件property:sys.powerctl=*满足时的actionon property:sys.powerctl=* #用来应对sys.powerctl中系统属性的变化,用于系统重启 powerctl ${sys.powerctl}service ueventd /sbin/ueventd #表示这是一个关键设备服务.如果4分钟内此服务退出4次以上,那么这个设备将重启进入recovery模式 critical #在执行该服务之前修改其安全上下文为u:r:ueventd:s0,默认是init程序的上下文 seclabel u:r:ueventd:s0service healthd /sbin/healthd -r critical #在执行该服务之前修改其安全上下文为u:r:healthd:s0,默认是init程序的上下文 seclabel u:r:healthd:s0service recovery /sbin/recovery #在执行该服务之前修改其安全上下文为u:r:recovery:s0,默认是init程序的上下文 seclabel u:r:recovery:s0service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery #这个服务不会同与他同trigger(触发器)下的服务自动启动。他必须被明确的按名启动。 disabled #socket <name> <type> <perm> [ <user> [ <group> ] ] //创建一个Uinx域的名为/dev/socket/adbd 的套接字,并传递它的文件描述符给已启动的进程。<type> 必须是 "dgram"或"stream"。User 和 group默认为0。这里是system socket adbd stream 660 system system #在执行该服务之前修改其安全上下文为u:r:adbd:s0,默认是init程序的上下文 seclabel u:r:adbd:s0# Always start adbd on userdebug and eng builds# property:ro.debuggable=1时默认开启adb调试on property:ro.debuggable=1 write /sys/class/android_usb/android0/enable 1 #启动adbd服务 start adbd# Restart adbd so it can run as root#以root形式重启adbd服务on property:service.adb.root=1 write /sys/class/android_usb/android0/enable 0 restart adbd write /sys/class/android_usb/android0/enable 1# Start Daemon (Registry directories should already be present)service mobicore /system/bin/mcDriverDaemon -r /system/app/mcRegistry/020f0000000000000000000000000000.drbin -r /system/app/mcRegistry/05120000000000000000000000000000.drbin -r /system/app/mcRegistry/070b0000000000000000000000000000.drbin user system group system class core oneshot
阅读全文
1 0
- recovery下的init.rc语法解析
- recovery的init.rc中挂载system
- recovery的init.rc中挂载system
- Android 系统启动脚本init.rc语法解析
- init.rc语法解析(转载)
- android的init.rc文件的语法
- android的init.rc文件的语法
- android的init.rc文件的语法
- android的init.rc文件的语法
- android的init.rc文件的语法
- android的init.rc文件的语法
- android的init.rc文件的语法
- android的init.rc文件的语法
- android的init.rc文件的语法
- 实例分析init.rc的语法
- 实例分析init.rc的语法
- 实例分析init.rc的语法
- 实例分析init.rc的语法
- 漫画:什么是MD5算法
- iOS 屏幕尺寸、逻辑分辨率、物理分辨率之间的相互关系
- python学习笔记 第一章
- C++ IO流
- HTML学习总结
- recovery下的init.rc语法解析
- Docker实现CentOS容器SSH远程登录
- 机器学习之概率分布3
- 【GitChat】精选——JavaScript进阶指南
- for循环与for in循环
- 大小不固定的图片和多行文字的垂直水平居中
- ETL利器 Kettle实战应用解析系列(二)
- javaee权限管理shiro无效
- Java;C#/C++与Delphi/C++Builder之区别与联系