Top

Yocto 프로젝트를 활용한 임베디드 리눅스 개발

  • 원서명Embedded Linux Development with Yocto Project (ISBN 9781783282333)
  • 지은이오타비우 살바도르, 다이앤 앤골리니
  • 옮긴이배창혁, 이상욱
  • ISBN : 9788960776517
  • 18,800원
  • 2014년 12월 23일 펴냄
  • 페이퍼백 | 180쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 임베디드 시스템

책 소개

요약

이 책은 욕토 프로젝트(Yocto Project)나 오픈임베디드(OpenEmbedded)로 임베디드 리눅스 개발을 처음 시작하는 개발자를 위해 세계 최초로 출간된 기본서다. 욕토 프로젝트에 대한 기본 개념들부터 시작해서 실제 디바이스에 적용하는 방법까지 예제와 유용한 팁을 제시하며 읽기 쉽게 설명되어 있다

이 책에서 다루는 내용

■ 오픈임베디드(OpenEmbedded), 욕토 프로젝트(Yocto Project), 비트베이크(BitBake)의 차이점
■ 비트베이크 메타데이타 문법
■ 사용자만의 애플리케이션 개발환경 설정 방법
■ 크로스컴파일 환경에서의 애플리케이션 디버깅 방법
■ 리눅스 커널에 기능을 추가하거나 제거하는 방법
■ 손쉽게 프로젝트 라이선스 규약을 준수하는 방법
■ 욕토 프로젝트를 이용하여 임베디드 리눅스 시스템을 만드는 방법

이 책의 대상 독자

이 책은 욕토 프로젝트 툴을 알아보거나 비교하고, 실제 프로젝트에 사용하기 위해 이를 배우고 싶은 엔지니어들과 임베디드 리눅스에 경험과 열정을 가진 사람들을 목표로 한다. 이 책의 목표는 독자를 빨리 배우게 하고 학습 정체에 빠지는 것을 막는 데 있다.

이 책의 구성

1장. ‘욕토 프로젝트 소개’에서는 욕토 프로젝트의 역사와 구성에 대해 알아본다.
2장. ‘포키 시스템’에서는 첫 빌드(build)를 위한 환경을 설명한다.
3장. ‘Hob을 사용한 이미지 생성’에서는 환경 설정과 빌드 툴로 쓸 수 있는 사용자에게 편안한 그래픽 인터페이스를 살펴본다.
4장. ‘비트베이크 툴’에서는 욕토 프로젝트의 모든 조각들을 조작하기 위한 툴의 첫 개념과 기반에 대해 알아본다.
5장. ‘임시 빌드 폴더’에서는 빌드의 결과 폴더(folder) 구조에 대해 알아보고 특히 tmp 폴더에 대해 상세히 알아본다.
6장. ‘패키지 지원 고찰’에서는 패키지 개념을 설명하고 욕토 프로젝트에서 사용되는 패키지 지원 방식에 대해 상세히 알아본다.
7장. ‘비트베이크 메타데이터 나누기’에서는 욕토 프로젝트 메타데이터(metadata)(레시피와 환경 설정 파일)에서 사용되는 개념과 문법에 대해 상세히 알아본다.
8장. ‘욕토 프로젝트를 이용한 개발’에서는 욕토 프로젝트를 사용하여 커스텀(custom) 개발 환경을 생성하는 것에 대해 알아본다.
9장. ‘욕토 프로젝트 디버깅’에서는 욕토 프로젝트가 제공하는 디버그(debug) 툴과 사용법을 알아본다.
10장. ‘외부 레이어’에서는 욕토 프로젝트의 가장 중요한 개념 중 하나인 외부 레이어 사용에 대해 알아본다.
11장. ‘사용자 레이어 생성’에서는 레이어를 만드는 법을 연습해본다.
12장. ‘레시피 커스터마이즈’에서는 레시피를 커스터마이즈하는 일반적인 유스케이스(use case)와 이를 어떻게 달성하는지 알아본다.
13장. ‘GPL 규정 준수’에서는 카피레프트(copyleft)를 지키는 제품에 연관된 작업과 개념에 대해 알아본다.
14장. ‘커스텀 임베디드 리눅스 부팅’에서는 욕토 프로젝트 툴과 실제 하드웨어를 사용해본다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

저자/역자 소개

저자 소개

오타비우 살바도르(Otavio Salvador)

비디오 게임을 좋아하며, 1999년에 오픈 소스 활동을 시작했다. 2002년에 임베디드 시스템 개발 회사이자 세계적 컨설팅 회사인 OS 시스템을 창립했으며, 커스터마이즈된 BSP를 개발 유지하고, 릴리스 매니지먼트 챌린지를 통해 회사들을 돕는다. 2008년 오픈임베디드 커뮤니티에 참여한 결과 오픈임베디트 프로젝트에 활동적인 컨트리뷰터가 되었고, 그 결과 2011년 욕토 프로젝트에서 프리스케일(Freescale) ARM BSP 레이어의 메인테이너가 되었다.

