Getting started with Embedded Linux on a Raspberry Pi 4
Introduction
Embedded software developers are always looking for reliable platforms (hardware and operating system) on which to develop new applications and projects. When it comes to hardware selection, Raspberry Pi can be a compelling choice for many reasons. They provide great beginner-friendly pathways into embedded computing as they are inexpensive and versatile in their usage. It allows developers to not only build applications but also full-on engineering projects such as product prototypes. With the proliferation of the intelligent edge, hardware resource limitations can contrast with the increased demand for network connectivity, graphics, and AI/ML capabilities and achieving the shortest boot time. When considering which operating system (OS) to use with Raspberry Pi computers, the default choice would be Raspberry Pi OS (aka “Raspbian”) which comes with the board itself. This OS is based on Debian GNU/Linux which is just one of the many Linux distributions that you can boot into your device.
It’s important to choose an operating system that suits your developmental needs as each OS provides specific resources and packages. It is also a cost-efficient route to rely on a validated and verified OS rather than build your own – hiring developers to create, continuously maintain, and update your system is difficult and costly.
Aside from Raspberry Pi OS, which is largely a demonstration platform, some of the alternative options with a more structured maintenance lifecycle include Canonical’s Ubuntu Core and Wind River Linux Distro.
Ubuntu Core is a Linux distribution released by Canonical, based on the popular Ubuntu Desktop which provides binary compatible option for embedded devices, focusing on security, updates, and a minimal footprint. It also allows customizations through ‘snaps’ for software packaging and system deployment – which are essentially compressed applications for your system container.
Wind River Linux Distro is a binary distribution built using the market leading Wind River Linux, that is compatible with the popular community driven Yocto Project and includes support for Raspberry Pi 4s.
Objective
Putting myself in the perspective of an embedded software developer, I would like to compare and contrast the two platforms for my embedded software project and analyze the options. I will document the basic process of booting Ubuntu Core and Wind River Linux Distro on a Raspberry Pi 4. In turn, I'll write about my experience regarding which operating system provided a smoother start-up experience, reliable approach, and decide overall which OS is best suited for specific developmental tasks and post-deployment maintenance.
Equipment & Programs Used
● Raspberry Pi Imager Raspberry Pi OS – Raspberry Pi - this is used to flash the image onto your storage (SDK card)
● Raspberry Pi 4 (RPi4) Model B
● Micro HDMI port
● 64 GB Micro SD card
● USB-C Power Supply
Booting up Ubuntu Core
1. Download Ubuntu Core with Raspberry Pi 4 image that is compatible with the device using this link: Install Ubuntu on a Raspberry Pi | Ubuntu
a. It is recommended that you download ‘64 bit’
2. Insert your SD card into your computer
3. Open your Raspberry Pi Imager. It will request for you to upload your operating system (OS) image and select your storage – this being your SD card.
4. Upload the OS (Operating System).
a. For OS, select ‘custom’ at the bottom and upload the image for ubuntu
5. Select your storage, the SD card that you inserted.
6. Click ‘Write’ and wait for it to complete the flash to your SD card. (This step may take a little longer)
Booting up Wind River Linux Distro
1. Get Wind River Linux Download Links | Wind River Linux | No-Cost Distro Download
a. Input your information and select ‘Raspberry Pi 4’ for your Linux Board.
b. Agree to the terms of the license agreement and submit the form
2. Links will be emailed to your inbox and titled, “Your Wind River Linux Download Links”
a. There will be 4 downloadable files: Minimal Image, Full Image, Development SDK, and Source Code. Minimal Images have fewer default packages than full images. The option to choose a minimal download versus a full download allows users the flexibility to be efficient with the storage(s) that they’re working with without wasting space for additional packages that they will not need.
- Size (Minimal: 124 MB, Full: 317 MB)
3. Download the ‘Minimal Image’ or ‘Full Image’.
a. These are the image files that you will need to flash WR Linux onto your memory card.
b. It should look like ‘target-[full or minimal]-bcm-2xxx-rpi4.tar'
4. Extract the files to get an image file
a. To make our files easier to identify, create a new folder in your downloads directory | For example: ‘WR Linux’
b. Move your downloaded image file into the folder.
5. Extract your files twice
a. On Windows 10, find your WR image file>right click> 7-Zip>Extract files
b. Go into the file that was just created, it should be in the same name as the previous image file but without the tar suffix.
c. Extract the file.
d. You should have around 7 files but most importantly, the image file should show up. Ending in ‘.ustart.img.gz’, with the raspberry pi logo for the file.
6. Insert the SD card into your computer
7. Open your Raspberry Pi Imager and choose your OS (Operating System)
a. Scroll to the bottom and choose ‘Use custom’
b. Choose your image file: wrlinux-image-[full or minimal]-bcm-2xxx-rpi4.ustart.img.gz
8. For ‘Storage’, select your SD card.
9. Click ‘Write’ and wait for WR Linux image files to flash onto your memory card.
Comparison
From the start, the Wind River Linux Distro included a few additional steps to perform until you can boot the operating system to the Raspberry Pi, whereas the process of downloading Ubuntu Core and booting was more streamlined. However, in terms of functionality, these two Linux distributions operate for different needs, based on their pedigree. Wind River Distro fulfills the needs of developers who work on embedded systems and rely on compatibility with popular technologies such as the Yocto Project and Open Embedded. Leveraging the Yocto Project allows Wind River to develop a customized Linux platform that contains just what you need without anything extraneous. With vast support for embedded processors, continuous monitoring for security vulnerabilities as well as long-term support –this is the perfect option for those working with embedded devices. On the other hand, Ubuntu Core is a good option for those already familiar with the enterprise, one-size-fits-all, version of Ubuntu Desktop but need an alternative for deploying their general-purpose Linux application onto an embedded device. In this case, the developer may value the ease of adding more packages through snap-store, rather than the customization and configuration, using Linux Assembly Tool (LAT).
As an embedded software developer, it is good to know that there are multiple options out-there to build upon, while also having access to affordable and reliable hardware such as Raspberry Pi4.
About Ashley Tran
Ashley Tran 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 bachelors degree in Computer Science and Business Administration at the University of Southern California. She is passionate about the intersection of tech, design, and business.
Sources
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