본문 바로가기

라즈베리파이

라즈베리파이 3B 에서 yocto 빌드

yocto를 사용하는 이유는 cutomized된 루트파일 시스템을 제작하기 위한 것이다.
yocto의 사용법은 단 시간내에 모두 학습할 수 있는 내용은 아니며, 꾸준한 학습과 경험을 필요로 한다.
yocto를 빌드하기 위한 추가적인 패키지 설치는 배포판 별로 다르며, yocto 메뉴얼을 참고로 한다.
이 글에서는 라즈베리 파이에만 해당되는 핵심 부분만 요약하여 설명한다.

 

yocto 버전 선택
아래의 사이트에서 보면 년도별 버전이 설명되어 있다.
https://wiki.yoctoproject.org/wiki/Releases
인터넷에 라즈배리에서 사용하는 yocto버전을 보면 thud나 zeus가 많은 것으로 보인다.
(장기적인 관점으로 올해 4월 달에 나온 dunfell이 LTS 버전이므로 나을듯)


yocto 버진이 높을수록 host PC의 각 패키지 버전이 높아야 되는데, centos 8이나 ubuntu 최신 버전에서 가능할듯 하다.
최근 버전에서는 python3.x이상을 사용하기 때문에 centos 7같이 python2.x를 사용하는 경우에는 버전을 올려줘야 한다.

ex) centos 7에서 python 3.x 사용
https://developers.redhat.com/blog/2018/08/13/install-python3-rhel/

 

 

yocto resource 다운로드

(본인은 centos 7을 사용하는 관계로 thud로 낮추어서 사용하고 있음)
git clone -b thud git://git.yoctoproject.org/poky.git poky-thud
cd poky-thud
git clone -b thud git://git.openembedded.org/meta-openembedded
git clone -b thud https://github.com/meta-qt5/meta-qt5
git clone -b thud git://git.yoctoproject.org/meta-raspberrypi
git clone -b thud git://git.yoctoproject.org/meta-security.git

 

빌드 디렉토리 생성 및 환경 셋업
source oe-init-build-env

(이때 build 디렉토리가 생성되고, 이 곳에서 빌드하기 위한 커맨드를 입력한다. 일종의 base 디렉토리가 된다)

이 스크립트는 PATH및 yocto를 빌드하기 위한 환경변수가 셋업된다.

 

bb 레이어 수정

위에서 다운로드 받은 소스를 layer에 추가한다.

vi conf/bblayer.conf

...

BBLAYERS ?= " \
  /home/dowkim/work/rasppi/poky-thud/meta \
  /home/dowkim/work/rasppi/poky-thud/meta-poky \
  /home/dowkim/work/rasppi/poky-thud/meta-openembedded/meta-oe \
  /home/dowkim/work/rasppi/poky-thud/meta-openembedded/meta-multimedia \
  /home/dowkim/work/rasppi/poky-thud/meta-openembedded/meta-networking \
  /home/dowkim/work/rasppi/poky-thud/meta-openembedded/meta-perl \
  /home/dowkim/work/rasppi/poky-thud/meta-openembedded/meta-python \
  /home/dowkim/work/rasppi/poky-thud/meta-qt5 \
  /home/dowkim/work/rasppi/poky-thud/meta-raspberrypi \
  /home/dowkim/work/rasppi/poky-thud/meta-security \

...

 

이미지 레시피 선택
ls meta*/recipes*/*images* 로 검색해 보면 이미지 레시피를 여라가지 볼수 있다.

각 이미지별 특징을 보면 아래 사이트에서 대충적인 설명을 알수 있다.
https://ggangjo.tistory.com/83

 

그중에서 본인은 아래의 이미지를 테스트용으로 사용하고 있다.

core-image-full-cmdline (60M, cmdline utilty 다수 포함)

 

local.conf 수정
이미지를 빌드할때 다양한 옵션 선택가능
vi conf/local.conf

MACHINE ??= "raspberrypi3-64"

IMAGE_FSTYPES = "tar"

BB_NUMBER_THREADS = "7"
PARALLEL_MAKE = "-j 7"

IMAGE_INSTALL_append = " rpm python3 python3-smbus python3-setuptools i2c-tools i2c-tools-dev"

EXTRA_IMAGE_FEATURES ?= "debug-tweaks tools-sdk"

 

이미지 생성 및 확인
bitbake core-image-full-cmdline

명령 수행후 아래의 경로에서 최종 파일이 생성됨
tmp/deploy/images/raspberrypi3-64/core-image-full-cmdline-raspberrypi3-64.tar