SlideShare a Scribd company logo
1 of 25
Download to read offline
Comparing
Linux OS Image Update
Models
Presented by
Drew Moseley
Technical Solutions Architect
Toradex
WITH YOU TODAY…
WE’RE LOCATEDIN LUCERNE, SWITZERLAND
Drew Moseley
Technical Solutions Architect
Toradex
WHAT WE’LL
COVER TODAY…
• Introduction to OTA models
- Dual A-B
- OSTree
• Introduction to OTA systems (Mender, SWUpdate,
RAUC, Torizon)
• Description of binary delta implementations
• Benchmarking common upgrade use cases
AGENDA
Simplifying the Development and
Operation of Linux IoT Devices
A B Data
Bootloader
DUAL PARTITION
WHAT IS libostree?
"libostree is both a shared library and suite of command line tools
that combines a “git-like” model for committing and downloading
bootable filesystem trees, along with a layer for deploying them and
managing the bootloader configuration." 1
"git-like"
model
bootable
filesystem
trees
Bootloader
configuratio
n
1 https://github.com/ostreedev/ostree#libostree
OSTree BASICS
• File-based (!)
• Relies on non-root mount/“bind-mount”
- Normally the root of a file system is mounted as “the root”
- Linux allows to bind mount a subdirectory
• Initramfs mounts OSTree
- Pivot into bind mount/sub-directory
• Hardlinks are used to speed-up deployment and
minimize space usage
Source: https://medium.com/@1154_75881/what-is-the-difference-between-a-hard-link-and-a-symbolic-link-14db61df7707
Libostree FILESYSTEM LAYOUT
(SIMPLIFIED)
• Dual A-B plus persistent data partition
• Hosted or on-prem server
• Standalone deployments
- Used for benchmarks
• Binary deltas using xdelta compression tool
- Part of the commercial offering
- Read-only unmodified partitions required
- Default tuning values used for benchmarks
Mender
RAUC
• Dual A-B plus persistent data partition
• Compatible with Hawkbit deployment server
• Standalone deployments
- Used for benchmarks
• casync for adaptive updates
- “Content-addressable data synchronization tool’
- Can be used on UBI
- Verity bundle format used for benchmarks
- Read-only not required
• Block-based adaptive updates
- 4kiB blocks hashed using SHA256
- Read-only not required
SWUpdate
• Dual A-B plus persistent data partition
• Asymmetric updates supported
- Not part of the benchmark
• Compatible with Hawkbit deployment server
• On-device web UI for deployments
- Used for benchmarks
• Zchunk algorithm used for adaptive updates
- “A file format designed for highly efficient deltas while
maintaining good compression”
- Read-only not required
TORIZON
• Single partition managed with libostree
• Torizon cloud deployment server (uptane compliant)
- Local deployment using treehub is possible
• Read-only required for libostree-managed
components
- /var is completely unmanaged
- /etc is partially managed (3-way merge)
• Adaptive updates: only new or modified objects need
to be downloaded
• Additional size reduction using “OStree static deltas”
- Per object binary deltas
- Significantly reduces the number of HTTP GET
requests
HARDWARE
• Toradex Verdin i.MX8M Mini
• Ixora carrier board
• Block based eMMC storage
• Local area network (GbE) for local/standalone deployments
• Torizon Cloud used for Torizon deployments
• Toradex Easy Installer image used for initial board installation
METHODOLOGY
• Start with standard Torizon repo manifest,
Distro, etc
- Approximately 350MB
• Hack it to allow disabling of OStree
• Add layers for update systems and chromium
• Implement verdin-imx8mm support on
SWUpdate and RAUC
• Build the torizon-minimal image
• Trigger the update
• Use tcpdump and Wireshark to measure the
conversation size
• Overriding Goal: minimize
differences between the setups
UPGRADE SCENARIOS
1. Initial install from Torizon v6.2.0 repo manifest using
Toradex Easy Installer – no update
2. One byte change in /etc (plus
MENDER_ARTIFACT_NAME) - full image update
3. One byte change in /etc (plus
MENDER_ARTIFACT_NAME) - delta update(s)
4. Install chromium v100.0.4896.88 - delta update(s)
5. Upgrade chromium to v101.0.4951.54 - delta update(s)
6. Uninstall chromium – delta update(s)
7. Upgrade to Torizon v6.5.0 repo manifest – delta update(s)
One byte change in /etc (plus MENDER_ARTIFACT_NAME) - full image update
One byte change in /etc (plus MENDER_ARTIFACT_NAME) - delta update(s)
Install chromium v100.0.4896.88 - delta update(s)
Upgrade chromium to v101.0.4951.54 - delta update(s)
Uninstall chromium – delta update(s)
Upgrade to Torizon v6.5.0 repo manifest – delta update(s)
AGGREGATE DATA
NEXT STEPS
• Clean up and submit board support (?)
• Setup a Kas configuration for repeatability
• Blog write up – including update times
• Google Summer of Code projects for
Uptane enhancements
• Other interesting update scenarios
Contact me:
drew.moseley@toradex.com
https://www.linkedin.com/in/drewmoseley/
https://twitter.com/drewmoseley
Q&A
THANK YOU
FOR YOUR INTEREST
www.toradex.com | www.torizon.io | developer.toradex.com
community.toradex.com | labs.toradex.com

