임베디드 소프트웨어 - VisionFive - Mender - Yocto - Part 2 컴퓨터 스크린샷

VisionFive - Mender - Yocto

파트 2 - Mender를 포함하기 위한 기본 설정

Mender Yocto 설정

VisionFive 보드용 기본 Mender 설정

저희는 개발에 Yocto Kirkstone 브랜치를 사용하고 있습니다. VisionFive - Mender - Yocto - 파트 1에서 설명한 대로 이미 작업 개발 환경을 설치하고 환경을 설정했다고 가정합니다.

Mender 서버 설정

Mender 서버 설치에 관한 내용은 이 글 시리즈에 포함되어 있지 않습니다. 저희 테스트 환경의 경우, Docker Compose로 설치에서 설명한 대로 docker-compose로 설치 튜토리얼을 사용하여 Mender 서버를 설치했습니다.

참고

튜토리얼과 달리, 저희는 사용자 정의 와일드카드 CA 인증서를 사용합니다. 그렇게 하려면 './run up -d' 명령어를 실행하기 전에 공개 키와 비공개 키를 '/mender-server/production/keys-generated/cert'에 복사해야 합니다.

계속하기 전에 오류 메시지 없이 Mender 서버에 로그인할 수 있어야 합니다.

meta-mender 복제

poky 디렉토리(제 경우에는 poky-kirkstone)로 이동하여 meta-mender 저장소를 복제합니다. Kirkstone 브랜치가 아직 없기 때문에 'master-next' 브랜치를 복제해야 합니다.

cd poky-kirkstone
git clone -b master-next https://github.com/mendersoftware/meta-mender.git

local.conf 및 bblayers.conf

bblayers.conf.sample-mender 및 local.conf.sample-mender를 meta-interelectronix-visionfive 디렉토리에서 conf 디렉토리로 복사하고 이름을 bblayers.conf 및 local.conf로 바꿉니다:

cp ../poky-kirkstone/meta-interelectronix-visionfive/conf/bblayers.conf.sample-mender conf/bblayers.conf
cp ../poky-kirkstone/meta-interelectronix-visionfive/conf/local.conf.sample-mender conf/local.conf

bblayers.conf 파일에서 poky-kirkstone 디렉토리의 경로를 조정해야 합니다. 또한 '/workdir/poky-kirkstone/meta-interelectronix ' 줄을 삭제하세요. 이는 psplash 사용자 정의에만 필요합니다.

local.conf의 중요한 설정은 다음과 같습니다:

# mender settings
# The name of the disk image and Artifact that will be built.
# This is what the device will report that it is running, and different updates must have different names
# because Mender will skip installation of an Artifact if it is already installed.
MENDER_ARTIFACT_NAME = "release-1"

INHERIT += "mender-full"

# The version of Mender to build. This needs to match an existing recipe in the meta-mender repository.
#
# Given your Yocto Project version, see which versions of Mender you can currently build here:
# https://docs.mender.io/overview/compatibility#mender-client-and-yocto-project-version
#
# Given a Mender client version, see the corresponding version of the mender-artifact utility:
# https://docs.mender.io/overview/compatibility#mender-clientserver-and-artifact-format
#
# By default this will select the latest version of the tools that is backwards compatible with the
# given Yocto branch.
# If you need an earlier version, or a later version even though it may not be backwards compatible,
# please uncomment the following and set to the required version. If you want to use the bleeding
# edge version, specify "master-git%", but keep in mind that these versions may not be stable:
#
# PREFERRED_VERSION_mender-client = "3.3.0"
# PREFERRED_VERSION_mender-artifact = "3.8.0"
# PREFERRED_VERSION_mender-artifact-native = "3.8.0"
# PREFERRED_VERSION_mender-connect = "2.0.1"

# The following settings to enable systemd are needed for all Yocto
# releases sumo and older.  Newer releases have these settings conditionally
# based on the MENDER_FEATURES settings and the inherit of mender-full above.
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""

ARTIFACTIMG_FSTYPE = "ext4"

# Example: Memory card storage
MENDER_STORAGE_DEVICE = "/dev/mmcblk0"
# Example: Memory card with 2GiB of storage.
#MENDER_STORAGE_TOTAL_SIZE_MB = "29476"
#MENDER_STORAGE_TOTAL_SIZE_MB = "14738"
MENDER_STORAGE_TOTAL_SIZE_MB = "7369"

MENDER_UBOOT_STORAGE_INTERFACE = "mmc"
MENDER_UBOOT_STORAGE_DEVICE = "0"

