Skip to content

RK3566 开机自动运行脚本

使用 /etc/init.d/ 脚本方式(更规范)

这是 Buildroot 推荐的方式,不会干扰 inittab 的 shell 启动流程。 原理就是在 /etc/init.d/ 目录下创建一个脚本,脚本名可以自定义,但是必须以 S99 开头,表示优先级。脚本内容如下:

bash
#!/bin/sh
case "$1" in
    start)
        echo "Starting myapp..."
        # 后台启动,重定向 I/O
        /usr/bin/myapp </dev/null >/dev/null 2>&1 &
        ;;
    stop)
        killall myapp 2>/dev/null
        ;;
esac

注意:
这个脚本中: </dev/null >/dev/null 2>&1 & 这段代码的意思是: 将标准输入重定向到 /dev/null,标准输出和标准错误输出重定向到 /dev/null,并以后台进程的方式运行。 如果不加这一行,那么执行后,串口的终端就没法输入了,它占用了串口终端.

那么这个脚本如何添加至开发板的系统目录中呢? 那就需要用到 Buildroot 的 rootfs_overlay 配置了.

  1. 创建一个目录,例如 sdk/buildroot/board/rockchip/tspi/fs-overlay/etc/init.d/S99qt55,用于存放自定义的文件。这里的 S表示Start,99表示优先级,数字越小优先级越高。后面是程序的名称,可以随便定义.
  2. 将脚本的内容复制至 S99qt55 文件中。
  3. 需要在 make menuconfig 中选择 System configuration -> Root filesystem overlay directories 选项,并添加 board/rockchip/tspi/fs-overlay 目录。重点