定制根文件系统

Buildroot 负责选择软件包和生成基础根文件系统,strongpi-v3s-support/rootfs_overlay 负责安装板级配置和自定义文件。

添加软件包

cd ~/v3s-workspace/buildroot-2023.02.3
make menuconfig

Target packages 中选择需要的软件,保存后执行:

make

使用 rootfs overlay

覆盖层中的路径对应开发板根目录。例如:

strongpi-v3s-support/rootfs_overlay/etc/myapp.conf

会安装为:

/etc/myapp.conf

安装自定义程序:

install -D -m 0755 myapp \
  ~/v3s-workspace/strongpi-v3s-support/rootfs_overlay/usr/bin/myapp

添加配置文件:

install -D -m 0644 myapp.conf \
  ~/v3s-workspace/strongpi-v3s-support/rootfs_overlay/etc/myapp.conf

添加开机服务

BusyBox init 按文件名顺序执行 /etc/init.d/S*。启动脚本至少应支持 startstop

#!/bin/sh

case "$1" in
  start)
    /usr/bin/myapp &
    ;;
  stop)
    killall myapp 2>/dev/null || true
    ;;
  restart)
    "$0" stop
    "$0" start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac

安装并设置权限:

install -D -m 0755 S30myapp \
  ~/v3s-workspace/strongpi-v3s-support/rootfs_overlay/etc/init.d/S30myapp

编号应根据依赖关系选择,例如网络初始化完成后再启动依赖网络的应用。

重新生成镜像

cd ~/v3s-workspace/buildroot-2023.02.3
make

Buildroot 生成新的 output/images/rootfs.tar。之后还需要重新制作 TF 卡镜像或 NAND ubi.img;只重新编译 Buildroot不会自动更新已经烧录的开发板。