← Back to team overview

ubuntu-phone team mailing list archive

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


On Wed, Sep 04, 2013 at 11:06:10PM -0400, Stéphane Graber wrote:
> 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.

If that command fails, it's most likely because you didn't update your
device between Friday and Tuesday. In such case, you'll need to use
phablet-flash to get the latest build on it with
"phablet-flash ubuntu-system".

> == 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
> to.
> 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
> image.
> 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
> http://www.ubuntu.com

Attachment: signature.asc
Description: Digital signature