Yocto 프로젝트를 활용한 임베디드 리눅스 개발 3/e - 에이콘 임베디드 시스템 프로그래밍 시리즈
Description
Yocto 프로젝트나 오픈임베디드로 임베디드 리눅스 개발을 처음 시작하는 개발자를 위한 기본서다. Yocto 프로젝트에 대한 기본 개념부터 시작해 실제 디바이스에 적용하는 방법까지 예제와 유용한 팁을 제시하며 읽기 쉽게 설명한다. 개정된 3판에서는 많은 내용이 수정됐으며 Yocto 프로젝트의 최신 업데이트를 반영했다. Toaster, 라즈베리 파이 4 개발 보드 활용 등을 다루고 현대 임베디드 시스템에서의 효율적인 빌드 관리 방법을 소개한다. Yocto 프로젝트를 처음 접하는 독자에게 필수 안내서가 될 것이다.

저자

오타비우살바도르,다이앤앤골리니

저자:오타비우살바도르
다양한임베디드리눅스개발경험을가진유명한소프트웨어엔지니어이자개발자다.시스템부팅,장치드라이버,펌웨어등리눅스커널및임베디드시스템과관련된오픈소스프로젝트에기여하고있다.
임베디드리눅스개발솔루션및서비스를제공하는선도적인브라질기술회사인O.S.시스템의최고경영자다.이회사는임베디드리눅스개발,컨설팅및지원을포함한다양한서비스를제공한다.Yocto프로젝트에핵심적인기여를해왔다.이분야에대한전문지식은O.S.시스템을선도적인Yocto프로젝트기반솔루션및서비스제공업체로만드는데도움이됐다.

저자:다이앤앤골리니
임베디드시스템및임베디드리눅스개발전문성을갖춘소프트웨어엔지니어다.또한Yocto프로젝트,오픈임베디드,리눅스커널등여러프로젝트와커뮤니티에기여하며오픈소스소프트웨어개발경험을쌓았다.
임베디드컴퓨팅솔루션을통해전세계커넥티드디바이스를위한안전한오픈소스플랫폼과모든하드웨어및클라우드에구성가능한클라우드서비스를구축한회사인Foundries.io의선임임베디드소프트웨어엔지니어다.Foundries.io에서다양한임베디드시스템용소프트웨어를개발및개선하고,Yocto프로젝트도구를사용해ARM및x86아키텍처기반의LmP및BPS를유지관리한다.

역자:배창혁
현재독일에있는메르세데스-벤츠이노베이션랩(MBition,Mercedes-BenzInnovationLab)에서수석소프트웨어엔지니어(PrincipalSoftwareEngineer)로근무하면서벤츠의MB.OS플랫폼과인포테인먼트소프트웨어를개발하고있다.이전에는LG전자소프트웨어플랫폼연구소에서webOS플랫폼관련업무를했다.42Wolfsburg의자동차소프트웨어교육프로그램인SEA:ME의follow,OpenUp에서오픈소스프론티어,오픈임베디드TSC멤버등다양한활동도병행하고있다.에이콘출판사에서출간한『자동차소프트웨어아키텍처』(2023),『Yocto프로젝트를활용한임베디드리눅스개발2/e』(2018),『EmbeddedLinuxProjectsUsingYoctoProjectCookbook』(2016),『BeagleBoneBlack을사용한Yocto프로젝트』(2015),『Yocto프로젝트를활용한임베디드리눅스개발』(2014)을번역했다.

목차


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생성
__일반프로젝트에서따라야할가이드라인
____프로젝트라이선스제약조건의지속적인모니터링
____보안이프로젝트에끼칠수있는해로움
____유지관리비용에대한과소평가
____프로젝트의위험요소와제약을최대한빨리해결
__정리

__찾아보기

출판사 서평

이책에서다루는내용

