config BR2_PACKAGE_MENDER_UPDATE_MODULES bool "mender-update-modules" depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS depends on BR2_PACKAGE_MENDER select BR2_PACKAGE_HOST_MENDER_ARTIFACT help community supported Update Modules. An Update Module is an extension to the Mender client for supporting a new type of software update, such as a package manager, container, bootloader or even updates of nearby microcontrollers. An Update Module can be tailored to a specific device or environment (e.g. update a proprietary bootloader), or be more general-purpose (e.g. install a set of .deb packages.). https://github.com/mendersoftware/mender-update-modules if BR2_PACKAGE_MENDER_UPDATE_MODULES config BR2_PACKAGE_MENDER_UPDATE_MODULES_DFU bool "DFU" depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb select BR2_PACKAGE_DFU_UTIL help The DFU Update Module is able to update peripheral devices connected to the device running Mender. Example use-cases: - Deploy firmware updates to peripheral devices using the USB Device Firmware Update (DFU) protocol https://github.com/mendersoftware/mender-update-modules/tree/master/dfu config BR2_PACKAGE_MENDER_UPDATE_MODULES_DIR_OVERLAY bool "dir-overlay" help The Directory Overlay Update Module installs a user defined file tree structure into a given destination directory in the target. Before the deploy into the destination folder on the device, the Update Module will take a backup copy of the current contents, allowing restore of it using the rollback mechanism of the Mender client if something goes wrong. The Update Module will also delete the current installed content that was previously installed using the same module, this means that each deployment is self contained and there is no residues left on the system from the previous deployment. Example use-cases: - Deploy root filesystem overlays https://github.com/mendersoftware/mender-update-modules/tree/master/dir-overlay config BR2_PACKAGE_MENDER_UPDATE_MODULES_DIRTY bool "dirty" help The dirty Update Module: modify your device state without installing an artifact Example use-cases: - You have a specific action on the device that you want to run multiple times - You want to avoid re-creating artifacts just for the sake of a new version/name - You don't want the artifact the show up in the list of installed artifacts - The module will always fail the update process, which means it can never be marked as installed. So it can be attempted any number of times without having to recreate newly versioned artifacts. https://github.com/mendersoftware/mender-update-modules/tree/master/dirty config BR2_PACKAGE_MENDER_UPDATE_MODULES_DOCKER bool "docker" depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS # docker-engine, docker-cli depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS # docker-engine, docker-cli depends on BR2_TOOLCHAIN_HAS_THREADS # docker-engine, docker-cli depends on !BR2_TOOLCHAIN_USES_UCLIBC # containerd -> runc depends on BR2_USE_MMU # containerd depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # libseccom select BR2_PACKAGE_DOCKER_ENGINE select BR2_PACKAGE_DOCKER_CLI select BR2_PACKAGE_JQ # runtime help The Docker Update Module handles the Docker images that shall be running in the device. A deployment with this module will stop all currently running Docker containers in the device, and start new containers with the provided list of Docker images in the Mender Artifact. In case of an unforeseen error during the process, the module will use the rollback mechanism of the Mender client to restore the previously running Docker containers. https://github.com/mendersoftware/mender-update-modules/tree/master/docker comment "docker support needs a glibc or musl toolchain w/ threads, headers >= 3.17" depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS depends on !BR2_TOOLCHAIN_HAS_THREADS || \ BR2_TOOLCHAIN_USES_UCLIBC || \ !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 depends on BR2_USE_MMU config BR2_PACKAGE_MENDER_UPDATE_MODULES_IPK bool "ipk" depends on BR2_USE_MMU # opkg depends on BR2_USE_WCHAR # opkg -> libarchive select BR2_PACKAGE_OPKG help The IPK Update Module allows opkg-based packages to be installed on a device Example use-cases: - Deploy any ipk package https://github.com/mendersoftware/mender-update-modules/tree/master/ipk comment "ipk support needs a toolchain w/ wchar" depends on BR2_USE_MMU depends on !BR2_USE_WCHAR config BR2_PACKAGE_MENDER_UPDATE_MODULES_PODMAN bool "podman" depends on BR2_USE_MMU # podman depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS # podman depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # podman depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # podman depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # podman depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # podman depends on BR2_TOOLCHAIN_HAS_THREADS # podman depends on BR2_USE_WCHAR # podman select BR2_PACKAGE_JQ # runtime select BR2_PACKAGE_PODMAN help The Podman Update Module handles the Podman container images that shall be running on the target device. A deployment with this module will stop all currently running Podman containers on the device and start new containers based on the list of Podman images provided in the Mender Artifact. In case of any unforeseen error during the process, the module will trigger the rollback mechanism of the Mender client to restore the previously running Podman containers. https://github.com/mendersoftware/mender-update-modules/tree/master/podman comment "podman support needs a toolchain w/ headers >= 3.17, threads, wchar" depends on BR2_USE_MMU depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 \ || !BR2_TOOLCHAIN_HAS_THREADS \ || !BR2_USE_WCHAR config BR2_PACKAGE_MENDER_UPDATE_MODULES_REBOOT bool "reboot" help The reboot Update Module: reboot your device remotely. Example use-cases: - Something went wrong and you have to reboot your device remotely, and all access to the device you have is Mender. https://github.com/mendersoftware/mender-update-modules/tree/master/reboot config BR2_PACKAGE_MENDER_UPDATE_MODULES_ROOTFS_VERSION_CHECK bool "rootfs version check" depends on BR2_TOOLCHAIN_HAS_THREADS # python3 depends on !BR2_STATIC_LIBS # python3 select BR2_PACKAGE_PYTHON3 # runtime help The rootfs-version-check Update Module implements a full image update with additional checks to protect against replay attacks. This is functionally equivalent to the built-in full image update with an extra check to ensure the artifact name follows a specific format and that installing "older" images is rejected. For this reference implementaton, we simply use a numeric identifier and ensure that it is larger than the version installed. For actual device fleet use, you may need to customize this based on your artifact naming scheme. Example use-cases: - Deploy root filesystem updates and ensure only newer artifacts are installed https://github.com/mendersoftware/mender-update-modules/tree/master/rootfs-version-check comment "rootfs version check needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS config BR2_PACKAGE_MENDER_UPDATE_MODULES_RPM bool "rpm" depends on !BR2_STATIC_LIBS # dlfcn.h depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS depends on BR2_PACKAGE_LUA && !BR2_PACKAGE_LUA_5_1 depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_RPM help The Rpm Update Module updates software on the device using the native local package manager. A Mender Artifact containing one or more software packages is sent to the device, where the Update Module will call the package manager to install them in alphabetical order. https://github.com/mendersoftware/mender-update-modules/tree/master/rpm comment "rpm needs a toolchain w/ dynamic library, threads and lua >= 5.3" depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ || !BR2_PACKAGE_LUA || BR2_PACKAGE_LUA_5_1 depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS config BR2_PACKAGE_MENDER_UPDATE_MODULES_SWU bool "swupdate" depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HAS_SYNC_4 # swupdate select BR2_PACKAGE_JQ # runtime select BR2_PACKAGE_SWUPDATE help The SWU Update Module allows deploying an SWUpdate-based artifact to the device. Example use-cases: - Extend an existing platform using SWUpdate with OTA. https://github.com/mendersoftware/mender-update-modules/tree/master/swu comment "swupdate support needs a toolchain w/ dynamic library" depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on BR2_STATIC_LIBS endif comment "mender-update-modules needs mender" depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS depends on !BR2_PACKAGE_MENDER