Overview
This guide will walk you through creating your own Linux distro from scratch. The tutorial is designed to be run on a Linux computer.
This guide covers creating a base distro. It starts from compiling the Linux Kernel and ends with a distro you can browse the web and play games on. Many people can accomplish their goals by forking an existing distro and there are many other guides which cover this.
This guide is designed to supplement a YouTube series on creating a Linux distro.
From Scratch vs Forking Distros
A lot of distro creators don't know wether to create a fork or base distro. This section will help you decide if this is the right guide for you. Generally, if your final distro can be created by configuring your current distro, a fork is the best approach.
Most new Linux distros are forks of existing distros.
- Debian → Ubuntu, Kali Linux
- Ubuntu → Linux Mint, PopOs
- Arch → Manjaro, CachyOS
- Fedora → Bazzite
Creating a distro is a lot of work. With limited development resources, forks and base distros prioritize different things. Popular forked distros often allocate resources to a polished user experience and base distros focus more on architecture. Few people use Debian, but a lot of people depend on certain parts of it. If Debian changed their wallpaper and completely reworked how they configured Gnome, no one would notice. However, if Debian changed the syntax for APT, a lot of people would notice. Different things are weighted as more important for base distros and forks.
| Base Distro | Fork |
|---|---|
| Lot of updated, stable packages | Preinstalled Package Choice |
| Technology Stack (X11 or Wayland) | Software Configurations |
| Will the distro exist in a few years? | Wallpaper, Theming |
| Information base for solving problems | User support channels (Discord, Forums) |
Base distros can steer the technology stack of Linux. Many technologies which are now almost standards were first adopted by Fedora (SystemD, PipeWire, Wayland).
Forked distros can steer the user experience trends of Linux. Good UI patterns in one distro are adopted by others.
Why make distro number #10,132
Many Linux commentators state Linux has a resource allocation problem. People creating their own projects could be contributing to existing projects.
Creating a distro from scratch will teach tools and skills which are needed to contribute to existing projects. Additionally, many Linux programs are written in C and C++, while most software developers code in JavaScript and python. Gnome apps are written in Vala, a language most developers have never heard of. Creating a new python image editor may attract many more contributors than would contribute to a project like gimp which released in the 90s.
Some Linux projects have become their own dynasties. Gnome and Kde even have their own calculators. Dynasties allow vertical integration, cohesive themining, and app integration (the apple ecosystem does this well). On the other hand, engineers working on large projects like YouTube could spend a days making a change to a button. Smaller projects can move faster.