SW/Yocto

yocto 사용자 레이어 생성과 레시피 커스터마이즈에 대해 알아볼까요?

얇은생각 2018. 12. 20. 12:30
반응형

새로운 레이어 추가

새로운 레이어를 생성하기 전에 항상 오픈임베디드 메타데이터 인덱스에 이미 이용가능한 비슷한 레이어가 있는지 확인하는 것이 좋다필요한 레이어를 찾을 수없으면 다음 단계로 폴더를 생성한다.

 

$: ./poky/scripts/yocto-layer create newlayer



기본값을 사용하거나 사용자가 지정한 값을 사용할 수도 있다생성된 레이어의 예는 다음 그림과 같다.


사용자 레이어를 작업하기 위해 다른 레이어를 추가해야  필요가 있을  사용하는 중요한 변수는 다음과 같다.


layerversion, layerdepends


의존성이 만족되지 않거나버전 정보가 맞지 않으면 에러가 나타난다.

 


레이어에서 메타데이터 추가

레이어를 사용하는 논리적인 이유는 비트베이크 데이터베이스에 메타데이터를 추가하거나 변경하는 것이다가장 흔하게 추가된 특징은 애플리케이션라이브러리 또는 서비스 서버와 같이 프로젝트 관련된 것을 추가하는 것이다기존의 특징을 바꾸기 위해 새로운 레이어레시피이미지, bbappend 파일들에서 메타데이터 파일의 여러 유형을 포함할  있다스크립트는  개의 예제 파일 뿐만 아니라 새로운 레이어를 만들  사용되었다.

 


이미지 생성

이미지 파일은 정해진 방식에서 목적을 갖고 설정된 패키지들의 집합으로   있다기존의 이미지를 포함하고 필요한 패키지를 추가하고 환경설정을 덮어 씌운 새로운 이미지를 만들  있다또는 처음부터 새로운 이미지를 만들 수도 있다.

 


패키지 레시피 추가

패키지 레시피는 비트베이크가 애플리케이션커널 모듈또는 프로젝트에 의해 제공되는 어느 소프트웨어를 다운로드압축풀기컴파일설치하는 방법을 제시한다포키는 autotools, cmake, qmake 기반으로하는 프로젝트들로써 가장 흔한 개발 툴에 대한 처리를 추상화한 여러 클래스를 가지고 있다.

 


머신 정의 작성

포키에 의해 사용되기 위해 새로운 머신을 만드는 것은 간단한 작업이다여기에는 본직적으로 작업을 위한 머신에 필요한 정보를 제공하면 된다부트로더커널하드웨어 지원 드라이버들은 bsp 레이어에서 보드에 통합하기 위해 시작 전에 점검한다.

 


커스텀 배포 사용

디스트리뷰션의 생성은 단순함과 복잡함이 섞여 있다배포 파일을 만드는 절차는 쉽지만 배포 환경설정은 포키가 사용되는 방식에  영향을 주고사용된 옵션에 따라 이전에 빌드된 바이너리에 대한 바이너리 호환성을 갖지 않는  영향을  수도 있다.

 


머신 기능과 배포 기능 비교

머신이 기능을 지원할   최종 시스템에 의해 지원되는 것을 시사하지는 않는다사용되는 디스트리 뷰션에서 해당 기능을 위한 근본적인 기반을 제공해야 하기 떄문이다머신이 와이파이를 지원하지만 디스트리뷰션이 지원하지 않으면 운영체제에 의해 사용되는 애플리케이션은 와이파이 지원 기능이 비활성화된 상태로 빌드될 것이다.

 


변수의 범위

비트베이크 메타데이터는 수천가지 변수가 있지만  변수의 영역은 그것이 정의된 곳에 영향을 가지며 이용 가능하다.

기본적으로 변수 두가지 종류가 있다환경 설정 파일에 정의된 변수들은 모든 레시피에 전역이다레시피 파일 내에 정의된 변수들은 단지  작업이 진행되는 동안 특정 레시피에서만 사용할  있는 지역 변수다.

 

 

일반적인 유스케이스

이미 존재하는 레시피를 수정해야  경우, .bbappend 파일을 프로젝트 레이어에 만들어야 한다파일의 이름은 원본 레시피와 같고 append 확장자에 추가된다.bbappend 파일은 원본 레시피의 뒤에 붙는 텍스트라고 생각하면된다프로젝트 레이어에 패치를 추가할  이를 이용해서 코드 중복을 피할  있는 강력한 방법이다.



패치 적용

이미 존재하는 패키지에 패치를 적용하고 싶은 경우에는 비트베이크의 검색 알고리즘에 새로운 폴더를 추가하는 filesextrapaths 변수를 다음과 같이 이용해야 한다.

 


파일 탐색 경로

SRC_URI 일반 파일이나 패치가 포함되면비트베이크는  파일을 filespath filesextrapath 변수에 들어 있는 값의 경로에서 찾는다.

 


레시피의 피처 변경

피처별 커스터마이제이션을 쉽게 변경하는 메커니즘  하나를 packageconfig 이용하는 것이다이를 통해 레시피의 피처를 활성화하거나 비활성화할  있다.

 

 

Busybox 커스터마이제이션

Busybox 일반적으로 리눅스에서 사용되는 유틸리티들의 경량화 버전을 제공하기 떄문에 대부분의 리눅스 기반 임베디드 프로젝트에서 사용되는 가장 중요한 모듈이다.

 


리눅스 욕토 프레임워크 커스터마이징

리눅스 커널은 거의 무한대의 환경설정 옵션을 제공하는 매우 복잡한 소프트웨어이다욕토프로젝트는 하나의 커널에서 여러 머신을 관리하기 위해 linux-yocto 프레임워크를 제공한다 프레임워크를 활용하여 머신을 위한 기능을 활성화/비활성화할  있다리눅스 기반의 임베디드 시스템에서 일반적인 요구 사항은 커널 환경 설정을 바꾸는 것이다. sdk 비트베이크를 이용하여   있다리눅스 커널 개발을 위해서 sdk 사용하는 방식이 편리한 개발 환경을 제공하기에 선호된다비트베이크 방식은 급한 수정을 위해서만 사용되어야 한다.


반응형