YOCTO

YOCTO) 무엇이고 왜 사용하는가?

하이오야이 2025. 3. 23. 18:35

🚀 YOCTO란?

Yocto Project는 임베디드 리눅스 시스템을 만들기 위한 오픈소스 빌드 시스템이야.


조금 더 쉽게 말하면…

"내가 원하는 구성으로 리눅스를 처음부터 직접 만들어주는 공장 같은 도구"야.


🧠 왜 YOCTO가 필요할까?

일반적인 리눅스(Ubuntu, Debian 등)는 누군가 만들어 놓은 완성품을 설치해서 쓰는 방식이야.

하지만 임베디드 시스템은 다르지:

  • 디바이스 성능이 낮아 → 불필요한 것 빼야 함
  • 커널/드라이버를 바꿔야 함 → 직접 수정해야 함
  • 보드마다 구성 다름 → 맞춤형 시스템이 필요함

이런 걸 가능하게 해주는 게 바로 Yocto야.


🔧 Yocto가 해주는 일

Yocto는 내부적으로 이런 걸 자동화해줘:

단계 설명
fetch 소스 코드 다운로드 (예: 커널, busybox 등)
unpack 압축 풀기
patch 필요시 패치 적용
compile 컴파일 (크로스 컴파일 포함)
install 임시 루트파일시스템에 설치
package 패키징 (rpm, ipk, tar 등)
image 부팅 가능한 이미지 생성 (ext4, wic 등)

 


📦 Yocto의 주요 구성 요소

구성 요소역할
BitBake 빌드 도구 (make 같은 역할)
Recipe (.bb) 각 패키지 빌드 방법 정의
Layer 기능별 코드 모음 (meta-xxx 형태)
Machine 설정 보드/CPU 설정, 하드웨어의 스펙 설명
Image 설정 rootfs 구성 정의

 

🧰 Yocto가 제공하는 주요 리소스와 환경

제공  항목 설명
리눅스 커널 소스 다양한 버전의 커널 소스를 자동으로 받아오고, 패치하거나 설정할 수 있음
크로스 툴체인 (Toolchain) 타겟 아키텍처용 크로스 컴파일러, 링커, 디버거 등을 자동 생성
QEMU 가상 머신 실제 보드 없이 가상으로 부팅/실행 테스트 가능 (qemuarm, qemux86 등)
루트 파일 시스템 이미지 생성 도구 ext4, squashfs, wic 등 다양한 형식 지원
패키징 시스템 ipk, rpm, deb 형태로 패키지 생성 가능 (선택 가능)
SDK 생성 기능 타겟 보드를 위한 개발자용 SDK(toolchain 포함) 자동 생성
디버깅 및 분석 툴 통합 GDB, strace, systemd-analyze, perf 등 포함 가능
보드 지원 패키지(BSP) 특정 보드용 디바이스 트리, 부트로더, 드라이버 등을 통합 관리
이미지 커스터마이징 템플릿 최소 시스템부터 X11/Wayland 기반 GUI 시스템까지 구성 가능

 

✨ 요약 한 줄

Yocto = 내가 원하는 리눅스를 완전히 커스터마이징해서 만들어주는 임베디드 전용 빌드 시스템.