7. Ubuntu ranked as 2nd most used IoT OS by
Eclipse Foundation survey
8. Ubuntu is powering smart IoT
Smart drone
controllers
Advanced
robotics
Home gateways Industrial
gateways
Digital Signage
9. ≠
Ease of development
Certified platforms
Wealth of libraries
Security
Devops for IoT
MonetizationDevelopment Deployment
IOT Dev Deploy - prototype to production
10. Difficulties of Building a Platform Business
Security and OTA
maintenance
Devops
for IoT
Ecosystem
building
1 2 3
11. Snap - a universal Linux package format
Supported distros Example snaps / frameworks
14. Ubuntu Core: Ubuntu optimised for IoT operations
● For production
● Optimised for security
● Small footprint < 256 Mb RAM
● Read only OS / Kernel
● White label appstore
● Contained apps
● Signed apps
● Over the Air updates
● For development
● Optimised for flexibility
● Large footprint
● Read / Write OS & Kernel
● Manual installs
● Un-contained apps
● Unsigned apps
● Manual updates
● Same code, reliability and frequent patches updates
● Same choice of library (Qt, IoT, Robotics, Computer Vision)
● Same packaging system and development environment
15. What is Ubuntu Core?
A minimal version with the same bits as today’s Ubuntu
Ubuntu Core with transactional updates
Applications confined by technologies lead by Canonical
Safe, reliable, worry free updates with tests and rollback
Amazing developer experience with snapcraft
Easily extensible
Easily create app stores for all your devices
17. Applications are provided as snaps!
● The snap format is a compressed filesystem with a single
metadata file describing the security profile and desired
integration of the snap.
● That format is shared by everyone in the snap community,
regardless of their choice of store, authentication systems,
licensing or host Linux distribution.
● Decisions taken now by a Technical Oversight Board that
represents a range of communities and companies.
● Easy packaging system, Package it once and be in control of
the version delivery and the software stack
19. Legacy Ubuntu Core
Kernel
Kernel
Confined applications packages
as a snap with dependencies
Minimal OS packaged as snap
Clearly defined Kernel and device packaged as snap
OS packageApplication
B
Shared library Device driverApplicatio
n A
Legend:
Modular and simple architecture
20. Transactional updates
Ubuntu Core apps and Ubuntu Core itself can be
upgraded atomically and rolled back if needed.
Delta change is applied when updating from
different versions. Snaps can be easily
uninstalled (by deleting the snap package)
A bulletproof approach that is perfect for
deployments where predictability and reliability
are paramount. It’s called “transactional” or
“image-based” systems management
21. Transactional updates: Apps, OS and kernel
Original data
Writable area
Original snap
Upgrade
Modified data
during upgrade
Writable area
Updated snap
Original data
Writable area
Original data is kept
on device
Original snap
Original data
Writable area
Original snap
Rollback
on failure
22. All Snap Architecture
In a snappy system, all software beyond the
bootloader is distributed as a snap in this
same format.
● The OS snap contains the core operating
system.
● The kernel snap contains the kernel and
hardware-specific drivers.
● The gadget snap is device specific and is
used to configure a particular model of
device.
Ubuntu Core
Kernel 4.4
Confined applications packages
as a snap with dependencies
Minimal OS packaged as snap
Clearly defined Kernel and device packaged as snap
23. snapcraft.io
Developers from multiple Linux distributions and companies collaborate
on the “snap” universal Linux package format, enabling a single binary
package to work perfectly and securely on any Linux desktop, server,
cloud or device.
24. Snapcraft lets developers assemble their snap from existing
projects, leveraging different technologies.
Developer tools: Snapcraft
Project A Project B Project C ...
25. Snapcraft
pull
● Snapcraft supports several technologies through the
current plugins available.
● Snapcraft is extensible and new plugins to leverage existing
technologies can be developed.
● Java, Python, ROS, Go, Maven, QML, NodeJS, make,
kernel are just a few examples of the languages and
technologies that can be used.
● We can reuse deb packages from ubuntu
Developer tools: Snapcraft plugins