Yocto, 쉽게 이해하고 깊게 다루기 - 에이콘 임베디드 시스템 프로그래밍 시리즈
저자

조운래

저자:조운래
학부에서전기전자공학을,대학원에서음성인식을전공했다.LG전자에서휴대폰소프트웨어를개발했으며,현재현대모비스에서근무중이다.
실무에서Yocto를다루면서,우리나라에서는다른프로그램에비해한정된사람들만Yocto를다루다보니생각보다정보가제한적이라는것을느꼈다.따라서Yocto를시작하는개발자들에게조금이나마도움이될수있기를바라는마음에서미약하지만실무경험을통해알게된내용과공부한내용을엮어책을쓰게되었다.

목차

1장.Yocto의소개와추상화개념
2장.Bitbake
3장.포키(Poky)
4장.빌드속도개선을위한작업들
5장.새로운레이어를만들고레시피생성
6장.초기화관리자추가및로그파일을통한디버깅
7장.유용한오픈임베디드코어클래스기능을사용한빌드최적화
8장.의존성
9장.패키지그룹및빌드환경구축
10장.포키배포를기반으로한커스텀이미지,BSP레이어작성
11장.커널레시피
12장.커널레시피의확장
13장.배포레이어
14장.커스터머레이어
15장.패키지
16장.패키지설치과정을실행하는do_rootfs,do_image태스크
17장.공유상태캐시와시그니처
18장.Kirkstone
19장.SDK(SoftwareDevelopmentKit)
20장.그외다루지않았던주제들
21장.devtool

출판사 서평

이책의대상독자
◆평소Yocto에관심은있었지만어디서부터어떻게공부해야할지모르는입문자
◆Yocto를다루고는있지만막연히사용할줄만알고,전체적인구조와원리를모르는실무자
◆Yocto를이용해리눅스기반의프로그램을만들어보고싶은개발자

이책의구성
1장에서는Yocto가무엇인지알아보고Yocto에담긴추상화의의미를이해한다.
2장에서는Yocto에서빌드시스템의중심인bitbake에대해자세하게알아본다.
3장에서는오픈임베디드빌드시스템을담고있는포키에대해알아본다.
4장에서는실습에들어가기에앞서빌드를좀더빠르게할수있는방안으로두가지방법을제시한다.따라서자신만의PREMIRRORS와공유상태캐시를구성하는방법을학습한다.
5장에서는새로운레이어를만들고직접레시피파일을작성해본후관련문법을학습한다.
6장에서는5장에서만든애플리케이션바이너리를init시스템인systemd에서실행하는방법을알아보고디버깅하는방법에대해서도학습한다.
7장에서는오픈임베디드코어가제공하는클래스를이용한빌드최적화방법들에대해다룬다.Autotools를이용해간단하게애플리케이션을빌드할수있는방법,소스를로컬에위치시키는externalsrc,불필요한빌드산출물을삭제하는rm_work,빌드정보를저장하는buildhistory클래스에대해학습한다.
8장에서는레시피와패키지들간의의존성에대해알아본다.의존성에는빌드의존성과실행시간의존성이있는데이에대해상세하게살펴본다.
9장에서는패키지그룹에대해알아보고앞으로의실습을위해자체빌드환경을구축해본다.
10장부터는포키배포를기반으로한커스텀이미지와커스텀BSP레이어를생성한다.이내용은레이어드아키텍처에기반해학습을진행한다.레이어를하나씩만들어가며실제로현업에서이뤄지는작업들을이해해본다.
11장에서는커널레시피에대해학습한다.오픈임베디드빌드시스템은커널을쉽게빌드할수있도록도와주는클래스를제공한다.이클래스를이용해패치및환경설정옵션들을쉽게적용할수있다.또한Yocto에서제공하는커널메타데이터에대해서도알아본다.
12장에서는11장에서학습한커널레시피를확장해기능을추가해본다.커널소스를externalsrc클래스를상속해외부에따로저장하고defconfig파일을커널내소스에서사용할수있도록하는방법도학습한다.또한커널모듈을커널소스트리밖에서만드는법을학습한다.
13장에서는배포레이어를학습한다.이를통해배포레이어가배포전반에걸친빌드에대한환경설정을갖고있다는것을이해할수있다.그리고자신만의배포레이어를만들어배포레이어에대한이해를높인다.
14장에서는레이어드아키텍처의최상위레이어인커스터머(customer)레이어를만들어봄으로써실제현업에서칩벤더가배포한Yocto기반의코드를어떻게추가하고변경하는지,이해해본다.
15장에서는패키지에대해학습한다.크로스빌드환경에서만들어진결과물들을실제타깃에넣기위해서는패키지로만들어야한다.패키지에대한이해를위해공유라이브러리생성에대해서도알아본다.
16장에서는패키지설치과정을학습한다.최종적으로만들어질이미지인루트파일시스템을생성하는방법에대해배우게된다.
17장에서는4장에서구축했던공유상태캐시에대해좀더자세하게다루고공유상태캐시를최적화하는방법에대해서도학습한다.
18장에서는장기간지원Yocto버전인kirkstone에대해학습한다.kirkstone만의특징을알아보고실제kirkstone을설치해본다.그리고기존에dunfell버전으로작성했던예제를kirkstone으로마이그레이션해본다.
19장에서는SDK에대해학습한다.외부에서애플리케이션이나커널모듈을개발할때개발환경으로SDK를사용하므로SDK를생성하는방법을학습한다.그리고생성된SDK를호스트에설치하고생성된SDK를이용해애플리케이션과외부커널모듈을만들어본다.
20장에서는파이썬함수,익명파이썬함수와bitbake문법을다룬다.그리고oe-pkgdta-util툴의사용방법,PACKAGECONFIG변수의사용을통해기능단위로빌드를설정하는방법,오픈임베디드코어에서제공하는소스코드를배포하는방법,이미만들어져있는레이어를현재진행하는프로젝트에포팅해사용하는방법을학습한다.
21장에서는devtool에대해학습한다.앞에서는새로운패키지를생성할때레이어를생성하고레시피작성,layer.conf파일에레시피추가그리고이미지레시피에패키지를추가했다.이런과정을수행하는데는어느정도의수고와Yocto에대한기반지식이필요하다.그러나devtool을사용하면수고를덜고Yocto에대한기반지식이없더라도간단하게애플리케이션이나커널모듈을개발할수있다.따라서21장에서는devtool의개념을학습하고,간단한예제를통해devtool의사용법을익혀본다.