포키(Poky)워크플로이해
포키빌드환경설정및준비
예제를통해살펴보는최신버전의Yocto프로젝트
Toaster를사용한빌드서버설정과이미지커스터마이즈
비트베이크(BitBake)를사용한이미지생성과생성된이미지에패키지를맞추는방법
패키지피드설정과사용을통한개발프로세스지원
포키설정을통한Yocto프로젝트디버그
SD카드를통해비글본블랙,라즈베리파이4및비전파이브(VisionFive)용이미지를빌드하고부팅하는방법
에뮬레이션을사용해개발주기를단축하기위한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프로젝트및일반적인프로젝트관련가이드라인을설명한다.

지은이의말

리눅스는최첨단제품에꾸준히사용돼왔으며,임베디드시스템은인류의기술포트폴리오에서중요한역할을해왔다.

Yocto프로젝트는여러분의프로젝트를위한최적의선택이될수있다.이프로젝트는반복적인작업대신제품개발에대부분의에너지와리소스를사용할수있도록풍부한도구세트를제공한다.

임베디드리눅스기반제품및개발팀의일반적인작업과요구사항이이책을구상하는데지침이됐다.그러나실용적이고직관적인접근방식으로활발한커뮤니티회원들이집필한이책은학습과정과제품프로젝트모두에디딤돌이될것이다.

3판은이전판에서독자들이보내준피드백을반영해완전히재작성했으며,Yocto프로젝트와관련된복잡한개념을쉽게이해할수있도록내용을확장하고Yocto프로젝트LTS버전4.0(코드명:kirkstone)까지의변경사항을반영해철저하게업데이트했다.

또한에뮬레이션을통해제품개발속도를높이고자QEMU를사용하는방법과Yocto프로젝트및일반프로젝트지침에관한2개의새로운장을추가했다.

옮긴이의말

『Yocto프로젝트를활용한임베디드리눅스개발』한국어판의3판을출간하게돼감회가새롭습니다.1판의번역서가출간된이후Yocto프로젝트가국내외에서얼마나많은제품과회사에도입될지에대해많은궁금증이있었습니다.그러나이제는Yocto프로젝트의확고한입지를직접확인할수있게됐습니다.

저는다양한오픈소스프로젝트의컨트리뷰터로활동하고국내외콘퍼런스에참석하며Yocto프로젝트를활용하는많은개발자와프로젝트를접했습니다.이과정을통해Yocto프로젝트의사용이점차확대되고있음을실감했고,이는Yocto프로젝트의장점과필요성을명확히설명해줬습니다.

Yocto프로젝트의큰장점중하나는거의모든SoC(SystemonChip)(Intel,Qualcomm,Samsung,Renesas,NVIDIA등)업체들이BSP를Yocto프로젝트기반으로릴리스하고있다는점입니다.이로인해Yocto프로젝트는유연성과확장성을제공하며,다양한오픈소스프로젝트와상용제품에서의채택으로이어지고있습니다.대표적인오픈소스프로젝트로는webOSOSE(OpenSourceEdition),AGL(AutomotiveGradeLinux),RDK등이있으며,상용제품으로는LG의webOSTV,BMW,벤츠,현대자동차의IVI및Telematics시스템등이있습니다.

그럼에도여전히많은개발자가Yocto프로젝트사용에어려움을겪고있습니다.이는임베디드OS개발에대한깊은지식과함께Yocto프로젝트에서사용하는문법을익혀야한다는복잡한조건때문입니다.이러한난관을해결하기위해Yocto프로젝트커뮤니티는문서화와개발도구의개선을통해개발자들의진입장벽을낮추고자노력하고있습니다.저역시10년이상이분야에몸담고있지만여전히배워야할것이많다고느낍니다.

Yocto프로젝트를시작하는가장좋은방법은이책과같은기본서를통해기초를다지고실제제품에적용하면서필요한지식을습득하는것입니다.어려움이있을경우저에게문의하거나Yocto프로젝트메일링리스트,IRC등을활용해도움을받을수있습니다.

3판을준비하면서Yocto프로젝트의중요성이더욱커지고있음을느꼈습니다.이책이Yocto프로젝트를시작하는개발자에게유용한길잡이가되기를바라며,독자여러분의성공적인프로젝트에조금이나마기여할수있기를희망합니다.