Elk Audio OS source code

For those of you who have been following our Github page, you might have noticed that in the past weeks we have been slowly but steadily adding several repositories.

Now all the pieces are there which allows you to fully customize Elk Audio OS images to your needs. The starting point would be the elkpi-yocto-layers repository which contains the repo tool manifest to automatically fetch all the other repositories and configure the Yocto build system.

Yocto has a somewhat steep learning curve but we prepared instructions to get you started on the first build. Be prepared that you will need a reasonably powerful machine (RAM, core count and a fast SSD will help a lot) in order to keep build times reasonable, otherwise expect to wait several hours for the first build. Hard drive space required is around 50 Gbytes, depending on image features.

It is possible to run this in Docker or VMs, or rent some cloud services (e.g. Amazon EC2 instances) if you don’t have a powerful Linux machine available.

Write us here for any help or request, we will be happy to guide you through the process.

The Elk development team

4 Likes

This is really cool, thanks for sharing all the pieces!

I’m currently using a mac M1 as my personal computer and I wanted to be able to use it for embedded linux development as well.
It is trivial to run linux VMs on M1 for aarch64 but the current x86 emulation/virtualisation options are still unusable for development.
Since you only offer you pre-built cross-toolchain for x86_64, I’m not able to use it. So now I’m trying to build it myself on a aarch64 linux VM. [Ubuntu 20.04 LTS]

Of course, it wouldn’t work out of the box… this is what I get when trying to build the toolchain with: bitbake -c populate_sdk elkpi-audio-os-image

ERROR: Nothing PROVIDES ‘syslinux-native’ (but /home/jrrossi/elk/layers/meta-elkpi/recipes-images/images/elkpi-audio-os-image.bb DEPENDS on or otherwise requires it)
syslinux-native was skipped: incompatible with host aarch64-linux (not in COMPATIBLE_HOST)
ERROR: Required build target ‘elkpi-audio-os-image’ has no buildable providers.
Missing or unbuildable dependency chain was: [‘elkpi-audio-os-image’, ‘syslinux-native’]

Googling around, I’ve found out that syslinux-native isn’t needed when building on aarch64:
https://patchwork.openembedded.org/patch/90281/
https://www.yoctoproject.org/pipermail/yocto/2019-April/044779.html

Apparently there were some PRs regarding some changes to meta/classes/syslinux.bbclass in order to remove the syslinux-native when running on aarch64.
I tried replaying some of those PRs, but no success.

If you could provide some help it would be amazing, I’m quite sure that building on aarch64 is becoming more and more popular, so it might be good to provide support for it as well.

Cheers!

HI @jrrossi,
unfortunately we don’t have M1 macs hanging around so it would be quite difficult to support.

As a workaround in the short-term, you might consider spinning up an instance in AWS / Azure etc.

Heads up to anyone else trying to build the OS: I get error in many recipes running bitbake from Ubuntu 20.10 (Ubuntu Studio), many seemingly related to GCC10, -fcommon:

To ensure your fixes are not overwritten, see:
https://wiki.yoctoproject.org/wiki/TipsAndTricks/Patching_the_source_for_a_recipe

Update: I still haven’t figured it out, I get the same errors for example for libtirpc for files that I have already patched and have not been overwritten. Any help would be really appreciated. I have tried the devtool instructions in the link above, but that seems to just clone libtirpc into a new workspace folder, which is not connected to the image. I’ve also tried to force rebuilding a recipe after making changes manually in place.