Yocto

Yocto Project를 사용한 라즈베리 파이4 이미지 생성

chbae 2023. 4. 20. 04:40
728x90

Yocto Project를 사용하여 Raspberry PI4 이미지를 생성하는 방법을 설명한다.

 

Yocto Project는 자신만의 임베디드 리눅스를 만들 수 있는 툴과 방법들을 제공한다. 여기서는 Yocto Project의 레퍼런스 시스템인 Poky를 가지고 빌드하여 이미지를 만드는 방법을 설명한다.

 

빌드할 수 있는 이미지는 다음과 같이 여러가지가 있다. 여기서는 부팅 후 기본적인 shell 까지 떨어지는 core-image-minimal 이미지를 빌드한다.

Common targets are:  
   core-image-minimal  
   core-image-sato  
   meta-toolchain  
   adt-installer  
   meta-ide-support

빌드 환경

  • Host System: Ubuntu 20.04 64bit
  • Target Board: Raspberry Pi4
  • Yocto Build Version: Kirkstone (4.0)

빌드 방법

1. Poky 다운로드

$ git clone -b kirkstone git://git.yoctoproject.org/poky.git

 

2. meta-raspberrypi 레이어 다운로드

$ cd poky
$ git clone -b kirkstone git://git.yoctoproject.org/meta-raspberrypi

 

3. 환경 설정
$ source oe-init-build-env build
$ vi conf/local.conf 파일에 MACHINE="raspberrypi4" 추가
* raspberrypi1은 MACHINE="raspberrypi" 로 설정
* raspberrypi0는 meta-raspberrypi를 master로 변경 후 MACHINE="raspberrypi0"로 설정하면 된다. 현재 설정으로 봐서 raspberrypi0는 raspberrpi1 이미지로 동작해도 될 것 처럼 보인다.

@@ -35,7 +35,6 @@  
  #  
  # This sets the default machine to be qemux86 if no other machine is selected:  
  MACHINE ??= "qemux86"  
 +MACHINE = "raspberrypi4"  
  #  
  # Where to place downloads

build $ vi conf/bblayers.conf의 BBLAYERS 변수에 meta-raspberrypi 디렉토리 추가

@@ -9,6 +9,7 @@  
   /home/changhyeok.bae/test/poky/meta \  
   /home/changhyeok.bae/test/poky/meta-yocto \  
   /home/changhyeok.bae/test/poky/meta-yocto-bsp \  
 + /home/changhyeok.bae/test/poky/meta-raspberrypi \  
   "  
  BBLAYERS_NON_REMOVABLE ?= " \  
   /home/changhyeok.bae/test/poky/meta \

 

4. 빌드

$ bitbake core-image-minimal

 

SDCARD에 생성된 이미지 복사

이미지는 poky/build/tmp/deploy/images/raspberrypi4에 있다.

 

$ dd if=[이미지 위치]/core-image-minimal-raspberrypi2.rpi-sdimg of=/dev/sd? bs=1M; sync of에서 sd?라고 한 이유는 sdcard가 발견된 위치는 사용자마다 다르기 때문에 dmesg로 확인하여 설정한다.

 

위와 같이 빌드한 후, sdcard에 이미지를 넣고 라즈베리파이2 디바이서에 sdcard를 꼽고 전원을 인가하면 부팅이 되어, login shell이 뜬다.

 

https://wikidocs.net/3163 에 보면 Linux, Mac OS, Windows에서 각각 SD카드에 이미지를 기록하는 방법에 대해서 자세히 나와 있다.

BeagleBone Black 이미지 생성

이 부분은 다음 글에서 자세히 설명하겠지만, Poky에서 기본적으로 지원하기 때문에 라즈베리파이4보다 훨씬 더 간단한다.

 

meta-raspberrypi를 받을 필요도 없고, bblayers.conf 파일을 설정할 필요도 없이, conf/local.conf 파일에서 MACHINE="beaglebone"으로만 설정하고 빌드하면 된다.

Reference