在docker容器中编译 rk3588 ubuntu固件

文件准备

  • Linux SDK ---- rk3588_linux_release_20230114_v1.0.6c_0*
  • Ubuntu根文件系统 ---- Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z

硬件环境

  • 一个可联网的linux机器,并且装有docker

打包一个docker编译环境

Dockerfile内容

直接通过dockerfile构建方便快捷

# Base Image
from ubuntu:18.04

# Author
LABEL maintainer="huangjiaobai <huangjiaobai@demo.com>"

# expect
RUN apt-get update && apt-get install -y \
      build-essential \
      cmake \
      git \
      libcurl4-openssl-dev \
      libgtest-dev \
      libxml2-dev \
      pkg-config repo ssh make gcc libssl-dev liblz4-tool \
       g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
      qemu-user-static live-build bison flex fakeroot gcc-multilib g++-multilib \
      unzip device-tree-compiler ncurses-dev p7zip bc tree

# workspace
WORKDIR /app

构建并启动容器

docker build -t huangjiaobai/uos:1.0.0 .
docker run --privileged --runtime=nvidia --gpus all --name uos -tid -v /dev/mem:/dev/mem -v /home/demo/work/uos:/app/uos --rm huangjiaobai/uos:1.0.0

进入容器

我们所有的操作都在挂载的文件夹里边进行防止数据丢失

docker exec -ti uos /bin/bash

下载文件

SDK 源码存放于 gitlab,国内用户可能下载完整的 SDK 仓库速度比较慢,所以FireFly提供了一个 SDK 基础包Linux SDK,国内用户只需要在此基础包上同步 gitlab 上的代码就可以了,本人使用的linux sdk基础包
下载完毕后得到6个压缩包文件

c3bcb3f92bd139f72551c89f75d39bfa  rk3588_linux_release_20230114_v1.0.6c_00
ebb658571a645d4af1e2b569709480b7  rk3588_linux_release_20230114_v1.0.6c_01
9761cc324e9f7133500b590c441b0307  rk3588_linux_release_20230114_v1.0.6c_02
7adc9fe2158d7681554dce1def238f49  rk3588_linux_release_20230114_v1.0.6c_03
3d9201e3849b8a523c05920bebe28b39  rk3588_linux_release_20230114_v1.0.6c_04
6faaee006fe60fc9be60a64a01506cb6  rk3588_linux_release_20230114_v1.0.6c_05

解压文件,并同步

# 解压
mkdir -p rk3588_sdk
cd rk3588_sdk
cat path/to/rk3588_linux_release_20230114_v1.0.6c_0* | tar -xv

# 导出数据
.repo/repo/repo sync -l

同步代码

# 同步
.repo/repo/repo sync -c --no-tags
.repo/repo/repo start firefly --all

# 更新SDK
.repo/repo/repo sync -c --no-tags

因为网络环境等原因,.repo/repo/repo sync -c --no-tags 命令更新代码可能会失败,可多次反复执行。

下载根文件系统

Ubuntu根文件系统(64位)

下载完毕后,计算md5值
61451fa7e4fe36a6bda8df81265661d9  Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z
解压文件重命名,复制到指定位置
7z x Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z
cd rk3588_sdk
mkdir ubuntu_rootfs
mv ubuntu-aarch64-rootfs.img ubuntu_rootfs/rootfs.img

完整目录树

|-- app                                     # 上层应用
|-- build.sh -> device/rockchip/common/build.sh          # 编译脚本
|-- buildroot                                  # Buildroot 根文件系统编译目录
|-- device                                    # 编译相关配置文件
|-- docs                                     # 文档
|-- envsetup.sh -> buildroot/build/envsetup.sh
|-- external                                  # 第三方库
|-- firefly-update.sh -> device/rockchip/common/firefly-update.sh
|-- kernel
|-- mkfirmware.sh -> device/rockchip/common/mkfirmware.sh   # 链接脚本
|-- prebuilts                                  # 交叉编译工具链
|-- rkbin
|-- rkflash.sh -> device/rockchip/common/rkflash.sh       # 烧写脚本
|-- rockdev                                  # 打包好的固件目录
|-- tools                                    # 工具目录
|-- u-boot
|-- ubuntu_rootfs                              # ubuntu根文件系统
|-- uefi
`-- yocto

执行编译命令

## 选择配置
./build.sh device/rockchip/rk3588/itx-3588j-BE45-A1-ubuntu.mk

## 编译
./build.sh

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

telllong

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值