More Related Content

Similar to Comparing Linux OS Image Update Models - EOSS 2024.pdf

Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
Kubernetes @ meetic
Kubernetes @ meeticKubernetes @ meetic
Kubernetes @ meetic
Sébastien Le Gall
 

Similar to Comparing Linux OS Image Update Models - EOSS 2024.pdf (20)

Immutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdfImmutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdf
 
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
 
The Art of Sitecore Upgrades
The Art of Sitecore UpgradesThe Art of Sitecore Upgrades
The Art of Sitecore Upgrades
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
 
DR_PRESENT 1
DR_PRESENT 1DR_PRESENT 1
DR_PRESENT 1
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
 
Navigating the Container Orchestration Maze
Navigating the Container Orchestration MazeNavigating the Container Orchestration Maze
Navigating the Container Orchestration Maze
 
Containers and Docker
Containers and DockerContainers and Docker
Containers and Docker
 
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsOpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
 
Patterns
Patterns Patterns
Patterns
 
Kubernetes @ meetic
Kubernetes @ meeticKubernetes @ meetic
Kubernetes @ meetic
 
Demystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data ScientistsDemystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data Scientists
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
10052016115118 (2).pptx
10052016115118 (2).pptx10052016115118 (2).pptx
10052016115118 (2).pptx
 
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
 
.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2
 
Dockerization of Azure Platform
Dockerization of Azure PlatformDockerization of Azure Platform
Dockerization of Azure Platform
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014
 

Recently uploaded

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Recently uploaded (20)

WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid Environments
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
 
Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 

