← Back to team overview

ubuntu-phone team mailing list archive

system-image: Renumbering of all the images and some details about versioning and channels


Hello everyone,

TL&DR: If you're just a system-image user and haven't reflashed with
phablet-flash since Tuesday, you'll want to run "adb shell
system-image-cli -b 0" to get you to the latest image.

== System image version number change ==
Quite a few people who tried the system images reported being confused
by the way those were versioned as the main version number was of format
YYYYDDXX (with XX starting at 00 at the beginning of the month and
incrementing with each image).

In order to clear that confusion as well as give us more room to spare
for images (the version number is a 16bit unsigned integer so putting a
date in it was tricky and wasteful) we decided to reset all the channels
to version number "1" and simply increment it from there.

This happened on Tuesday and now both the daily and daily-proposed
channels are using these version numbers (current image is 3 current
proposed image is 4).

Anyone who's testing system image using phablet-flash shouldn't see a
different, "phablet-flash ubuntu-system" will keep on working as it used
However anyone who was already on the system images, will have to force
a full update to get from the old to the new numbering (as it's
essentially a version downgrade). To achieve this, simply run "adb shell
system-image-cli -b 0" and wait for your phone/tablet to grab a full
image from the server and flash it.

== Clarification on version number ==
One question I often get is why do we have a different version number
for the system images than for the "standard" flipped images.

Well, that's because system-image has been designed to be way more
clever about that whole image publishing business.

Basically your average system-image is made of 3 bits:
 - A device-independent Ubuntu rootfs
 - A device-dependent bundle (boot partition, recovery partition,
   firmware, android, kernel modules, ...)
 - A unique version number representing that set of files.

We'll also soon have special images that include OEM/carrier
customization bits which will lead to a 4th entry to be part of the

Each of those bits evolve on their own, each have their own version
numbers, some change daily, some don't, some are shared across devices,
some are shared across channels, some are shared across a carrier/OEM.
The system-image infrastructure knows about that and is designed never
to publish something that's bit for bit identical to something that's
already in the system.

As a result, build "4" for mako in daily may have:
 - Ubuntu: 20130902
 - Mako: 20130830
 - Custom: 20130903.1

And, build "4" for grouper in daily-proposed may have:
 - Ubuntu: 20130902
 - Grouper: 20130902
 - Custom: 20130904

You can never assume that the same version number for different
channel+device combination will contain the same thing.

The system-image version number exists so that the upgrader doesn't have
to be clever about this, it has one unique version number which is a
simple integer and needs to update to something that's higher than its
current value using the minimum amount of bandwidth and the minimum
amout of reboots.

All the code we have on the device is completely oblivious to what an
Ubuntu rootfs or Android even are. All it deals with is a series of
candidate image numbers each containing a bunch of files to download and
unpack. It finds those it needs, grabs them and gets the upgrader to
unpack them. We could perfectly re-architecture Ubuntu touch entirely or
even apply this to another operating system without having to do any
grand redesign of the system.

Anyway, to make things hopefully a bit simpler, we are now working to
change the various bits showing the system-image version number to
instead show an expanded one which should be easier for people to
understand. The format for the mako build above would be something like:
daily/mako/4 (ubuntu=20130902,mako=20130830,custom=2010903.1)

== daily-proposed update channel ==
A week or so ago, I introduced a new update channel called
"daily-proposed". This channel is only meant for automated testing and
isn't meant to be used by humans.

If you however choose to ignore this warning, note that this channel
gets rebased (version numbers are re-used) every time a new image is
published. As a result, the only way to consistently use it is to run
"phablet-flash ubuntu-system --channel=daily-proposed" every single time
a new image is proposed (at least twice a day).

There are plans to make this channel slightly more useful for
developers, but that's going to come in the next few weeks. For now,
please try to stay away from it (unless you're running the automated
testing infrastructure obviously).

I realize all this may be hard for people to wrap their head around,
it's arguably complex but it's also flexible and I believe the right way
of dealing with the plethora of devices, channels, providers, ... that
we'll need to support.

Should you have any specific questions or suggestions, please don't
hesitate to contact me!

Stéphane Graber
Ubuntu developer

Attachment: signature.asc
Description: Digital signature

Follow ups