嵌入式软件 - 视觉五 - Mender - Yocto - 第 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

您应该创建一个 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 层中设置某些设置和变量,如我们之前在 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 文件。在 rootfs 中,从分区 A 启动时使用 uEnv_visionfive.txt,从分区 B 启动时使用 uEnv_visionfive3.txt。- recipes-core/images/vision-five-image-mender.bb:采用此镜像方案或将“u-boot-env”添加到您的镜像方案中
IMAGE_INSTALL:append = " v4l-utils u-boot-env"

重要提示

在您可以对镜像执行 bitbake 命令之前,必须按照系列文章下一部分所述自定义 u-boot。

VisionFive - Mender - Yocto - 第 3 部分了解如何设置 Mender 的 u-boot。

版权许可

版权所有 © 2022 Interelectronix e.K.
本项目源代码根据 GPL-3.0 许可证获得许可。

嵌入式软件 - 视觉五 - 曼德 - 约克托 计算机截图
第 1 部分 - Yocto 环境的基本设置

系列文章《如何设置 Yocto 环境,以创建具有 Mender 客户端集成的 Yocto Linux》的第 1 部分。

嵌入式软件 - 视觉五 - 曼德 - 约克托 计算机截图
第 4 部分 - 创建用于 mender 的项目

系列文章《如何设置 Yocto 环境,以创建具有 Mender 客户端集成的 Yocto Linux》的第 4 部分。

嵌入式软件 - 视觉五 - 曼德 - 约克托 计算机截图
第 3 部分 - 用于 Mender 的 u-boot 配置

系列文章《如何设置 Yocto 环境,以创建具有 Mender 客户端集成的 Yocto Linux》的第 3 部分。