Top

BeagleBone Black을 사용한 Yocto 프로젝트

  • 원서명Using Yocto Project with BeagleBone Black (ISBN 9781785289736)
  • 지은이이르판 사디크(H M Irfan Sadiq)
  • 옮긴이배창혁
  • ISBN : 9788960777989
  • 16,000원
  • 2015년 12월 18일 펴냄
  • 페이퍼백 | 172쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 임베디드 시스템

책 소개

이 책에서 사용된 예제 파일은 다음 깃허브 페이지에서 이용 가능합니다.
https://github.com/YoctoForBeaglebone/

요약

이 책은 욕토(Yocto) 프로젝트를 사용해 비글본 블랙(BeagleBone Black)에서 임베디드 리눅스를 개발하는 방법에 대해 소개한다. 욕토 프로젝트의 기본 개념을 간단하게 다룬 후, 예제를 통해 여러 가지 프로젝트를 비글본 블랙 보드에서 개발하는 방법을 설명한다. 이 책을 읽고 나면, 자신만의 개발 프로젝트를 비글본 보드에 욕토 프로젝트를 사용해 개발할 수 있는 기본 역량을 쌓을 수 있다.

추천의 글

나의 리눅스 테스트 경험을 살펴보면서 내가 매우 도전적인 임베디드 리눅스로 작업을 하고 있다는 사실을 발견했다. 다른 사용자와 커널 설정이 필요한 여러 기능을 가진 다양한 아키텍처, 크로스 컴파일, 디바이스를 사용한 예제는 드물다. 욕토 프로젝트(Yocto Project)는 임베디드 개발자들에게 이러한 도전과 더 많은 것을 극복하게 한다. 메이크(make)를 사용하거나 직접 설정하는 방법 대신 비트베이크(bitbake)를 사용하면, 모든 소스를 다운로드부터 설치까지 사용자의 추상 레이어를 생성하고 예제 파일을 사용해 필요한 단계를 진행할 수 있다.

요즘 임베디드 리눅스는 셋탑박스, IPTV, 기내 인포테인먼트 시스템 등 모든 곳에서 사용한다. 오픈소스의 힘 덕분에 벤더를 도와주는 제니비(GENIVI)와 캐리어 그레이드 리눅스(Carrier Grade Linux)는 자신의 목적을 달성하기 위해 리눅스 사용에 대한 표준을 정의한다.

이 책의 저자 이르판 사디크(H M Irfan Sadiq)는 오픈임베디드(OpenEmbedded)와 욕토 프로젝트로 업무를 수행하고 있다. 사디크는 스크립트와 테스트 자동화에 흥미가 많으며, 테스트 자동화 프로젝트에서 중요한 역할을 하고 있다. 나의 지도하에 사디크는 욕토 프로젝트를 기반으로 테스트 관련 문제를 해결하기 위해 다양한 솔루션을 개발하고 있다.

욕토 프로젝트는 꽤 복잡한 개념이고 새로운 사용자에게는 벽이 있는 것처럼 느껴질 수 있다. 욕토 프로젝트에서 사용하는 대부분의 것은 고급 레벨 개념이다. 하지만 이 책은 기본 개념부터 시작해 천천히 고급 개념을 넘어감으로써 사용자에게 익숙하도록 쓰여있다.

이 책은 욕토 프로젝트를 종합적으로 소개한다. 저렴한 가격으로 구매할 수 있는 욕토 프로젝트 레퍼런스 보드인 비글본을 예제로 해 욕토 프로젝트를 설정하고, 기본 이미지를 빌드하는 것부터 커스텀 이미지를 만드는 방법을 다루는 고급 주제까지 하나씩 설명한다. 또한 기존 애플리케이션을 이용해서 파일 시스템에 자신의 애플리케이션을 추가하는 방법도 설명한다. 뒷부분에서는 리눅스와 욕토 프로젝트 전체를 사용해 비싸지 않은 비글본으로 집안 감시 시스템, 콘솔 게임, 와이파이 핫스팟과 같은 것을 만드는 방법을 설명한다.

