simonvanderveldt / norns-image

5 stars 2 forks source link

Choose update tool #17

Open simonvanderveldt opened 4 years ago

simonvanderveldt commented 4 years ago

Suggested approach: A/B partitions, updater replace the one that's not in use, instructs bootloader to reboot and load the other partition next time.

Couple of options to look into:

Don't think the larger applications/frameworks like Mender are useful for our purposes.

A simple comparison can be found here https://wiki.yoctoproject.org/wiki/System_Update

simonvanderveldt commented 4 years ago

From https://pelux.io/software-factory/PELUX-2.0/chapters/architecture/SOTA-system.html

Fwup This self-contained tool offers a variety of functions useful in the context of critical embedded systems. It supports atomic updates (with A/B and recovery schemes) and rollback, digital signature, local and remote updates, potentially MCUs upgrade thanks to "file-resources" and it integrates well with Yocto. Unfortunately, it does not support fleet management in itself and needs to be combined with something else.

SWUpdate This tool is extremely flexible, it is even described by its developers as an update framework. It is fault resilient, supports atomic updates, fallback(with both A/B and Normal+recovery). it makes few assumptions regarding the base system, flashes entire compressed images, it can interface with complex fleet management systems such as Hawkbit, it guarantees integrity and authentication, offers APIs for GUI integration, is easily integrated to Yocto and can be extended with handlers to upgrade FPGAs, MCUs or other components and is well documented. SWUpdate meets the requirements of PELUX.

RAUC This solution is failsafe, atomic, can revert to a previous state, is flexible enough when it comes to partition layout, uses a bundle of images that can be downloaded from the network or from local media, interfaces with Hawkbit, has authentication and integrity mechanisms, offers a DBus API, integrates well with Yocto and can be extended to flash other components. RAUC is very similar to SWUpdate and also qualifies for the needs of PELUX.

simonvanderveldt commented 4 years ago

For fwup see https://github.com/nerves-project/nerves_system_rpi3/search?q=fwup, https://github.com/nerves-project/nerves_system_rpi3/blob/master/fwup.conf and https://github.com/fhunleth/bbb-buildroot-fwup/blob/master/board/raspberrypi/fwup-pingpong.conf