Yocto 프로젝트를 활용한 임베디드 리눅스 개발 3/e [효율적인 리눅스 기반 제품 구축]
- 원서명Embedded Linux Development Using Yocto Project: Leverage the power of the Yocto Project to build efficient Linux-based products, Third Edition (ISBN 9781804615065)
- 지은이오타비우 살바도르(Otavio Salvador), 다이앤 앤골리니(Daiane Angolini)
- 옮긴이배창혁
- ISBN : 9791161758671
- 22,000원 (eBook 17,600원)
- 2024년 08월 28일 펴냄
- 페이퍼백 | 240쪽 | 188*235mm
- 시리즈 : 임베디드 시스템
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
Yocto 프로젝트나 오픈임베디드로 임베디드 리눅스 개발을 처음 시작하는 개발자를 위한 기본서다. Yocto 프로젝트에 대한 기본 개념부터 시작해 실제 디바이스에 적용하는 방법까지 예제와 유용한 팁을 제시하며 읽기 쉽게 설명한다. 개정된 3판에서는 많은 내용이 수정됐으며 Yocto 프로젝트의 최신 업데이트를 반영했다. Toaster, 라즈베리 파이 4 개발 보드 활용 등을 다루고 현대 임베디드 시스템에서의 효율적인 빌드 관리 방법을 소개한다. Yocto 프로젝트를 처음 접하는 독자에게 필수 안내서가 될 것이다.
이 책에서 다루는 내용
◆ 포키(Poky) 워크플로 이해
◆ 포키 빌드 환경 설정 및 준비
◆ 예제를 통해 살펴보는 최신 버전의 Yocto 프로젝트
◆ Toaster를 사용한 빌드 서버 설정과 이미지 커스터마이즈
◆ 비트베이크(BitBake)를 사용한 이미지 생성과 생성된 이미지에 패키지를 맞추는 방법
◆ 패키지 피드 설정과 사용을 통한 개발 프로세스 지원
◆ 포키 설정을 통한 Yocto 프로젝트 디버그
◆ SD 카드를 통해 비글본 블랙, 라즈베리 파이 4 및 비전파이브용 이미지를 빌드하고 부팅하는 방법
◆ 에뮬레이션을 사용해 개발 주기를 단축하기 위한 QEMU 사용
이 책의 대상 독자
임베디드 리눅스 경험이 있는 엔지니어와 애호가를 대상으로 하며, 프로젝트에서 평가, 비교 또는 사용하기 위해 Yocto 프로젝트의 도구에 대해 배우고자 하는 사람을 위한 책이다. 일반적인 학습 곡선의 함정에 빠지지 않고 빠르게 속도를 낼 수 있게 도와주는 것이 이 책의 목적이다.
이 책의 구성
1장, ‘Yocto 프로젝트 소개’에서는 Yocto 프로젝트의 일부와 주요 도구를 소개하기 위해 첫 번째 개념과 전제를 제시한다.
2장, ‘포키 시스템’에서는 첫 번째 빌드에 필요한 환경을 소개한다.
3장, ‘Toaster를 사용한 이미지 생성’에서는 설정 래퍼 및 빌드 도구로 사용할 수 있는 사용자 친화적인 웹 인터페이스를 보여준다.
4장, ‘비트베이크 기초’에서는 비트베이크 메타데이터 개념을 소개한다.
5장, ‘비트베이크 상세 소개’에서는 비트베이크 도구가 태스크와 의존성을 관리하는 방법을 보여준다.
6장, ‘임시 빌드 디렉터리’에서는 빌드의 임시 작업 디렉터리를 자세히 설명한다.
7장, ‘패키지 지원 고찰’에서는 모든 바이너리 패키지를 만들고 관리하는 데 기본으로 사용되는 패키징 메커니즘을 소개한다.
8장, ‘비트베이크 메타데이터’에서는 다른 모든 장에서 사용될 비트베이크 메타데이터 언어를 자세히 살펴본다.
9장, ‘Yocto 프로젝트를 이용한 개발’에서는 개발 환경을 확보하는 데 필요한 워크플로를 설명한다.
10장, ‘Yocto 프로젝트를 이용한 디버깅’에서는 포키를 사용해 디버그 환경을 생성하는 방법과 이를 사용하는 방법을 소개한다.
11장, ‘외부 레이어’에서는 Yocto 프로젝트의 중요한 개념 중 하나인 외부 레이어 사용의 유연성을 살펴본다.
12장, ‘사용자 레이어 생성’에서는 레이어를 만들어보는 실습을 한다.
13장, ‘레시피 커스터마이즈’에서는 기존 레시피를 커스터마이즈하는 방법을 소개한다.
14장, ‘GPL 규정 준수’에서는 카피레프트(copyleft) 준수 제품에 관련된 태스크와 개념을 살펴본다.
15장, ‘커스텀 임베디드 리눅스 부팅’에서는 실제 하드웨어 머신과 Yocto 프로젝트의 도구를 사용한다.
16장, ‘에뮬레이션을 통한 제품 개발 속도 향상: QEMU’에서는 QEMU로 제품 개발을 가속화하는 방법을 알아본다.
17장, ‘모범 사례’에서는 저자의 경험을 바탕으로 Yocto 프로젝트 및 일반적인 프로젝트 관련 가이드라인을 설명한다.
소개이미지
목차
목차
- 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장. 사용자 레이어 생성
- 새로운 레이어 추가
- 레이어에서 메타데이터 추가
- 이미지 생성
- 패키지 레시피 추가
- 신규 머신 추가
- 커스텀 배포판
- MACHINEFEATURES와 DISTROFEATURES 비교
- 변수의 범위
- 정리
- 13장. 레시피 커스터마이즈
- 일반적인 사용 사례
- 태스크 확장
- Autoconf 사용 레시피에 추가 옵션 적용
- 패치 적용
- 기존 패키지에 추가 파일 적용
- 파일 탐색 경로
- 레시피 기능 설정 변경
- Kconfig 기반 프로젝트에 대한 설정
- 정리
- 일반적인 사용 사례
- 14장. GPL 규정 준수
- 카피레프트
- 카피레프트 규약과 상용화 코드의 비교
- 포키에 포함된 소프트웨어 라이선스 관리
- 상용 라이선스
- 카피레프트 규약을 지키기 위한 포키의 사용
- 라이선스 검사
- 소스코드 제공
- 컴파일 스크립트와 수정된 소스코드 제공
- 라이선스 문구 제공
- 정리
- 카피레프트
- 15장. 커스텀 임베디드 리눅스 부팅
- 올바른 BSP 레이어 찾기
- 하드웨어 사용에 영향을 미치는 요소
- 널리 사용되는 BSP 레이어 살펴보기
- 물리 하드웨어 사용
- 비글본 블랙
- 비글본 블랙 빌드
- 비글본 블랙 부팅
- 라즈베리 파이 4
- 라즈베리 파이 4 빌드
- 라즈베리 파이 4 부팅
- 비전파이브
- 비전파이브 빌드
- 비전파이브 부팅
- 다음 단계로 넘어가기
- 정리
- 올바른 BSP 레이어 찾기
- 16장. 에뮬레이션을 통한 제품 개발 속도 향상: QEMU
- QEMU란?
- 하드웨어보다 QEMU를 사용할 때의 이점
- 실제 하드웨어를 선택해야 하는 시점
- runqemu 기능 사용
- runqemu를 사용해 그래픽 애플리케이션 테스트
- runqemu를 사용해 메모리 제약 조건 검증
- runqemu를 사용해 이미지 회귀 테스트
- 정리
- 17장. 모범 사례
- Yocto 프로젝트에서 따라야 할 가이드라인
- 레이어 관리
- 너무 많은 레이어를 만들지 않기
- 새로운 Yocto 프로젝트 릴리스를 위한 제품 메타데이터 준비
- 커스텀 배포판 만들기
- 제품에 기존 이미지를 재사용하지 않기
- 저평가돼 있는 표준 SDK
- 리눅스 커널 및 부트로더 수정을 위해 많은 패치 적용하지 않기
- AUTOREV를 SRCREV에서 사용하지 않기
- SBOM 생성
- 일반 프로젝트에서 따라야 할 가이드라인
- 프로젝트 라이선스 제약 조건의 지속적인 모니터링
- 보안이 프로젝트에 끼칠 수 있는 해로움
- 유지 관리 비용에 대한 과소평가
- 프로젝트의 위험 요소와 제약을 최대한 빨리 해결
- 정리
- 찾아보기
- Yocto 프로젝트에서 따라야 할 가이드라인