3

Today, I woke up with an itch that I would like to scratch: What is exactly a Linux Distro made of? Of course, I'm not only looking for an answer without having searched before. From my understanding, a Linux Distro is made of the following components:

Linux Kernel
GNU tools and libraries
Package Management
Documentation
Windows System
Windows Manager
Desktop Environment

Is there something I'm missing?

5
  • 1
    That's a pretty good list, I'd say. I think what 'differentiates' a distro is the choice, or lack thereof, that it makes for these various components. The biggest differences that seem to define the distro for me are: - Desktop environment - Package Manager - Service Manager (e.g. SysVInit, systemd) - Kernel version
    – LJKims
    Commented Mar 18, 2020 at 15:32
  • 1
    There are also plenty of apps. IMHO an important differentiator between distros is the update policy, between rolling releases, twice-yearly upgrade, LTS releases, and how recent the code is in a given version (RHEL appears to freeze code about 5 years before publishing). Hardware support is also an important factor especially for laptops.
    – xenoid
    Commented Mar 18, 2020 at 15:43
  • 2
    This seems like a broad question, as various distributions go various distances in their efforts. Perhaps start with the Linux From Scratch project and see if that helps?
    – Jeff Schaller
    Commented Mar 18, 2020 at 15:51
  • 1
    I think you are correct, and also specifically what has been said in the comments: how all that stuff is maintained, patched, quality of support provided, and especially the default configuration or ability to configure many things the least of which being network, firewall, ssh, and desktop environment(s)... the major things that make the computer just work as expected
    – ron
    Commented Mar 18, 2020 at 17:23
  • Please take time for the tour, and read How to Ask to learn more about asking (the right) questions.
    – Murphy
    Commented Mar 18, 2020 at 21:13

2 Answers 2

2

Things I'm missing in this list:

  1. Bootloader

    You won't get far without one.

  2. System libraries

    Taken for granted and easily forgotten. libc is surely the best-known in Unix environments.

  3. Root FS and other assets

    Even if many (most?) programs would work on their own using defaults, distributions usually bring their own, minimal, pre-filled root filesystem with necessary configurations and other files that make them different from others, and more convenient for the users (us) to use. Even more assets are bundled together with the third-party programs in the packages. This is also important to make things work together as an operating system, and I tend to think adaption and bundling amounts to a huge part of the distribution and package maintainer's work.

  4. Applications!

    Core, tools (BTW, besides GNU there are also BSD and other OS utilities featured with about every Linux distribution) and (G)UI are fine, but what are you gonna do with them? Every OS benefits of providing a huge choice of applications targeted at the audience, and the desktop environment is only a fraction of that.

1

One thing missing is the installer program, and the boot loader. No distro gives you just the tools and the info.

I would summarize the three Windows/Desktop as GUI. Or Shell and GUI.

"GNU tools" is not very precise. There is coreutils package, but mount e.g. is not a GNU tool. Also modprobe is special.

redhat.com is cautious:

Note: What is and is not included when referring to Linux is constantly debated. For the purpose of this definition, we’re talking about the Linux kernel in conjunction with tools, applications, and services bundled along with it. All of these things together make the functional operating system that most people call Linux.

Package Manager and Documentation are good points of yours. Maybe you can find a convincing way of sorting out these tools, applications and services.


This is my grouping of the 50 packages in group "base" in arch-linux. I put some common categories at the end of the lines.

bash           SHELL
util-linux            "SYSTEM UTILS"
coreutils      "GNU FILE etc. UTILS"
bzip2,gzip,tar
dhcpcd,inetutils,iproute2,iputils,netctl    NET
e2fsprogs,jfs-,reiser-,xfs-                 FILESYSTEM
pacman                                      PACKAGE MANAGER
systemd-sysvcompat                          INIT
glibc,gcc-libs            CC
gawk,perl,sed             PROGRAMMING
less                      PAGER
man-db,man_pages,texinfo  DOCU
nano,vi                   EDITOR
s-nail                    E-MAIL
findutils,grep,diffutils,file
dev-mapper
lvm2,mdadm,cryptsetup   
pciutils,usbutils,sysfsutils DEVICES
procps-ng,psmisc             PROCESSES
logrotate
shadow             USERS
gettext            TRANSLATIONS

This is a mix between technical prerequisites and basic user needs. Missing parts are GUI and the C compiler (GNU compiler collection). The gcc command might never be needed, but in theory it is essential (tool-chain).

I tried to order from "basic" to "additional", but only roughly. The EDITOR category can be expanded to vim (or emacs), then via GUI subsystem to TEX or a "office" word program.

The "rest" is just more compiled and managed (dependencies) software packages, the applications.

1
  • Under "editors", vi/ex/ed are mandated by Posix.
    – vonbrand
    Commented Mar 22, 2020 at 20:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .