The Mender client runs on the device in order to install software updates. Therefore, at minimum you need to install the client binary on the device and it must support the device OS and hardware architecture. This allows you to deploy application updates by using Update Modules.
In addition, you need a deeper integration for supporting robust A/B system updates because Mender needs to control which system partition (A or B) is updated and booted. The mechanisms used for this are specific to the distribution or build system you are using to maintain your OS. This is called a Mender board integration. Note that a board integration also covers installing the Mender client on the device, so you do not need to install the Mender client after using a board integration.
See Update types for more information on application and system updates.
For production environments a board integration is strongly recommended because system updates are usually needed over time and it is very difficult to retrofit this type of integration after devices have been deployed to the field.
In general Mender officially supports the most common Linux OSes, and has reference implementations for specific devices. Note that both your OS and device hardware combination needs to be supported for Mender to work.
We offer Consulting services if you would like to save time and ensure verified integration of a specific OS and device.
If you decide to create an integration for your OS and device, please consider to post it back to the Board integrations category of the Mender Hub community. This way, the community will benefit and help maintain your integration.
Debian family OSes, such as Debian, Ubuntu and Raspberry Pi OS are officially supported.
A board integration for Raspberry Pi OS is available in the downloads section.
To find board integrations for other Debian family OSes, go to the Debian family in the Mender Hub community.
If no board integration is available for your device, follow the documentation on System updates: Debian family to integrate your device.
If you only need to deploy application updates (not system updates),
we provide Debian packages (
.deb) for installing the Mender client that works
on almost any Debian family OS and device.
Follow the documentation on install Mender using the Debian package in this case.
Due to the nature of the Yocto Project of building a full Linux OS image instead of installing packages while the device is running, board integration is the only supported method for Yocto Project distributions.
Integrations for the Yocto Project are available in Yocto Project in the Mender Hub community.
If no board integration is available for your device, follow the documentation on
System updates: Yocto Project to integrate your
device with the
Board integrations are also available for devices running other types of Linux OSes such as Buildroot and OpenWRT. See existing integrations for OSes in the Mender Hub community.
If you can not find a board integration for the OS you are looking for, take a look at the Mender from scratch community post for steps to create one.
You can compile the Mender client for a wide variety of architectures. Follow the steps in the README.md of the Mender client source repository. This is also the first step to a board integration for other types of Linux OSes.
For a POSIX compliant OS it may be possible to compile the Mender client to run natively, as outlined in the README.md.
You can customize a an existing board integration or create your own to meet your exact needs. A board integration generally consists of the following.
To use robust system updates with Mender, update your bootloader with logic to select the appropriate partition at boot time. Additionally, install utilities that can update the bootloader environment into the root filesystem.
The Mender client application is a standard Linux executable installed into the root filesystem. If your design uses managed mode, you also need to ensure that the Mender client is running as a system service.
Install the Mender configuration files into your root filesystem. These are standard text files containing JSON code that defines parameters for the Mender client, such as polling intervals.
If you require support for payload types other than full root filesystem updates, ensure to install appropriate Update Modules into your root filesystem, which are invoked by the Mender client.
If you require support of root filesystem State Scripts, ensure that they are installed into your root filesystem, so they are invoked by the Mender client.
Found errors? Think you can improve this documentation? Simply click the Edit link at the top of the page, and then the icon on Github to submit changes.
© 2022 Northern.tech AS