Self-Update

  • Requirement to never have to visit device due to software bugs and failures

  •  

    • Including due to power failure during flashing of base image

    • Either fall back to old image or be able to do another update

  • Dual partition boot (IMGA/IMGB)

  •  

    • grub patches for gpt priority boot

    • Additional partitions for identity (CONFIG) and app instances (PERSIST)

  • Policies and timers for fallback vs. commit to new

  •  

    • “Test” that new base image can connect to EVC etc

    • Deployed app instances are not tested as part of this

  • Using hardware watchdog plus Linux watchdog to detect hangs and core dumps and reboot

  • Been using this approach in dev for 12 months without bricking a device