◈ 이 책에서 다루는 내용 ◈
◆ 포키(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판을 출간하게 돼 감회가 새롭습니다. 1판의 번역서가 출간된 이후 Yocto 프로젝트가 국내외에서 얼마나 많은 제품과 회사에 도입될지에 대해 많은 궁금증이 있었습니다. 그러나 이제는 Yocto 프로젝트의 확고한 입지를 직접 확인할 수 있게 됐습니다.
저는 다양한 오픈소스 프로젝트의 컨트리뷰터로 활동하고 국내외 콘퍼런스에 참석하며 Yocto 프로젝트를 활용하는 많은 개발자와 프로젝트를 접했습니다. 이 과정을 통해 Yocto 프로젝트의 사용이 점차 확대되고 있음을 실감했고, 이는 Yocto 프로젝트의 장점과 필요성을 명확히 설명해줬습니다.
Yocto 프로젝트의 큰 장점 중 하나는 거의 모든 SoC(System on Chip)(Intel, Qualcomm, Samsung, Renesas, NVIDIA등) 업체들이 BSP를 Yocto 프로젝트 기반으로 릴리스하고 있다는 점입니다. 이로 인해 Yocto 프로젝트는 유연성과 확장성을 제공하며, 다양한 오픈소스 프로젝트와 상용 제품에서의 채택으로 이어지고 있습니다. 대표적인 오픈소스 프로젝트로는 webOS OSE(Open Source Edition), AGL(Automotive Grade Linux), RDK 등이 있으며, 상용 제품으로는 LG의 webOS TV, BMW, 벤츠, 현대자동차의 IVI 및 Telematics 시스템 등이 있습니다.
그럼에도 여전히 많은 개발자가 Yocto 프로젝트 사용에 어려움을 겪고 있습니다. 이는 임베디드 OS 개발에 대한 깊은 지식과 함께 Yocto 프로젝트에서 사용하는 문법을 익혀야 한다는 복잡한 조건 때문입니다. 이러한 난관을 해결하기 위해 Yocto 프로젝트 커뮤니티는 문서화와 개발 도구의 개선을 통해 개발자들의 진입 장벽을 낮추고자 노력하고 있습니다. 저 역시 10년 이상 이 분야에 몸담고 있지만 여전히 배워야 할 것이 많다고 느낍니다.
Yocto 프로젝트를 시작하는 가장 좋은 방법은 이 책과 같은 기본서를 통해 기초를 다지고 실제 제품에 적용하면서 필요한 지식을 습득하는 것입니다. 어려움이 있을 경우 저에게 문의하거나 Yocto 프로젝트 메일링 리스트, IRC 등을 활용해 도움을 받을 수 있습니다.
3판을 준비하면서 Yocto 프로젝트의 중요성이 더욱 커지고 있음을 느꼈습니다. 이 책이 Yocto 프로젝트를 시작하는 개발자에게 유용한 길잡이가 되기를 바라며, 독자 여러분의 성공적인 프로젝트에 조금이나마 기여할 수 있기를 희망합니다.