At a recent Linaro Connect event that took place this past fall, Alexander Sack (@asacasa), CTO of Pantacor delivered a talk on the Linux Distro and how it is relevant in today’s embedded world of the Internet of Things (IoT). Alexander gives us insights and context on the birth of Linux, how it led to embedded Linux development practices. He spoke on the history of the Linux Distro and drew parallels with how the embedded Linux development ecosystem is changing and embracing containers. Much like the early days of Linux, embedded Linux engineering needs to take some cues from cloud computing and embrace automation and take advantage of containerization so that infrastructure is more universal.
Alexander started us off with an overview on how Linux started and how it has progressed from a hobbyists/tinkerers platform to a reliable and secure OS that basically runs the cloud today. From the early naughts (00s) and onward, there were many different distributions like RedHat, Debian, Suse and others whose goal was to make Linux reliable, easy to use and secure.These distributions were created by large vibrant communities of developers who donated their free time to contribute to open source Linux projects. But even though Linux gained a lot of traction in those early days, it still took quite a bit of effort and technical ability to integrate a distribution before you could deploy it and use it on a server to run your applications.
“Many ISVs offering Linux distributions and products, attempted to simplify a way for end-users to create customized distributions without having to make huge investments in both infrastructure and engineering teams. And as part of the community myself, and as more time went by, I realized in the early days that there wasn’t an easy way to do this.” — Alexander Sack, CTO Pantacor
But this changed somewhat with the arrival of public clouds like AWS that allowed servers to be spun up and scaled out on demand. Most importantly, you can deploy software onto it and not worry about having to integrate the Linux distribution to work with your software. However in the early days, those one click distributions came in the form of images that still required some effort to configure before they could run the way you needed them to.
Enter the Docker Container
2015 saw another shift in how Linux systems were being built and managed, says Alex. The rise of Docker containers meant that you were no longer required to manually integrate distributions, and match corresponding library versions. Before Docker, working with Linux was quite difficult for third party software and services to make changes or to influence how a distribution worked.
Docker containers allow developers to package whatever you want including 3rd party extensions into a self-contained unit and then deploy into a virtual environment without worrying about it. And because of this ability, the host operating system on which your applications are running is less and less important and essentially has become invisible. This means that developers can focus less on infrastructure and spend more time on creating applications that add value to your business.
Kernel still important for embedded development
Unlike embedded developers today, cloud developers don’t typically think in terms of kernel functionality. “The only thing that actually matters on the host operating system is the Linux kernel. The Linux kernel is what will remain for the foreseeable future. The kernel is the common denominator, and is the most important piece of the Linux puzzle for embedded developers,” says Alex.
Most cloud developers today only need to worry about what they can run inside of a container. Most don’t even think about what kernel they are running on or ever worry about whether it has all of the features you need.
For more information on embedded development challenges see How to Update IoT Devices in the Modern Cloud Era.
Kubernetes is cloud native infrastructure
In fact, cloud developers don’t even worry about the host operating system that much anymore. The cloud removed the host operating system as an intermediate layer that in the past you would have interacted with on a daily basis. Now with Kubernetes SSH’ing onto the host to install software is a thing of the past.
Instead you can just use the platform API and automatically deploy any payloads you want to use right onto the cluster. Instead of small components, you now have large building blocks that work the way you want them to without you thinking about how they work together.
A universal platform for embedded developers
On the embedded side, the kernel and its functionality is one of the most important aspects to an embedded developer, especially when it comes to creating new products on embedded Linux boards. Micro-controllers cannot run sophisticated apps like robots and are typically more suited to sensor type data. Because of the resource constraints on most IoT devices running linux, customizing and specializing the firmware is one of the important things that embedded developers need to do.
Alex then presented a practical platform for building applications on resource constrained embedded platforms with containers. He refers to this as the Universal Embedded Linux system. So why is it universal? At Pantacor, the Host OS should be as minimal and as un-opinionated as possible. In fact, it should do nothing but operate the lifecycle of the containers, mediate access to the hardware devices and offer a protocol to drive the deployment of the system.
To deploy something, you need a system runtime that can be described as a single transactional unit. With a universal embedded model, you are able to define all the components you need as a single transactional deployable unit. The rest are middleware containers, the system containers, and then the application containers.
All those can be done in containers and they should be done in containers because that’s the only way it can become really universal. When you think about it, says Alex, if you replace the immutable deployment platform with something else, you’ve already lost half of the potential use cases.
Freedom of choice = happy embedded developers
Some people might not like Yocto, they may want to work with OpenWrt or the Broadcom SDK or Qualcomm SDK. Or they may have something completely custom. And if they want to make a special middleware, why force them to learn about Yocto and bring that into that ecosystem?
With a universal containerized embedded system, you have the choice of distro. In fact, the distro becomes irrelevant on a large team of embedded developers and this is very powerful.
View the entire talk here:
In this post, we discussed the history of Linux and how it led to containers and to the cloud, eventually giving way to invisible infrastructure. The embedded Linux world will also give way to a frictionless infrastructure that will free up developers to work on innovative new applications, services and products.
Pantavisor Linux leverages containers to build modular containerized embedded Linux systems that are fully customizable and easily managed with standard open source technologies. The portability of containers simplifies the lifecycle management of embedded Linux firmware and applications across IoT fleets. Virtualization at both the system and application levels allows for embedded Linux engineering teams to adopt agile and modern cloud native methodologies such as microservices and other automation strategies to secure device fleets, speed up time to market and increase innovation. Reach out to us for more information.