地平线Horizon XJ3设置开机启动项
XJ3添加启动项
0728版本之后的init进程改为了android的init进程,与sysvinit的init添加启动有一些区别 android init的启动项都放到了/init.rc当中,init.rc详细的语法规则我们只做简单介绍,详细规则可参考https://www.jianshu.com/p/cb73a88b0ee
在/etc/init.d中增加启动脚本
下面是/init.rc中的一个启动项
on property:loadko.ready=1
class_start loadko_ready
service dispinit /etc/init.d/x3dispinit.sh
class loadko_ready
oneshot
console
属性的名称有如下规则
- 属性名称的长度必须大于等于1,小于32
- 属性名称不能以".“开头和结尾
- 属性名称不能出现连续的”."
- 属性的名称必须以"."为分隔符,且只能使用:‘0’-‘9’、‘a’-‘z’、‘A’-‘Z’、’-‘及’_'等字符
2、添加一个启动项
下面是/init.rc中的一个启动项
on property:loadko.ready=1
class_start loadko_ready
service dispinit /etc/init.d/x3dispinit.sh
class loadko_ready
oneshot
console
属性的名称有如下规则
- 属性名称的长度必须大于等于1,小于32
- 属性名称不能以".“开头和结尾
- 属性名称不能出现连续的”."
- 属性的名称必须以"."为分隔符,且只能使用:‘0’-‘9’、‘a’-‘z’、‘A’-‘Z’、’-‘及’_'等字符
添加一个启动项
service <name><pathname> [ <argument> ]*
class xxx
oneshot
console
- 如果要添加的启动脚本,对某些ko有依赖,可以类似x3dispinit.sh属于class loadko_ready,表示在ko被insmode之后再执行,如果没有特殊的依赖, 都可以属于这个class
- 如果脚本是在文件系统建立好之后,就可以运行,可以属于class popvol_ready,这个类依赖于populate-volatile.sh,populate-volatile.sh负责建立一 些常用目录和链接,如/tmp, /var等等,并且他已经依赖了sysfs,mountall等其他启动项,这个脚本启动完成后,文件系统以建立完毕。
- 如果你写了多个脚本A.sh,B.sh,且B.sh对A.sh有依赖,那可以,A仍然依赖于populate-volatile.sh,B依赖于A,并在A中启动B
service A A.sh
class popvol_ready
service B B.sh
class A_ready
on property popvol.ready=1
class_start popvol.ready
[A.sh]
...
setprop A.ready 1
...