다이앤 앤골리니(Daiane Angolini)

지난 8년 동안 임베디드 기술에 전념해왔고, 2008년부터 프리스케일(Freescale) 반도체 회사에서 애플리케이션 엔지니어로 일했다. 안드로이드에서부터 프리스케일 아키텍처까지 내부 개발과 커스텀 애플리케이션을 포팅하는 일을 하며, 프리스케일 포럼에 참여하면서 i.MX 패밀리의 ARM 프로세서에서 고객 지원을 했다. 2012년부터 프리스케일 ARM 머신에서 보드를 지원하는 BSP 메타 레이어인 meta-fsl-arm에서 욕토 프로젝트 툴을 이용해 일하고 있다. 여유 시간이 있을 때마다 아이스크림을 만드는 전문가가 되고자 바쁘게 노력하고 있다.

옮긴이의 말

2년 전 웹OS(webOS)를 처음 접하면서 오픈임베디드 빌드 프레임워크를 알게 됐다. 국내에서는 거의 이용하지 않았고, 해외에서조차 자료도 적고, 개념도 복잡해서 왜 이렇게 복잡한 빌드 프레임워크를 써야 하는지 의아하기도 했다. 하지만, 하나씩 알아갈수록 빌드 프레임워크의 거의 모든 개념이 들어가 있음에 매력을 느끼기 시작했다.

우리는 빌드 시스템이라는 용어 대신 오픈임베디드를 빌드 프레임워크라고 표현했다. 빌드 시스템을 구글링해보면 Make, Ant, Scons, CMake이 주로 나온다. 작은 프로젝트 단위에서는 빌드 시스템으로 충분하다. 하지만, OS 개발과 같이 여러 오픈 소스들을 가지고 통합해서 만드는 큰 프로젝트에서는 Make, Scons, CMake를 사용한 모듈을 포함해 구성하기 때문에 더 큰 개념의 빌드 프레임워크가 필요하다.

현재 많이 사용하는 빌드 프레임워크는 오픈임베디드(openembedded), 빌드루트(buildroot), 타이젠(Tizen)에서 사용하는 오픈 빌드 서비스(Open Build Service), 안드로이드 빌드 등이 있다. 이런 다양한 빌드 프레임워크 중 오픈임베디드는 오픈 소스 커뮤니티가 활성화되어 있고, 가장 많은 업체들이 각자의 제품을 개발하는 데 사용하고 있다.

이 책은 욕토 프로젝트나 오픈임베디드로 임베디드 리눅스 개발을 처음 시작하는 개발자를 위해 최초로 출간된 기본서다. 욕토 프로젝트에 대한 기본 개념들부터 시작해서 실제 디바이스에 적용하는 방법까지 예제와 유용한 팁을 제시하며 읽기 쉽게 설명되어 있다. 2년 전에 이런 책이 있었으면 처음 시작할 때 개념을 더 쉽게 잡아 오픈임베디드 빌드 프레임워크에 더 빨리 접근할 수 있었을지도 모른다. 그래서 우리는 이 책이 해외에서 출간되자마자 바로 구매해 읽어 보았고, 향후 국내에서도 많이 사용할 것이라 생각해 번역을 시작했다. 또한 이 책의 저자가 심화된 내용으로 다음 책을 집필하고 있는데, 여기에도 리뷰어로 참여할 예정이기에, 기회가 되면 그 책 또한 국내 독자들을 위해 번역 출간할 수 있기를 바란다.

옮긴이 소개

배창혁

현재 LG전자 소프트웨어 플랫폼 연구소에서 소프트웨어 엔지니어로 근무하면서 SCM 관련 업무를 하고 있다. 오픈임베디드 관련 오픈 소스 활동을 하고 있으며, 임베디드 리눅스 포팅, 네트워크 미디어 관련 개발 분야에 관심이 많다. 여가 시간에는 야구와 축구를 하고 경기를 즐겨 본다.

이상욱

2010년부터 2014년까지 LG CNS에서 소프트웨어 엔지니어로 근무했고, 현재 Vieworks에서 내부 시스템 구성 프로젝트를 진행하고 있다. 즐겁고 성공하는 소프트웨어 프로젝트를 구성하는 것에 관심이 많아 소프트웨어 공학부터 작업 시간을 단축시킬 수 있는 다양한 오픈 소스를 적용해보길 좋아한다.

목차

