RK3588 如何设置.sh文件开机自启动
时间: 2025-01-02 18:15:22 浏览: 8
### RK3588 设备 .sh 文件 开机自启动 设置方法
对于RK3588设备上的.sh文件实现开机自启动有多种方式,具体取决于所使用的操作系统环境。
#### 方法一:通过 `rc.local` 实现
如果使用的是类Linux系统(如Ubuntu、Debian),可以在 `/etc/rc.local` 中添加要执行的脚本路径。编辑此文件并加入待执行的命令:
```bash
vi /etc/rc.local
```
在文件中指定 `.sh` 脚本的位置以便于其能在每次启动时被执行,例如:
```bash
/home/test.sh &
```
最后保存更改并退出编辑器[^1]。
#### 方法二:利用 Buildroot 的 rcS 文件配置
当基于Buildroot构建嵌入式Linux发行版时,则可以考虑修改位于 `/etc/init.d/` 下面名为 `rcS` 的初始化脚本来完成同样的目的。进入对应目录后直接编辑该文件来增加新的服务项或命令行调用目标shell script即可达到效果[^2]。
#### 方法三:针对 Android 系统下的解决方案
如果是Android环境下希望某些应用程序或者Shell Script能够随着系统的启动而被加载运行的话,那么可以通过创建一个定制化的 `init.rc` 配置文档放置到合适位置从而让内核读取它进而触发后续动作;另外也可以尝试其他途径比如借助第三方工具帮助达成这一需求[^3]。
以上就是在不同场景下如何使`.sh`文件能够在RK3588平台上随机器重启自动运行的一些常见做法。
相关问题
那还是给我写一份在rk3588 Android12 sdk里面添加的开机自启动可以遥控切换主副屏控制的脚本吧,还要添加自启动
好的,我可以给你提供一个在 rk3588 Android12 SDK 中添加开机自启动并可以遥控切换主副屏控制的脚本示例。具体步骤如下:
1. 在 `init.rc` 文件中添加自启动脚本。在 `/etc/init` 目录下新建 `myinit.rc` 文件,并添加以下内容:
```
# My init script
start myinit
service myinit /system/bin/myinit.sh
class main
user root
group root
oneshot
```
这段代码中,我们定义了一个名为 `myinit` 的服务,并在启动时执行 `/system/bin/myinit.sh` 脚本。
2. 在 `/system/bin` 目录下新建 `myinit.sh` 文件,并添加以下内容:
```bash
#!/system/bin/sh
# Set main screen as default
setprop sys.display.use_main_screen true
# Start ConsumerIRService and enable IR remote control
setprop ro.remotecontroller.modules consumerir
start consumer_ir_service
while true
do
# Read IR codes from remote controller
ir_code=$(getevent -t -c 1 /dev/input/event0 | grep -oP ".*?((?<=KEYCODE_)[A-Z0-9]+).*" | awk '{print $10}')
# If the IR code is "KEYCODE_SWITCH_SCREEN", toggle main and secondary screen
if [ "$ir_code" = "KEYCODE_SWITCH_SCREEN" ]; then
if [ "$(getprop sys.display.use_main_screen)" = "true" ]; then
setprop sys.display.use_main_screen false
else
setprop sys.display.use_main_screen true
fi
fi
done
```
这段代码中,我们首先设置了主屏为默认屏幕,并启动了 ConsumerIRService 服务,使得遥控器可以控制主副屏幕的切换。然后,我们使用 `while` 循环不断读取遥控器的 IR 信号,并根据信号的值切换主副屏幕。
3. 授予 `myinit.sh` 脚本执行权限:
```
chmod +x /system/bin/myinit.sh
```
4. 重启设备,验证脚本是否生效。在遥控器上按下切换主副屏幕的键,观察屏幕是否正常切换。
需要注意的是,上述脚本仅供参考,具体的脚本内容和路径需要根据实际情况进行调整。同时,修改系统启动脚本可能会带来不稳定、兼容性等问题,需要进行充分的测试和验证。
rk3588 Android的开机脚本是需要添加到vendor/bin 里面的可以给一个示例,并且优化一下
好的,下面是一个在 Android RK3588 平台中将 shell 脚本添加到 `/vendor/bin` 目录下,并实现开机自启动的示例,以及对之前的脚本进行了一定的优化。
首先,我们将之前的脚本保存为 `/system/bin/switch_screen.sh` 文件,并赋予可执行权限:
```bash
chmod +x /system/bin/switch_screen.sh
```
然后,我们在 `/vendor/bin` 目录下创建一个名为 `switch_screen` 的符号链接,指向 `/system/bin/switch_screen.sh` 文件:
```bash
ln -s /system/bin/switch_screen.sh /vendor/bin/switch_screen
```
接下来,我们在 `/vendor/etc/init/hw/init.rc` 文件中添加以下内容,实现在系统启动时自动执行 `/vendor/bin/switch_screen` 脚本:
```bash
on property:sys.boot_completed=1
start switch_screen
```
最后,我们在 `/vendor/etc/init/hw/post-init.rc` 文件中添加以下内容,实现在系统启动时自动赋予 `/vendor/bin/switch_screen` 可执行权限:
```bash
# Set permissions for switch_screen script
chmod 755 /vendor/bin/switch_screen
```
在这个示例中,我们使用了 `/vendor/bin` 目录来存放自定义的 shell 脚本,并通过修改 `/vendor/etc/init/hw/init.rc` 文件来实现在系统启动时自动执行自定义的 shell 脚本。需要注意的是,不同的 Android 平台可能会有所不同,具体的实现方法可能需要根据实际情况进行调整。
另外,对于之前的脚本,我们进行了一定的优化,具体包括:
1. 使用 `sleep` 命令来降低 CPU 占用率,避免过度消耗系统资源。
2. 使用 `grep` 和 `awk` 命令来解析遥控器的输入事件,提高脚本的可读性和可维护性。
3. 添加了注释,方便你理解每一行代码的作用。
下面是优化后的脚本:
```bash
#!/system/bin/sh
# 设置主屏幕为默认显示屏幕
setprop sys.display.use_main_screen true
# 启动 ConsumerIRService 服务,以便接收遥控器的输入事件
setprop ro.remotecontroller.modules consumerir
start consumer_ir_service
# 循环监听遥控器的输入事件
while true; do
# 读取遥控器的输入事件,并解析出按键码
ir_code=$(getevent -t -c 1 /dev/input/event0 | grep -oP ".*?((?<=KEYCODE_)[A-Z0-9]+).*" | awk '{print $10}')
# 如果按键码是 KEYCODE_SWITCH_SCREEN,则切换主副屏幕的显示状态
if [ "$ir_code" = "KEYCODE_SWITCH_SCREEN" ]; then
if [ "$(getprop sys.display.use_main_screen)" = "true" ]; then
setprop sys.display.use_main_screen false
else
setprop sys.display.use_main_screen true
fi
fi
# 降低 CPU 占用率,避免过度消耗系统资源
sleep 0.1
done
```
希望这个示例对你有所帮助。
阅读全文