Hi all - I am learning about Linux and want to see if my understanding is correct on this - the list of major parts of any distro:
- the Linux Kernel
- GRUB or another bootloader
- one or more file systems (gotta work with files somehow, right?)
- one or more Shells (the terminal - bash, zsh, etc…)
- a Desktop Environment (the GUI, if included, like KDE or Gnome - does this include X11 or Wayland or are those separate from the DE?)
- a bunch of Default applications and daemons (is this where systemd fits int? I know about the GNU tools, SAMBA, CUPS, etc…)
- a Package Manager (apt, pacman, etc…)
Am I forgetting anything at this 50,000 foot level? I know there are lots of other things we can add, but what are the most important things that ALL Linux distributions include?
Thanks!
I would say, that from most important to least important components are:
- kernel
- init system (systemd, openrc, runit…)
- C library (glibc, musl)
- filesystem
- coreutils
- shell
- bootloader
- package manager
- x11/Wayland (if any)
- sound system (if any)
- WM (if any)
- DE (if any)
One thing I don’t know: if C is a compiled language already, what exactly does the C library do?
it is a dynamically linked library, meaning its not in the compiled binary, but its assumed to already be on the system. as opposed to a statically linked binary. this lowers the file size of the binaries, because most will use the standard library.
edit: this may not be 100% correct, but its the general idea
Most C binaries usually do not contain everything needed for their execution. It would make them too platform-specific. What most c programs do is that they use standard c library from platform for low-level things and communication with the system like memory allocation or stdin/stdout things, for example.