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:

  1. the Linux Kernel
  2. GRUB or another bootloader
  3. one or more file systems (gotta work with files somehow, right?)
  4. one or more Shells (the terminal - bash, zsh, etc…)
  5. a Desktop Environment (the GUI, if included, like KDE or Gnome - does this include X11 or Wayland or are those separate from the DE?)
  6. a bunch of Default applications and daemons (is this where systemd fits int? I know about the GNU tools, SAMBA, CUPS, etc…)
  7. 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!

  • khorovodoved@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    8 months ago

    I would say, that from most important to least important components are:

    1. kernel
    2. init system (systemd, openrc, runit…)
    3. C library (glibc, musl)
    4. filesystem
    5. coreutils
    6. shell
    7. bootloader
    8. package manager
    9. x11/Wayland (if any)
    10. sound system (if any)
    11. WM (if any)
    12. DE (if any)
    • tricoro@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      8 months ago

      One thing I don’t know: if C is a compiled language already, what exactly does the C library do?

      • khorovodoved@lemm.ee
        link
        fedilink
        arrow-up
        2
        ·
        8 months ago

        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.

      • lseif@sopuli.xyz
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        8 months ago

        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

    • lseif@sopuli.xyz
      link
      fedilink
      arrow-up
      0
      ·
      8 months ago

      what do u mean by important? like ‘essential to the system’, or ‘important to consider when choosing a distro’, or what?

      • khorovodoved@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        8 months ago

        I mean “something out of ordinary about it affects your experience with this distro the most”.

  • pastermil@sh.itjust.works
    link
    fedilink
    arrow-up
    1
    ·
    8 months ago

    Also:

    • init system, without which you’d be left with only one program running at a time
    • some programs are written in interpreted language (e.g python, shell, perl), so the interpreter would also be required
    • C library, without which none of the above would function (yes, even if all the programs are statically compiled, it still has that library included with each executable)
    • this one is not necessary for the runtime, but is needed for creating a working system: toolchain – preprocessor, compiler, linker, assembler – all the stuff for transforming the source code into executables

    Another comment mentioned Linux From Scratch, I’d totally recommend that, but it would take so much of your time manually building stuff (which is why it is so educational). If you don’t have the time, you may want to opt with Gentoo instead.