여러분이 리눅스를 사용한 임베디드 솔루션을 개발하는 데 관심이 있으면, 이 책은 상당히 유용한 정보를 제공할 것이다. 이미 욕토 프로젝트를 가지고 일을 하고 있는 개발자라면, 여러 가지 개념을 배우고, 욕토 프로젝트를 전체적으로 이해하는 데 도움이 될 것이다. 이 책을 즐겁게 읽기를 바란다!

-쿨라 아즈미(Khula Azmi)/멘토 그래픽스 QA 엔지니어 매니저

이 책에서 다루는 내용

■ 비트베이크 툴을 이용한 패키지나 이미지의 성공적인 개발
■ 유행하는 콘솔 기반 게임 예제 생성
■ 욕토 프로젝트로 생성한 이미지를 사용한 비글본 부팅
■ 커스텀 레이어를 사용한 루트 파일 시스템 커스터마이즈
■ 비글본 USB 포트에 웹캠을 붙여 집안 감시 솔루션 개발
■ 비글본에 USB 동글을 붙여 무선 액세스 포인트 개발
■ helloworld 예제의 다른 버전 빌드

이 책의 대상 독자

이 책은 임베디드 시스템 관련 지식과 경험이 있는 시스템 개발자들을 대상으로 한다. 욕토 프로젝트 빌드 시스템 지식은 없지만 비글본 블랙에 대한 지식은 있다고 가정한다.

이 책의 구성

1장, ‘욕토 프로젝트와 비글본 블랙 시작’에서는 사용자가 간단한 명령어로 욕토 프로젝트를 사용해 빌드된 이미지를 가지고 비글본을 부팅할 수 있게 한다.

2장, ‘비트베이크의 모든 것’에서는 비트베이크 툴의 기본적인 내용을 소개한다.

3장, ‘helloworld 예제 생성’에서는 포키(Poky)에서 helloworld 예제를 사용하는 것에 대해 설명한다. 이 장에서 예제의 기본 요소를 소개하기 위해 helloworld 예제를 사용한다.

4장, ‘비글본 보드에 멀티미디어 추가’에서는 욕토 프로젝트 예제에서 가장 흔히 접하는 요소와 사용법에 대해 자세히 설명한다.

5장, ‘레이어 생성과 분석’에서는 기존 레이어에서 사용할 수 있는 예제 파일의 기능을 재정의하는 방법에 대해 설명한다. 또한 각 기술의 장단점에 따라 서로 다른 시나리오에 적용할 수 있는 다양한 기술들에 대해 알아본다.

6장, ‘콘솔 게임’에서는 팩맨 같은 인기 있는 콘솔 게임의 예제를 만들기 위한 내용을 다룬다.

7장, ‘집안 감시 시스템을 위한 비글본 튜닝’에서는 비글본과 욕토 프로젝트를 사용해 고급 프로젝트를 만드는 방법에 대해 설명한다. 또한 비글본의 USB 포트에 웹캠을 달아서 집안 감시 솔루션을 만들어 본다.

8장, ‘무선 액세스 포인트로 비글본 사용’에서는 비글본과 욕토 프로젝트를 사용해 한층 진보된 프로젝트를 만드는 방법에 대해 설명한다. 여기서 비글본 보드는 USB 동글을 사용한 무선 액세스 포인트가 된다.

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

저자/역자 소개

지은이의 말

이 책은 욕토 프로젝트를 새로 접하는 개발자를 교육하기 위한 목적으로 쓰여졌고, 하드웨어는 비글본을 사용한다.
이 책은 독자의 참여를 이끌어 내는 것을 최우선으로 했다. 첫 장을 끝까지 따라해 보면, 독자들은 욕토 프로젝트를 통해 빌드한 것이 비글본에서 돌아가는 것을 볼 수 있고, 이것으로 호스트에서 더 많은 실험을 하도록 준비할 수 있다. 초기에는 다양한 시나리오를 통해 배우도록, 변경할 때 중복을 피하고 시간을 절약하여 기능이 빨리 돌아가도록 기존의 예제와 욕토 프로젝트 스크립트로 만들어진 프로젝트를 사용한다. 사용할 수는 있지만 이해하는 데 도움이 안 되고 오해의 소지가 있으므로 그래픽 툴은 사용하지 않는다. 또한, 그래픽 툴 사용은 가끔 사용자 수정사항을 재정의해 혼란을 야기시킬 수도 있다.
이 책을 끝까지 읽으면, 욕토 프로젝트와 비글본 기반의 전문적인 프로젝트를 진행하기 위해 필요한 기술과 경험을 얻을 수 있다.