목차
  • 1장 욕토 프로젝트 소개
    • 욕토 프로젝트의 의미
    • 욕토 프로젝트의 상세 소개
    • 포키의 의미
      • 비트베이크의 사용
      • 오픈임베디드 코어
      • 메타데이터
    • 욕토 프로젝트와 오픈임베디드의 연합
    • 정리

  • 2장 포키 시스템
    • 호스트 시스템 환경설정
      • 데비안에 포키 설치
      • 페도라에 포키 설치
    • 포키 소스코드 다운로드
    • 빌드 환경 준비
    • local.conf
    • 타깃 이미지 빌드
    • QEMU에서 이미지 실행
    • 정리

  • 3장 Hob을 사용해 이미지 생성
    • Hob을 사용해 이미지 빌드
    • Hob을 사용해 이미지 편집
    • 정리

  • 4장 비트베이크 툴
    • 비트베이크 툴
    • 메타데이터
    • 메타데이터 파싱
    • 의존성
    • 레시피 프로바이더와 프레퍼런스
    • 소스코드 다운로드
      • 원격 파일 다운로드
      • 깃 저장소
      • 다른 저장소
      • 소스코드 다운로드 최적화
      • 네트워크 접근 제한
      • 비트베이크 태스크
        • 태스크 확장
      • 루트 파일시스템 이미지 생성
    • 정리

  • 5장 임시 빌드 폴더
    • 빌드 폴더
    • 빌드 폴더 구성
    • 임시 빌드 폴더 분석
    • work 폴더
    • sysroot 폴더
    • 정리

  • 6장 패키지 지원 고찰
    • 지원되는 패키지 포맷 이용
      • 지원 가능한 패키지 포맷
      • 패키지 포맷 선택
      • 패키지 설치 시점의 코드 실행
    • 셰어드 스테이트 캐시
    • 패키지 버전 선택
    • 패키지 피드
      • 패키지 피드 사용
    • 정리

  • 7장 비트베이크 메타데이터 나누기
    • 메타데이터 사용
    • 메타데이터 작업
      • 기본 변수 설정
      • 변수 확장
      • ?=를 사용한 기본 값 설정
      • ??를 사용한 기본 값 설정
      • 즉시 변수 적용
      • 앞 뒤 추가
      • 조건을 가진 메타데이터 집합
      • 조건적 추가
      • 파일 포함
      • 파이썬 변수 설정
      • 실행 가능한 메타데이터 정의
      • 전역 네임스페이스에서 파이썬 함수 정의
      • 상속 시스템
    • 정리

  • 8장 욕토 프로젝트를 이용한 개발
    • 소프트웨어 개발 키트
    • 포키 SDK 이용
      • 이미지 기반 SDK 이용
      • 범용적 SDK: meta-toolchain
      • SDK 이용
    • 타깃에서 애플리케이션 개발
    • 이클립스와 통합
    • 정리

  • 9장 욕토 프로젝트 디버깅
    • 메타데이터와 애플리케이션 디버깅
    • 이미지, 패키지, SDK 콘텐츠 추적
    • 패키지 디버깅
    • 작업 실행 기간의 로그 정보
    • 개발 셸 이용
    • 디버깅을 위해 GNU 프로젝트 디버거 사용
    • 정리

  • 10장 외부 레이어
    • 레이어를 이용한 유연성 확보
    • 레이어의 소스코드에 대한 고찰
    • 메타레이어 추가
    • 정리

  • 11장 사용자 레이어 생성
    • 새로운 레이어 추가
    • 레이어에서 메타데이터 추가
    • 이미지 생성
    • 패키지 레시피 추가
    • 머신 정의 작성
    • 커스텀 배포 사용
    • 머신 기능과 배포 기능 비교
    • 변수의 범위
    • 정리

  • 12장 레시피 커스터마이즈
    • 일반적인 유스케이스
    • Autoconf에 기반을 둔 레시피에 추가 옵션 적용
    • 패치 적용
    • 존재하는 패키지에 추가 파일 적용
      • 파일 탐색 경로
    • 레시피의 피처 변경
    • BusyBox 커스터마이제이션
    • 리눅스 욕토 프레임워크 커스터마이징
    • 정리

  • 13장 GPL 규정 준수
    • 카피레프트
      • 카피레프트 규약과 상용화 코드의 비교
      • 라이선스 규약의 가이드라인
    • 포키에 포함된 소프트웨어 라이선스 관리
      • 상업 라이선스
    • 카피레프트 규약을 지키기 위한 포키의 사용
      • 라이선스 검사
      • 소스코드 제공
      • 컴파일 스크립트와 수정된 소스코드 제공
      • 라이선스 문구 제공
    • 정리

  • 14장 커스텀 임베디드 리눅스 부팅
    • Wandboard
    • Freescale ARM BSP 발견
    • 욕토 프로젝트에서 Wandboard 사용
    • Wandboard를 위한 이미지 빌드
    • SD 카드를 이용하여 Wandboard 부팅
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

2016. 3. 7 수정사항

[p. 64: 노트 박스 1-2행]

2016. 10. 27 수정사항

[p.38: 2행]
BPS(Board Support Packgage)에서
->
BSP(Board Support Packgage)에서

[p.96: 아래에서 5행]
이 예제에서 B는 additionaldata를
->
이 예제에서 B는 bvaladditionaldata를