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.
 
 
 
 
Lluis Campos 0dbc9b5b83
Merge pull request #420 from lluiscampos/master-license
3 years ago
.github QA-334: Make the Raspbian URL auto-updateable 3 years ago
configs Fix "unbound variable" error when using `raspberrypi4_ubuntu_config`. 3 years ago
logs Use unique work directories when building with docker. 4 years ago
modules URL encode '+' characters in package names, or else we get Forbidden. 3 years ago
rootfs_overlay_demo MEN-2608: add mender-convert (version 2) 5 years ago
scripts Image-Bot - Image updates 3 years ago
tests Changelog:All: Bump tests/mender-image-tests from `47d6459` to `02b3578` 3 years ago
work Use unique work directories when building with docker. 4 years ago
.dockerignore Account for root ownership of overlay files. 4 years ago
.gitignore Use unique work directories when building with docker. 4 years ago
.gitlab-ci.yml Image-Bot - Image updates 3 years ago
.gitmodules [.gitmodules] Ignore untracked content 4 years ago
Dockerfile MEN-4462: Add a demo configuration config script 3 years ago
LICENSE Bump license year to 2022 3 years ago
LIC_FILES_CHKSUM.sha256 Bump license year to 2022 3 years ago
README.md Update IRC links to Libera. 3 years ago
docker-build Add conversion and publication stages for Raspbian images. 5 years ago
docker-entrypoint.sh Make sure artifacts are owned by same user as the launch directory. 5 years ago
docker-mender-convert Fix: Exit from the docker-mender-convert upon error 4 years ago
mender-convert Reformat: All files with shfmt 4 years ago
mender-convert-extract Format: mender-convert* files with shfmt 4 years ago
mender-convert-modify Modify `ln` calls for data store links to support successive runs 3 years ago
mender-convert-package testcfg: Optionally add mender-client-install as a yocto feature 4 years ago
requirements-deb.txt Add u-boot-tools to docker image. 5 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.

For a full list of tested devices and images please visit Mender Hub. If your device and image combination is not listed as supported, this does not necessarily mean that it will not work, it probably just means that no one has tested and reported it back and usually only small tweaks are necessary to get this running on your device.


Mender logo

Getting started

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

For more detailed information about mender-convert please visit the Debian family section in the Mender documentation.

Prepare image and configuration

Download the raw Raspberry Pi disk image into a subdirectory input:

mkdir -p input
cd input
wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-06-24/2019-06-20-raspbian-buster-lite.zip

Extract the raw Raspberry Pi disk image:

unzip 2019-06-20-raspbian-buster-lite.zip
INPUT_DISK_IMAGE=$(ls *raspbian-buster*.img)
cd ..

Bootstrap the demo rootfs overlay that is configured to connect to a Mender server with polling intervals set appropriately for demonstration purposes. There are three scripts here to support the Mender demo server, the Mender production server, and Mender Professional.

NOTE! Only run one of these three steps depending on the server type you are implementing.

Using the Mender demo server

./scripts/bootstrap-rootfs-overlay-demo-server.sh \
    --output-dir ${PWD}/rootfs_overlay_demo \
    --server-ip 192.168.1.1

Using the Mender production server

./scripts/bootstrap-rootfs-overlay-production-server.sh \
    --output-dir ${PWD}/rootfs_overlay_demo \
    --server-url https://foobar.mender.io \
    [ --server-cert ~/server.crt ]

Using Mender Professional

./scripts/bootstrap-rootfs-overlay-hosted-server.sh \
    --output-dir ${PWD}/rootfs_overlay_demo \
    --tenant-token "Paste token from Mender Professional"

Docker environment for mender-convert

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

You need to install Docker Engine to use this environment.

Build the mender-convert container image

Build a container with all required dependencies for mender-convert:

./docker-build

This will create a container image with the name mender-convert which you can use to run mender-convert without polluting your host environment with the necessary dependencies.

Use the mender-convert container image

Run mender-convert from inside the container with your desired options, e.g.

MENDER_ARTIFACT_NAME=release-1 ./docker-mender-convert \
   --disk-image input/$INPUT_DISK_IMAGE \
   --config configs/raspberrypi3_config \
   --overlay rootfs_overlay_demo/

Conversion will take 10-30 minutes, depending on image size and resources available. You can watch WORKDIR/convert.log for progress and diagnostics information.

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

Using mender-convert without Docker

In order to be able to manipulate and create filesystem and disk images, mender-convert has a few dependencies, and their version and name vary between Linux distributions. Here is an example of how to install the dependencies on a Debian based distribution:

sudo apt install $(cat requirements-deb.txt)

Start the conversion process with:

MENDER_ARTIFACT_NAME=release-1 ./mender-convert \
   --disk-image input/$INPUT_DISK_IMAGE \
   --config configs/raspberrypi3_config \
   --overlay rootfs_overlay_demo/

NOTE! You will be prompted to enter sudo password during the conversion process. This is required to be able to loopback mount images and for modifying them. Our recommendation is to use the provided Docker container, to run the tool in a isolated environment.


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

Authors

Mender was created by the team at Northern.tech AS, with many contributions from the community. Thanks everyone!

Mender is sponsored by Northern.tech AS.