Skip to content

gavinschenk/rauc

 
 

Repository files navigation

rauc - Robust Auto-Update Controller

LGPLv2.1 Travis branch Coveralls branch Coverity Documentation

rauc controls the update process on embedded linux systems

Source Code: https://github.com/jluebbe/rauc

Documentation: https://rauc.readthedocs.org/

Features

  • Supports whole-system updates using at least two redundant installations
    • Symmetric: Root-FS A & Root-FS B
    • Asymmetric: recovery & normal
    • Also supports custom partition layouts
  • Fail-Safe: no change to the running system
  • Two update modes:
    • Bundle: single file containing the whole update
    • Network: separate manifest and component files
  • Bootloader support:
  • Storage support:
  • Network protocol support using libcurl (https, http, ftp, ssh, ...)
  • Cryptographic verification using OpenSSL (signatures based on x.509 certificates)

Requirements

  • Boot state storage
    • grub environment file on SD/eMMC/SSD/disk
    • State partition on EEPROM/FRAM/MRAM or NAND flash
    • ...
  • Boot target selection support in the bootloader
  • Enough mass storage for two symmetric/asymmetric/custom slots
  • For bundle mode:
    • Enough storage for the compressed bundle file (in memory, in a temporary partition or on an external storage device)
  • For network mode:
    • No additional storage needed
    • Network interface
  • Hardware watchdog (optional, but recommended)
  • RTC (optional, but recommended)

Host features

  • Create update bundles
  • Sign/resign bundles
  • Inspect bundle files

Target Features

  • Run as a system service (d-bus interface)
  • Install bundles
  • View system status information
  • Change status of symmetric/asymmetric/custom slots

Usage

Please see the documentation for details.

Building from sources

git clone https://github.com/jluebbe/rauc
cd rauc
./autogen.sh
./configure
make

Testing

sudo apt-get install user-mode-linux slirp
make check
./uml-test

Creating a bundle

mkdir content-dir/
cp $SOURCE/rootfs.ext4.img content-dir/
cat >> content-dir/manifest << EOF
[update]
compatible=FooCorp Super BarBazzer
version=2015.04-1
[image.rootfs]
sha256=de2f256064a0af797747c2b97505dc0b9f3df0de4f489eac731c23ae9ca9cc31
size=24117248
filename=rootfs.ext4.img
EOF
rauc --cert autobuilder.cert.pem --key autobuilder.key.pem bundle content-dir/ update-2015.04-1.raucb

Installing a bundle

rauc install update-2015.04-1.raucb

Contributing

Fork the repository and send us a pull request.

About

Robust Auto-Update Controller

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 66.8%
  • M4 19.1%
  • Shell 12.9%
  • Makefile 1.2%