/

Yocto 프로젝트란?

Yocto 프로젝트는 임베디드 시스템을 위한 맞춤형 리눅스 배포판을 만드는 도구입니다. 다양한 하드웨어 플랫폼에 최적화된 리눅스 운영체제를 쉽고 효율적으로 만들 수 있도록 도와줍니다.

Yocto 프로젝트를 사용하는 이유

  1. 맞춤형 리눅스 배포판 생성: Yocto는 필요에 맞게 커스터마이즈된 리눅스 배포판을 만들 수 있게 해줍니다. 필요한 패키지, 라이브러리, 드라이버 등을 선택하여 가벼운 시스템부터 복잡한 시스템까지 다양한 요구를 충족시킬 수 있습니다.
  2. 반복 가능한 빌드: Yocto는 빌드 프로세스를 자동화하여, 동일한 설정으로 반복 가능한 빌드를 제공합니다. 이를 통해 개발 과정에서의 일관성을 유지할 수 있습니다.
  3. 효율적인 의존성 관리: Yocto는 패키지 의존성을 자동으로 관리하여, 필요한 모든 구성 요소를 적절한 순서로 빌드합니다. 개발자가 수작업으로 의존성을 관리할 필요가 없습니다.

Yocto 프로젝트 쉽게 설명

레이어와 레시피

  • 레이어(Layer): 레이어는 관련된 설정과 레시피를 모아둔 폴더입니다. 예를 들어, 하드웨어 지원 레이어, 멀티미디어 레이어, 네트워크 레이어 등이 있습니다. 각 레이어는 독립적으로 관리되어, 필요에 따라 쉽게 추가하거나 제거할 수 있습니다.
  • 레시피(Recipe): 레시피는 소프트웨어 패키지를 어떻게 빌드하고 설치할지 정의한 파일입니다. 레시피 파일은 .bb 확장자를 가지며, 패키지 소스 위치, 빌드 방법, 의존성 등을 포함합니다.

 

Poky

  • 커스텀 리눅스 이미지를 만들기 위해서 사용하는 빌드 툴
    • 빌드 할 때 bitbake라는 빌드 툴이 사용됨
  • oe-core : 임베디드 시스템을 위한 표준화된 빌드 환경을 제공
  • meta-yocto : 리눅스 이미지를 만들 때 필요한 설정이 모여져 있음
  • meta-yocto-bsp : BSP = board support package, 특정 보드가 잘 동작하게 하기 위한 소프트웨어 패키지

Poky로 리눅스 빌드하고, QEMU로 실행해보기

WSL Poky를 설치하고 QEMU를 위한 이미지를 빌드하고 실행하는 과정

  1. 필수 패키지 설치
  2. Yocto 프로젝트 소스 코드 다운로드
  3. Poky 설정
  4. 빌드 설정 수정 (conf/local.conf 파일 수정)
  5. 이미지 빌드 (bitbake core-image-sato)
  6. QEMU 실행 (runqemu qemux86-64)

1. 필수 패키지 설치

Yocto 프로젝트를 시작하기 위해 필요한 패키지를 설치합니다.

sudo apt-get update
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
     build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
     xz-utils debianutils iputils-ping

2. Yocto 프로젝트 소스 코드 다운로드

Poky를 포함한 Yocto 프로젝트의 소스 코드를 다운로드합니다.

mkdir ~/yocto

cd ~/yocto

git clone git://git.yoctoproject.org/poky

cd poky

git checkout dunfell

3. Python 3.8 버전 설치 / 빌드에 필요한 도구 설치

Bitbake 빌드에 필요한 lz4, zstd 등을 설치 합니다.

##빌드를 위해 필요한 패키지 설치
sudo apt-get update
sudo apt-get install lz4
sudo apt-get install zstd

Bitbake 빌드할 때 파이선 3.8 이후 버전이 필요 하기 때문에 파이썬 버전을 확인 합니다.
python3 --version 입력했을 때 버전이 어떻게 나오는지 확인합니다.

python --version
Python 3.6.9 ## 3.8보다 낮음

버전이 3.8 보다 낮은 경우 아래를 실행 합니다.

 
## 파이썬 3.8 버전 설치
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.8

## 파이썬 설정
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2

4. Poky 설정

Yocto 프로젝트의 환경을 설정합니다.

source oe-init-build-env

만약 에러와 같은 에러가 발생한다면,

ERROR: The following required tools (as specified by HOSTTOOLS) appear to be unavailable in PATH, please install them in order to proceed: lz4c 라는 메시지가 출력 되는 경우 아래 코드를 실행하여 직접 설치해준다.

cd ~/
wget https://github.com/lz4/lz4/archive/refs/tags/v1.9.3.tar.gz
tar -xzf v1.9.3.tar.gz
cd lz4-1.9.3

# 직접 빌드 후 설치
make
sudo make install

## l4zc --version 확인
lz4c --version

 

5. 빌드 설정 수정

build 디렉토리에서 conf/local.conf 파일을 열어 빌드 설정을 수정합니다.

#local.conf 파일을 연다
nano conf/local.conf

# MACHINE이 qemux86-64로 되어있는지 확인
MACHINE ?= "qemux86-64"

여기서 기본적인 설정을 확인하고 필요한 경우 수정합니다. 예를 들어, MACHINE 변수를 qemux86-64로 설정합니다. 기본 값으로 qeumx86-64로 되어 있습니다.

 

6. 이미지 빌드
QEMU를 위한 이미지를 빌드합니다. 일반적으로 core-image-minimal 이미지를 빌드합니다.

bitbake core-image-minimal -k


이 과정은 시간이 오래 걸릴 수 있습니다.

6. QEMU 실행
이미지 빌드가 완료되면 QEMU를 사용하여 이미지를 실행합니다. nographic은 UX 화면을 사용하지 않겠다는 의미 입니다. 옵션을 넣지 않으면, 너무 느리기 때문에, 넣고 실행하는 것이 좋습니다.

runqemu qemux86-64 nographic

#로그인 계정은 root로 하면 됩니다.

이 명령어는 QEMU를 사용하여 빌드된 이미지를 실행합니다.

만약 "runqemu - ERROR - Failed to run qemu: Could not initialize SDL(x11 not available) - exiting" 라는 메시지가 출력된다면, X11를 설치하면 됩니다.

sudo apt-get install xorg
위의 과정을 따라 우분투 18.04에서 Poky를 설치하고 QEMU를 위한 이미지를 빌드하고 실행할 수 있습니다. Yocto 프로젝트와 관련된 자세한 내용은 Yocto 프로젝트 공식 문서에서 확인할 수 있습니다.
 
실행한 qemu을 종료할 때는 poweroff 라고 입력하면 됩니다.
#종료 할 때는 poweroff 입력
$poweroff

+ Recent posts