What are the major components of any Linux distribution?

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!

VHS,
@VHS@hexbear.net avatar

If I understand correctly, the filesystem driver is contained within the kernel for all linux-native filesystems (Ext4, XFS, BtrFS, F2FS, etc.), just as drivers for computer components and devices are. But drivers to access NTFS (Windows) and HFS+ (Mac OS) drives are programs in userspace

jollyrogue,

Package manager needs to be higher since Linux distros are software distribution projects mainly.

  1. Package manager
  2. Config tools
  3. Config defaults
  4. Kernel
  5. Init process
  6. Software
just_another_person,

Well, bootloader first, then kernel, then init.

jollyrogue,

What are we ranking? The boot order of computers?

Of the 3 you listed, the init is only important to a few distros.

Also you forgot this is Linux and the initramfs.

just_another_person,

The major parts of any distro are just bootloader, kernel, init, shell, and package system. The filesystem isn’t “part” of the distro, it’s just an abstraction layer to work with data on the drive, and should be considered independent of the packaged distribution itself.

With the above, you can run the basics of Linux on a device. The DE is not needed, and included packages and libraries are at the discretion of the maintainers. The included choices of all the above is the only thing that differentiates each distro.

If it helps in your understanding at all, back in the day, in order to install something like Slackware, you had to build each layer of these things manually like so: format and partition disk from disk in DOS, copy bootloader to newly partitioned HDD, boot to single user mode, compile kernel, add entries to bootloader, reboot from disk to Linux kernel, open TTY, set user and shell, reboot again, compile DE, set init level and basic services, reboot to DE, and then you had a Desktop.

funkajunk,
@funkajunk@lemm.ee avatar

You pretty much got it, except for the fifth point.

A desktop environment (“DE”) is separate from the compositor (X11 or Wayland), but can’t exist without it.

At the end of the day, a DE is really just a “window manager” with a bunch of bundled applications, like taskbars/panels, a file manager, an app menu, etc. It’s as minimal or as feature rich as you want it to be.

The window manager dictates what to draw on the screen and where, but the compositor is what actually does the work. One is kind of useless without the other.

Hopefully that makes sense, I’m not a rocket surgeon.

faethon, (edited )
@faethon@lemmy.world avatar

I think you would also need an initial run process such as systemd or the sysV runlevels.

lemmyvore,

Fun fact, the init process can be anything, even /bin/bash or a shell script. But if it ends or dies so does the system, and of course you want extra features like multiuser capability, better interface etc. So it’s typically a more complex system like you said, that starts a bunch of other things. But you can still see the init process with PID 1 there in the process list. 😊

KISSmyOS,

Fun fact: On Slackware, the init process is just a shell script (which launches other shell scripts).

  • All
  • Subscribed
  • Moderated
  • Favorites
  • linux@lemmy.ml
  • localhost
  • All magazines
  • Loading…
    Loading the web debug toolbar…
    Attempt #