Updates to snappy and ubuntu-device-flash

20 April 2015

The past few weeks in the snappy world have been a revolt, better said a rapid evolution for it to be closer to what we wanted it to be.

Some things have change, if you are tracking the bleeding edge you will notice a couple of changes, the store for example now exposes packages depending on the OS release, and system images are now built against an OS release as well. For core images we have two choices:

  • 15.04
  • rolling

15.04 will be nicely locked down and guarantee stability while rolling will just roll on and you will see it stumble over (although it shouldn’t break badly, APIs are what we will try and aspire to keep in the breaking zone). Try is a strong word, which is why channels are being used; the core images have the concept of channel which can be:

  • stable
  • rc
  • beta
  • alpha
  • edge

Today, as of this writing, we are supporting edge and alpha for each OS release and as soon as we release we will have a stable channel enabled. Store support for channels is coming to a future near you which means that eventually packages can track different channels.

Another addition is a new snap type called oem, this snappy package allows OEMs to enable devices and boards with a degree of customization such as:

  • preinstalled unremovable or removable packages
  • default configurations for preinstalled packages and ubuntu-core
  • lock down configurations.
  • custom DTBs
  • boot files (e.g.; u-boot, uEnv.txt)

This package, uploaded to the store allows people to create custom enablements to support their product stories. This package’s capabilities can grow in the future to support some other niceties.

If you happen to use the development ppa for snappy ppa:snappy-dev/tools you should be seeing a new ubuntu-device-flash in the updates which supports most of this syntax and retires early enablement work.

So in order to create a default image for the Beagle Bone Black you would do:

sudo ubuntu-device-flash core 15.04 --channel edge --oem beagleblack --output bbb.img

To create an generic amd64 image

sudo ubuntu-device-flash core 15.04 --channel edge --output x86.img

15.04 could be replaced with rolling and today the default channel is edge but will be stable as soon as we have something in there :-)

Keep in mind now that 15.04 and rolling will return different store search results depending on what the developer has targetted.

Installing local oem snaps passing in --oem forces you to setup --developer-mode if the package is not signed by the store.

Last but not least, the flashassets entry from device tarballs used to enable new devices are now ignored in favor of using the information from the oem snappy package, this means that if you have a port you will need to move it over to the oem packaging.