This is a proposed project for Google Summer of Code
Contacts (IRC & email):
Idea description: IoT devices need to be almost impossible to brick. When you upgrade a device if it doesn't work it needs to be able to automatically role back, or at the very least be able to contact the update service for a newer fixed version.
A daemon to manage this state is required. The daemon would need to be able to do the following: * Monitor the status of available downloads * Apply the Atomic update delta * Set a "boot once" flag to boot the new version via grub * Set a hardware watchdog * initiate a reboot of the system * If boot to normal userspace fails the watchdog triggers and it resets to the old version * If boot succeeds to the point the daemon starts up it then proceeds to phase two of the upgrade process * Unsets watchdog so the OS won't reset * Checks it can see all required network interfaces * Checks it can resolve addresses and contact the update server * Check it's connected to all other critical services (eg MQTT or a HTTPS API * Checks it can see and all sensors and services are running correctly
There needs to be a means of specifying what components are critical to the successful operation of the device. Some components will be the same across all types of device such as the ability to check network interfaces are operating, to check an update service is available, to check services are available etc but some might be plugins eg to check GPIO is working, specific IIO sensors, cameras or other such things are seen as expected.
What are we looking for: An initial daemon with basic functionality with good design that can be extended. Integration with atomic updates etc.
Notes & references:
posted. Thank you.
Metadata Update from @bex: - Issue status updated to: Closed (was: Open)
See also https://github.com/projectatomic/rpm-ostree/issues/177
@walters if we get a student do you think there's an appropriate mentor?
... think we have / can find an appropriate mentor...