기술 가이드

Yocto로 최소 Linux 배포판 만들기

4 min read 임베디드 리눅스 업데이트됨 20 Oct 2025
Yocto로 최소 Linux 배포판 만들기
Yocto로 최소 Linux 배포판 만들기

소개

Yocto 프로젝트는 임베디드 Linux 배포판을 만들기 위한 오픈 소스 도구 모음입니다. 한 줄 정의: Yocto는 특정 하드웨어에 맞춘 Linux 이미지를 자동으로 생성하는 빌드 시스템입니다.

이 글의 목표는 Ubuntu 환경에서 Poky(yocto의 reference distribution) morty 브랜치를 사용해 qemux86-64용 최소 Linux 배포판을 만들고, QEMU에서 실행해 확인하는 것입니다.

중요: 예제은 데스크탑(개발) 환경에서 진행합니다. 실제 타깃 하드웨어로 배포하려면 추가 설정 및 보안 조치가 필요합니다.

요구사항 (개발 머신)

  • 메모리: 최소 4–6 GB 권장.
  • 호스트 운영체제: 최근 Ubuntu (예: 16.04 LTS에서 테스트됨).
  • 디스크 여유 공간: 최소 60–80 GB 추천.
  • 초기 패키지 설치 전 약 1 GB 정도의 패키지 다운로드가 필요합니다.
  • Yocto 레파지토리(Poky)를 클론합니다(본 예제는 morty 안정화 브랜치 사용).

시스템 패키지 업데이트:

apt-get update

필요 패키지 설치(예시):

apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop

Yocto 필수 패키지 설치 화면

참고: 위 명령어는 Ubuntu 계열에서 동작합니다. 다른 배포판을 쓰면 패키지 이름이나 설치 명령이 다를 수 있습니다.

필요 개발 패키지 용량 예시(약 1GB)

Poky 클론 및 빌드 환경 초기화

  1. Poky 레파지토리 클론(예: morty 브랜치)
git clone -b morty git://git.yoctoproject.org/poky.git

poky 레파지토리 클론 예시

  1. poky 디렉터리로 이동 후 빌드 환경 스크립트 실행
source oe-init-build-env

이 스크립트는 현재 셸 환경을 설정하고 작업 디렉터리를 build/로 이동시킵니다.

OE 빌드 환경 준비 후 build 디렉터리로 이동된 터미널

빌드 환경이 준비되면 conf/local.conf와 conf/bblayers.conf 같은 설정 파일이 생성되거나 편집 가능한 상태가 됩니다.

local.conf 핵심 설정

local.conf는 타깃 머신, 다운로드·캐시 경로, 패키지 포맷 등 빌드 동작을 제어합니다. 아래 항목들을 주석 해제하거나 변경하세요.

  • 타깃 머신 설정(예: qemux86-64)

타깃 머신을 qemux86-64로 설정한 예시

아래 예시는 local.conf에 추가하거나 주석 해제하는 주요 변수들입니다.

DL_DIR ?= "${TOPDIR}/downloads"

DL_DIR 설정 예시

SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

SSTATE 캐시 디렉터리 설정 예시

TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"

PACKAGE_CLASSES와 SDKMACHINE 설정 예시

로그인 편의를 위해 루트 계정의 암호를 비워두거나 디버그 옵션을 활성화합니다(개발용).

EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

debug-tweaks 옵션 설정 예시

중요: debug-tweaks는 개발 편의를 위해 루트 비밀번호를 비우거나 루트 셸 접근을 허용합니다. 배포 이미지에는 적합하지 않습니다.

빌드: bitbake로 이미지 생성

빌드는 bitbake 도구로 시작합니다. 터미널에서 일반 사용자로 다음을 실행하세요(루트로 실행하면 에러 발생).

bitbake core-image-minimal

bitbake 시작 예시

주의: 루트 사용자로 실행하면 권한 관련 오류가 발생합니다.

root로 bitbake 실행 시 오류 예시

만약 환경이 사라졌다면 다시 초기화 스크립트를 실행하세요.

source oe-init-build-env
bitbake core-image-minimal

환경 재설정 후 빌드 재시작 예시

빌드 로그는 다음 단계들을 거칩니다: 레시피 파싱 → 네트워크에서 소스 다운로드 → 컴파일 및 패키징. 첫 빌드는 많은 패키지를 내려받고 컴파일하므로 시간(예: 2–3시간)이 걸릴 수 있습니다.

레시피 파싱 및 빌드 진행 예시

다운로드 및 컴파일 과정 예시(시간 소요)

빌드가 완료되면 작업 결과물은 build/tmp/deploy/images/qemux86-64 디렉터리에 생성됩니다.

빌드 완료 후 생성된 이미지 파일 목록 예시

QEMU에서 이미지 실행

일부 터미널(예: PuTTY)을 통해 원격으로 실행하면 그래픽이나 터미널 특성 때문에 명령이 실패할 수 있습니다. Ubuntu RDP나 로컬 터미널에서 실행하세요.

Putty에서 명령 오류 예시

Ubuntu RDP에서 정상 실행 예시

QEMU가 띄워지면 새로운 Yocto 기반 배포판의 콘솔 창이 열립니다.

QEMU 에뮬레이터에서 실행된 Yocto 배포판 창

로그인 화면(기본: root / 빈 비밀번호)이 보입니다.

Yocto 기반 배포판 로그인 화면 예시

