Dev

Spotted in the wild: Chimera – a Linux that isn’t GNU/Linux


FOSDEM Chimera Linux is a new distro under construction that is not only systemd-free, it’s GNU-free as well. Its creator hopes to reach alpha testing this spring.

Chimera Linux is a new project which began in mid-2021, but has already made considerable progress. Its solo developer is Czech programmer Daniel “q66” Kolesa, who gave a talk about his project at FOSDEM last weekend.

His talk was part of the FOSDEM’s BSD program stream, which itself is a hint that this is not a typical Linux distribution. This is reflected in its name: the original chimera was a mythical creature whose body was made up of parts of different animals. There’s a certain kind of Unix geek who insists that Linux should properly be called GNU/Linux, because the kernel is built with the GNU C Compiler, everything is linked against the GNU C library, uses the GNU coreutils, and usually multiple other components from the GNU Project.

Chimera Linux is an existence proof that this is not a hard requirement: it avoids all of these. Chimera is compiled with LLVM, uses the same musl C library and packaging tools as the lightweight Alpine Linux distro, the new Dinit init system, and much of the rest of the userland is drawn from the current version of FreeBSD. If things go according to plan, Kolesa hopes to release the first alpha version around the same time as the planned FreeBSD version 13.2, so that he can rebase on that version of the underlying tools.

Kolesa’s talk is recommended, but be warned, it’s very technical. For a quick overview, you can read his presentation (PDF).

One of the things that BSD fans tend to praise is the sort of somewhat abstract virtue that appeals to hardcore Unix types: each BSD keeps the source code of the core OS in a single directory tree, making it possible to build the entire thing in a single operation. Third-party components are relegated to an external “ports tree”. A Linux distro, on the other hand, is not so much “an operating system” as several thousand separately-developed OS components all flying in extremely close formation.

Chimera is an attempt to bring some of that design clarity to Linux. It’s not all FreeBSD all the way down: this is still a Linux-based OS, and it remains binary-compatible with Linux. In a way, Chimera is the inverse of the now unmaintained Debian GNU/kFreeBSD. That project put the GNU userland and Debian tools on top of a BSD kernel.

Instead, Chimera puts a ported version of quite a lot of the FreeBSD userland on top of the Linux kernel, with a native Linux, but non-GNU, C library. Another distro that uses the muscl libc is the minimalist rolling-release Void Linux, of which Kolesa is a former developer.

An important part of this is replacing the GNU coreutils. Before attempting to port the FreeBSD equivalent across himself, he found an existing such project: bsdutils. He upstreamed some fixes for this, but ended up forking it to create his own version: chimerautils.

Aside from the these, the C library and the init system, Chimera uses several other non-FreeBSD tools. Although he is offering his patches to the FreeBSD code back upstream, and some are being picked up, he tried and then discarded FreeBSD’s pkg tool, commenting that “it’s quite obvious that it’s mainly all geared towards FreeBSD usage right now.” (To be fair, that does seem reasonable enough to us.)

Instead, he uses apk, which is short for Alpine Package Keeper and which he says “ended up proving to be a great fit”. Even here, though, he’s ahead of the curve, with his apk command based on APK version 3, which is not yet used in Alpine itself. APK 3 moves away from using tarballs and “has its own, custom, structured package format, which should help with avoiding vulnerabilities in the package manager.”

There are many signs of this kind of attention to detail in his talk: checking for existing work, evaluating alternatives with an open mind, and cherry-picking then adapting the best bits.

For now, Chimera is still in its preliminary stages, but astonishingly, the project already supports four architectures. Kolesa told us:

ppc64le is my workstation, so that’s the primary development target; x86_64, for most people’s computers; aarch64 for my single-board systems; and RISC-V_64, because I thought it would be cool to have it early while most distros are still figuring it out. (And also, I own the HiFive Unmatched board from SiFive, and thought it would be sad to leave it mostly unused.)

There are live media and root filesystems available for download. It’s significant that the only desktop on offer right now is GNOME on Wayland (although other desktops will be supported later) – it’s one of the bigger and more complex desktops out there, with significant dependencies, including on parts of systemd, and he comments that porting GNOME to FreeBSD was hard and messy. Getting all of this working on Chimera – and indeed building in LLVM – exercises the subsystems and helps uncover problems.

Youtube Video

The talk has a lot of discussion of hardening and error checking, as one might expect from someone whose day job involves developing mobile web browsers and the like. Here, LLVM and Clang enable a lot of additional error-checking and hardening, over and above that of the GNU toolchain.

Examples are ThinLTO link-time optimization, and integrating the LLVM Scudo hardened allocator into Musl.

Another focus is not merely ripping out systemd and associated tools such as elogind, but reproducing their functionality – for instance, the Turnstile session tracker.

Chimera Linux is a project to watch – not only because it’s incomplete, but because it’s perhaps the most ambitious distro we’ve seen in many years. So far, it doesn’t even have an installation program, although the steps to get it installed are documented.

Chimera has bold goals: as Kolesa says at the start, projects with a single goal tend to fail, because if they achieve it, there’s nowhere else to go. Chimera isn’t just a proof of concept, such as a GNU-free Linux distro, or an effort to replace FreeBSD’s kernel with a different one while keeping everything else. He is aiming to produce a viable alternative system, which doesn’t just rip out some widely accepted and used subcomponents, but replaces their functionality in a cleaner, better way. ®



READ SOURCE

This website uses cookies. By continuing to use this site, you accept our use of cookies.