Description

Inspired by mkosi the idea is to experiment with a declarative approach of defining Linux systems. A lot of tools already make it possible to manage the systems infrastructure by using description files, rather than manual invocation. An example for this are systemd presets for managing enabled services or the /etc/fstab file for describing how partitions should be mounted.

If we would take inspiration from openSUSE MicroOS and their handling of the /etc/ directory, we could theoretically use systemd-sysupdate to swap out the /usr/ partition and create an A/B boot scheme, where the /usr/ partition is always freshly built according to a central system description. In the best case it would be possible to still utilise snapshots, but an A/B root scheme would be sufficient for the beginning. This way you could get the benefit of NixOS's declarative system definition, but still use the distros package repositories and don't have to deal with the overhead of Flakes or the Nix language.

Goals

  • A simple and understandable system
  • Check fitness of mkosi or write a simple extensible image builder tool for it
  • Create a declarative system specification
  • Create a system with swappable /usr/ partition
  • Create an A/B root scheme
  • Swap to the new system without reboot (kexec?)

Resources

  • Ideas that have been floating around in my head for a while
  • https://0pointer.net/blog/fitting-everything-together.html
  • GNOME OS
  • MicroOS
  • systemd mkosi
  • Vanilla OS

Looking for hackers with the skills:

mkosi linux systemd exploration prototype distribution

This project is part of:

Hack Week 24

Activity

  • 11 months ago: epaolantonio liked this project.
  • 11 months ago: janvhs added keyword "mkosi" to this project.
  • 11 months ago: janvhs added keyword "linux" to this project.
  • 11 months ago: janvhs added keyword "systemd" to this project.
  • 11 months ago: janvhs added keyword "exploration" to this project.
  • 11 months ago: janvhs added keyword "prototype" to this project.
  • 11 months ago: janvhs added keyword "distribution" to this project.
  • 11 months ago: janvhs started this project.
  • 11 months ago: janvhs originated this project.

  • Comments

    Be the first to comment!

    Similar Projects

    pudc - A PID 1 process that barks to the internet by mssola

    Description

    As a fun exercise in order to dig deeper into the Linux kernel, its interfaces, the RISC-V architecture, and all the dragons in between; I'm building a blog site cooked like this:

    • The backend is written in a mixture of C and RISC-V assembly.
    • The backend is actually PID1 (for real, not within a container).
    • We poll and parse incoming HTTP requests ourselves.
    • The frontend is a mere HTML page with htmx.

    The project is meant to be Linux-specific, so I'm going to use io_uring, pidfs, namespaces, and Linux-specific features in order to drive all of this.

    I'm open for suggestions and so on, but this is meant to be a solo project, as this is more of a learning exercise for me than anything else.

    Goals

    • Have a better understanding of different Linux features from user space down to the kernel internals.
    • Most importantly: have fun.

    Resources