MENDER_BOOT_PART = "${MENDER_STORAGE_DEVICE_BASE}1"
MENDER_DATA_PART = "${MENDER_STORAGE_DEVICE_BASE}4"
MENDER_ROOTFS_PART_A = "${MENDER_STORAGE_DEVICE_BASE}2"
MENDER_ROOTFS_PART_B = "${MENDER_STORAGE_DEVICE_BASE}3"

MENDER_FEATURES_ENABLE:append = " mender-uboot mender-image-sd"
MENDER_FEATURES_DISABLE:append = " mender-grub mender-image-uefi"

MACHINE_ESSENTIAL_EXTRA_RDEPENDS:append = " kernel-image kernel-devicetree"

PREFERRED_VERSION:mender-client = "3.3.0"

meta-starfive-bsp 사용자 정의

Mender 설정에 필요한 설정을 추가하려면 meta-starfive-bsp의 브랜치를 생성해야 합니다.

사용자 정의는 다음의 경우에 필요합니다:

  • conf/machine/starfive-visionfive-jh7100.conf: 이 2줄을 제거하거나 이에 주석을 답니다
UBOOT_ENV ?= "uEnv"
UBOOT_ENV_SUFFIX = "txt"
  • recipes-bsp/bootfiles/files/uEnv.txt: 부팅하는 동안 Mender 변수를 포함하도록 다음 줄을 교체합니다
bootcmd=load mmc 0:1 ${kernel_addr_r} @IMAGETYPE@; load mmc 0:1 ${fdt_addr_r} jh7100-starfive-visionfive-v1.dtb; setenv bootargs 'root=${mender_kernel_root} rw rootfstype=ext4 rootwait earlycon console=ttyS0,115200n8'; booti ${kernel_addr_r} - ${fdt_addr_r}
  • recipes-bsp/u-boot/u-boot-visionfive_v2022.03.bb: meta-mender에게 사용자 정의 u-boot가 사용되었음을 알리기 위해 다음 라인을 추가합니다
require recipes-bsp/u-boot/u-boot-mender.inc

PROVIDES += "u-boot"
RPROVIDES_${PN} += "u-boot"

BOOT_FILES:append = " uEnv.txt"

meta-interelectronix-visionfive의 레시피

meta-interelectronix-visionfive에서 하는 것처럼 일부 설정과 변수는 사용자 정의 메타 레이어에서 설정해야 합니다.

  • recipes-mender/mender-client/mender-client_%.bbappend: Mender 서버의 URL을 추가합니다
MENDER_SERVER_URL = "https://mender.interelectronix.com"
  • recipes-bsp/u-boot/u-boot-visionfive_%.bbappend: 다음 줄을 추가합니다
MENDER_UBOOT_AUTO_CONFIGURE = "1"
BOOTENV_SIZE = "0x20000"
  • recipes-bsp/u-boot-env/*: 다운로드한 zip 파일에서 이 레시피를 추가합니다. 여기에는 루트 파일 시스템에서 사용되는 두 개의 uEnv 파일이 포함되어 있습니다. uEnv_visionfive.txt는 파티션 A에서 부팅할 때 rootfs에서 사용되며 uEnv_visionfive3.txt는 파티션 B에서 부팅할 때 사용됩니다.

  • recipes-core/images/vision-five-image-mender.bb: 이 이미지 레시피를 가져오거나 이미지 레시피에 'u-boot-env'를 추가하세요

IMAGE_INSTALL:append = " v4l-utils u-boot-env"

중요

이미지를 비트베이크하기 전에 글 시리즈의 다음 부분에서 설명한 대로 u-boot를 사용자 정의해야 합니다.

VisionFive - Mender - Yocto - 파트 3에서 Mender용 u-boot를 설정하는 방법을 참조하세요.

저작권 라이선스

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

임베디드 소프트웨어 - VisionFive - Mender - Yocto 컴퓨터의 스크린샷
파트 1 - Yocto 환경의 기본 설정

시리즈의 글 중 파트 1에서는 Mender 클라이언트를 통합한 Yocto Linux를 생성하기 위해 Yocto 환경을 설정하는 방법에 대해 설명합니다.

임베디드 소프트웨어 - VisionFive - Mender - Yocto 컴퓨터의 스크린샷
파트 4 - Mender용 아티팩트를 생성하는 방법

시리즈의 글 중 파트 4에서는 Mender 클라이언트를 통합한 Yocto Linux를 생성하기 위해 Yocto 환경을 설정하는 방법에 대해 설명합니다.

임베디드 소프트웨어 - VisionFive - Mender - Yocto 컴퓨터의 스크린샷
파트 부 - Mender용 u-boot 구성

시리즈의 글 중 파트 3에서는 Mender 클라이언트를 통합한 Yocto Linux를 생성하기 위해 Yocto 환경을 설정하는 방법에 대해 설명합니다.