본문 바로가기

임베디드 컴퓨팅/Khadas VIM3

Docker로 Khadas VIM3 안드로이드 Pie 빌드환경 구성하기

Docker로 Khadas VIM3 안드로이드 Pie 빌드환경 구성하기

Khadas VIM3는 강력한 성능과 다양한 기능을 갖춘 안드로이드 레퍼런스 플랫폼입니다. 이 플랫폼은 개발자들에게 구글 안드로이드 애플리케이션과 시스템 개발에 레퍼런스 환경을 제공합니다. 이 포스팅에서는 Docker를 사용하여 Khadas VIM3용 안드로이드 Pie 빌드 환경을 구성하는 방법을 정리합니다.

Khadas VIM3는 Amlogic S922X 프로세서를 탑재하고 있으며, 4K 비디오 디코딩, 다양한 입출력 옵션, 그리고 확장 가능한 인터페이스를 제공하여 IoT 및 AI 애플리케이션 개발에 적합합니다.

  • Amlogic S922X CPU: 6-core 프로세서로, 4x ARM Cortex-A73 코어와 2x Cortex-A53 코어 포함
  • ARM Mali-G52 MP4 GPU: 고성능 그래픽 처리를 위한 GPU (Built-in NPU 포함)
  • RAM: 2GB 또는 4GB LPDDR4/4X 옵션, 16GB/32GB eMMC 5.1
  • Wi-Fi: 802.11a/b/g/n/ac, 2x2 MIMO, Bluetooth 5.0
  • HDMI: HDMI 2.1, 최대 4K@60Hz 지원
  • MIPI-DSI, MIPI-CSI 인터페이스 지원

Dockerfile 사용해서 빌드 환경 구축하기

Docker를 사용하면 복잡한 빌드 환경을 쉽게 구성하고 관리할 수 있습니다. Docker를 사용하여 Khadas VIM3용 안드로이드 Pie 빌드 환경을 구성하는 방법을 살펴보겠습니다. Dockerfile은 Docker 이미지를 구성하기 위한 script 입니다. 아래의 script 는 Khadas VIM3용 안드로이드 Pie 빌드 환경을 위한 Dockerfile입니다:

# Ubuntu 18.04 기반 이미지 사용
# 20.04 이후 버전에서는 빌드에 다양한 문제가 발견되어 18.04로 Docker를 구성

FROM ubuntu:18.04

# 사용자 이름과 비밀번호를 인수로 선언하고 기본값 설정
ARG USER_NAME=makepluscode
ARG USER_PASSWORD=makepluscode

# 필요한 패키지 설치
RUN apt-get update && apt-get upgrade -y && \
    apt-get install -y git-core gnupg flex bison build-essential \
    zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev \
    x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip \
    fontconfig libncurses5 procps rsync wget vim sudo gcc-arm-none-eabi python net-tools bc

# Git LFS 설치
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
    apt-get install git-lfs && \
    git lfs install

#  Khadas VIM3 툴체인 설치
RUN mkdir -p /opt/toolchains && \
    wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.bz2 && \
    wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 && \
    tar -xjf gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.bz2 -C /opt/toolchains && \
    tar -xjf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 -C /opt/toolchains && \
    wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz && \
    wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz && \
    tar xvJf gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz -C /opt/toolchains && \
    tar xvJf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt/toolchains

# 사용자 생성 및 sudo 권한 부여
RUN useradd -m ${USER_NAME} && \
    echo "${USER_NAME}:${USER_PASSWORD}" | chpasswd && \
    usermod -aG sudo ${USER_NAME}

# repo 도구 설치
RUN curl -o /usr/local/bin/repo https://storage.googleapis.com/git-repo-downloads/repo && \
    chmod a+x /usr/local/bin/repo

# 작업 디렉토리 설정
WORKDIR /data

# 사용자로 전환
USER ${USER_NAME}

이 Dockerfile은 Ubuntu 18.04를 기반으로 하며, 안드로이드 빌드에 필요한 모든 도구와 라이브러리를 설치합니다. Git LFS와 툴체인 설치를 포함하여 Khadas VIM3 개발에 필요한 모든 요소가 포함되어 있습니다. 이 Dockerfile 으로 image 를 build 하여 빌드 환경을 구성할 수 있습니다.

Docker Compose 사용하기 (선택 옵션)

Docker Compose는 여러 컨테이너를 정의하고 실행하기 위한 도구입니다. docker-compose.yml 파일을 사용하여 빌드 환경을 더 쉽게 관리할 수 있습니다. 예를 들어, 다음과 같은 docker-compose.yml 파일을 사용할 수 있습니다:

version: '3.8'

services:
  vim3:
    image: vim3-android-9:latest
    container_name: vim3-android-9-container
    command: sleep infinity

    volumes:
       - /path-to-share/:/data/

이 파일은 Dockerfile을 사용하여 이미지를 빌드하고, 현재 디렉토리를 컨테이너의 /data 디렉토리에 마운트합니다. 이를 통해 호스트 시스템과 컨테이너 간에 파일을 쉽게 공유할 수 있습니다. "command: sleep infinity" 를 Docker Compose 파일에 사용하는 이유는 컨테이너를 계속 실행하기 위함 입니다.

Docker 환경 실행

Docker Compose 설정을 실행하고 관리하기 위해 docker-compose updocker-compose down 명령어를 사용합니다. 이 명령어들을 사용하는 방법은 다음과 같습니다.

Docker 서비스 시작하기 (Up)

터미널을 열고 docker-compose.yml 파일이 위치한 디렉토리로 이동합니다. Docker Compose 파일에 정의된 서비스를 시작하려면 다음 명령어를 실행합니다. -d 플래그는 컨테이너를 백그라운드에서 실행하도록 합니다 (분리 모드).

   docker-compose up -d

Docker 서비스 중지하기 (Down)

터미널을 열고 docker-compose.yml 파일이 위치한 디렉토리로 이동합니다. Docker Compose 파일에 정의된 서비스를 중지하려면 다음 명령어를 실행합니다.

   docker-compose down