. 软件包管理 — 增删功能

Buildroot 的 defconfig[luckfox_pico_defconfig]控制哪些软件包编译进 rootfs。

常用类别:

类别示例包配置项
脚本语言python3, lua, perlBR2_PACKAGE_PYTHON3=y
网络服务openssh, dhcpcd, nginx, vsftpdBR2_PACKAGE_OPENSSH=y
调试工具strace, gdb, valgrind, tcpdump需要自己加
系统工具htop, nano, iperf3, iptablesBR2_PACKAGE_HTOP=y
USB gadget串口/网卡/摄像头/U盘 模拟内核配置,rootfs 配启动脚本
数据库sqlite, influxdb需要自己加
媒体库ffmpeg, gstreamerRockchip 有自己的 media 库,也可加通用库

添加方法:编辑 defconfig,加上 BR2_PACKAGE_xxx=y,然后重新编译 rootfs。

# 也可用 menuconfig 交互式选择
./build.sh buildrootconfig

2. 文件系统类型 — 可换其他的

当前用的是 ubifs,可以改 RK_PARTITION_FS_TYPE_CFG 切换:

类型特点适用场景
ubifs可读写、压缩、坏块管理需要写 rootfs(当前配置)
squashfs只读、高压缩率、挂载快稳定版固件,不可变系统
erofs只读、比 squashfs 更高效只读 rootfs(改进版)
jffs2可读写SPI NOR Flash 专用

例如切换为 squashfs 只读(更省空间,更稳定):

RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@squashfs,oem@/oem@ubifs,userdata@/userdata@ubifs

同时 sys_bootargs 会自动从 root=ubi0:rootfs 变为 root=/dev/ubiblock0_0 rootfstype=squashfs


3. 初始化和启动行为

现有的 init 脚本在 overlay 中,可以:

  • 添加新的开机服务:创建 S<数字><名称> 脚本
  • 修改开机启动顺序:调整数字大小
  • 自定义 /etc/inittab:修改串口登录行为、自动登录
  • 自定义 /etc/profile:改环境变量、PATH、别名
  • 自动登录 root:修改 /etc/inittab/etc/securetty

现有 init 脚本位置:overlay-luckfox-buildroot-init/etc/init.d/


4. 摄像头/ISP 配置

通过 BoardConfig 中的 RK_CAMERA_SENSOR_IQFILESRK_CAMERA_SENSOR_CAC_BIN

export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json"

IQ 文件会被打包到 OEM 分区,系统启动时 ISP 加载。

  • 换摄像头传感器:改 IQ 文件列表
  • 加多个摄像头:增加列表中的文件
  • 调图像质量:修改 IQ JSON 文件中的参数(AE、AWB、AF 等)

5. USB 功能模拟 (USB Gadget)

RV1106 的 USB 可以模拟多种设备。参考 S99usb0config

  • USB 串口:模拟 USB 转串口,通过 USB 登录板子
  • USB 网卡(RNDIS/ECM/NCM):板子虚拟成 USB 网卡
  • USB 摄像头(UVC):板子采集摄像头通过 USB 输出视频流
  • USB 声卡(UAC):模拟 USB 音频设备
  • USB 大容量存储:模拟 U 盘

内核配置中这些功能已启用(CONFIG_USB_GADGET=y),rootfs 配启动脚本即可切换。


6. 网络功能增强

功能修改方式
WiFi 连接BoardConfig 中 LF_WIFI_SSID / LF_WIFI_PSK
4G/5G 模块内核有 rv1106-wwan-ndis-ppp.config 配置片段
有线网络设备树中启用 GMAC(当前 Pro Max 禁用)
蓝牙内核有 rv1106-bt.config 配置片段
热点模式用 hostapd + dhcpd
WireGuard VPN内核已支持(CONFIG_WIREGUARD=y
Docker 容器内核有 luckfox_rv1106-docker.config 片段

7. 显示/屏幕

Pro Max 板子带 RGB 显示屏(640x480),可以:

  • 换显示分辨率:改设备树的 display-timings
  • 换屏幕型号:改 SPI 初始化命令序列
  • LVDS/MIPI DSI:如果硬件支持
  • framebuffer 应用:直接写 /dev/fb0
  • Qt/LVGL 等 GUI 框架:需要 Buildroot 中添加

8. NPU 推理

RV1106 内置 NPU(0.5TOPS),支持:

  • RKNN 模型推理:在 rootfs 中放 RKNN 模型文件和推理程序
  • TensorFlow Lite / ONNX:转成 RKNN 格式后运行
  • NPU 驱动已经在内核中启用
  • runtime 库在 media 编译中生成

9. 文件系统扩容与分区自定义

除了改分区大小,还可以:

  • 增加新分区:比如加一个 config 分区单独存配置
  • 修改分区文件系统:比如 userdata 用 ext4 而非 ubifs
  • OEM 分区存 appRK_BUILD_APP_TO_OEM_PARTITION=y 把 app 和资源分开

10. 调试与开发

功能配置
串口调试默认 1500000 波特率
网络文件系统(NFS)内核支持,rootfs 挂载网络目录
交叉编译工具链SDK 自带
FIQ 调试器内核已启用,可通过串口中断

11. OTA 远程升级

Buildroot + rootfs 支持 OTA:

  • recovery 模式:独立分区做系统还原
  • 双备份启动(AB 系统):两个 rootfs 分区切换
  • update.img 可网络推送烧录

动手建议路线

简单 ──────────────────────────────────────────→ 复杂

改密码 → 加 init 脚本 → 加自己的 app
                         ↓
                 加软件包 (python/nano/htop)
                         ↓
                 换 squashfs 只读系统
                         ↓
                 摄像头调优 / 换传感器
                         ↓
                 USB Gadget 模式
                         ↓
                 加 NPU 推理 + OTA 升级

你想先做哪个方向?我可以给具体步骤和配置细节。