기본 이미지 생성은 Yocto 프로젝트의 핵심 기능 중 하나로, 사용자가 자신만의 맞춤형 운영체제 이미지를 생성할 수 있게 한다. 이 섹션에서는 Yocto 프로젝트를 사용하여 기본 이미지를 생성하는 방법을 단계별로 설명한다.

빌드 환경 설정

이미지 생성을 시작하기 전에, Yocto 프로젝트의 빌드 환경을 설정해야 한다. 이를 위해 아래의 명령어 및 절차를 따른다.

  1. Yocto 프로젝트의 Poky 체크아웃 sh git clone git://git.yoctoproject.org/poky cd poky

  2. 빌드 디렉토리 설정 sh source oe-init-build-env 위 명령어를 실행하면 build 디렉토리가 생성되고 빌드 환경이 설정된다.

빌드 구성 변경

Yocto 프로젝트는 높은 수준의 커스터마이즈가 가능한 설정 파일을 제공한다. 주요 설정 파일들은 build/conf 디렉토리에 위치해 있다.

  1. local.conf 파일 수정

local.conf 파일에서는 빌드 타겟, 머신 등의 설정을 할 수 있다. 기본적인 설정은 아래와 같다.

sh nano conf/local.conf

BBLayers 설정 파일을 통해 사용 가능한 레이어를 지정한다. Poky 디렉토리의 레이어를 기본으로 설정할 수 있다.

sh nano conf/bblayers.conf

기본 설정은 아래와 같이 한다.

plaintext BBLAYERS ?= " \ ${TOPDIR}/../meta \ ${TOPDIR}/../meta-poky \ ${TOPDIR}/../meta-yocto-bsp \ "

이미지 생성

빌드 환경이 설정되었으면, 본격적으로 이미지를 빌드한다. 일반적으로 사용되는 이미지는 core-image-minimal이다. 아래와 같은 명령어를 통해 이미지를 빌드할 수 있다.

bitbake core-image-minimal

이 명령어는 Yocto 빌드 시스템이 필요한 모든 소스 코드를 다운로드하고, 패키지를 생성하며, 최종적으로 이미지를 생성한다.

빌드 결과는 build/tmp/deploy/images/<machine> 디렉토리에 생성된다. 여기서 <machine>local.conf 파일에서 설정한 MACHINE 변수에 해당하는 값이다.

생성된 이미지 확인

생성된 이미지는 아래와 같이 확인할 수 있다.

ls build/tmp/deploy/images/qemuarm/

이 디렉토리에는 생성된 커널 이미지, 파일 시스템 이미지, 디버깅 심볼 등의 파일이 포함되어 있다.

이미지 커스터마이징

기본 이미지를 생성한 후, 사용자의 필요에 맞게 이미지를 커스터마이징할 수 있다. Yocto 프로젝트에서는 레시피와 레이어를 통해 이미지 구성 요소를 관리하고 변경할 수 있다.

레시피 추가 및 수정

레이어를 통해 패키지 레시피를 관리하고, 이미지 레시피에 추가할 수 있다. 예를 들어, 새로운 애플리케이션을 포함하고자 한다면 관련 레시피를 작성하고 이미지에 포함시켜야 한다.

  1. 새로운 레시피 생성

예를 들어, meta-custom이라는 새로운 레이어를 생성하고, 그 안에 사용자 정의 애플리케이션 레시피를 추가하는 방법이다. 먼저 meta-custom 레이어를 추가한다.

sh bitbake-layers create-layer meta-custom

  1. 레이어 디렉토리 구조

생성된 meta-custom 레이어의 디렉토리 구조는 아래와 같다.

plaintext meta-custom/ ├── conf │ └── layer.conf ├── recipes-example │ └── example │ └── example_1.0.bb

  1. 레시피 작성

recipes-example/example/example_1.0.bb 파일을 작성한다. 가장 기본적인 형태는 아래와 같다.

```plaintext SUMMARY = "Example recipe" LICENSE = "MIT"

SRC_URI = "file://example-1.0.tar.gz"

S = "${WORKDIR}/example-1.0"

do_install() { install -d {D}{bindir} install -m 0755 example {D}{bindir} } ```

  1. 레시피 추가

생성된 레이어를 bblayers.conf 파일에 추가한다.

plaintext BBLAYERS ?= " \ ${TOPDIR}/../meta \ ${TOPDIR}/../meta-poky \ ${TOPDIR}/../meta-yocto-bsp \ ${TOPDIR}/../meta-custom \ "

  1. 이미지 레시피 수정

커스터마이즈된 이미지를 만들기 위해 core-image-minimal.bb 파일을 수정하거나 새로운 이미지 레시피를 작성한다.

sh nano meta-custom/recipes-core/images/core-image-custom.bb

```plaintext
require recipes-core/images/core-image-minimal.bb

IMAGE_INSTALL += "example"
```
  1. 이미지 빌드

이미지를 다시 빌드한다.

sh bitbake core-image-custom

이 명령어는 새로운 레시피를 포함한 커스터마이즈된 이미지를 생성한다.

빌드 최적화

Yocto 빌드 시스템은 다양한 최적화 옵션을 제공한다. 빌드를 가속화하고, 출력 이미지를 최적화하려면 local.conf에서 몇 가지 설정을 변경할 수 있다.

이미지 디버깅 및 테스트

이미지 생성 후, 디버깅과 테스트는 안정적이고 기능적인 OS 이미지를 보장하는 데 필수적인 과정이다.

  1. QEMU를 사용한 테스트

빌드된 이미지를 QEMU를 사용하여 에뮬레이션할 수 있다. 예를 들어, qemuarm 이미지를 테스트하려면 아래의 명령어를 사용한다.

sh runqemu qemuarm

  1. 디버깅 툴 사용

Yocto 프로젝트는 다양한 디버깅 툴을 제공한다. 예를 들어, GDB를 사용하여 에러를 추적할 수 있다.

  1. 로그 파일 분석

빌드 과정에서 생성된 로그 파일을 분석하여 문제점을 파악할 수 있다. 로그 파일은 build/tmp/log 디렉토리에 저장된다.