
처음 수강하시는 분들에게 저에 대한 소개 그리고 어떤 분들을 대상으로 강의가 만들어졌는지 설명한다.
그리고 욕토의 역사에 대해 간단하게 다루며 마지막으로 수강생들이 준비해야 할 것들에 대해 설명한다.
욕토가 추상화가 잘 되었다는 설명을 시작으로, 욕토가 커스텀 리눅스를 만들기 위해 만들어졌다는 것을 이해할 수 있다. 마지막으로 욕토 실습을 위한 환경 구성을 알아본다.
욕토에서 핵심이 되는 빌드 도구인 bitbake에 대해 알아본다. 그리고 실제로 bitbake를 다운로드 받아본다.
마지막으로 bitbake가 해석하는 대상이 되는 메타데이터와 메타데이터 파일들에 대해 알아본다.
여기서는 bitbake가 빌드를 위해 이런 파일들을 이런 식으로 사용한다는 것을 알려주기 위해 간단하게 bitbake를 실행해 본다.
4장에서 실습한 bitbake의 실제 실행 과정을 하나하나 분석해 본다. 그 과정에서 메타데이터가 어떤 역할을 하는지에 대해 알아본다.
앞장과 같이 예제에서 bitbake의 실행 절차를 다시 한 번 상세히 살펴본다. 실제 bitbake가 어떻게 실행되는지 이해하는 것이 가장 중요하기 때문이다. 그리고 마지막으로 실행 가능한 함수인 '테스크'에 대해서도 알아본다.
욕토 프로젝트의 가장 중추가 되는 Poky에 대해 알아본다. 그리고 Poky에서 가장 중요한 부분인 오픈 임베디드에 대해 이해해 본다. 참고로 Poky라는 용어는 오픈 임베디드 그리고 yocto와 동일하게 사용된다는 것을 알아두자.
poky 소스를 다운로드 하고 빌드를 실행한다. 이 과정에서 빌드 환경 초기화 스크립트 파일인 'oe-init-build-env'에 대해서도 이해해 본다.
QEMU는 가상화 소프트웨어 가운데 하나이다. QEMU 에뮬레이터는 실제 만들고자 하는 머신에 이미지를 올리기 전, 작업에 대한 테스트를 쉽고 빠르게 할 수 있는 방법을 제공해 준다. 우리는 이 장에서 QEMU를 이용해 빌드 결과를 실행해 본다.
그리고 bitbake 환경 변수 옵션을 통해 변숫 값을 확인하는 방법에 대해 알아본다.
마지막으로 리눅스 호스트 소프트웨어 빌드 과정과 오픈임베디드 빌드 시스템의 빌드 과정 비교해본다.
bitbake를 통해 빌드를 시작하면 루트 파일 시스템 이미지를 생성하기까지 매우 오랜 시간이 걸린다는 것을 경험하게 된다. 때문에 이 장에서는 필요한 소스를 매번 외부 저장소에서 가져오는 것이 아니라, 로컬 소스 저장소를 구축해 외부 저장소로부터의 다운로드 시간을 단축하는 방법에 대해 학습한다.
또한 호스트 배포판의 라이브러리로부터 빌드 시스템을 격리하는 데 사용되는 uninative에 대한 개념에 대해 이해하여 욕토 프로젝트가 어떻게 서로 다른 환경에서도 동일한 이미지 혹은 바이너리를 생성해 내는지 이해하게 된다.
bitbake는 이미 빌드 과정에서 실행이 완료된 태스크를 다시 수행하지 않는 방법을 가지고 있다. 그리고 태스크 수행 후에 만들어진 artifact(결과물)들을 따로 저장하여 이를 보관한다. 이를 공유 상태 캐시(Shared State Cache)라고 하며 이 장에서는 개념과 과정을 이해해 본다.
이 장에서는 앞서 11장에서 다룬 자체 공유 상태 캐시 저장소를 실제로 만들어보고, 실제 빌드 시간이 절감되는 것인지 확인해 본다. 그리고 이를 통해 재 빌드 시 혹은 팀으로 하는 프로젝트에서 빌드 시간을 절감할 수 있는 방안에 대해 학습한다.
이 장에서는 새로운 레이어를 만들어 보고 레이어 내에 간단한 레시피 파일을 작성해 본다. 실제로 여러분들이 가장 필요로 하는 부분이고 지금부터 시작되는 실습들을 여러분들이 잘 습득한다면 협업에서 큰 문제 없이 레이어를 만들고 레시피를 작성할 수 있다.
bitbake에도 문법이 있다. 그러나 다른 언어와 마찬가지로 복잡하거나 어렵지 않다. 여기서는 실제 실습을 하면서 꼭 필요한 몇 가지 기본적인 bitbake 문법을 다루게 된다.
이 장에서는 bitbake로 간단한 c 파일을 빌드하고, 빌드 결과로 나온 이미지를루트 파일 시스템에 넣어 수행하는 방법을 배운다. 실제로 여러분들에게 가장 필요한 부분이 될 것이다.
리눅스 소프트웨어 스택은 수많은 공개 소프트웨어 패키지로 구성돼 있다. 그리고 이 소프트웨어 패키지들은 다양한 오픈 소스 라이선스에 의거해 배포된다.
GPL 라이선스 같은 경우 소프트웨어 패키지를 빌드하는 데 사용한 소스 코드를 공개해야 한다. 때문에 상업용 제품을 만드는 회사에서는 이것이 큰 문제가 될 수 있다.
여기서는 욕토 프로젝트의 라이선스를 다루는 방법에 대해 이해해본다.
레시피 확장 파일은 특정 레이어의 레시피 내용을 현재 레이어나 다른 레이어에 추가하거나 수정하려고 할 때 원래의 레시피 파일을 건드리지 않고 변경하는 방법이다. 실제로 협업에서는 이 방법을 사용하여 칩 벤더가 배포한 욕토 환경을 변경하거나 추가하게 된다. 때문에 자신의 레이어를 만들고 수정 혹은 추가하려는 사람들에게 이 장의 지식은 매우 유용할 것이다.
앞서 17장에서 배운 레시피 확장 파일의 개념을 실제 실습을 통해 확인해 본다. 이를 통해 레시피 확장 파일이 어떤 역할을 하는지 이해해 본다.
Yocto는 임베디드 시스템용 리눅스 배포판을 만들기 위한 오픈 소스 프레임워크입니다. 커스터마이징 가능한 레시피와 레이어를 사용하여 특정 장치에 최적화된 시스템을 빌드 할 수 있도록 도와줍니다. 현재 Yocto는 임베디드 시스템 개발자들 사이에서 많이 사용되며, 광범위한 하드웨어 환경에 대응할 수 있는 강력한 도구와 자원을 제공합니다.
이 강의는 Yocto 입문자들이 Yocto의 구조와 개념을 쉽게 이해할 수 있도록 구성하였습니다. 또한 Yocto를 다루고는 있었지만 막연히 사용할 줄만 알고, 전체적인 구조와 원리를 모르는 실무자들을 위해서도 추천드립니다.