I have been exclusively using Linux for well over 15 years now, bouncing from various popular distros like Ubuntu, Arch, and Mint. This experience has come to a critical mass in my understanding of the Linux operating system and its ecosystem. This project is a vehicle to deep dive into the various components, discovering and closing any gaps I may have in my knowledge on the subject. Through the years I have built up a wishlist of features to help simplify managing and maintaining my Linux deployments, and intend to realise this list in a novel approach.

While I am confident in my ability to execute this project, I am still learning some of the aspects of the Linux environment. There are some areas where I don’t know what I don’t know. I plan to stream the development of this distro on Twitch and Youtube so that I can hopefully recruit consultation from the community on things I may have missed and for feedback on the decisions I am making in real time. The stream will also serve as an educational resource where the various subsystems of Linux are explained and demonstrated.

XKCD #456 It looks like today I will be the person that XKCD was warning your parents about.

This distro will take a different direction from most existing distros. That said, no single feature will be novel and have existed in some cases for decades. A key objective will be to boot to a GUI login screen as quickly as possible. The intent is that the time it takes the user to enter their credentials will mask the time it takes concurrent processes responsible for initialising ancillary resources and services. Another key objective is to make this one of the easiest distros to install, either from an existing Linux installation or from the Windows environment. The installation must also co-exist with the other OS installations and make for a seamless user experience when switching between them.

As for user experience, much of the effort will be put into features that make it easy for a community to support each other. This means good logging and error reporting, as well as making it easy to communicate the current state of the system.

Security will be a key objective but will be flexible enough to not compromise usability. Boot chain validation and process isolation will be the primary mechanisms focused on.

A goal with the project development is to write little to no custom code if possible. It is intended to make good use of existing solutions, strategically choosing technologies that provide a mature and rich feature set while minimising the tech burden of maintenance.

System Requirements

  • UEFI compliant firmware
  • ACPI system interface
  • GPT formatted disk
    • 4GB ESP partition ( or the option to reallocate space for a second 4GB ESP formatted partition)
  • 16GB of RAM
  • AMD, Intel, and possibly ARM CPU 64bit
  • Modern GPU (integrated or discreet) from Intel, AMD, or NVIDIA

Brain Dump

The following will develop and be refined as the project progresses but is currently just a brain dump of ideas and resource links.

Development breakdown / Stream programme

  1. project goals
    1. immutable
    2. easily swappable environments/ separation of concerns
      1. based on containers
      2. package manager agnostic
    3. easiest to install
    4. windows compatibility
    5. easy to provide support
      1. make it as easy as possible for the community to support others
    6. GUI centric, no need for shell to do everything
    7. speed to login prompt/usable desktop
    8. separate releases with major graphics cards drivers
    9. security without compromising functionality
    10. auditability
      1. https://en.wikipedia.org/wiki/Runtime_system
      2. https://en.wikipedia.org/wiki/Crt0
      3. https://en.wikipedia.org/wiki/Runtime_library
  2. local build of kernel in arch linux container
    1. mention bootstrap issue
      1. originally compiled on minux 2.
  3. qemu kvm auto-run
  4. kernel build parameters
  5. busybox build in arch linux container
  6. musl vs glibc vs ..
  7. kernel modules
  8. userspace https://en.wikipedia.org/wiki/Linux#Design
  9. sysfs, efivarfs, procfs, configfs, binfmt_misc, securityfs
  10. systemd build in arch linux container
  11. udev startup & “/dev” devtmpfs
  12. wayland
  13. networking
  14. bluetooth
  15. uefi boot chain, secure boot, tpm
    1. https://en.wikipedia.org/wiki/UEFI
    2. https://www.tianocore.org/
  16. qemu uefi config
  17. build system boiler on GH actions 18.

Prior work

The distro will ship as a Unified Kernel Image. At a distance this may look like a modernised TinyCore Linux or Damn Small Linux but those focus on providing a CLI environment.

https://en.wikipedia.org/wiki/List_of_Linux_distributions_that_run_from_RAM
https://www.linuxboot.org/


Reference

Linux Kernel 2.4 Internals
https://makelinux.github.io/kernel/map/
https://makelinux.github.io/kernel/diagram/
https://pubs.opengroup.org/onlinepubs/9699919799/mindex.html
https://www.kernelconfig.io/index.html

https://github.com/docker/roadmap/issues/593

https://blog.packagecloud.io/the-definitive-guide-to-linux-system-calls/
https://man7.org/linux/man-pages/man2/syscalls.2.html
https://stackoverflow.com/questions/10321435/is-char-envp-as-a-third-argument-to-main-portable
https://en.wikipedia.org/wiki/Netlink

https://busybox.net/
https://busybox.net/downloads/BusyBox.html
https://github.com/brgl/busybox/blob/master/examples/inittab

https://www.qemu.org/docs/master/
https://www.qemu.org/docs/master/system/invocation.html
https://www.qemu.org/docs/master/system/qemu-manpage.html

https://wiki.gentoo.org/wiki/Integrity_Measurement_Architecture
https://sourceforge.net/p/linux-ima/wiki/Home/

https://obsproject.com/forum/resources/background-removal-virtual-green-screen-low-light-enhance.1260/
https://obsproject.com/forum/resources/multiple-rtmp-outputs-plugin.964/

https://droidcam.app/linux/#av
https://www.sheep.chat/en/features/basic

flatpak install com.obsproject.Studio.Plugin.BackgroundRemoval
flatpak install flathub com.obsproject.Studio
flatpak install flathub com.obsproject.Studio.Plugin.DroidCam
sudo apt install linux-headers-$(uname -r) v4l2loopback-dkms
flatpak override --user --device=all com.obsproject.Studio
https://ffmpeg.org/ffmpeg-protocols.html#rtmp
https://obsproject.com/forum/resources/multiple-rtmp-outputs-plugin.964/

https://github.com/Kostr/UEFI-Lessons?tab=readme-ov-file
https://trustedcomputinggroup.org/resource/tpm-library-specification/
https://www.qemu.org/docs/master/specs/tpm.html#tpm-backend-devices
https://www.qemu.org/docs/master/specs/tpm.html#the-qemu-tpm-emulator-device
https://github.com/stefanberger/swtpm/tree/master
https://github.com/stefanberger/libtpms

https://docs.docker.com/build/building/base-images/#create-a-base-image

while inotifywait -e modify Dockerfile; do ./Dockerfile; done

https://stackoverflow.com/questions/30011603/how-to-enable-rust-ownership-paradigm-in-c

Updated: