Client
|
Size: 1849
Comment:
|
Size: 1862
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| == Client side == === Introduction === |
= Client side = == Introduction == |
| Line 5: | Line 5: |
| === Requirements === | == Requirements == |
| Line 7: | Line 7: |
| * Support for everything described in the GPG spec (revocation list, multiple keyrings, ...) | * Support for everything described in the [[ImageBasedUpgrades/GPG|GPG]] spec (revocation list, multiple keyrings, ...) |
| Line 13: | Line 13: |
| === Nice to have === | == Nice to have == |
| Line 16: | Line 16: |
| === Implementation === | == Implementation == |
| Line 19: | Line 19: |
| === Step-by-step example for an update === | == Step-by-step example for an update == |
| Line 34: | Line 34: |
| === Code === | == Code == |
Client side
Introduction
The client tool is used to calclate the update, download the files, validate them and then set the needed flags for the upgrader to pick them up and apply.
Requirements
- Secure download of the indexes (HTTPs + GPG)
Support for everything described in the GPG spec (revocation list, multiple keyrings, ...)
- Resolution of the best upgrade path based on different policies (total download size, least number of reboots, ...)
- Download and validation of the files
- Flexible implementation to allow different upgrader setups with minimal changes required
- Support for suspend/resume of downloads
Nice to have
- Bandwidth limiting is a nice to have and might be tricky to implement.
Implementation
The current implementation is a command line tool, however it's expected to be turned into a DBus service that the Touch UI can drive.
Step-by-step example for an update
Whenever called the client does the following:
Grab http://server/channels.json and lookup the index for the current channel. If present, also grab the device GPG keyring.
- Read the current version number of the device (ubuntu-build file)
- Look for the most recent version available
- Resolve an upgrade path to it, minimizing download size and number of reboots
- Download any file needed up until the next reboot
- Validate all the files
- Write them to the cache partition
- Write the list of updates for the upgrader to use
- Reboot into the upgrader
Those steps don't include all of the specific GPG validation bits required to ensure the authenticity of all files. Those are detailed in the separate GPG wiki page.
Code
ImageBasedUpgrades/Client (last edited 2016-10-31 14:09:03 by localhost)