I'm wondering if this package exists, preferably in Python (well, I *know* it exists, as I wrote it for a commercial project, and can't use it any more. I'm hoping there's an Open Source version I can enhance for future use):
- bundle a .tar.gz (signed, optionally encrypted) for delivery to embedded platforms
- on platform, decrypt and unpack
- (bonus) able to stream the content from network through the decrypt and unpack stages
- verify unpacked archive (rules provided by the package)
- fixate the unpacked archive into a directory structure that allows for N installed versions (use hard-linking to duplicate files to reduce disk usage)
- run pre-install script from the archive
- (atomically) swap the new firmware in as current
- run post-install script from the archive
- provide back-off/retry, revert mechanisms
- provide for a "failsafe" firmware to which to revert on un-recoverable updates
The firmware would contain *everything* (as much as possible) to run on a base install, *including* the firmware upgrade software. It should be installed in such a manner that any "hooks" (/etc/ directories, cron jobs, etc) are pointing "into" the "current" version of the archive (i.e. there should not be any changes to the system outside the directory structures in the firmware other than to point "current" to the new firmware). Upgrade scripts would handle any external operations (creating new directories, running upgrade/downgrade scripts, etc).
Pingbacks are closed.