Solver Linux

Introduction

Solver Linux is a small, fast Linux distribution focused on simplicity and hackability. This project is currently put on a hiatus for an undetermined amount of time, but I still decided to publicize it in its current form.

Overview

This distribution is very lightweight and uses sbase+ubase as its core userland utilities. Many other suckless.org packages are employed, such as sinit, smdev, and others. Everything is linked statically and there is no initramfs. With a lightweight kernel config (but without CONFIG_EMBEDDED), I managed to achieve:

Tooling

The distribution comes with a full C toolchain (static musl-GCC and cproc) and a shell (oksh is used).

It also includes a custom compiling package manager morta. It only contains a few packages, but is very flexible and easy to modify. The goal was to make the user be able to modify every part of the package management process easily, while still providing a central overview of the system state. All packages are simple shell scripts that the user can easily modify. In the future, it can potentially be used to build the rootfs on another host.

Another feature is a powerful device enumeration script by-unid. It uses the kernel hotplug mechanism via smdev to enumerate the devices very thoroughly and assign them a unique ID (unid). The enumerator is very easy to modify to perform an arbitrary command upon the connection of a device with a specific unid. This is handy for automounting specific devices at a specific path, or even rebooting into a Live GUI image found in a specific unid storage via efivarfs.

Status and limitations

The development was stopped due to encountered difficulties as well as increased interest in Plan 9 and its fork 9front. The distribution lacks support for internet, sound, and graphics. Apart from adding that and adding more packages, other things to look at would be how to treat the compiler suite and the kernel as special first-class components, especially GCC, which I figured is more practical in the Linux world; documentation; many improvements to the package manager, such as making it a CLI tool with subcommands and better UX; and extra reductions in size and optimizations.

Downloads and installation

The downloads are provided below for the amd64 architecture. To install, partition the disk, compile the Linux kernel and place it in the boot partition, extract the root image (preserving all attributes) and place it in the root partition. Boot the kernel via efistub or a bootloader. You may need to modify /etc/fstab. boot.tar.xz is a boot partition that I was personally successful booting with. It contains the kernel configuration file that I used and I would recommend using it as a base when compiling your kernel for this distribution.