LuckFox Lyra Plus RK3506G2 Docker 开发环境搭建

环境信息

  • 宿主机:Ubuntu (x86_64)
  • Docker 镜像:luckfox-sdk:22.04
  • 基础系统:Ubuntu 22.04 LTS
  • SDK 版本:Luckfox_Lyra_SDK_250815 (kernel 6.1, buildroot 2024.02)

关键路径

项目 路径
Dockerfile ~/Code/LuckFox/Dockerfile
SDK 源码 ~/Code/LuckFox/sdk/Lyra-sdk/
编译固件输出 ~/Code/LuckFox/sdk/Lyra-sdk/rockdev/
Buildroot 离线包 ~/Code/LuckFox/sdk/Lyra-sdk/buildroot/dl/ (154个源码包)

Dockerfile 设计决策

  1. 基础镜像ubuntu:22.04 —— 与 Wiki 要求的开发环境一致
  2. SDK 挂载方式:Volume bind mount (-v /home/zwm/Code/LuckFox/sdk:/workspace),SDK 源码留在宿主机,容器内编译产物容器销毁后保留
  3. 用户身份:容器内创建 luckfox 用户 (UID=1000),与宿主机 UID 一致,避免文件权限问题
  4. Python 环境python 指向 python2(SDK 的 repo 工具需求)
  5. 编译方式./build.sh lunch 交互式选择板卡配置,不做自动化

Dockerfile

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y \
    git ssh make gcc libssl-dev \
    liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo \
    diffstat binfmt-support qemu-user-static live-build bison flex fakeroot \
    cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev \
    libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
    libmpc-dev bc python-is-python3 python2 curl file rsync bsdmainutils scons \
    wget vim \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

RUN ln -sf /usr/bin/python2 /usr/bin/python

ARG UID=1000
ARG GID=1000
RUN groupadd -g ${GID} luckfox && \
    useradd -m -u ${UID} -g ${GID} -s /bin/bash luckfox

WORKDIR /workspace

USER luckfox

CMD ["/bin/bash"]

构建镜像:

docker build -t luckfox-sdk:22.04 .

Docker 启动命令

docker run -it --rm \
  -v /home/zwm/Code/LuckFox/sdk:/workspace \
  luckfox-sdk:22.04

cd /workspace/Lyra-sdk
./build.sh lunch   # [1] RK3506G_Luckfox_Lyra_Plus → 启动媒介 → Buildroot
./build.sh         # 全量编译

遇到的问题及解决

1. Docker registry 不可达

镜像源 docker.mirrors.ustc.edu.cn DNS 解析失败。切换到 docker.m.daocloud.io(修改 /etc/docker/daemon.json,重启 Docker daemon)。

2. Docker credential helper 缺失

docker-credential-desktop 可执行文件不存在。移除 ~/.docker/config.json 中的 credsStore: "desktop" 行。

3. repo sync 需要 Python 2

宿主机 Python 版本过高(imp 模块已移除),无法直接运行 repo。Docker 镜像中安装 python2 并将 python 符号链接到 python2 解决。

4. Buildroot 无法访问 sources.buildroot.net(GFW)

下载离线包 ~/Downloads/dl.tar.gz,解压替换 buildroot/dl/,共 154 个预下载源码包。同时将 SDK 配置中 RK_NETWORK_CHECK=n 以跳过网络检查。

5. host-m4 configure 失败

首次 configure 报 "cannot run C compiled programs",增量编译导致 config.h 不完整。清理 buildroot/output/ 后重新编译通过。

编译流程验证

./build.sh          # 全量编译成功
./build.sh uboot    # U-Boot 单独编译成功 → rockdev/MiniLoaderAll.bin, rockdev/uboot.img
./build.sh kernel   # Kernel 单独编译成功 → rockdev/boot.img
./build.sh rootfs   # Buildroot rootfs 编译成功
./build.sh firmware # 固件打包成功
posted @ 2026-06-06 00:14  BorisDimitri  阅读(28)  评论(0)    收藏  举报