Yocto 프로젝트나 오픈임베디드로 임베디드 리눅스 개발을 처음 시작하는 개발자를 위한 기본서다. Yocto 프로젝트에 대한 기본 개념부터 시작해 실제 디바이스에 적용하는 방법까지 예제와 유용한 팁을 제시하며 읽기 쉽게 설명한다. 개정된 3판에서는 많은 내용이 수정됐으며 Yocto 프로젝트의 최신 업데이트를 반영했다. Toaster, 라즈베리 파이 4 개발 보드 활용 등을 다루고 현대 임베디드 시스템에서의 효율적인 빌드 관리 방법을 소개한다. Yocto 프로젝트를 처음 접하는 독자에게 필수 안내서가 될 것이다.
Contents
1장. Yocto 프로젝트 소개
__Yocto 프로젝트 의미
__Yocto 프로젝트 상세 소개
__오픈임베디드 프로젝트와 Yocto 프로젝트의 연합
__포키의 의미
____비트베이크
____오픈임베디드 코어
____메타데이터
__Yocto 프로젝트 릴리스
__정리
2장. 포키 시스템
__빌드 호스트 시스템 준비
____리눅스용 윈도우 서브시스템(WSLv2) 사용
____리눅스 기반 시스템 준비
__포키 소스코드 다운로드
__빌드 환경 준비
__local.conf 파일 소개
__타깃 이미지 빌드
__QEMU에서 이미지 실행
__요약
3장. Toaster를 사용한 이미지 생성
__Toaster 소개
__Toaster 설치
__Toaster 시작
__QEMU 이미지 빌드
__정리
4장. 비트베이크 기초
__비트베이크 이해
__비트베이크 메타데이터 집합
__메타데이터 유형
__정리
5장. 비트베이크 상세 소개
__메타데이터 파싱
__의존성
__선호하는 레시피 설정
__소스코드 다운로드
____원격 파일 다운로드
____깃 저장소
__소스코드 다운로드 최적화
____네트워크 접근 비활성화
__비트베이크 태스크
__정리
6장. 임시 빌드 디렉터리
__빌드 디렉터리
__빌드 디렉터리 구성
__임시 빌드 디렉터리 분석
__work 디렉터리
__sysroot 디렉터리
__정리
7장. 패키지 지원 고찰
__지원하는 패키지 종류
____지원하는 패키지 형식
____패키지 형식 선택
__패키지 설치 시점의 코드 실행
__셰어드 스테이트 캐시
__패키지 버전 선택
__런타임 패키지 의존성
__rootfs 이미지 생성을 위한 패키지 사용
__패키지 피드
____패키지 피드 사용
__정리
8장. 비트베이크 메타데이터
__비트베이크의 메타데이터
__메타데이터 작업
__정리
9장. Yocto 프로젝트를 이용한 개발
__소프트웨어 개발 키트(SDK)
__온디바이스 개발을 위한 네이티브 SDK 생성
__크로스 개발 SDK 유형
__표준 SDK
__확장 SDK
____devtool을 사용해 이미지 빌드
____QEMU에서 이미지 실행
____외부 깃 저장소를 사용한 레시피 생성
____devtool을 사용해 레시피 빌드
____devtool을 사용해 타깃으로 배포
____SDK 확장
__정리
10장. Yocto 프로젝트 디버깅
__메타데이터와 애플리케이션 디버깅
__이미지, 패키지, SDK 내용 추적
__패키지 디버깅
____패키지 확인
__작업 실행 기간의 로그 정보
__메타데이터 변수 디버깅
__devshell 이용
__GNU 디버거 사용
__정리
11장. 외부 레이어
__레이어를 이용한 유연성 확보
__레이어의 소스코드에 대한 고찰
__메타레이어 추가
__Yocto 프로젝트 레이어 생태계
__정리
12장. 사용자 레이어 생성
__새로운 레이어 추가
__레이어에서 메타데이터 추가
____이미지 생성
____패키지 레시피 추가
____신규 머신 추가
____커스텀 배포판
__MACHINE_FEATURES와 DISTRO_FEATURES 비교
__변수의 범위
__정리
13장. 레시피 커스터마이즈
__일반적인 사용 사례
____태스크 확장
__Autoconf 사용 레시피에 추가 옵션 적용
__패치 적용
__기존 패키지에 추가 파일 적용
____파일 탐색 경로
____레시피 기능 설정 변경
__Kconfig 기반 프로젝트에 대한 설정
__정리
14장. GPL 규정 준수
__카피레프트
____카피레프트 규약과 상용화 코드의 비교
__포키에 포함된 소프트웨어 라이선스 관리
____상용 라이선스
__카피레프트 규약을 지키기 위한 포키의 사용
____라이선스 검사
____소스코드 제공
____컴파일 스크립트와 수정된 소스코드 제공
____라이선스 문구 제공
__정리
15장. 커스텀 임베디드 리눅스 부팅
__올바른 BSP 레이어 찾기
____하드웨어 사용에 영향을 미치는 요소
____널리 사용되는 BSP 레이어 살펴보기
__물리 하드웨어 사용
__비글본 블랙
____비글본 블랙 빌드
____비글본 블랙 부팅
__라즈베리 파이 4
____라즈베리 파이 4 빌드
____라즈베리 파이 4 부팅
__비전파이브
____비전파이브 빌드
____비전파이브 부팅
__다음 단계로 넘어가기
__정리
16장. 에뮬레이션을 통한 제품 개발 속도 향상: QEMU
__QEMU란?
__하드웨어보다 QEMU를 사용할 때의 이점
__실제 하드웨어를 선택해야 하는 시점
__runqemu 기능 사용
____runqemu를 사용해 그래픽 애플리케이션 테스트
____runqemu를 사용해 메모리 제약 조건 검증
____runqemu를 사용해 이미지 회귀 테스트
__정리
17장. 모범 사례
__Yocto 프로젝트에서 따라야 할 가이드라인
____레이어 관리
____너무 많은 레이어를 만들지 않기
____새로운 Yocto 프로젝트 릴리스를 위한 제품 메타데이터 준비
____커스텀 배포판 만들기
____제품에 기존 이미지를 재사용하지 않기
____저평가돼 있는 표준 SDK
____리눅스 커널 및 부트로더 수정을 위해 많은 패치 적용하지 않기
____AUTOREV를 SRCREV에서 사용하지 않기
____SBOM 생성
__일반 프로젝트에서 따라야 할 가이드라인
____프로젝트 라이선스 제약 조건의 지속적인 모니터링
____보안이 프로젝트에 끼칠 수 있는 해로움
____유지 관리 비용에 대한 과소평가
____프로젝트의 위험 요소와 제약을 최대한 빨리 해결
__정리
__찾아보기
Author
오타비우 살바도르,다이앤 앤골리니,배창혁
다양한 임베디드 리눅스 개발 경험을 가진 유명한 소프트웨어 엔지니어이자 개발자다. 시스템 부팅, 장치 드라이버, 펌웨어 등 리눅스 커널 및 임베디드 시스템과 관련된 오픈소스 프로젝트에 기여하고 있다.
임베디드 리눅스 개발 솔루션 및 서비스를 제공하는 선도적인 브라질 기술 회사인 O.S. 시스템의 최고 경영자다. 이 회사는 임베디드 리눅스 개발, 컨설팅 및 지원을 포함한 다양한 서비스를 제공한다. Yocto 프로젝트에 핵심적인 기여를 해왔다. 이 분야에 대한 전문 지식은 O.S. 시스템을 선도적인 Yocto 프로젝트 기반 솔루션 및 서비스 제공업체로 만드는 데 도움이 됐다.
다양한 임베디드 리눅스 개발 경험을 가진 유명한 소프트웨어 엔지니어이자 개발자다. 시스템 부팅, 장치 드라이버, 펌웨어 등 리눅스 커널 및 임베디드 시스템과 관련된 오픈소스 프로젝트에 기여하고 있다.
임베디드 리눅스 개발 솔루션 및 서비스를 제공하는 선도적인 브라질 기술 회사인 O.S. 시스템의 최고 경영자다. 이 회사는 임베디드 리눅스 개발, 컨설팅 및 지원을 포함한 다양한 서비스를 제공한다. Yocto 프로젝트에 핵심적인 기여를 해왔다. 이 분야에 대한 전문 지식은 O.S. 시스템을 선도적인 Yocto 프로젝트 기반 솔루션 및 서비스 제공업체로 만드는 데 도움이 됐다.