Docker container for Buildroot building

Preface

This is a Docker container for Buildroot building. It was created to support the Firefly Open Source Project. We install the required dependencies and make the development environment based on Ubuntu 16.04 LTS.

It currently only supports to ROC-RK3308-CC Buildroot SDK.

Install Docker CE

To install Docker CE, you need the 64-bit version of one of these Ubuntu versions:

  • Bionic 18.04 (LTS)

  • Xenial 16.04 (LTS)

  • Trusty 14.04 (LTS) (older than Docker CE v18.06)

You can refer to “Get Docker CE for Ubuntu” to install Docker CE.

The Automatic tool: DKCook

DKCook is a hell script programming, put at FFTools/DockerCook/.

If you can’t find FFTools, please update the SDK.

DKCookdefault use a docker image tchip/buildroot-builder,it will automatically download the buildroot-builder from Docker Hub.

To build the SDK, you can add ./FFTools/DockerCook/DKCook in front of the building command. As below:

Building the whole SDK:

cd SDK/
./FFTools/DockerCook/DKCook ./build.sh 
./FFTools/DockerCook/DKCook ./build.sh

Notice:Due to the ROC-RK3308-CC use wi-fi is AP6236,need to modify buildroot/configs/firefly_rk3308_release_defconfig, closed BR2_PACKAGE_RKWIFIBT_RTL8188EU,open BR2_PACKAGE_RKWIFIBT_AP6236.

git diff buildroot/configs/firefly_rk3308_release_defconfig
diff --git a/buildroot/configs/firefly_rk3308_release_defconfig b/buildroot/configs/firefly_rk3308_release_defconfig
index d64c090..929a55b 100755
--- a/buildroot/configs/firefly_rk3308_release_defconfig
+++ b/buildroot/configs/firefly_rk3308_release_defconfig
@@ -29,8 +29,8 @@ BR2_PACKAGE_SOFTAPSERVER=y
 BR2_PACKAGE_WIFIAUTOSETUP=y
 BR2_PACKAGE_RKWIFIBT=y
 # BR2_PACKAGE_RKWIFIBT_COMPATIBLE is not set
-# BR2_PACKAGE_RKWIFIBT_AP6236 is not set
-BR2_PACKAGE_RKWIFIBT_RTL8188EU=y
+BR2_PACKAGE_RKWIFIBT_AP6236=y
+# BR2_PACKAGE_RKWIFIBT_RTL8188EU is not set
 BR2_PACKAGE_EQ_DRC_PROCESS=y
 BR2_PACKAGE_ALSA_LADSPA=y
 BR2_PACKAGE_ROCKCHIP_TEST=y

Building kernel:

cd SDK/
./FFTools/DockerCook/DKCook ./build.sh kernel

Or building kernel step by step:

cd SDK/kernel/
../FFTools/DockerCook/DKCook make arch=arm64 firefly-rk3308_linux_defconfig
../FFTools/DockerCook/DKCook make arch=arm64 rk3308-roc-cc-dmic-pdm_emmc.img

Also,you can run bash into container,by command:

cd SDK/
./FFTools/DockerCook/DKCook --run

NOTE

If you have build the SDK on PC, and want to do it in container instead. Or the opposite. You must rebuild the whole SDK with new environment(rm SDK/buildroot/output/ directory), to avoid some misstake.

Advanced

If you are familiar with Docker, you can customize the Docker operation by referring to the following.

Docker image from

There are two ways to get Docker image:

  • Generating a Docker image by Dockerfile

  • Get the docker image from Docker Hub

Generating the Docker image

Github for Dockerfile: https://github.com/T-Firefly/buildroot-builder

Get the project:

git clone https://github.com/T-Firefly/buildroot-builder.git

Run commands:

cd DockerCook/
docker build -t buildroot-builder .

Download the Docker image

You can download the docker image from Docker Hub , search for tchip/buildroot-builder.

Run commands:

docker pull tchip/buildroot-builder:latest

Command line

The container default working directory is /home/project, it is also a mountpoint that can be used to mount your current working directory into the container, like:

 docker run -it --rm \
            -e USER_ID=$UID \
            --mount type=bind,source="$PWD",target="/home/project" \
            buildroot-builder \
            /bin/bash

Run bash into container, to build the SDK refer to “Building System Firmware”.