一、开启某些功能支持

比如开启c++支持,adb支持。

  • 通过menuconfig进行界面配置
  • 通过直接修改配置文件开启某一项支持

二、集成自己的程序

有两种方法:

方法一:使用 overlay(推荐)

在 [project/cfg/BoardConfig_IPC/overlay/]下创建你自己的 overlay 目录,按根文件系统路径放置文件。

例如创建一个 overlay-myapp/ 目录结构:

project/cfg/BoardConfig_IPC/overlay/
└── overlay-myapp/
    ├── usr/
    │   └── bin/
    │       └── myapp              ← 你的应用程序
    └── etc/
        └── init.d/
            └── S99myapp           ← 开机启动脚本

然后在 .BoardConfig.mkRK_POST_OVERLAY 中添加:

export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-wifibt-firmware overlay-myapp"

方法二:直接放在 custom_root/(SDK 根目录)

SDK 根目录有 custom_root/(如没有则创建),该目录内容也会被拷贝到 rootfs:

custom_root/
└── usr/
    └── bin/
        └── myapp

这种方式不需要改 BoardConfig。

三、配置开机自启,配置一些脚本

/root/luckfox-dev/luckfox-pico/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d

参考现有的 S99python 脚本风格,创建一个启动脚本。命名规则:S<数字><名称>,数字越小越早执行。

示例 S99myapp

#!/bin/sh

DAEMON=/usr/bin/myapp

start() {
    printf "Starting myapp: "
    if [ -f $DAEMON ]; then
        $DAEMON &
        echo "OK"
    else
        echo "FAIL: $DAEMON not found"
    fi
}

stop() {
    printf "Stopping myapp: "
    killall myapp
    echo "OK"
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart|reload)
        stop
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit $?

注意事项

  • 脚本要加可执行权限chmod +x S99myapp
  • 如果 app 是后台守护进程,用 & 放到后台
  • 如果想开机启动后还能登录,不要用 exec,要用 &

验证

# 只重新打包固件(不需要重编整个 rootfs)
./build.sh firmware

Overlay 的文件会在 __PACKAGE_ROOTFS 阶段自动拷贝到 rootfs 中,然后打包成 rootfs.img。烧录后 app 就在板子上了,开机也会自动启动。