본문 바로가기
NVIDIA Jeston/Yocto Linux

Jetson NX 용 Yocto Linux 빌드하기

by makepluscode 2022. 2. 26.
반응형

Jetson NX Yocto Linux Build

Yocto Linux 빌드하기

빌드 테스트 환경

  • Ubuntu 20.04.3 LTS (Linux kernel 5.13.0-30-generic)
  • Yocto Dunfell (April 2020 released, Long Term Support, until Apr. 2024)

빌드를 위한 우분투 패키지 설치

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

Yocto Linux 소스다운로드

2020년 4월 Dunfell 릴리즈를 사용한다. LTS (~2024) 버전이기 때문에 가장 안정적으로 관리되는 것으로 생각됨.

export BRANCH="dunfell"

meta-poky 를 다운로드 한다.

mkdir source && cd source
git clone -b ${BRANCH} git://git.yoctoproject.org/poky.git poky-${BRANCH}

meta-tegra 를 다운로드 한다. meta-tegra 는 엔비디아 jetson bsp 를 위한 yocto recipe 저장소 이다.

git clone -b ${BRANCH}-l4t-r32.5.0 https://github.com/madisongh/meta-tegra.git

Yocto Linux 환경설정

Yocto 빌드를 위한 환경변수 스크립트를 실행한다.

source source/poky-${BRANCH}/oe-init-build-env build

다음과 같이 build/conf/local.conf 를 수정한다.

MACHINE ?= "jetson-xavier-nx-devkit-emmc"

DISTRO_FEATURES = "x11 opengl "

IMAGE_CLASSES += "image_types_tegra"
IMAGE_FSTYPES = "tegraflash"

SSTATE_DIR ?= "/mirror/sstate/yocto-32.5"
DL_DIR ?= "/mirror/downloads/yocto-32.5"

PREFERRED_VERSION_python3 = "3.6%"
PREFERRED_VERSION_python3-native = "3.6%"

BB_NUMBER_THREADS = '8'
PARALLEL_MAKE = '-j8'
다음과 같이 build/conf/bblayers.conf 에 참조되어야 하는 디렉토리를 추가한다.
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \         
  /home/${USER}/Yocto/source/meta-tegra \
  /home/${USER}/Yocto/source/poky-dunfell/meta \
  /home/${USER}/Yocto/source/poky-dunfell/meta-poky \
  /home/${USER}/Yocto/source/poky-dunfell/meta-yocto-bsp \
"

Yocto Linux 빌드하기

가장 작은 이미지인 core-image-minimal 을 빌드한다. (1659 tasks)

bitbake core-image-minimal
Build Configuration:
BB_VERSION           = "1.46.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "ubuntu-20.04"
TARGET_SYS           = "aarch64-oe-linux"
MACHINE              = "jetson-xavier-nx-devkit-emmc"
DISTRO               = "nodistro"
DISTRO_VERSION       = "nodistro.0"
TUNE_FEATURES        = "aarch64 armv8a crc"
TARGET_FPU           = ""
meta-tegra           = "dunfell-l4t-r32.5.0:7e5b82c3a5fc774a8e8f2c66dd8c551a8c82f500"
meta
meta-poky
meta-yocto-bsp       = "dunfell:c8987e7bca6ab22a166ca13c5d2fe8e02fbb6e23"

Initialising tasks: 100% |###################################################################################| Time: 0:00:00
Sstate summary: Wanted 2 Found 0 Missed 2 Current 493 (0% match, 99% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 1658 tasks of which 1647 didn't need to be rerun and all succeeded.

Summary: There were 276 WARNING messages shown.

Yocto Linux 이미지 플래싱

doflash 플래싱 스크립트가 있는 디렉토리로 이동한다. sudo 권한으로 doflash 를 실행한다.

cd ./build/tmp-glibc/work/jetson_xavier_nx_devkit_emmc-oe-linux/core-image-minimal/1.0-r0/tegraflash/
sudo ./doflash.sh
core-image-minimal 이미지 플래싱 시, 약 2-3분이 소요된다.

관련자료

Yocto Support for NVIDIA Jetson Platforms - Setting up Yocto

https://developer.ridgerun.com/wiki/index.php?title=Yocto_Support_for_NVIDIA_Jetson_Platforms_-_Setting_up_Yocto 

 

Yocto Support for NVIDIA Jetson Platforms - Setting up Yocto

Learn about the instructions to configure, build and install Yocto in NVIDIA platforms in this RidgeRun developer wiki.

developer.ridgerun.com

 

반응형

'NVIDIA Jeston > Yocto Linux' 카테고리의 다른 글

Yocto linux 에 opencv dnn 모듈 추가하기  (2) 2022.03.06