로그인 후 날짜, 네트워크(ifconfig), 커널 정보(uname) 같은 기본 명령으로 동작을 확인합니다.

최소 배포판에서 기본 명령 실행 예시

문제 해결(자주 발생하는 이슈와 대처)

  • 빌드 중 네트워크 오류: DL_DIR 경로의 다운로드가 손상되면 해당 파일을 삭제하고 다시 시도합니다.
  • 권한 문제: bitbake는 일반 사용자로 실행합니다. 루트로 실행하면 작업 디렉터리 권한이 꼬일 수 있습니다. 필요 시 소유권을 복구하세요(예: chown -R).
  • 디스크 부족: 빌드는 많은 임시 파일을 생성합니다. TMPDIR, SSTATE_DIR을 큰 디스크로 옮겨 빌드하세요.
  • 그래픽/원격 세션 문제: PuTTY 같은 클라이언트에서 qemu의 콘솔 입출력이 제대로 되지 않을 수 있습니다. 로컬 GUI 혹은 RDP, VNC를 사용하세요.

중요: 배포용 이미지에는 debug-tweaks나 빈 루트 비밀번호를 포함하지 마세요.

역할별 체크리스트

개발자:

  • Poky 레파지토리와 브랜치 확인
  • local.conf에서 타깃, DL_DIR, SSTATE_DIR, TMPDIR 설정
  • 최초 빌드 전 패키지 설치 확인

통합(QA/CI) 엔지니어:

  • 캐시(SSTATE_DIR) 재사용 전략 계획
  • 빌드 제출/자동화 스크립트 작성
  • 실패 시 로그 수집·분석 절차 정의

테스트 엔지니어:

  • 생성 이미지의 기본 부팅 확인
  • 네트워크, 파일시스템 마운트, 셸 접근성 테스트
  • 보안 관련 초기 검사(루트 접근, 포트 등)

간단한 플레이북(요약 절차)

  1. 호스트에 필수 패키지 설치 및 업데이트
  2. git clone -b morty git://git.yoctoproject.org/poky.git
  3. source oe-init-build-env
  4. conf/local.conf 에서 qemux86-64 등 변수 설정
  5. bitbake core-image-minimal (일반 사용자로 실행)
  6. build/tmp/deploy/images/qemux86-64/ 아래에서 이미지를 확인
  7. QEMU로 이미지 실행 및 로그인, 기본 동작 확인

수용 기준 (Критерии приёмки)

  • core-image-minimal 빌드가 에러 없이 완료되어 deploy 디렉터리에 이미지가 생성되어야 합니다.
  • QEMU에서 이미지가 부팅되어 로그인 프롬프트가 나타나야 합니다.
  • 기본 명령(date, uname, ifconfig 등)이 동작해야 합니다.

대안 및 확장

  • Toaster나 다른 웹 UI를 사용해 빌드 파이프라인을 관리할 수 있습니다(본 튜토리얼은 CLI 중심).
  • Yocto 레이어를 추가해 패키지, 루트 파일 시스템 구성 요소를 확장하세요.
  • 다른 타깃(ARM, Raspberry Pi 등)을 설정하려면 MACHINE 변수를 변경하고, 해당 BSP 레이어를 추가합니다.

빠른 체크리스트(안전 점검)

  • 호스트에 충분한 디스크 여유(≥60GB)와 메모리(≥4GB)
  • 필수 패키지 설치 완료
  • Poky morty 브랜치 클론 완료
  • conf/local.conf에서 DL_DIR, SSTATE_DIR, TMPDIR 설정
  • bitbake를 일반 사용자로 실행
  • QEMU에서 부팅 및 로그인 확인

요약

이 가이드는 Ubuntu에서 Yocto(Poky morty)를 이용해 qemux86-64용 최소 Linux 이미지를 빌드하고 QEMU에서 실행하는 전체 절차를 설명했습니다. 핵심은 로컬 설정(local.conf)에서 타깃과 캐시 경로를 정확히 정하고, 일반 사용자로 bitbake를 실행하는 것입니다. 빌드 시간은 네트워크와 하드웨어에 따라 몇 시간 걸릴 수 있으므로 캐시 재사용(SSTATE_DIR)과 DL_DIR 관리를 추천합니다.

요점 정리:

  • Yocto는 임베디드 맞춤형 Linux 이미지를 생성합니다.
  • 로컬 설정과 캐시 경로가 올바르게 설정되어야 합니다.
  • bitbake는 일반 사용자로 실행하고 QEMU에서 부팅을 확인하세요.
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Windows 11에서 Discord가 업데이트 확인 중에 멈출 때 해결법
기술지원

Windows 11에서 Discord가 업데이트 확인 중에 멈출 때 해결법

Windows 'No Boot Device Found' 오류 해결 가이드
문제해결

Windows 'No Boot Device Found' 오류 해결 가이드

Mac에서 Apple Pay 사용 중지 오류 해결 방법
macOS 문제

Mac에서 Apple Pay 사용 중지 오류 해결 방법

휴대폰에서 두 개의 WhatsApp 번호 동시 사용하기
모바일

휴대폰에서 두 개의 WhatsApp 번호 동시 사용하기

앱이 지정된 시간에 시작하지 않음 오류 해결 방법
Windows 문제해결

앱이 지정된 시간에 시작하지 않음 오류 해결 방법

Excel 셀 내부 이미지 삽입 및 관리 가이드
생산성

Excel 셀 내부 이미지 삽입 및 관리 가이드