임베디드 소프트웨어 - Yocto build Raspberry Pi 4 : 컴퓨터 스크린 샷

Yocto build Raspberry Pi 4

도커 환경에서

도커 컨테이너에서 실행되는 Yocto

Yocto 설명서에는 네이티브 Linux PC 설정의 대안으로 CROss PlatformS(CROPS)를 구성하는 챕터(2.2.2)가 있습니다. 이 대안은 도커 컨테이너를 사용하여 Raspberry Pi용 사용자 지정 시스템 이미지를 구축합니다.

하지만 안타깝게도, Mac OS X(Monterey)에서 이 환경을 설정하는 문서를 작성하는 데 약간의 실수가 있습니다.

Mac OS X용 도커 컨테이너 설정

Linux, Windows, Mac OS X에서 CROPS 도커를 사용하려면 몇 가지 특별한 설정이 필요합니다. Yocto 컨테이너를 설정하기 전에 결과를 저장할 도커 볼륨을 생성해야 합니다. 또한, Mac OS X의 파일을 제공하는 데는 도커 samba 컨테이너가 사용됩니다.

도커 볼륨 생성

단말기 창에 다음 명령어을 입력하세요:

docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir

samba 컨테이너 생성 및 실행

OS X에서는 로컬로 실행되는 samba 공유에 연결할 수 없습니다. 따라서, 먼저 127.0.0.2의 127.0.0.1에 대한 별칭을 생성해야 합니다.

sudo ifconfig lo0 127.0.0.2 alias up

그런 다음, 도커 볼륨의 파일을 볼 수 있는 samba 컨테이너를 생성하세요:

docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba

samba 컨테이너에 연결하려면 항상 별칭이 있어야 하므로 samba의 시작과 별칭을 결합할 수 있습니다:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

이제 파일 브라우저에서 workdir을 열 수 있습니다. 파인더에서 "Command-K"를 누르고 서버 주소 상자에 "smb://127.0.0.2/workdir"를 입력한 후 "Connect"(연결)를 클릭하세요. 이제 파인더에서 도커 볼륨의 콘텐츠를 볼 수 있습니다.

Yocto 컨테이너 생성 및 시작

단말기 창에서 Yocto 컨테이너 유형을 생성 및/또는 시작하려면:

docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir

컨테이너에 빌드 환경 설정

도커 컨테이너가 시작되면 단말기에 다음과 같은 프롬프트가 표시됩니다: "pokyuser@d4ddfe042587:/workdir".

이제 빌드 환경을 설정할 수 있습니다.

클론 poky 버전

저 같은 경우는 "Honister"라는 이름으로 Yocto 버전 3.4를 사용합니다. 왜냐하면 현재 새로운 poky 버전에서는 meta-raspberry 레이어를 사용할 수 없기 때문입니다. 이제 처음으로 poky 리포지토리를 복제해야 합니다:

git clone -b honister git://git.yoctoproject.org/poky poky-honister

poky를 최신 버전으로 업데이트하려면:

cd poky-honister
git pull --all --prune

Raspberry Pi용 추가 메타 레이어

"poky-honister"로 변경하고 다음 리포지토리를 복제하세요: meta-raspberry, meta-openembedded 및 필요한 경우 meta-qt5

cd poky-honister
git clone -b honister git://git.yoctoproject.org/meta-raspberrypi
git clone -b honister git://git.openembedded.org/meta-openembedded
git clone -b honister https://github.com/meta-qt5/meta-qt5.git

빌드 구성 설정

poky-honister 디렉터리를 나와 /workdir으로 이동합니다. 이제 oe-init-build-env 스크립트로 소스 환경을 빌드합니다.

cd ..
source poky-honister/oe-init-build-env rpi-build

새 디렉터리 "rpi-build" - 원하는 대로 이름을 지정할 수 있으며 bblayers.conf, local.conf 및 templateconf.cfg 파일이 있는 conf 디렉터리가 생성됩니다.

컨테이너에는 텍스트 편집기가 설치되어 있지 않으므로 Mac OS X에서 마운트된 samba 볼륨의 구성 파일을 편집하거나 컨테이너에 텍스트 편집기를 설치해야 합니다. 이렇게 하려면 yocto 컨테이너가 실행되는 동안 두 번째 단말기 창을 열고 루트 권한으로 컨테이너에서 배시 셸을 시작해야 합니다:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit

그런 다음 yocto 컨테이너의 설정 파일을 pokyuser로 편집할 수 있습니다.

참고

편집기는 영구적으로 설치되지 않습니다. 컨테이너에서 나온 후 다시 들어가면 편집기를 다시 설치를 해야 합니다.

먼저 bblayers.conf 파일에 meta-raspberry를 추가하세요

nano conf/bblayers.conf

"/workdir/poky-honister/meta-raspberrypi "를 추가하면 다음과 같이 보일 것입니다

BBLAYERS ?= " \
  /workdir/poky-honister/meta \
  /workdir/poky-honister/meta-poky \
  /workdir/poky-honister/meta-yocto-bsp \
  /workdir/poky-honister/meta-raspberrypi \
  "

그런 다음 저장하세요.

두 번째로 local.conf 파일을 편집하세요

local.conf 파일을 편집하세요:

nano conf/local.conf

다음 줄을 변경하세요:

  • MACHINE ??= "qemux86-64" -> MACHINE ??= "raspberrypi4-64"

사용하고자 하는 Raspberry에 따라(raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64 등)

다음 줄의 주석을 취소하세요:

  • DL_DIR ?= "${TOPDIR}/downloads"
  • SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
  • TMPDIR = "${TOPDIR}/tmp"

SD 카드에 플래시할 sdimg를 얻으려면 끝에 다음 줄을 추가하세요:

  • IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
  • SDIMG_ROOTFS_TYPE = "ext4.xz"

local.conf 파일을 저장하세요.

첫 번째 이미지를 Bitbake하세요

이제 첫 번째 이미지를 빌드할 수 있는 최소한의 설정이 구성되었습니다:

bitbake -k core-image-minimal

Yocto 설명서에 사용 가능한 이미지 설명에 대한 간단한 설명이 있습니다.

예:

  • core-image-minimal: 장치를 부팅하도록 해주는 작은 이미지.
  • core-image-base: 대상 장치 하드웨어를 완벽하게 지원하는 콘솔 전용 이미지.
  • core-image-full-cmdline: 더 많은 전체 기능 Linux 시스템 기능이 설치된 콘솔 전용 이미지.

잠시 후 bitbake가 끝나면 다음 디렉터리에서 sdimg 파일을 찾을 수 있습니다:

/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64

추가 구성

추가 Raspberry 하드웨어 구성

특정 하드웨어 설정을 설정하려면 extra-apps.mdextra-build-config.md를 살펴볼 수 있습니다. 이러한 파일은 meta-raspberrypi/docs 디렉터리에도 있습니다.

메타 레이어는 bitbake와 함께 사용할 이미지 구성 "rpi-test-image"도 제공합니다. 이미지는 meta-raspberrypi와 일부 미디어 샘플의 패키지 대부분을 포함하는 "core-image-base"를 기반으로 합니다.

bitbake -k rpi-test-image

추가 소프트웨어 구성

사용 중인 이미지 빌드 구성에 따라 추가 소프트웨어 패키지를 설치해야 할 수 있습니다.

local.conf 파일에 몇 가지 설정을 추가하여 이 작업을 수행할 수 있습니다.

예를 들어, ssh-server, pi-user 및 systemd를 설정하려면 다음 줄을 추가하세요:

## packages
IMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"
IMAGE_FEATURES:append = " ssh-server-openssh"

## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
VIRTUAL-RUNTIME:initscripts = ""
IMX_DEFAULT_DISTRO_FEATURES:append = " systemd"

또는 python을 추가하세요:

IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"

참고

"python3 python3-pip rpi-gpio raspi-gpio"의 시작 부분의 공백은 중요하며 이는 텍스트가 기존 구성에 추가되어 이 공백과 분리되어야 하기 때문입니다.

저작권 라이선스

Copyright © 2022 Interelectronix e.K.
이 프로젝트 소스 코드는 GPL-3.0 라이선스에 따라 라이선스가 부여됩니다.

감사 표시

이 지침을 작성하는 데 사용된 소스:

감사합니다.