SW/Yocto

yocto hob와 비트베이크 툴에 대해 알아볼까요?

얇은생각 2018. 12. 9. 08:00
반응형

Hob 비트베이크의 사용자 친화적인 인터페이스

Hob 이미지를 변경하고 사용자가 원하는 방법의 이미지를 이용할  있도록 도움을 준다.

또한 hob 이미지를 만든  qemu에서 이미지를 바로 실행시킬  있게 한다.

 


Hob 사용한 이미지 빌드

yang@yang:~$ source poky/oe-init-build-env [build-directory]
 



yang@yang:~$ hob
 


Hob 로컬 환경설정과 이용 가능한 메타데이터 레이어를 읽어 여러 파싱 작업들을 수행한다 작없이 끝난 , hob 이용 가능한 머신의 목록을 보여준다.


 

Hob 사용한 이미지 편집


레세피를 선택하고 해제함으로써 추가 삭제할  있다.

 




비트베이크는 필요한 추가 패키지를 포함하여 선택된 패키지들의 모든 의존성을 분석한다.



Build image버튼을 클릭하고 기다리면 자동으로 이미지가 나오게 된다.

 


Hob 기존에 있는 이미지에서 이미지를 수정하고 일부 패키지를 추가할  있는 좋은 툴이다Hob 작업슬 쉽게   잇는 훌륭한 사용자 친화적 인터페이스이고  작업을 하는데 있어서 이미지를 임시로 수정하는  유용하다.



비트베이크 

욕토 프로젝트와 오픈 임베디드 프로젝트는 비트베이크를 사용하는 가장  알려진 프로젝트이자 가장 활발한 그룹이다비트베이크는 portage로부터 분리되어 독립적인 개발 주기와 메일링 리스트를 가지고 있다비트베이크는 여러 측면에서 gnu make 툴과 비슷하게 이해될  있다.

 


메타데이터

비트베이크가 이용하는 메타데이터는 다음 세종류로 분류된다.


    환경설정

    클래스

    레시피


환경 설정 파일들은 전역 변수들을 정의하는  이를 이용해서 레시피에 정보를 전달하고 레시피가 어떻게 동작할지 결정한다클래스는 전체 시스템에서 사용되고 레시피들이 필요에 따라상속할  있다기본값으로 사용될 수도 있는데  경우에는 시스템 전체의 행동의 정의하고 기본 함수를 제공하기 위해 사용된다클래스와 레시피는 실행될 태스크를 설명하고 비트베이크가 태스크 체인을 만드는  필요한 정보를 제공한다레시피가 하나 이상의 클래스를 상속받을  있게 하여 코드 중복을 줄이고 유지보수를 쉽게 만든다.

 


메타데이터 파싱

비트베이크가 가장 먼저 파싱하는 메타데이터는 .conf 구분되는 환경 설정 파일이다 메타데이터는 전역으로 적용되고 따라서 실행될 모든 레시피와 태스크에 영향을 미친다.

 


의존성

레시피들은 빌드 시에 필요한 패키지를 선언해야 한다비트베이크는 빌드 시점 의존성이 지켜지는지 빌드를 시작하기  체크한다.


    의존성이 없는 레시피들은 병렬로 빌드된다.

    의존성이 있는 레시피들은 의존성을 만족시키는 방향으로 순차적으로 빌드된다.

 


레시피 프로바이더와 프레퍼런스

레시피들 간의 의존성은 비트베이크와 빌드 툴의 핵심이다이는 레시피 안에서 변수로 정의되는데 레시피가 의존하는 것은 depends 레시피가 프로바이드 하는 것은 provides 정의된다.


    Bar_>version>.bb 형태로 레시피 자체가 bar 프로바이드 한다.

    provides 변수에 bar 할당된 레시피가 bar 프로바이드 한다.


Virtual/kernel 프로바이더는 머신에 따라 커널이 달라지기 때문에 일반적으로 머신 정의 파일에서 설정된다같은 시스템에서는 두개의 다른 레시피가 하나의 의존성을 위해 다른 프로바이더를 사용할  없다.



소스코드 다운로드

비트베이크가 지원하는 주요 기능  하나는 소스 코드를 다운로드하는 것이다 기능은 최대한 모듈화되고 유연하게 설계 되었다비트베이크가 소스코드를 다운로드하는 메커니즘은 내부적으로 페처 백앤드라고 부른다사용자의 요구사항과 소스코드를 다운로드를 최적화하기 위한 여러 가지의 페처 백엔드가 존재한다비트베이크는 , supervision, bazaar, osc, http, https, ftp, dvs, mercurial, perforce, ssh 같이 다양한 페처 모듈을 지원한다.

 


원격파일 다운로드

비트베잌는 원격 파일 다운로드를 위해 몇가지 방법을 지원한다. http, https, ftp이다다음 빌드에서 같은 파일을 필요로   이미 파일이 다운로드가 되어 있는 것을 확인하고 재사용   있다 과정은 비트베이크가 다운로드하는 모든 원격 소스 파일에 적용된다.

 


 저장소

가장 널리 이용되는 소스코드 관리 시스템은 깃이다비트베이크는 깃도 지원하며  백앤드는 do_fetch 태스크가 실행될때 src_Uri에서 git://으로 시작되는 url 찾았을  실행된다.

 


다른 저장소

원격 파일과  저장ㅅ오는 비트베이크 페처 백앤드  가장 흔하게 사용되는 방식이다다른 소스코드 관리 방식은 구현 방식은 다르지만  개념은 동일한 방식으로 이루어진다.

 


소스코드 다운로드 최적화

소스코드 다운로드의 안정성을 강화하기 위해 포키는 다음 설정을   잇는 미러 메커니즘을 제공한다.


    1순위로 접근하는 다운로드 서버 제공

    1순위가 실패했을  접근하는 서버 제공



네트워크 접근 제한

정책 : 회사에서 법적 검토없이 외부 소스코드가 전체 제품에 포함되는 것을 금지할  있따

통신비 : 모바일 통신을 사요하고 있을  다운로드할 데이터들의 용량이 크면 통신비가 부담이   있다.

빌드 속도 : 이미 소스코드를 다운로드 받아 놓는 경우 네트워크를 꺼서 빌드 속도를 증가시킬  있다.

네트워크 사용 불가 : 대떄로 네트워클를 이용하지 못하는 상황에 놓일  있다.



비트베이크 태스크

$: bitbake <recipe>

$: bitbake <recipe> -c <task>


특정한 태스크만 실행하고 싶다면

$: bitbake <recipe>


정의된 태스크를 알아보기 위해서는

$: bitbake <recipe> -c listtasks



태스크 확장

태스크의 내용이 요구사항을 만족시키지 못할 때에는 내용을 원하는 것으로 교체하거나 덧붙일  있다_append _prepend 명령어가 태스크를 확장할  사용된다.



루트 파일 시스템 이미지 생성

포키의 가장 일반적인 사용 방식  하나는 루트 파일 시스템 이미지 생성이다루트 파일시스템 이미지는 실제 타깃에서 바로 이용 가능한 형태여야 한다이미지는 하나의 파일 시스템으로 만들어지거나리눅스 커널디바이스 트리부트로더 다른 파일 시스템 처럼 다른 아티팩트를 포함할  있다이미지를 만드는 과정은  가지 단계를 포함하고 일반적인 사용법은 다음과 같다.


1. Rootfs 폴더 생성

2. 필요한 파일 생성

3. 최종 파일시스템을 특정한 요구사항에 따라 감싸기

4. 가능한 상태라면 압축


반응형