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

Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
drm1699
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Lisi Hocke
 

Recently uploaded (20)

Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
 
[GRCPP] Introduction to concepts (C++20)
[GRCPP] Introduction to concepts (C++20)[GRCPP] Introduction to concepts (C++20)
[GRCPP] Introduction to concepts (C++20)
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
 
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
 
Rapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and InsightsRapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and Insights
 
Abortion Clinic In Pongola ](+27832195400*)[ 🏥 Safe Abortion Pills In Pongola...
Abortion Clinic In Pongola ](+27832195400*)[ 🏥 Safe Abortion Pills In Pongola...Abortion Clinic In Pongola ](+27832195400*)[ 🏥 Safe Abortion Pills In Pongola...
Abortion Clinic In Pongola ](+27832195400*)[ 🏥 Safe Abortion Pills In Pongola...
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdf
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdf
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 

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