지은이 소개

이르판 사디크(H M Irfan Sadiq)

대학원 시절부터 리눅스의 열광적인 팬이었다. 임베디드 리눅스 시스템 개발 엔지니어로 일을 시작했고, H.264 디코더 개발과 VLIW 아키텍처를 최적화하는 일을 하고 있다. 또한 상용과 오픈소스의 지적재산권을 가진 다양한 멀티미디어 프레임워크 업무를 한 경험이 있다. 웹 개발의 전체 영역을 다루는 신생 기업에서도 일했다. 2010년 테크니컬 리더로 멘토 그래픽스에서 근무하기 시작하면서, 오픈 임베디드와 욕토 프로젝트로 일을 하기 시작했다. 꽤 오랫동안(4년 넘게) 욕토 프로젝트와 오픈임베디드의 파생 기술을 이용해 일을 했다. ARM, PPC, x86 아키텍처 기반의 다양한 하드웨어에서 일을 한 경험도 있으며, 차세대 BSP의 다양한 특징을 가지는 업무의 QA 분야에 도전하고 있다. 도전 과제 중 하나는 여러 제품과 플랫폼에 조합해 적용하는 것과 같이 하나의 공간에서 QA 패키지를 유지하는 것이다. 게이트 키퍼뿐만 아니라 메인테이너로 이것을 욕토 프로젝트 기반 레이어에 만들기 위해 고민하고 있다.

옮긴이의 말

소비자 가전(CE, Consumer Electronic), 차량용 인포테인먼트 시스템(IVI, In-Vehicle Infotainment), 사물인터넷(IoT, Internet of Things) 등 점차 많은 분야에서 임베디드 리눅스가 사용되고 있다. 욕토 프로젝트는 커스텀 임베디드 리눅스를 만들기 위한 다양한 템플릿, 툴, 방법을 제공하는 오픈소스 협업 프로젝트다. 기존에는 커스텀 임베디드 리눅스를 만들기 위해 맨땅에서 시작해 많은 비용과 시간이 들었지만, 욕토 프로젝트를 사용하면 쉽고 빠르게 저렴한 비용으로 만들어 낼 수 있다.
ENEA, 몬타비스타, 윈드리버 등 상용 임베디드 리눅스를 포함해 IVI 분야에서의 GENIVI, AGL 그리고 IoT 분야까지 임베디드 리눅스를 사용하는 많은 분야에서 욕토 프로젝트를 사용하고 있다. 국내에서는 LG webOS, 차량 전장 업체의 플랫폼, 기타 가전 플랫폼 등에서 사용하고 있으며, 타이젠(TIZEN)도 점차 욕토 프로젝트를 채택하는 범위를 확대해 나가려고 하고 있다.
또한 인텔, 프리스케일, 텍사스 인스트루먼트 등과 같은 업체들도 욕토 기반으로 BSP를 릴리스하고 있을 뿐 아니라, 라즈베리 파이, 비글본 블랙, 미누보드 등과 같은 거의 모든 개발보드에서 욕토 프로젝트 기반으로 임베디드 리눅스를 빌드할 수 있도록 환경을 제공하고 있다.
이렇듯 점차 다양한 분야에서 임베디드 리눅스를 개발하기 위해 욕토 프로젝트를 사용하고, 지원하는 범위가 넓어지고 있다. 앞으로 발전 가능성이 무궁무진한 분야이기 때문에 알아두면 정말 유용하다.
이 책은 욕토 프로젝트를 사용해 비글본 블랙에서 임베디드 리눅스를 개발하는 방법에 대해 소개한다. 욕토 프로젝트의 기본 개념을 간단하게 다룬 후, 예제를 통해 여러 가지 프로젝트를 비글본 블랙 보드에서 개발하는 방법을 설명한다.
이 책을 읽으면, 자신만의 개발 프로젝트를 비글본 보드에 욕토 프로젝트를 사용하여 개발할 수 있는 기본 역량을 쌓을 수 있다. 하지만 욕토 프로젝트에 대한 기본적인 개념과 문법에 대해 익히고 싶다면, 『Yocto 프로젝트를 활용한 임베디드 리눅스 개발』(에이콘출판사, 2014) 책을 보는 것을 추천한다.

