오픈 소스 Yocto 프로젝트 가이드
Docker를 사용하는 Raspberry Pi의 사용자 지정 Linux에 대한 오픈 소스 Yocto 프로젝트 가이드 설정 팁
모든 하드웨어에서 사용자 지정 Linux 시스템을 위한 Yocto 프로젝트에 대해 자세히 알아보세요. 개발자와 임베디드 시스템 매니아에게 적합합니다. 지금 구축을 시작하세요!
모든 하드웨어 아키텍처에 대한 사용자 지정 Linux 시스템을 만들기 위한 오픈 소스 이니셔티브인 Yocto Project를 살펴보세요. 크로스 플랫폼 개발에 CROPS를 사용하고, Docker 컨테이너를 설정하고, 임베디드 및 IoT 디바이스용 맞춤형 Linux 이미지를 빌드하는 방법을 알아봅니다. 이 가이드에서는 macOS 설정, 빌드 환경 구성 및 Raspberry Pi 최적화에 대해 설명합니다. 초보자이든 전문가이든 관계없이 Linux 프로젝트 요구 사항에 맞는 모범 사례, 도구 및 커뮤니티 지원을 찾아보세요.
도커 컨테이너에서 실행되는 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.md 및 extra-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 라이선스에 따라 라이선스가 부여됩니다.
감사 표시
이 지침을 작성하는 데 사용된 소스:
감사합니다.