Jan 23, 2023 Linux

Keeping current with Embedded Linux on a Raspberry Pi 4

By Swetaa Suresh

Introduction

Embedded systems are designed to run for long periods of time without needing to be updated, while for those connected as part of the intelligent edge, updates may be applied on a regular basis. One example of a use case for updating images on embedded systems might be a manufacturer of embedded Linux-based devices, such as IoT devices or home automation systems. In this case, the manufacturer might release regular updates to the operating system and applications running on the devices in order to improve performance, add new features, or fix any security vulnerabilities that are discovered. The manufacturer might provide a mechanism for customers to easily apply these updates to their devices or might include the updates as part of the manufacturing process for new devices. To do this, it is important to choose an operating system that fits the requirements. Purchasing a commercially supported embedded operating system can be more cost efficient in comparison to hiring developers to build and maintain as an OS of your own.

Ubuntu Core is a version of the Ubuntu Linux operating system that has been designed for use in IoT (Internet of Things) devices and other embedded systems. It is a lightweight, minimalist version of Ubuntu that includes only the essential components and services needed to run an IoT device, making it highly secure and efficient. Ubuntu Core includes a range of security and management features and provides customizations through ‘snaps’, a proprietary technology used for software packaging and system deployment – which are compressed applications for your system container. It is a popular choice for developers due to its versatility, security, and ease of use.

Wind River Linux is a commercial Linux-based operating system designed for use in embedded systems, such as those found in networking equipment, industrial control systems, and aerospace and defense technology. Wind River Linux Distro is a binary distribution built using the market leading Wind River Linux, based on the popular community driven Yocto Project and includes support for Raspberry Pi 4s. Installing system updates for the Distro requires OSTree,  an open-source technology for managing the deployment and updates of operating system files. It is a tool for creating, deploying, and managing the lifecycle of operating system trees, which are collections of files that make up the operating system. OSTree allows multiple versions of an operating system tree to be stored and managed, and enables atomic, transactional updates of the operating system. It is used by several Linux-based operating systems.

Objective

To determine which platform is easier to maintain after deployment, I am going to compare updating images on both Wind River Linux Distro and Ubuntu Core on a Raspberry Pi 4.  I will customize the image and update packages to highlight the experiences of using both platforms.

Equipment & Programs Used

Raspberry Pi Imager Raspberry Pi OS – Raspberry Pi - this is used to flash the image onto your storage (SD card)

Raspberry Pi 4 (RPi4)

Micro HDMI port

64 GB Micro SD card

USB-C Power Supply

Updating the Wind River Linux Distro Image

1.    Ensure that the Wind River Linux Distro binary image is up and running and you are logged in as root.

2.     Run the OSTree upgrade wrapper script to upgrade the system. Run the command:

rpi1

3.      Reboot the system and log back into the image

rpi2

4.     Unlock the image. To ensure your images are locked, run the following:

rpi3-1

5.     Install, update, or remove packages with DNF.

rpi4

rpi5

rpi6

* To update, you need to explicitly update the cache to see changes in the package feeds immediately.

rpi7

Updating the Ubuntu Core Image

1.     The first step to updating an Ubuntu Core image is using a model assertion. The input is often provided in a JSON format.

2.     To setup the assertion, snapcraft needs to be installed and logged into

rpi8-2

3.     A developer ID needs to be used to create the model assertion

4.     To get started, an image needs to be installed on a snap-supporting Linux System

rpi14

5.     To output the image file itself, run the following script:

rpi10

6.     To run the snap, you can use this script:

rpi12

Comparison

Wind River Linux and Ubuntu Core are both Linux-based operating systems designed for embedded systems, such as those found in networking equipment, industrial control systems, and IoT devices. Both operating systems offer a range of features and capabilities suitable for these types of applications, such as real-time performance and advanced security and reliability features.

One key difference is that Wind River Linux is designed to be highly configurable, with a customizable kernel and a range of options for configuring the operating system to meet specific needs. In contrast, Ubuntu Core uses a Snap Store to add and install packages with ease. It is focused on simplicity and security, with a minimalist design and a range of features to ensure that the operating system and the applications running on it are always up to date and secure. This affects the specific tools and processes used to update images on the two operating systems. For example, Wind River Linux includes more advanced tools for managing and deploying operating system images, while Ubuntu Core may focus on providing a secure and easy-to-use system for applying updates.

Another difference is that Wind River Linux Distro is a commercial operating system developed by Wind River Systems, while Ubuntu Core is a version of the popular Ubuntu Linux distribution developed by Canonical. This means that the tools and processes for creating and deploying new images on Wind River Linux Distro may be slightly different from those on Ubuntu Core. Wind River Linux focuses on providing tools and services for commercial users, while Ubuntu Core may include tools for collaborating on and sharing operating system images with a public community.

Displays feature comparison between Wind River Linux Distro and Ubuntu Core

Overall, both Wind River Linux and Ubuntu Core are viable options for use in embedded systems, but the specific features and capabilities of each may make one a better choice for certain types of applications and environments. If customizability and long-term support are important, Wind River Linux Distro is the right choice. Ubuntu Core, on the other hand, is a good choice if simplicity and minimal risks are required. It is important to carefully evaluate the specific needs and requirements of a project before deciding which operating system to use.

About Swetaa Suresh

Swetaa Suresh is a Product Go-to-Market Intern at Wind River, where she helps to curate launch plans, conduct market research, and create competitive analyses for the Marketing and Sales Team. She is pursuing her bachelor's degree in Management Engineering at the University of Waterloo. She is passionate about the intersection of tech and business.

Sources

Getting started with Embedded Linux on a Raspberry Pi 4 (windriver.com)

What Is a Linux Distro, and How Are They Different from One Another? (howtogeek.com)

Ubuntu Core | Ubuntu

Image building | Ubuntu

Introducing the Wind River Linux Binary Distribution

Yocto Project – It's not an embedded Linux distribution – it creates a custom one for you

Previous Full System Simulator: How DevSecOps Professionals Are Saving up to 90% of Their Testing Time
Next Airbus A3R completes certification with support from Wind River safety-critical multi-core platform