Image based updates

Registered by Stéphane Graber

With Ubuntu getting ported to more and more mobile devices, the standard update mechanism through apt and dpkg is starting to show some limitations.

As a result, Ubuntu is now looking at supporting an additional way of updating devices that are based on read-only images. For those devices, we're looking at doing image based updates, basically generating new images on the server side with the usual tools (debootstrap, apt, dpkg), then generate deltas between those images and have the client pull the delta and apply it without ever actually dealing with packages.

We don't intend this to become the only way to update Ubuntu machines, and the use of apt/dpkg will remain supported with most devices having some kind of switch to opt out of image based updates and re-enable apt.

Blueprint information

Status:
Not started
Approver:
Steve Langasek
Priority:
High
Drafter:
Stéphane Graber
Direction:
Approved
Assignee:
Stéphane Graber
Definition:
Approved
Series goal:
Accepted for saucy
Implementation:
Unknown
Milestone target:
milestone icon ubuntu-13.08

Related branches

Sprints

Whiteboard

(?)

Work Items

Work items for ubuntu-13.05:
[stgraber] Request security team review of HTTPs, GPG usage and general architecture: DONE
[stgraber] Add list of sensible optional parameters that can be added to the update request (either user-agent or as query parameters): DONE
[ondrak] Prototype upgrader code: DONE
[stgraber] Prototype server code: DONE
[barry] Refactor http/https base urls: DONE
[barry] logging/debugging: DONE
[barry] implement GPG keyring regime: DONE
[barry] reading files from filesystem: DONE
[stgraber] Port image diff tool to python3-tarfile: DONE
[ogra] coordinate with the updates team (stgraber) to define layout and how it is stored in ubuntu touch devices and ubuntu touch on android: DONE

Work items for ubuntu-13.06:
[stgraber] Production update server in place: DONE
[stgraber] Publication of daily diff images: DONE
[ondrak] Integration of the upgrader in the current Ubuntu Touch images: DONE
[barry] LP: #1192574 - initiate reboot sequence: DONE
[barry] LP: #1193142 - Debian packaging for the client: DONE
[barry] LP: #1191150 - copy .tar.xz{,.asc} files to correct locations: DONE
[barry] LP: #1192586 - build version number in User-Agent: DONE

Work items for ubuntu-13.07:
[barry] LP: #1192585 Implementation of the client DBUS API (to be used by the updater UI): DONE
[gema] Figure out if there is any image system testing to do this cycle for this work: INPROGRESS

Work items for ubuntu-13.08:
Implementation of the updater UI: TODO
[barry] end-to-end testing through lxc containers: POSTPONED
[mpt] Design of the updater UI for system updates: TODO
[sergiusens] flashing from cdimage update zips to this system should preserve as much data as possible: INPROGRESS

Work items:
[stgraber] Look into dpkg's support of multiple status files (or multiple /var/lib/dpkg directories actually): TODO
[vorlon] investigate unionfs options with the constrained requirements for a system like this: TODO

Dependency tree

* Blueprints in grey have been implemented.