Advantech UNO-2372G + EdgeLinux

The official Mender documentation explains how Mender works. This is a board-specific complement to the official documentation.

Device description

UNO-2372G is compact, modular IoT automation gateway provided by Advantech. Equipped with Intel Atom E3845/Celeron® J1900 Quad-Core Processors with 4G DDR3L Memory - UNO-2372G offers numerous performance and cost-saving advantages, including elimination of unnecessary features and expenses, accelerated production and delivery, rapid deployment and integration, reduced system downtime and maintenance costs, and support for future upgrades and expansion. It features optimized I/O and an optional second expansion stack that support Advantech’s iDoor technology.

Getting started

This guide shows how to use mender-convert to turn the EdgeLinux image based on Ubuntu 24.04 for Advantech UNO-2372G into a Mender-ready image. With mender-conver, an existing Linux disk is restructured into an A/B update layout with two rootfs partitions, a boot partition, and a data partition.

This tutorial was tested on Ubuntu 24.04 workstation with Docker installed.

Creating the golden image

In mender-convert, you need a raw disk image (a golden image) as input. For more information about golden images, visit official Mender documentation.
In this section I’ll explain how to install the image on the device (optionally you can make run-time modifications) and copy it from the device storage to your workstation using dd.

To install the official EdgeLinux image provided by Advantech, create a bootable USB with the image. Initially, I created a bootable USB with Balena Etcher, but the system would consistently hang before GRUB - it turned out the image wasn’t being written in a UEFI-bootable format and was mounting as an HFS+ partition, which the BIOS couldn’t read. I then tried writing the image to the USB drive using dd, but it still wouldn’t boot, confirming the image itself wasn’t natively bootable when written raw.

The solution was to use Rufus on Windows to create a bootable USB drive. Rufus doesn’t just copy the image but instead extracts and reconstructs a proper bootable USB with a GPT partition table, FAT32 EFI system partition, and correctly structured bootloader files. With those changes, the UNO was finally able to detect the USB as a valid UEFI device and boot into the EdgeLinux installer without freezing.

After the image is installed on your device & you’ve made desired run-time modifications – you can proceed with creating the golden image by copying it to your workstation.

In my case – the storage medium where the image was installed was an 128GB SSD. In order to copy the image to my workstation - I’ve booted into the Live EdgeLinux environment from the bootable USB drive previously created. The reason for doing so is that I needed the SSD drive where the OS is installed to be unmounted in order to copy the image with dd. After attaching an external USB drive and mounting it locally, I’ve created a compressed image of the entire SSD directly on that drive, using the following commands:

sudo mkdir /mnt/datausb
sudo mount /dev/sdc1 /mnt/datausb
sudo dd if=/dev/sda bs=4M status=progress | gzip >

/mnt/datausb/golden-image.img.gz
sync
sudo umount /mnt/datausb

Instead of /dev/sdc1 and /dev/sda make sure to use paths which match your drives. To verify, use lsblk command.

At the end of this section - you should have a golden image on your USB drive. Copy it to your workstation.

Preparation of mender-convert

Now that you have the golden image prepared, you can proceed with running mender-convert.

Clone mender-convert: Ensure you have enough free disk space (≥4× the image size) and install Docker. Then clone the mender-convert repo (we use version 5.0.0 to match Mender Client 5.0.x):

git clone -b 5.0.0 https://github.com/mendersoftware/mender-convert.git
cd mender-convert

Prepare input directory: Create an input/ folder and put your UNO-2372G golden image there, e.g.

mkdir -p input
cp /path/to/advantech-golden-image.img input/

You should now have input/advantech-golden-image.img. This raw disk image must contain the complete partitions (boot + root) of EdgeLinux. Make sure the image is decompressed.

Prepare a rootfs overlay (optional but common): To add Mender’s client configuration, create an overlay directory with a custom mender.conf. For example:

mkdir -p input/overlay/etc/mender
cp my-mender.conf input/overlay/etc/mender/mender.conf

Your mender.conf should contain your Mender Server URL and tenant token (see Mender docs). During conversion, this overlay will be copied into the new rootfs.

(Re-)build Docker container: Before running mender-convert, build the mender-convert container:
./docker-build

Configuration

Create a custom config file for the UNO-2372G. Inside the configs/ directory of mender-convert, make a file called edgelinux-uno2372g_config with settings tailored to this board. Below is the configuration file I’ve used to convert the image:

# Base config for Advantech UNO-2372G / EdgeLinux 24.04
CONFIGS=("generic_x86-64_hdd_config")
# Use SSD as main storage device
MENDER_STORAGE_DEVICE_BASE="/dev/sda"
# Total size AFTER shrinking -- safe target (16 GB)
MENDER_STORAGE_TOTAL_SIZE_MB=16384
# Partition layout
MENDER_BOOT_PART_SIZE_MB=100            # EFI boot partition
MENDER_ROOTFS_PART_A_SIZE_MB=6144       # Rootfs A (6 GB)
MENDER_ROOTFS_PART_B_SIZE_MB=6144       # Rootfs B (6 GB)
MENDER_DATA_PART_SIZE_MB=512            # Data partition (auto-grow)
MENDER_DATA_PART_GROWFS="y"
# Bootloader: GRUB with UEFI integration
MENDER_GRUB_EFI_INTEGRATION="y"
# Enable stable partition references
MENDER_ENABLE_PARTUUID="y"
# Device identity in Mender server
MENDER_DEVICE_TYPE="advantech-uno2372g"
# Standard 8 MiB partition alignment
MENDER_PARTITION_ALIGNMENT=8388608

Make sure to put this config file in the config/ directory inside mender-convert.

Conversion Process

From the mender-convert directory, run the command below.

MENDER_CONVERT_LOCATION=${PWD}
$MENDER_CONVERT_LOCATION/scripts/bootstrap-rootfs-overlay-hosted-server.sh \
--output-dir ${PWD}/input/rootfs_overlay_demo \
--region eu \
--tenant-token "SECRET TENANT TOKEN"

Make sure to put a correct region and your tenant token.

Run mender-convert

For running mender-covert, adjust the following command to match your setup:

MENDER_ARTIFACT_NAME=advantech-uno2372g-release-1 \
./docker-mender-convert \
--disk-image input/advantech-golden-image.img \
--config configs/generic_x86-64_hdd_config \
--config configs/edgelinux-uno2372g_config \
--overlay input/rootfs_overlay_demo/

If everything is set up correctly, you should see the mender-convert pipeline run: extracting the image, modifying partitions, installing Mender client packages, and packaging the new image. Depending on the size of the golden image - this process can take a while.

Expected result

When the process finishes, the converted artifacts appear under the deploy/ directory.

You can flash the .img file to a device, or deploy the .mender artifact via Mender Server (if Mender was already installed on the device). The UNO-2372G should now boot into Mender’s dual-rootfs setup.

References

The mender-convert workflow is documented in the Mender Official Documentation[1], which describes cloning the repo, preparing the image, and running docker-mender-convert with --config options. This guide follows the standard convert procedure, adapted for the UNO-2372G using our custom config.