一、开启某些功能支持
比如开启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.mk 的 RK_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 就在板子上了,开机也会自动启动。