fwup for A/B image upgrades on QEMU machines with NervesCloud, part III
This blog post shows how to use NervesCloud in order to upgrade and manage linux images based on Yocto Project.
This blog post shows how to use NervesCloud in order to upgrade and manage linux images based on Yocto Project.
This blog post describes all parts involved in order to use QEMU machines with Yocto images for testing and developing A/B image upgrades. Moreover, this blog post could be considered an extension for the fwup for A/B image upgrades, part I blog post.
Gleam is a new language that runs on Erlang VM. As one the aims of meta-erlang layer is to offer support to BEAM ecosystem in YP/OE ecosystem gleam support has been added to meta-erlang.
I'm not a gleam programming. Actually, I recently discovered gleam (and its purposes). And I'm still learning it. After watching the talk Keynote: Gleam's Journey on the BEAM - Hayleigh Thompson & Louis Pilfold at Code BEAM Europe 2024, I give a try and add it to meta-erlang layer.
ptest (package test) means packaging and installing runtime tests that are included in many upstream packages. At the end of the day it runs Erlang/OTP cross compiled test suite on the target hardware. The aim is to detect a range of problems when running test suites on different combinations of architecture processors and libc.
Usually, when designing a linux distribution using YP/OE we want a slim image with only what we need to run a specific application (or applications). In this post we'll discuss a bit about erlang and elixir packages that meta-erlang layer provides.
It's important to know how the packages are divided into smaller ones in order to offer a better composition when creating linux distributions with YP/OE.
This blog post is a tutorial about how to make A/B software updates with fwup tool and Yocto Project.
We've added support for the following new Erlang/OTP releases:
meta-erlang branch | Erlang/OTP version |
---|---|
scarthgap | 25.3.2.12, 26.2.5, 27.0 |
master | 25.3.2.12, 26.2.5, 27.0 |
And the following Elixir releases:
meta-erlang branch | Elixir version |
---|---|
scarthgap | 1.13.4, 1.14.4, 1.15.7, 1.16.3 |
master | 1.13.4, 1.14.4, 1.15.7, 1.16.3 |
I was planing to also add Erlang/OTP 27.0 to LTS kirkstone release. However it is not feasible as Erlang/OTP 27 uses autoconf 2.72 and kirkstone uses 2.71. Thus, there is an incompatible related to build system.
From livebook.dev website:
Automate code & data workflows with interactive notebooks.
Livebook is getting famous for modern notebooks. It helps a lot for several tasks and to solve issues where documentation and code have to walk together.
We've added support for the following new Erlang/OTP releases:
meta-erlang branch | Erlang/OTP version |
---|---|
kirkstone | 24.3.4.17, 25.3.2.12, 26.2.5 |
master | 25.3.2.12, 26.2.5, 27.0-rc3 |
We've added support for the following new Erlang/OTP releases:
meta-erlang branch | Erlang/OTP version |
---|---|
dunfell | 24.3.4.16 |
kirkstone | 24.3.4.16, 25.3.2.10, 26.2.3 |
master | 25.3.2.10, 26.2.3 |
We've added support for the following new Erlang/OTP releases:
meta-erlang branch | Erlang/OTP version |
---|---|
dunfell | 24.3.4.15 |
kirkstone | 24.3.4.15, 25.3.2.8, 26.2.1 |
master | 25.3.2.8, 26.2.1 |
In additional to those new versions, now it's possible to read Erlang/OTP documentation in Erlang shell. The docs .chunk files get generated during build time and one could easily install it by adding the package erlang-modules-dev.
From atomvm.net website, atomvm is:
AtomVM is a lightweight implementation of the the Bogdan Erlang Abstract Machine (aka, the BEAM), a virtual machine that can execute byte-code instructions compiled from Erlang or Elixir source code. AtomVM supports a limited but functional subset of the BEAM opcodes, and also includes a small subset of the Erlang/OTP standard libraries, all optimized to run on tiny micro-controllers. With AtomVM, you can write your IoT applications in a functional programming language, using a modern actor-based concurrency model, making them vastly easier to write and understand!
One of the atomvm goals is the possibility to run BEAM code on really small systems like MCUs.
According to Wikipedia X32 ABI page:
The x32 ABI is an application binary interface (ABI) and one of the interfaces of the Linux kernel. The x32 ABI provides 32-bit integers, long and pointers (ILP32) on Intel and AMD 64-bit hardware. The ABI allows programs to take advantage of the benefits of x86-64 instruction set (larger number of CPU registers, better floating-point performance, faster position-independent code, shared libraries, function parameters passed via registers, faster syscall instruction) while using 32-bit pointers and thus avoiding the overhead of 64-bit pointers.
So, I'm wondering if it would be possible to enable x32 support in Erlang/OTP build. That way, I could make a Yocto image for x32 that runs on x86-64 machines.
We've added support for the following new Erlang/OTP releases:
meta-erlang branch | Erlang/OTP version |
---|---|
dunfell | 24.3.4.13 |
kirkstone | 24.3.4.13, 25.3.2.3, 26.0.2 |
mickledore | 25.3.2.3, 26.0.2 |
In additional to those new versions, a new beamtools is available here.
This new version was made with Yocto mickledore release and brings Erlang/OTP 26.0.2 and Elixir 1.15.2.
Yocto Project has released a new version 4.2 (Mickledore). As consequence meta-erlang brings a new branch mickledore updating most of the recipes. mickledore release is not a LTS release and community support will be available until November 2023.
We've also upgraded to the latest Erlang/OTP and Elixir releases supporting the following new Erlang/OTP releases:
It's worth mentioning the meta-erlang master has also been updated.
We've added support for the following new Erlang/OTP releases:
meta-erlang branch | Erlang/OTP version |
---|---|
dunfell | 24.3.4.11 |
kirkstone | 24.3.4.11, 25.3.2 |
langdale | 25.3.2 |
Removed recipes:
Updated recipes:
It has been decided:
The meta-erlang on cloud II, build your own application post has shown the basic idea for how would be possible (and in fact it is possible) to build a custom Linux distribution and run it on Graviton AWS instances.
The Yocto Project has been made to create specific embedded Linux distributions. And still does a great job on this field making it possible to run softwares in a range of target architectures.
We've added support for the following new Erlang/OTP releases:
meta-erlang branch | Erlang/OTP version |
---|---|
dunfell | 24.3.4.8 |
kirkstone | 24.3.4.8, 25.1.2.1, 25.2.1 |
langdale | 24.3.4.8, 25.1.2.1, 25.2.1 |
Fixed bugs:
To be decided:
This new website is based on Docusaurus documentation framework. The previous site was using docsify, which is also great. But Docusaurus address others concerns when writing documentation for open source project.
So, the site has a new frontend page and a blog session where we want to add latest meta-erlang release highlights. The documentation session is pretty much the same plus some improvements on Introduction chapter.