옮긴이 소개

배창혁

현재 LG전자 소프트웨어 플랫폼 연구소에서 빌드/시스템 엔지니어로 근무하면서 SCM 관련 업무를 하고 있다. 오픈임베디드 meta-gir의 메인테이너, 오픈임베디드 TSC(Technical Steering Committee) 멤버로 활동하고 있으며, LG전자를 대표해 욕토 프로젝트 이사회 멤버로 참여하고 있다. 에이콘출판사에서 출간한 『Yocto 프로젝트를 활용한 임베디드 리눅스 개발』(2014)을 번역했다.

목차

목차
  • 1 욕토 프로젝트와 비글본 블랙 시작
    • 호스트 환경 설정
      • 필수
      • 그래픽
      • 문서
      • ADT 설치
    • 욕토 프로젝트 입수
    • 비글본 빌드
      • local.conf
      • bblayers.conf
      • site.conf
      • auto.conf
      • 빌드 시작
    • 파이션 생성 및 SD 카드 포맷
    • SD 카드로 이미지 복사
    • 하드웨어 설정
    • 시리얼 설정
    • 비글본 부팅
    • 추가적인 환경 설정 파일
      • machine.conf
      • bitbake.conf
        • 표준 타깃 파일 시스템 경로
        • 아키텍트 의존적인 빌드 변수
        • 패키지 기본 변수
        • 빌드 시스템에서 일반적인 작업/결과 디렉토리
        • 특정 이미지 생성과 루트 파일 시스템 이미지 정보
        • 빌드 플래그와 옵션
        • 다운로드 위치와 유틸리티
        • 설정 파일 추가
    • 정리

  • 2 비트베이크의 모든 것
    • 비트베이크의 간략한 역사
    • 레거시 툴과 비트베이크
      • 크로스 컴파일
      • 패키지 간 의존성 해결
      • 타깃 배포판의 다양성
      • 빌드 시스템 결합성
      • 다양한 빌드 시스템 배포판 지원
      • 다양한 아키텍처 지원
      • 병렬 빌드 지원
      • 사용, 확장, 협업의 편의성
    • 비트베이크 실행
      • 메타데이터 파싱
      • 태스크 목록 준비
      • 태스크 실행
    • 비트베이크 옵션
      • 특정 예제 빌드(-b)
      • 에러가 나는 경우에도 계속 빌드(-k, --continue)
      • 강제로 빌드하는 태스크(-f, --force)
      • 다른 프로바이더 사용(-a, --tryaltconfigs)
      • 특정 태스크 실행(-c)
      • 스탬프 무효화(-C, --clear-stamp)
      • 자세한 로그(-v, --verbose)
      • 디버그 레벨(-D, --debug)
      • 모의 실습(-n, --dry-run)
      • 파싱만 진행(-p, --parse-only)
      • 버전 보여주기(-s, --show-versions)
      • 환경변수 얻기(-e, --environment)
      • 의존성 그래프 생성(-g, --graphviz)
      • 로그 레벨(-l DEBUGDOMAINS,--log-domains=DEBUGDOMAINS)
      • 프로파일(-P, --profile)
      • UI 설정(-u UI, --ui=UI)
      • 셰어드 스테이트 미사용(--no-setscene)
    • 정리

  • 3 helloworld 예제 생성
    • helloworld 생성
    • helloworld 예제 내용
      • 예제 네이밍 규칙과 관련 변수
    • 예제 빌드
    • 빌드 디렉토리
    • 태스크
      • build
      • fetch
      • unpack
      • patch
      • configure
      • compile
      • install
      • package
      • devshell
      • clean
      • cleansstate
      • cleanall
      • 기본 태스크 재정의
    • helloworld 배포
      • 수동 패키지 설치
      • 패키지에 이미지 의존성 생성
    • 정리

  • 4 비글본 보드에 멀티미디어 추가
    • gaku 소개
    • gaku 예제
      • 패키지 제어 변수
        • 빌드 의존성(DEPENDS)
        • 런타임 의존성(RDEPENDS)
        • 런타임 의존성 추천(RRCOMMENDS)
        • RCONFLCTS
        • RREPLACE
        • PROVIDES
        • RPROVIDES
      • 예제에서 소스 제어
        • SRCREV
        • PV 계산
        • SRC_URI 세부 내용
        • S 디렉토리
        • 클래스 상속
    • gstreamer 예제의 간략한 분석
      • 변수 할당 유형
      • EXTRA_OECONF
      • FILES_ 변수
      • 변수 플래그
      • ALLOW_EMPTY
      • FILESPATH
      • 조건적 재정의 메커니즘
      • 같은 코드 재사용과 공유
    • 실제 동작
    • 정리

  • 5 레이어 생성과 분석
    • 스크립트를 사용해 레이어 생성
    • 레이어 내용
      • conf 디렉토리
      • recipes-* 디렉토리
      • 클래스
      • COPYING.MIT
      • README
    • 레이어 기반의 조건적 선택
    • 추가 파일들
    • 패키지 그룹
    • 정리

  • 6 콘솔 게임
    • 하드웨어 요구사항
    • 팩맨 콘솔 게임
    • 예제 개발
      • 기본 요소
      • 소스 제어
      • 작업 디렉토리와 버전
      • S 디렉토리
      • 컴파일 태스크 디버깅
      • install 태스크
      • 패키지 내용 추가
    • 루트 파일 시스템에 패키지 추가
      • 패키지 그룹
      • 이미지 bbappend
      • 실행
    • 정리

  • 7 집안 감시 시스템을 위한 비글본 튜닝
    • 문제점 진술
    • 요구사항
    • 기존 솔루션/문헌 조사
      • 전문적인 캡처 하드웨어 요구사항
      • 전문적인 소프트웨어 애플리케이션 요구사항
      • 데비안/앙스트롬 기반
    • 선택된 솔루션
      • 호스트/서버 측(비글본)
      • 클라이언트 측면
    • 재미있게 시작하자
      • base 플러그인
      • good 플러그인
      • bad 플러그인
      • ugly 플러그인
      • gstreamer과 플러그인 활성화
      • Video4Linux2 사용
        • 예제 수정
        • append 사용
        • local.conf 사용
      • gstreamer 파이프라인
    • 클라이언트 측면
      • VLC
      • gstreamer
    • 실행을 위한 준비와 문제 발생
      • 카메라 발견 문제
      • UVC 드라이버 DMA 문제
      • meta-ti 레이어로 빌드
        • 레이어 다운로드
        • 레이어 우선순위 설정
        • 레이어 활성화
    • 추가적인 기능 강화
    • 정리

  • 8 무선 액세스 포인트로 비글본 사용
    • 문제점 진술/유스 케이스
    • 요구사항
    • 문헌 조사
    • 전략
    • 커널 지원 활성화
      • 네트워크 지원 - 무선
      • Device Drivers > Network device support > Wireless LAN > ATheros Wireless Cards
      • 커널 설정을 하는 좋은 접근 방법
      • 펌웨어 복사
      • 이전 커널 버전 사용
      • rfkill 문제
    • 필요한 패키지
    • upstart 스크립트 수정
    • hostpot-yb 예제
      • 액세스 포인트 실행 스크립트
      • systemd 서비스 유닛 파일
      • 드라이버 모듈의 설정 파일
      • hostapd 설정 파일
      • 게이트웨이 설정 파일
      • udhcp 설정 파일
      • udhcp 빈 lease 파일
      • hotspot-yb_0.1.bb 예제 파일
    • hotspot-yb 활성화
    • 패키지 그룹 관리
    • 알려진 문제점/기능 강화
    • 정리

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

2016. 5. 17 수정사항

[p.31: 9행(필수 아래의 명령어)]
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo multilib build-essential chrpath
->
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath

[p. 70: 아래에서 3행]
이를 위한 예제 예제를 생성하기 위해
->
이를 위한 예제를 생성하기 위해

2016. 11. 8 수정사항

[p.77: 아래에서 7행]
분리되가
->
분리되기

[p.80: 아래에서 6행]
예제 예제에
->
예제에

[p.81: 2행]
예제 예제에서
->
예제에서

2016. 11. 14 수정사항

[p.87: 3행]
예제 예제에서
->
예제에서