Context
This section covers contextual elements regarding this Linux distribution project. Some information has already been provided in the introduction, but this page covers it all using a more formal method I like a lot: QQOQCP.
What am I building?
My own Linux distribution
I am creating my own Linux distribution with the following features:
- Binary package downloads available – I do not have time to build an entire OS locally with every update.
- Quick first-time installation using a guided installer – Installing Linux by hand is a lot of fun, but it can get redundant over time.
- Plug-and-play “distribution” kernel – I love manual configuration, golfing, and compilation, but having a kernel that does not require tweaks for every new device is relaxing.
- Simple security – Full-disk encryption is a must, a small firewall is easy to add.
For now, the result must mirror my daily use case and security requirements. Further desirable additions include:
- An update mechanism with rollbacks, at least for major upgrades like kernel major version jumps (e.g. LTS 6.6 to 6.12). However, I will have to choose how to allow installing packages without breaking them on updates.
- Improved security (SELinux, proper sandboxing).
A Linux lab platform
The very first implementation of my distribution will actually serve as a base for later experiments.
A comprehensive documentation
Last, but not least, as with the Factory project, I plan to document my choices and the lessons this endeavour teaches me. All content will be published as wiki pages available from the menu bar.
Who are the targeted users?
Me, myself and I (for now). The distro is actually an excuse to learn network infrastructure, CI/CD, Linux hardening, etc. Although the idea of using it as a daily driver is tempting, I do not want to force myself to commit to it.
Where, when and how is the product used?
RadishOS is meant for my laptop and desktop computers. It should cover my daily use cases, such as web browsing, document editing, gaming, development, messing around with configs and packages, etc. I plan to use it like any regular OS and install it from an ISO image on a bootable thumb drive. The OS itself should allow for weekly package updates, which means that the binary package host should follow this pace. In case a bigger update would be needed, I would like to perform it every month. This means that the factory would not need to run frequently. Naturally, I want to have a way of managing the factory as a whole, so I must add a user management solution.
Why am I building this?
Finally, here is a list of reasons why I am undertaking this project:
- for fun;
- to get a good grasp of topics related to Linux, hardening, network infrastructure, and more;