yocto - layer

markyang92·2021년 7월 2일
0

yocto

목록 보기
5/53
post-thumbnail

Layer

  • meta-<LAYER NAME>형식 (strict 아님)
  • layer를 만드는 이유
    • 컴포넌트들을 모아 체계적 관리
    • 지원하는 ${MACHINE}추가 -> ${BUILDDIR}/conf/local.confMACHINE 추가 반영
    • 지원하는 ${DISTRO} 추가 -> ${BUILDDIR}/conf/local.confDISTRO 추가 반영

  • Layer의 Priority
    • bitbake가 레이어 우선 순위 결정
      • 다수의 레이어에서 같은 이름의 레시피 -> 어떤 레이어가 우선권 얻는지 결정
      • High value = High priority

Layer Hierarchy

  1. layer의 구성 디렉토리
    3.1. classes (선택): 클래스파일(bbclass)을 포함
    3.2. conf (필수): 설정파일(.conf) 포함 및 제공

  1. BSP 레이어 디렉토리 구조

  1. 배포판 레이어 디렉토리 구조

layer/conf/layer.conf

  • 레이어 관리
  • BBFILE_COLLECTIONS: layer 이름
  • BBFILE_PRIORITY_[layer]: layer 우선 순위
  • 아래는 다른 레이어들과 compatability 문제를 이르킬 수 있는 상당한 변화 야기 가능
    • LAYERVERSION_[layer]
    • LAYERDEPENDES_[layer] = "core"
    • LAYERSERIES_COMPAT_[layer] = "dunfell"

layer priority

  • 각 레이어는 Priority를 가지는 데, 이 Priorityrecipe file다른 레이어에서 같은 이름을 가진 경우, 어떤 레이어의 레시피가 우선권을 가질 것인지에 관한 권한을 부여한다.
  • bbappend레이어originlayer보다 높은 priority를 가져야, bbappend 적용된다.
    .conf, .bbclass 파일에는 영향을 끼치지 않는다.
  • High value = High priority

Layer 추가/생성

Download해 추가


BSP Layer for TI 적용

  1. TI용 BSP Layer를 다운로드한다.

1-1. OpenEmbedded에서 Machine에서 ti 검색 후, Machine name이 지원되면 layer 링크 클릭

Layer이름은 mata-ti 구만~


1.2. 다운로드

  • git repo로 지원한다.

1.3. poky 디렉토리에 clone 한다.

(poky) $ git clone git://git.yoctoproject.org/meta-ti
  • 클론 받음

  1. Downloaded Layer브랜치를 현재 poky와 같게 맞춘다.
(poky) $ cd ./meta-ti
(poky/meta-ti) $ git checkout <YOUR_POKY_BRANCH>
  • poky 버전과 맞춘다.

  1. README를 읽어보자.
  • meta, meta-arm 레이어 디펜던시가 있다.

3-1. meta레이어는 이미 있으니 meta-arm을 설치하자

  • 당연히 pokysubdirectory로 설치해야한다....

3-2. meta-arm 레이어도 브랜치를 poky와 맞춘다.


  1. 자 다시 원점으로 돌아와서 meta-ti 레이어를 왜 받았느냐???

    • ti에서 지원하는 MACHINE(타겟 머신)용 이미지를 만들고 싶으니까!
    • 그럼 meta-ti에서 지원하는 MACHINE은 어디서 볼 수 있는데?
      • <LAYER>/conf/machine에서 내가 사용하는 build에 사용하고픈 타겟 머신용 파일들이 있다.
      • <LAYER>/conf/machine/<MACHINE_NAME>.conf로 존재한다.
      • 내가 사용하는 build에서 이 레이어를 BUILDDIR/conf/bblayers.conf에 추가 한 후, BUILDDIR/conf/local.confMACHINE='MACHINE NAME'을 쓰면 build에서 해당 타겟 머신용 이미지를 생성할 수 있다.

  1. 실제 이 레이어를 사용해 이미지를 생성하는 것은 링크 참고

meta-ti,meta-yocto-bsp 차이

  1. poky에서 기본으로 지원하는 meta-yocto-bsp

    • 지원하는 각 아키텍처의 "reference BSP"를 제공
      • ARM(Beaglebone Black), MIPS, PPC, x86
    • 커널/부트로더 mainline을 기반으로 한다.
    • 어떠한 advanced features나 업스트림 메인라인 커널에 없는 것은 지원하지 않는다.
      • no capes, no power management, no HW acceleration, no 3D, no PRU ....
    • 이 기본 제공 meta-yocto-bsp의 목적은 Yocto Project와 OpenEmbedded Framework를 평가하기 위해 Poky 내, 선택한 HW Platform에 대한 기본적인 OOBE(Out-of-Box Experience)를 갖는 것

  2. 다운로드 받은 official meta-ti

    • official TI BSP는 최신 WIP "staging" 커널과 부트로더 지원
    • TI Platform에 대한 대부분의 최신 기능과 peripheral을 지원

Layer 생성

manual

bitbake를 이용한 automate를 추천하지만..굳이 manual하게 생성하고 싶다면...

  1. 레이어 디렉토리 생성
(poky) $ mkdir meta-mylayer

  1. 레이어 설정파일인 conf/layer.conf 제작
(meta-mylayer) $ mkdir conf
(meta-mylayer) $ cd conf
(meta-mylayer/conf) $ vim layer.conf

====== poky/meta-mylayer/conf/layer.conf ============
  1 # We have a conf and classes directory, add to BBPATH
  2 BBPATH .= ":${LAYERDIR}"
  3 
  4 # We have recipes-* directories, add to BBFILES
  5 BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"
  6 
  7 BBFILE_COLLECTIONS += "mylayer" # <- 레이어 이름
  8 BBFILE_PATTERN_mylayer  = "^${LAYERDIR}/"
              #     ̄ ̄ ̄ ̄ ̄ <- 레이어 이름으로 변수 끝에 append
  9 BBFILE_PRIORITY_mylayer = "1" <- 레이어 우선 순위
              #      ̄ ̄ ̄ ̄ ̄ <- 레이어 이름으로 변수 끝에 append
 10 
 11 # This should only be incremented on significant changes that will
 12 # cause compatibility issues with other layers
 13 LAYERVERSION_mylayer = "1"
              #   ̄ ̄ ̄ ̄ ̄ <- 레이어 이름으로 변수 끝에 append
 14 
 15 LAYERDEPENDS_mylayer = "core"
              #   ̄ ̄ ̄ ̄ ̄ <- 레이어 이름으로 변수 끝에 append

 16 
 17 LAYERSERIES_COMPAT_mylayer = "dunfell" <- poky verison codename
              #         ̄ ̄ ̄ ̄ ̄ <- 레이어 이름으로 변수 끝에 append

  1. 내가 사용 중인 build에서 ${BUILDDIR}/conf/bblayers.conf방금 만든 레이어 추가

3-1. bitbake 명령어로도 추가할 수 있다.

$ bitbake-layers add-layer <created Layer Path>

e.g.,
$ bitbake-layers add-layer ~/poky/meta-mylayer

automate

  • 위에 처럼 힘들게 할 필요없이, bitbake가 레이어를 자동 생성해준다.
  • $ bitbake-layers create-layer <Layer_Path>
    e.g., $ bitbake-layers create-layer ~/poky/meta-mylayer

위와 같이 생성되었다. 그럼 하나씩 뭔지 보자.


추가 bitbake-layers 명령

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글