[Robust Auto-Update Controller]. Herramienta especializada para gestionar actualizaciones de software de forma segura y atómica en sistemas Linux embebidos. Es especialmente útil en dispositivos donde la fiabilidad es crítica como routers, sistemas IoT, dispositivos médicos, automoción... RAUC utiliza el concepto de particiones redundantes [A/B partitioning]: Tiene dos conjuntos idénticos de particiones, sistema A y sistema B, uno está activo, el que arranca actualmente, el otro está en standby y es donde se instala la actualización. Si la actualización falla, el sistema puede volver automáticamente a la versión anterior
Estructura Básica de Configuración
# nano /etc/rauc/system.conf
[system]
compatible=MiDispositivo-ModeloX
bootloader=uboot # o grub, efi, barebox, etc.
#
[slot.rootfs.0]
device=/dev/mmcblk0p2
type=ext4
bootname=system0
#
[slot.rootfs.1]
device=/dev/mmcblk0p3
type=ext4
bootname=system1
#
[slot.kernel.0]
device=/dev/mmcblk0p1
type=raw
parent=rootfs.0
#
[slot.kernel.1]
device=/dev/mmcblk0p4
type=raw
parent=rootfs.1
# rauc status
# rauc install /path/to/actualizacion-1.2.3.raucb
# rauc install --progress /path/to/actualizacion.raucb
Para crear Bundles de Actualización, primero se necesita crear un manifiesto
# nano manifest.raucm
[update]
compatible=MiDispositivo-ModeloX
version=1.2.3
[image.rootfs]
filename=rootfs.tar.gz
[image.kernel]
filename=zImage
# rauc bundle --cert=cert.pem --key=key.pem /directorio-con-manifiesto/ actualizacion-1.2.3.raucb
# rauc bundle --no-sign /directorio-con-manifiesto/ actualizacion.raucb
# rauc status mark-good
# rauc status mark-active other
# rauc verity slot rootfs.1
# rauc service
# rauc info actualizacion.raucb
# setenv BOOT_ORDER "system1 system0"