Skip to content

OneRT arm build

Jang Jiseob edited this page Feb 25, 2022 · 20 revisions

Prerequisites

Remove docker-io

If your ubuntu machine's version is 18.04 you have to remove docker-io.

sudo apt-get -y remove docker docker-engine docker.io containerd runc

Install docker-ce

If docker is not installed you have to install docker.

sudo apt-get update
sudo apt-get -y install \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
arch=$(dpkg --print-architecture)
sudo add-apt-repository \
  "deb [arch=${arch}] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
sudo apt-get update
sudo apt-get -y install docker-ce docker-ce-cli containerd.io

Set your ubuntu user as docker group to use docker as a non-root user

sudo groupadd docker
sudo usermod -aG docker $USER
sudo chown "$USER":"$USER" ~/.docker -R
sudo chmod g+rwx ~/.docker -R
# You have to reboot your ubuntu machine to enable non-root users to use docker.

Pull 'one-devtools' docker image

docker pull nnfw/one-devtools:bionic

Download rootfs

Download a rootfs for armv7l

cd ${ONE_REPO}
mkdir -p ci_prepare/rootfs
wget -nv http://nnfw.mooo.com/archive/rootfs/rootfs_arm_ubuntu_bionic_20201006.tar.gz -O ci_prepare/rootfs.tar.gz
tar -zxf ci_prepare/rootfs.tar.gz -C ci_prepare/rootfs/

Download a rootfs for aarch64

cd ${ONE_REPO}
mkdir -p ci_prepare/rootfs
wget -nv http://nnfw.mooo.com/archive/rootfs/rootfs_aarch64_ubuntu_bionic_20200520.tar.gz -O ci_prepare/rootfs.tar.gz
tar -zxf ci_prepare/rootfs.tar.gz -C ci_prepare/rootfs/

Build

Build OneRT with docker

Build OneRT for odroid-nu4 with docker.

cd ${ONE_REPO}
DOCKER_IMAGE_NAME="nnfw/one-devtools:bionic"
DOCKER_VOLUMES+=" -v $(pwd)/ci_prepare/rootfs/arm:/opt/rootfs"
DOCKER_ENV_VARS+=" -e ROOTFS_DIR=/opt/rootfs"
DOCKER_ENV_VARS+=" -e TARGET_ARCH=armv7l"
DOCKER_ENV_VARS+=" -e CROSS_BUILD=1"
DOCKER_ENV_VARS+=" -e NPROCS=4"
DOCKER_ENV_VARS+=" -e BUILD_TYPE=Debug"
export DOCKER_ENV_VARS
export DOCKER_VOLUMESC
MD="cp -nv Makefile.template Makefile && make all"
./nnfw docker-run bash -c "$CMD"

Build OneRT for odroid-n2 with docker.

cd ${ONE_REPO}
DOCKER_IMAGE_NAME="nnfw/one-devtools:bionic"
DOCKER_VOLUMES+=" -v $(pwd)/ci_prepare/rootfs/aarch64:/opt/rootfs"
DOCKER_ENV_VARS+=" -e ROOTFS_DIR=/opt/rootfs"
DOCKER_ENV_VARS+=" -e TARGET_ARCH=aarch64"
DOCKER_ENV_VARS+=" -e CROSS_BUILD=1"
DOCKER_ENV_VARS+=" -e NPROCS=4"
DOCKER_ENV_VARS+=" -e BUILD_TYPE=Debug"
export DOCKER_ENV_VARS
export DOCKER_VOLUMESC
MD="cp -nv Makefile.template Makefile && make all"
./nnfw docker-run bash -c "$CMD"

Build without docker

Refer to docs/howto/how-to-cross-build-runtime-for-arm.md and docs/howto/how-to-cross-build-runtime-for-aarch64.md