نرم افزار جاسازی شده - VisionFive - Mender - Yocto - قسمت 2 یک تصویر از یک کامپیوتر

VisionFive - Mender - Yocto

بخش 2 - راه‌اندازی اولیه برای گنجاندن Mender

راه‌اندازی Mender Yocto

راه‌اندازی اولیه Mender برای برد VisionFive

ما از شاخه Yocto Kirkstone برای توسعه استفاده می‌کنیم. فرض می‌کنیم که شما قبلاً یک محیط توسعه کاری را نصب کرده‌اید و محیط خود را مطابق آنچه در VisionFive - Mender - Yocto - بخش 1 توضیح داده شده، تنظیم کرده‌اید.

راه اندازی سرور Mender

نصب سرور Mender بخشی از این سری مقالات نیست. ما برای محیط آزمایشی خود، سرور Mender را با استفاده از آموزش نصب با docker-compose مطابق آنچه در نصب با Docker Compose توضیح داده شده، نصب کردیم.

توجه

بر خلاف آنچه در آموزش گفته شده، ما از گواهی نامه وایلدکارت 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 و bblaers.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

شما باید یک شاخه از meta-starfive-bsp ایجاد کنید تا تنظیمات مورد نیاز برای راه‌اندازی Mender را اضافه کنید.

سفارشی‌سازی در موارد زیر مورد نیاز است:

  • conf/machine/starfive-visionfive-jh7100.conf: این دو خط را حذف کرده یا آن را به حالت کامنت درآورید
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 را اضافه کنید
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/*: این دستور را از فایل فشرده دانلود شده اضافه کنید. این فایل شامل دو فایل uEnv است که در سیستم فایل ریشه استفاده می شود. uEnv_visionfive.txt در rootfs، هنگام بوت شدن از پارتیشن A و 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 را آنگونه که در قسمت بعدی مجموعه مقاله توضیح داده شده، سفارشی کنید.

نحوه راه اندازی u-boot برای Mender را در VisionFive - Mender - Yocto - بخش 3 مشاهده کنید.

مجوز کپی رایت

کپی‌رایت © 2022 Interelectronix e.K.این کد منبع پروژه دارای مجوز GPL-3.0 است.

نرم افزار جاسازی شده - VisionFive - Mender - Yocto یک تصویر از یک کامپیوتر
بخش 1 - راه‌اندازی اولیه محیط Yocto

بخش 1 از مجموعه مقالات، نحوه راه‌اندازی یک محیط Yocto برای ایجاد یک Yocto Linux با ادغام یک کلاینت Mender.

نرم افزار جاسازی شده - VisionFive - Mender - Yocto یک تصویر از یک کامپیوتر
بخش 4 - ایجاد یک آرتیفکت برای mender

بخش 4 از مجموعه مقالات، نحوه راه‌اندازی یک محیط Yocto برای ایجاد یک Yocto Linux با ادغام یک کلاینت Mender.

نرم افزار جاسازی شده - VisionFive - Mender - Yocto یک تصویر از یک کامپیوتر
بخش 3 - پیکربندی u-boot برای Mender

بخش 3 از مجموعه مقالات، نحوه راه‌اندازی یک محیط Yocto برای ایجاد یک Yocto Linux با ادغام یک کلاینت Mender.