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 = 내가 원하는 리눅스를 완전히 커스터마이징해서 만들어주는 임베디드 전용 빌드 시스템.