Skip to main content

Updating Embedded Linux System Images: Wind River Linux vs Ubuntu Core

·1027 words·5 mins
Embedded Linux Linux System Image Update Wind River Linux
Table of Contents

Embedded systems are typically designed to run for long periods with minimal changes — but devices connected at the edge (IoT, home automation, etc.) often need regular image and application updates. Device makers publish OS and app updates to add features, improve performance, and patch security issues. Picking an OS and update workflow that fits your product lifecycle is therefore critical.

Buying a commercially supported embedded Linux distribution is often more cost-effective than hiring an in-house team to build and maintain a bespoke OS. Below we compare two common approaches to embedded image updates: Wind River Linux Distro (OSTree-based) and Ubuntu Core (snap-based).

Why Embedded Systems Need Image Updates
#

Even though embedded systems aim for stable, long-term operation, real-world deployments often require updates to:

  • Patch security vulnerabilities
  • Deliver new features or bug fixes
  • Improve performance or add drivers for new hardware
  • Replace or update third-party packages

Manufacturers usually provide update tooling or integrate update steps into production imaging. Choosing an OS with the right update model — atomic, rollback-capable, secure signing, and easy OTA delivery — reduces maintenance overhead.

Overview: Wind River Linux and Ubuntu Core
#

Wind River Linux
#

  • A commercial embedded Linux distribution built from Yocto Project sources.
  • Focused on high customization, real-time features, and long-term support for industrial, networking, aerospace, and defense use cases.
  • Uses OSTree for managing OS trees and atomic updates (OS file trees are versioned and can be deployed/rolled back).

Ubuntu Core
#

  • A minimal, containerized flavor of Ubuntu built for IoT and embedded devices.
  • Uses snaps (packaged, transactional apps) and the snap store for secure, transactional updates of applications and system parts.
  • Designed for simplicity, security, and automatic update delivery.

Ubuntu Core

Both are solid choices — Wind River for maximum customization and enterprise support; Ubuntu Core for simplicity, secure app packaging, and a ready ecosystem.

Hardware & Tools Used for Testing
#

Typical devices and tools used when creating/updating embedded images:

  • Raspberry Pi 4 (example target hardware)
  • Raspberry Pi Imager or equivalent to write images to SD cards (64 GB recommended)
  • Micro HDMI, USB-C power supply, console/keyboard or SSH access
  • For Wind River: OSTree tooling and distribution-specific wrappers
  • For Ubuntu Core: snapcraft, ubuntu-image, developer account for model assertions

Raspberry Pi 4

Updating Wind River Linux Distro (OSTree)
#

Wind River Linux Distro commonly uses OSTree for image management. OSTree provides versioned OS trees and supports atomic upgrades and rollbacks.

Typical steps to update an OSTree-based Wind River image (performed as root on the device):

  1. Make sure the device is running the Wind River binary image and that you’re logged in as root.

  2. Run the vendor-provided OSTree upgrade wrapper script:

$ ostree_upgrade.sh
  1. Reboot the device to apply the new deployment:
$ reboot
  1. If you need to unlock the image for hotfix changes or custom updates, run:
$ ostree admin unlock -hotfix
  1. Use the system package manager (DNF on many Wind River builds) to install, remove, or update packages:
$ dnf install packageName
$ dnf remove packageName
$ dnf update
$ dnf upgrade packageName   # refresh cache and upgrade the specific package

Notes & best practices

  • OSTree stores multiple deployments. If an update fails you can boot the previous OSTree deployment.
  • Use signed OSTree commits and a secure update server to verify authenticity.
  • For production devices, prefer vendor-supplied update scripts or an OTA management solution that integrates with OSTree.

Updating Ubuntu Core Images (snap / ubuntu-image)
#

Ubuntu Core uses snaps and ubuntu-image to build and deploy device images. Updates are typically delivered as snap revisions from the Snap Store and can be constrained/controlled with model assertions.

Key steps for creating/updating an Ubuntu Core image:

  1. Prepare a model assertion (JSON) that describes the device model and constraints. This assertion is used to bind snaps and image contents to a device model.

  2. Install snapcraft and sign in (developer account required to create model assertions).

  3. Build the image using ubuntu-image. Example:

$ ubuntu-image snap ubuntu-core-20-amd64.model

This produces a device image you can flash to media.

  1. Flash the image to target storage (e.g., using Raspberry Pi Imager or dd) and boot the device.

  2. App updates and system snaps are managed through the snap mechanism; snaps are updated transactionally by the snapd agent and can be rolled back if needed.

Notes & best practices

  • Ubuntu Core’s transactional model means app updates do not corrupt system state.
  • Model assertions and store-signed snaps improve security and control over which snaps can run on which device models.
  • For OTA updates, integrate with snap store channels (stable, candidate, beta) to control rollout.

Feature Comparison & Considerations
#

Customization

  • Wind River Linux: Highly customizable kernel and rootfs (Yocto-based). Good for specialized, regulated, or real-time systems.
  • Ubuntu Core: Less low-level customization; focused on snap-based apps and ease of use.

Update Model

  • Wind River (OSTree): Atomic OS image updates, versioned deployments, and rollbacks. Strong for full-image updates and fine-grained package management (DNF).
  • Ubuntu Core (snaps): Transactional app and system part updates through snaps; simpler developer experience for app-centric devices.

Security

  • Both platforms support signed updates. Ubuntu Core benefits from the snap store’s distribution/security model; Wind River often integrates enterprise signing and device provisioning flows.

Storage & Footprint

  • Ubuntu Core is minimal by design; Wind River’s footprint depends on how you build the image.

Ecosystem & Support

  • Wind River: Commercial support and long-term maintenance contracts suited to industry customers.
  • Ubuntu Core: Canonical ecosystem, broad community, and snap tooling; good for quicker time-to-market.

When to choose what

  • Choose Wind River if you need deep kernel/customization, real-time features, or enterprise-grade commercial support.
  • Choose Ubuntu Core if you prefer simple, secure app deployment with transactional updates and a managed store ecosystem.

Recommendations & Conclusion
#

  • Define your update requirements first: atomic updates, rollback, bandwidth constraints, security signing, and OTA management.
  • If your product demands deep kernel changes, special optimizations, or industry certifications, Wind River Linux (OSTree/Yocto) is a strong choice.
  • If you want a minimal, secure platform with easy app delivery and snap-based packaging, Ubuntu Core is attractive.
  • Commercial support is often cheaper than building and maintaining an in-house OS team when you factor long-term maintenance, security, and compliance.

Both systems are capable; the right pick depends on your product needs (customization vs. simplicity), support model, and maintenance plan.

Related

600 Essential Linux Commands for Developers and Sysadmins
·1004 words·5 mins
Linux Linux Commands Sysadmin DevOps Server Management
Using the envsubst Command to Replace Environment Variables
·393 words·2 mins
Envsubst Linux Shell Script Environment Variables
How to Monitor Thread Count for Each Microservice in Linux
·502 words·3 mins
Linux CPU Thread Top Microservices Monitoring