Series

Kernel Design: Microkernel vs. Monolithic

Motivation This hotly debated topic has been around for decades, and it is just as alive today as it was 28 years ago. The truth is, there are fundamental differences in the theory which drives the design of a monolithic kernel versus a microkernel. In this post, I will extrapolate from my knowledge of various kernel designs to explore what these two primary types are, what their features, benefits, drawbacks and implications may be. I’ll also briefly explore the extension…

Read More

Virtualization for Embedded Systems Series: Type-2 Hypervisors Deep Dive

In the previous post in this series, we dove deep into container technology and looked at how to implement some functionality into containers applicable to embedded devices. In this post, we will look at type-2 hypervisors and dive deep into practical ways to use them for embedded systems. This post will be light on content as I am quite busy currently, but wanted to wrap up this series. I will try to circle back and dive deeper into this topic…

Read More

Building a Customized Linux Image for Raspberry Pi with Yocto + Docker Support

Motivation I recently stumbled upon HypriotOS while looking for Docker-ready distributions for my Raspberry Pi 3B+. I flashed this onto and SD card and started playing around with it. It works incredibly well, but I noticed that it was built for armv7l which is a 32-bit implementation. Since the Raspberry Pi 3B+ has a 4x core Cortex-A53 which is 64 bit, I wanted to make use of the 64 bit processor! I’ve worked with Yocto before (in fact, my day…

Read More

Virtualization for Embedded Systems Series: Containers Deep Dive

In the previous post, I looked at several real-world use cases for containers and hypervisors. This post will be a deep dive into containers and a how-to on using them. Note: all the code, Dockerfiles, etc. are archived in a git repo at GitHub. Container History Origins A little history is needed before we jump into building and deploying containers. Docker, which is likely still the largest container technology provider by a longshot, was originally released in 2013. In just…

Read More

Virtualization for Embedded Systems Series: Applications in the Real World

In the last post, we looked at several different types of virtualization technologies. We wrapped up by narrowing our focus on the types of virtualization down to just two primary categories – hypervisors and containers. In this post I’ll dig in to some real world applications of these types of virtualization, and we’ll look at how they can be used to solve real problems. Containerization Simplified Management One of the low hanging fruits of container virtualization is the ability to…

Read More

Virtualization for Embedded Systems Series: Types of Virtualization

Virtualization in the context of computing comes in many flavors. Typically, virtualization is referring to hypervised environments (more on that in a bit), but can also mean containerization or other technologies. This post explores several of these flavors and how they work. If you didn’t catch the intro to this series, you can read a little about the motivation for these posts in the previous post. Types of Virtualization Technology When considering the delineations between different types of virtualization technology,…

Read More

Virtualization for Embedded Systems Series: Introduction

The concept of virtualization and virtualized hardware has long been a part of computing. Even dating back to the early days of computing[1], virtualizing components of the system proved beneficial. In today’s technology driven world, virtualization plays a giant role in our day-to-day life. Services like Amazon AWS and DigitalOcean are ubiquitous as service providers to all sorts of companies. These provide the backbone to our daily browsing and Internet usage habits. Entire ecosystems have been built around this concept…

Read More