site  contact  subhomenews

Static utilities compiled by Yocto embedded in woofQ2

September 24, 2025 — BarryK

woofQ2 is the new build system for EasyOS. I introduced woofQ2 here:

https://bkhome.org/news/202506/woofq2-the-next-generation-woof.html

Kernel compiling was added:

https://bkhome.org/news/202508/kernel-compiling-now-in-woofq2.html

EasyOS 7.0+ is built with Devuan/Debian Excalibur/Trixie .deb packages; however, some packages from Scarthgap are used, that were compiled in Yocto/OpenEmbedded -- my github fork here.

The EasyOS initrd has some statically-linked binary utilities, linked with musl, and these were also compiled in Yocto/OpenEmbedded.

The objective is to make woofQ2 a "one stop shop"; have compiling capability builtin for anything required and not provided from the Devuan/Debian repositories. So far, there is kernel compiling, but I have now added compiling of the static binaries for the initrd.

After the woofQ2 tarball is downloaded and expanded, this is how it looks:

img1

...the 'source' folder has all the support for compiling the kernel, etc. The script 'set-sandbox-path' is what you would run first; it asks where you want to do the build of EasyOS and compiling. You would choose a Linux partition, usually ext4, and with lots of free space -- 200GB if you want to do everything.

Looking in "source":

img2

Then in 'yocto':

img3

I intend to add more scripts under the 'yocto' folder, but for now, just one.

The '0create-build-quirky' downloads Yocto to your chosen build path, and also copies that 'quirky' folder to it, and then, in the build-path you will see this:

img6

...This what you see in any Yocto/OpenEmbedded project, except 'meta-quirky' has my build recipes; currently only recipes for compiling the statically-linked utilities required for the initrd in EasyOS.

In EasyOS, 7.x, you need to be in the "devx" container. I will probably specify Easy 7.1 as the minimum, as it will have everything tweaked in the "devx" container, so the Yocto build will "just work". Some other Linux distro might work, but likely require a lot of messing around to set everything up for Yocto to work.

I will probably create scripts to automate this, but for now, after running '0create-build-quirky', what you do is open a terminal in the above path, then run this, if you want aarch64 binaries:

# source ./oe-init-build-env build-aarch64-musl
# bitbake-layers show-layers
# bitbake -g core-image-minimal
# bitbake core-image-minimal

...then wait several hours. It builds a sophisticated rootfs, as well as creates .deb packages. Those two lines in the middle are sanity-checks, the last one does the actual build. It downloads a lot of source packages, so you need a fast Internet connection.

It will complete with creation of a rootfs, found at build-aarch64-musl/tmp/deploy/images, and the .deb packages will be in build-aarch64-musl/tmp/deploy/deb

A huge number of packages are compiled for this rootfs, over 250, including the Linux kernel 6.12.x, llvm, and mesa. So the infrastructure is in place for adding a lot more, such as GUI packages. But the only concern for now is the static binaries, and they are to be found in the 'deb' folder, with "-static_" in their name.

So, I have got all those, and have placed them in woofQ2, for a possible aarch64 build of EasyOS:

img4

...not all of those will be used in an EasyOS build, but there if needed. The btrfs utilities, for example, are not required, as the Easy drive-image file has a ext4 work-partition.

A note regarding download of Yocto; the '0create-build-quirky' script currently downloads the "Walnascar" release. The current LTS release is "Scarthgap", see the release schedule:

https://wiki.yoctoproject.org/wiki/Releases

I read somewhere that "Whinlatter" is likely to be the next LTS, so I will move to that.

A note about kernel compiling; supported in woofQ2, but not for cross-compiling. However, the kernel is also compiled in Yocto, and that is a cross-compile environment. So for the aarch64 target, Yocto has compiled an aarch64 kernel and created .deb packages and it is in the rootfs. The patches and config file are to be found under the 'meta-quirky' folder.

For any developers who would like to cross-compile, EasyOS 7.1 and woofQ2 will be an easy way to do it. 7.1 is not yet released, and the required woofQ2 tarball not yet uploaded; will announce when they are out.

Yocto/OpenEmbedded is a very complex project, with a steep learning curve. Yet, run the simple steps that I have shown above, and it should go through without a glitch. You could then add your own build recipes, using mine inside the 'meta-quirky' folder as a guide, and some documentation in docs/bk-notes. Yocto also has online manuals.   

Tags: easy