Comparing Linux OS Image Update Models - EOSS 2024.pdf

  • 1. Comparing Linux OS Image Update Models Presented by Drew Moseley Technical Solutions Architect Toradex
  • 2. WITH YOU TODAY… WE’RE LOCATEDIN LUCERNE, SWITZERLAND Drew Moseley Technical Solutions Architect Toradex
  • 3. WHAT WE’LL COVER TODAY… • Introduction to OTA models - Dual A-B - OSTree • Introduction to OTA systems (Mender, SWUpdate, RAUC, Torizon) • Description of binary delta implementations • Benchmarking common upgrade use cases AGENDA
  • 4. Simplifying the Development and Operation of Linux IoT Devices
  • 6. WHAT IS libostree? "libostree is both a shared library and suite of command line tools that combines a “git-like” model for committing and downloading bootable filesystem trees, along with a layer for deploying them and managing the bootloader configuration." 1 "git-like" model bootable filesystem trees Bootloader configuratio n 1 https://github.com/ostreedev/ostree#libostree
  • 7. OSTree BASICS • File-based (!) • Relies on non-root mount/“bind-mount” - Normally the root of a file system is mounted as “the root” - Linux allows to bind mount a subdirectory • Initramfs mounts OSTree - Pivot into bind mount/sub-directory • Hardlinks are used to speed-up deployment and minimize space usage Source: https://medium.com/@1154_75881/what-is-the-difference-between-a-hard-link-and-a-symbolic-link-14db61df7707
  • 9. • Dual A-B plus persistent data partition • Hosted or on-prem server • Standalone deployments - Used for benchmarks • Binary deltas using xdelta compression tool - Part of the commercial offering - Read-only unmodified partitions required - Default tuning values used for benchmarks Mender
  • 10. RAUC • Dual A-B plus persistent data partition • Compatible with Hawkbit deployment server • Standalone deployments - Used for benchmarks • casync for adaptive updates - “Content-addressable data synchronization tool’ - Can be used on UBI - Verity bundle format used for benchmarks - Read-only not required • Block-based adaptive updates - 4kiB blocks hashed using SHA256 - Read-only not required
  • 11. SWUpdate • Dual A-B plus persistent data partition • Asymmetric updates supported - Not part of the benchmark • Compatible with Hawkbit deployment server • On-device web UI for deployments - Used for benchmarks • Zchunk algorithm used for adaptive updates - “A file format designed for highly efficient deltas while maintaining good compression” - Read-only not required
  • 12. TORIZON • Single partition managed with libostree • Torizon cloud deployment server (uptane compliant) - Local deployment using treehub is possible • Read-only required for libostree-managed components - /var is completely unmanaged - /etc is partially managed (3-way merge) • Adaptive updates: only new or modified objects need to be downloaded • Additional size reduction using “OStree static deltas” - Per object binary deltas - Significantly reduces the number of HTTP GET requests
  • 13. HARDWARE • Toradex Verdin i.MX8M Mini • Ixora carrier board • Block based eMMC storage • Local area network (GbE) for local/standalone deployments • Torizon Cloud used for Torizon deployments • Toradex Easy Installer image used for initial board installation
  • 14. METHODOLOGY • Start with standard Torizon repo manifest, Distro, etc - Approximately 350MB • Hack it to allow disabling of OStree • Add layers for update systems and chromium • Implement verdin-imx8mm support on SWUpdate and RAUC • Build the torizon-minimal image • Trigger the update • Use tcpdump and Wireshark to measure the conversation size • Overriding Goal: minimize differences between the setups
  • 15. UPGRADE SCENARIOS 1. Initial install from Torizon v6.2.0 repo manifest using Toradex Easy Installer – no update 2. One byte change in /etc (plus MENDER_ARTIFACT_NAME) - full image update 3. One byte change in /etc (plus MENDER_ARTIFACT_NAME) - delta update(s) 4. Install chromium v100.0.4896.88 - delta update(s) 5. Upgrade chromium to v101.0.4951.54 - delta update(s) 6. Uninstall chromium – delta update(s) 7. Upgrade to Torizon v6.5.0 repo manifest – delta update(s)
  • 16. One byte change in /etc (plus MENDER_ARTIFACT_NAME) - full image update
  • 17. One byte change in /etc (plus MENDER_ARTIFACT_NAME) - delta update(s)
  • 18. Install chromium v100.0.4896.88 - delta update(s)
  • 19. Upgrade chromium to v101.0.4951.54 - delta update(s)
  • 20. Uninstall chromium – delta update(s)
  • 21. Upgrade to Torizon v6.5.0 repo manifest – delta update(s)
  • 23. NEXT STEPS • Clean up and submit board support (?) • Setup a Kas configuration for repeatability • Blog write up – including update times • Google Summer of Code projects for Uptane enhancements • Other interesting update scenarios Contact me: drew.moseley@toradex.com https://www.linkedin.com/in/drewmoseley/ https://twitter.com/drewmoseley
  • 24. Q&A
  • 25. THANK YOU FOR YOUR INTEREST www.toradex.com | www.torizon.io | developer.toradex.com community.toradex.com | labs.toradex.com