본문 바로가기

Build/Yocto

01. 구성

 
Yocto Project 의 구성
 
 
OpenEmbedded-Core
OpenEmbedded project와 공유되는 core meta data, base layer 묶음.  
OpenEmbedded project는http://openembedded.org를 home page 로하는
별도의 build system으로, 이것만 가지고도 linux 배포 판을 만들 수 있을 정도로 매우 강력함. 
 
Poky
Yocto project의 reference system으로, 다양한 tool과 meta data 로 이루어짐. 
여기에 자신만의 target board 에 대한 내용 을 추가해 줌으로써 최종적으로
원하는 linux system을 만들어 낼 수 있음
포키 프로젝트가 안정된 비트베이크를 포함하고 있음 
    L Meta data
    아래 세 가지를 일컬어 meta data라고함.    
        - Recipes ( .bb - bitbake ) : the logical units of software/images to build    
                    buildroot의 package에해당하는내용. 
                    source download -> build -> install 관련내용을기술하고있음. 
                    BitBake가이내용을보 고, 실제 action을취하게됨.
        - Classes ( .bbclass ) : abstraction to common code(task)    
        - Configuration files ( .conf ) : global definitions of variables
    L Poky Meta Data 구성
        - meta : 아키텍쳐 관련  메타 데이터 -arm,x86,mips,powerpc, qemu
        - meta-yocto : 포키 배포한 특화 메타 데이터
        - meta-yocto-bsp : 레퍼런스 하드웨어 개발보드에 대한 bsp 메타데이터
        - meta-skeleton : 레이어 탬플릿 디렉토리
        - meta 데이터에 포함된 recipes 조회 : ls meta*/recipes*/images/*.bb
 
BitBake
python과 shell script 로 만들어진 task scheduler로써, 
Recipes 를 읽어 build하고자하는 source를 download하고, build한후, 최종 install 하기 까지의 전 과정을 담당함. 
Make 와 유사하다고 볼 수도 있겠으나, 실제로는 규모면에서 차이가 있음
 
 

Yocto Project의 대략적인 작업순서
 
 0) Poky reference system 을 준비(download & 환경설정) 한다. 
 
 1) 자신의 target board에맞는 BSP layer를 하나 만든다. 혹은 기존에 존재하는 내용이 있다면 이를 이용(혹은개선)한다. 
 
 2) (필요하다고 판단이 될 경우) 기존에 다른 사람들이 만들어둔 여러 layer(meta-XXXX) 를 찾아 download 한다. 
 
 3) 자신의 target board에맞는 general layer를 만든다. (역시 필요할 경우)    
     => conf file & meta data 를 적절히 준비(수정)해 둔다.    
     => 추가로 필요한 recipe를 만들어 둔다. 
 
 4) bitbake - fetch
     Recipe 파일을 토대로 build에 필요한 모든 source code를 download 한다. 
     Source code 에 대한 patch가 존재할 경우 관련 fetch 를 진행한다. 
 
 6) bitbake - configure & compile
      configure & compile을진행한다. 
 
 7) bitbake - install
      install 을한다. 
 
 8) bitbake - package
      build가 정상적으로 진행될 경우, package 파일(RPM, ipk 등)을생성한다. 
 
 9) booting에 필요한 이미지(kernel, rootfs 등)를 생성한다.
 
 

Yocto Project 동작방식 관련 Ref 1
 
    
 
 

Yocto Project 동작방식 관련 Ref 2
 
  
 
 

설치와 빌드 샘플
 
$sudo apt-get update
$sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib      build-essential chrpath socat libsdl1.2-dev xterm
$git checkout morty
 => git clone -b morty git://git.yoctoproject.org/poky.git 명령으로 대신할 수 있다.
$ulimit -a
 
# bitbake 빌드
$cd ~/poky
$git checkout -b morty origin/morty
$source oe-init-build-env
 =>기본환경설정을진행한다.  
 => build 라는 directory를 생성하고, build를 current directory 로 만든다.   
 => oe-init-build-env 다음에 아무값도 지정하지 않을 경우,  ARM QEMU emulator가 만들어지게 된다.
$bitbake core-image-full-cmdline
 => bitbake task scheduler 를 이용하여 실제 build를진행하여, 
    최종적으로 bootloader, kernel, root file system 등의 이미지 및 패키지 (rpm, deb, or ipk) 를 만들어낸다.   
 => bitbake 다음에 입력가능한 rootfs image 생성 방식으로는 다음과 같은 것들이 있다.
     core-image-minimal : small image 생성(recipes-core/images/core-image-minimal.bb) 
     core-image-minimal-initramfs : initramfs 용이미지생성 
     core-image-x11: X11 기능이포함된이미지생성
 => 결과물 : build/tmp/deplay/images/*
 
# bitbake 클린빌드
$rm -rf build/
$source oe-init-build-env
$bitbake core-image-full-cmdline
 
$sudo apt-get update
$sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib      build-essential chrpath socat libsdl1.2-dev xterm
$git checkout morty
 => git clone -b morty git://git.yoctoproject.org/poky.git 명령으로 대신할 수 있다.
$ulimit -a
 
# bitbake 빌드
$cd ~/poky
$git checkout -b morty origin/morty
$source oe-init-build-env
 =>기본환경설정을진행한다.  
 => build 라는 directory를 생성하고, build를 current directory 로 만든다.   
 => oe-init-build-env 다음에 아무값도 지정하지 않을 경우,  ARM QEMU emulator가 만들어지게 된다.
$bitbake core-image-full-cmdline
 => bitbake task scheduler 를 이용하여 실제 build를진행하여, 
    최종적으로 bootloader, kernel, root file system 등의 이미지 및 패키지 (rpm, deb, or ipk) 를 만들어낸다.   
 => bitbake 다음에 입력가능한 rootfs image 생성 방식으로는 다음과 같은 것들이 있다.
     core-image-minimal : small image 생성(recipes-core/images/core-image-minimal.bb) 
     core-image-minimal-initramfs : initramfs 용이미지생성 
     core-image-x11: X11 기능이포함된이미지생성
 => 결과물 : build/tmp/deplay/images/*
 
# bitbake 클린빌드
$rm -rf build/
$source oe-init-build-env
$bitbake core-image-full-cmdline
 
# 빌드 결과물 실행
$cd ~/poky
$source oe-init-build-env
$runqemu qemux86 qemuparams="-smp 4"
아래와 같이 나오면 4개의 core 로 실행 완료된 화면이다.
 
 
root 로 들어가면 된다.
 
 

YoctoProject 환경 구성 파일
 
빌드가 끝나고 나면 build/conf 디렉토리 아래에 몇 가지 파일이 자동으로 생성된다.
 
 
local.conf
프로젝트 설정 변수를 설정
build하려는 device 관련 spec을정의하고, build 환경을 담고 있음 
이 내용을 자신의 device에 맞게 수정해야 함
 
templateconf.cfg
여러 conf file 이 위치한 디렉토리를 정의하고 있음
default는 meta-yocto/conf
 
bblayers.conf
프로젝트에 필요한 메타데이터 레이어를 열거
layer 관련 디렉토리 목록을 정의하고 있음
자신의 device에 맞게 수정해야 함
 

'Build > Yocto' 카테고리의 다른 글

05. Recipe  (0) 2020.01.23
04. Layer 추가  (1) 2020.01.23
03. 빌드 설정  (0) 2020.01.23
02. 빌드  (0) 2020.01.23