Keeping current with Embedded Linux on a Raspberry Pi 4
By Swetaa Suresh
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.
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:
3. Reboot the system and log back into the image
4. Unlock the image. To ensure your images are locked, run the following:
5. Install, update, or remove packages with DNF.
* To update, you need to explicitly update the cache to see changes in the package feeds immediately.
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
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
5. To output the image file itself, run the following script:
6. To run the snap, you can use this script:
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.
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.
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)
Introducing the Wind River Linux Binary Distribution
Yocto Project – It's not an embedded Linux distribution – it creates a custom one for you