Togán Labs is proud to announce the release of Oryx Linux v0.3.0! The release notes give a summary of what has changed but we wanted to take some time to discuss the release in more detail on this blog.
This post will provide a summary of Oryx Linux for any readers who aren’t familiar with our distribution and will then go on to present the new features in v0.3.0 and our plans for the future.
About Oryx Linux
Oryx Linux is a container-based embedded Linux operating system based around core technologies from OpenEmbedded and Yocto Project. Our aim in developing Oryx has been to bring the benefits of Linux containers to embedded applications without the need for existing embedded Linux developers to learn a whole new set of tools – we build on top of well-know Yocto Project workflows rather than replacing them.
This also ensures that developers still have access to the full suite of Yocto Project tools to handle license compliance, QA and testing. Along the way we are also integrating other tools based around Yocto Project to automate license compliance workflows, manage over-the-air (OTA) updates of both the base system and containers, and check software for known vulnerabilities.
We also focus on keeping both the container runtime engine and the containers themselves lightweight to avoid filling the limited storage space in embedded devices with unnecessary cruft. This has led us to use musl libc instead of glibc. We’ve also selected runc, the container runtime engine at the core of the Docker project, with our own lightweight container management application instead of integrating the whole of the Docker suite. For management of container networking Oryx Linux uses the netns tool from Jess Frazelle which places all containers into a simple virtual network and assigns IP addresses.Changes in v0.3.0
This new release updates Oryx Linux to support new platforms and new features, as well as integrating the latest OpenEmbedded/Yocto Project release, “rocko”.
Yocto Project v2.4 “rocko” brings in the usual updates to core components like the Linux kernel and GCC along with performance and reproducibility improvements. For Oryx Linux there are several changes which are of specific interest. The Go toolchain, used by runc and netns, is updated to version 1.9 and integrated much better to the Yocto Project workflow than in previous releases. Further details can be found in the Yocto Project release notes.
Board Support Packages used by Oryx Linux have also been improved in this release. 64-bit operation on the Raspberry Pi 3 has received significant fixes, allowing this configuration to become a core demo platform for Oryx Linux. We have also added the Raspberry Pi 2 to our list of core demo platforms included in the release so that we have full coverage of the most common Raspberry Pi devices. Lastly we have added the 64-bit qemux86-64 emulated platform to this list. However, we have dropped support for the Arduino Yún platform from Oryx Linux as it is not currently supported by the Go toolchain needed by the core components of our distribution. This also sees the Oryx Lite configuration removed to allow us to focus on our key features ensure that they are well integrated into Oryx Linux.
Within oryxcmd, our container management application, we have added several new features. We have added commands to start and stop containers as background services, freeing users from having to learn the details of the runc command line interface. We’ve also added configurable support for automatic start-up of containers during the boot process as well as the ability to stop all containers safely during shutdown. The main command which is ran on container start up is now configurable within an application profile by setting the ORYX_APPLICATION_COMMAND variable.
The next major Oryx Linux release will occur shortly after the release of Yocto Project v2.5 “sumo”. For this version we’re aiming to introduce further improvements in two key areas along with the usual set of bugfixes and other minor changes.
Firstly, we’re planning to improve the release engineering workflow, both for the project itself and for all system integrators who build on top of Oryx Linux. We recognise that the sources directory produced during an Oryx release is unnecessarily large due to the inclusion of multiple copies of the full git history of the Linux kernel as well as other repositories. This will be addressed by a move to tarballs for these sources which will significantly reduce the disk space requirements for building an Oryx Linux release. We’re also going to be introducing a test suite for the container management application oryxcmd to ensure that it behaves as expected and to reduce the risk of introducing regressions with new changes. Testing coverage will be further improved by deployment of a board farm at Togán Labs which will boot test Oryx Linux on our target hardware on a regular schedule and we will be looking for ways to make the results of this testing available to all Oryx Linux users.
Secondly, we’ll be focusing on expanding the capabilities of containers within Oryx Linux as well as the set of example container images built into the Oryx Linux release. This will require improvements to the underlying application profile system, primarily to allow the permissions granted to containers to be configured at build time. Our container management application will be expanded to allow more information to be queried at runtime, such as listing currently running containers, their IP addresses and the services they offer. Connection of these services to the outside world will initially be via NAT and port forwarding using the IPv4 address of the host but we will also be exploring ways to enable IPv4 and IPv6 connectivity directly to the containers where needed.
We’re also going to be integrating an Over-The-Air (OTA) update framework into Oryx Linux over the coming months. This framework will handle updates for the host system initially and will be based around the tools provided by Mender.io. Once the initial integration is complete we’ll be looking to expand the framework to cover the update of containers themselves. This will be an ongoing part of the Oryx Linux project and may not be completed in a single release. However if this feature is important to you then please get in touch as we may be able to prioritise it higher!
The roadmap for Oryx Linux can be seen in our issue tracking system. Please feel free to add feature requests to our issue tracking system so that we can incorporate them into our plans for future releases.
Raspberry Pi is a trademark of the Raspberry Pi Foundation. Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.