You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Mirza Krak 874077ee7b rpi: update to 2018.07 U-boot 6 years ago
device-image-shell Experimental environment for emulating a device shell 6 years ago
files Provide systemd service for Raspberry Pi boards to resize data partition 6 years ago
.dockerignore dockerignore: add device-image-shell/output 6 years ago
.gitignore MEN-2282: Add commits check to mender-convert repo 6 years ago
.travis.yml MEN-2282: Add license check to mender-convert repo 6 years ago
Dockerfile Provide Mender client version as a argument to docker build 6 years ago
LICENSE MEN-2282: Add license check to mender-convert repo 6 years ago
LIC_FILES_CHKSUM.sha256 MEN-2282: Add license check to mender-convert repo 6 years ago
README.md Give container access to host's kernel modules 6 years ago
bbb-convert-stage-2.sh rework flow of do_raw_disk_image_create_partitions 6 years ago
convert-stage-3.sh Check a Linux ext4 file system before resizing 'primary' partition 6 years ago
convert-stage-4.sh convert-stage-4: interval settings must be 'int' and not strings 6 years ago
convert-stage-5.sh Install GRUB bootloader to Mender image based on Yocto image for qemu x86-64 6 years ago
docker-build Update Mender client version to 1.7.0 in docker-build script 6 years ago
docker-entrypoint.sh compile mender during docker image creation 6 years ago
docker-mender-convert Give container access to host's kernel modules 6 years ago
mender-convert call "truncate" with sudo permissions in do_raw_disk_image_shrink_rootfs 6 years ago
mender-convert-functions.sh Add --storage-total-size-mb option to mender-convert tool 6 years ago
qemux86_64-convert-stage-2.sh work with sparse images where possible 6 years ago
rpi-convert-stage-2.sh work with sparse images where possible 6 years ago
rpi-convert-stage-5.sh rpi: update to 2018.07 U-boot 6 years ago

README.md

Build Status

mender-convert

Mender is an open source over-the-air (OTA) software updater for embedded Linux devices. Mender comprises a client running at the embedded device, as well as a server that manages deployments across many devices.

This repository contains mender-convert, which is used to convert pre-built disk images (Debian, Ubuntu, Raspbian, etc) to a Mender compatible image by restructuring partition table and injecting the necessary files.

Currently official Raspberry Pi 3 and BeagleBone Black images are supported and this will be extended.

Mender logo

Getting started

To start using Mender, we recommend that you begin with the Getting started section in the Mender documentation.

Docker environment for mender-convert

In order to correctly set up partitions and bootloaders, mender-convert has many dependencies, and their version and name vary between Linux distributions.

To make using mender-convert easier, a reference setup using a Ubuntu 18.04 Docker container is provided.

You need to install Docker Engine to use this environment.

Build the mender-convert container image

To build a container based on Ubuntu 18.04 with all required dependencies for mender-convert, copy this directory to your workstation and change the current directory to it.

Then run

./docker-build

This will create a container image you can use to run mender-convert.

Use the mender-convert container image

Create a directory input under the directory where you copied these files (docker-build, docker-mender-convert, etc.):

mkdir input

Then put your raw disk image into input/, e.g.

mv ~/Downloads/2018-11-13-raspbian-stretch.img input/2018-11-13-raspbian-stretch.img

You can run mender-convert from inside the container with your desired options, e.g.

DEVICE_TYPE="raspberrypi3"
RAW_DISK_IMAGE="input/2018-11-13-raspbian-stretch.img"

ARTIFACT_NAME="2018-11-13-raspbian-stretch"
MENDER_DISK_IMAGE="2018-11-13-raspbian-stretch.sdimg"
TENANT_TOKEN="<INSERT-TOKEN-FROM Hosted Mender>"

./docker-mender-convert from-raw-disk-image                 \
            --raw-disk-image $RAW_DISK_IMAGE                \
            --mender-disk-image $MENDER_DISK_IMAGE          \
            --device-type $DEVICE_TYPE                      \
            --mender-client /mender                         \
            --artifact-name $ARTIFACT_NAME                  \
            --bootloader-toolchain arm-linux-gnueabihf      \
            --server-url "https://hosted.mender.io"         \
            --tenant-token $TENANT_TOKEN

Note that the default Mender client is the latest stable and cross-compiled for generic ARM boards, which should work well in most cases. If you would like to use a different Mender client, place it in input/ and adjust the --mender-client argument.

Conversion will take 10-15 minutes, depending on your storage and resources available. You can watch output/build.log for progress and diagnostics information.

After it finishes, you can find your images in the output directory on your host machine!

Known issues

  • Raspberrypi0w cpu isn't armv7+ architecture (it's armv6) and because of this mender client + u-boot fw_set/getenv tools are crashing when compiled with armv7 toolchain added in docker image. Pls use this forked repo to have it properly build with other armv6 toolchain.
  • If building U-boot fails with:
     D	scripts/Kconfig
     input in flex scanner failed
     ....
     include/linux/kconfig.h:4:32: fatal error: generated/autoconf.h: No such file or directory
     #include <generated/autoconf.h>

you might be using a case-sensitive filesystem which is not supported. Case-sensitive filesystems are typically used on OSX (Mac) and Windows but you can also run in to this on Linux if running on a NTFS formatted partition.

For details see this discussion

Contributing

We welcome and ask for your contribution. If you would like to contribute to Mender, please read our guide on how to best get started contributing code or documentation.

License

Mender is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Security disclosure

We take security very seriously. If you come across any issue regarding security, please disclose the information by sending an email to security@mender.io. Please do not create a new public issue. We thank you in advance for your cooperation.

Connect with us