Full notes from the video:
Linux Distributions Deconstructed
1. The Unix/Linux Philosophy – “The Linux Way”
* Use programs that do only one task, but do it well.
To accomplish complex tasks, use several programs linked together.
* Store information in human-readable plain text files whenever it is possible.
* There is no “one true way” to do anything.
* Prefer command line tools over graphical tools.
* Everything is a file.
2. Components of a Linux Distribution (Base System):
This is the part of the system that is executed first. When you have only one operating system installed, it simply loads the kernel. If there’s more than one OS on the computer, it gives you options to choose from.
Ex. GRUB, LILO
The kernel is the central component of the system that communicates directly with the hardware. Each distribution ships with their own version of the kernel. It is possible for users to change versions and even compile their own kernel.
There are several file systems that Linux-based distributions use for different kinds of block storage devices (drives). Linux can read and write to non-native systems like fat32 and NTFS but it’s best to store data for a Linux system on a native file system. Debian, Ubuntu and Linux Mint all default to ext4 when you install them.
Ex. ext2/3/4, XFS, Btrfs, JFS
In a typical Linux system there are various services running as processes in the background, taking care of things like configuring your network connection, responding to connected USB devices, managing user logins, managing file systems, etc. They are often called “daemons”, because they are running silently and are mostly invisible to the user. One of these “daemons”, started by the kernel after it finishes booting itself, is called init, and its role is to start the rest of the system, including all other “daemons” and graphical sessions.
The traditional init system used since the old Unix era, is Sys V init (referring to the System V Unix). But recently many distributions have switched to more modern init systems. Most major distributions now ship with systemd.
Ex. Upstart (Old Ubuntu), systemd, Sys V, OpenRC, runit
The shell, sometimes also called “command line,” implements a textual interface that allows you to run programs and control the system by entering commands from the keyboard. Most Linux systems use the Bourne Again Shell (Bash).
Ex, sh, csh, zsh, korn, fish
The name “Linux” really only refers to the kernel itself. To make a useful operating system, that kernel is distributed with many command line utilities from the GNU Project. There are hundreds of GNU tools shipped with every Linux distribution. Most are mandated by the POSIX standards. The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. This makes the Linux command line a very familiar operating environment, no matter what distribution you’re using.
3. Linux Distribution with Graphic User Environment:
This is the software that actually tells the graphics hardware what to draw on the screen. It is responsible for drawing graphics and processing input from the keyboard, mouse, tablets and other devices. it allows you to work in a graphical environment both on your own computer and on a remote computer to which you connect across a network.
Ex. X.org, Wayland
The display manager provides users with a graphic login and a way to choose from different desktop environments.
Ex. GDM (GNOME), KDM, (KDE), LightDM,
The window manager is a program that communicates with the X server. Its task is managing windows. It is responsible for drawing the window borders, bringing a window to the front when you click it, moving it on the screen and hiding it when you minimize its program.
A compositing window manager, or compositor, is a window manager that provides applications with an off-screen buffer for each window. The window manager composites the window buffers into an image representing the screen and writes the result into the display memory.
Ex. Metacity – GNOME Desktop Environment window manager
KWin – KDE window manager
Xfwm – Xfce window manager, a lightweight manager designed to consume as little resources as possible without compromising usability
Compiz Fusion – an advanced window manager with lots of eye candy like customizable window animations, multiple desktops placed on a cube that you can rotate with your mouse, transparent window borders, wobbling windows while dragging them, etc.
Compton – A compositor.
A desktop environment includes all the components you need to have a complete graphic working environment. The display server, display manager, window Manager and a suite of graphic utility applications are all included in a full desktop environment. Those utilities would include a text editor, terminal emulator, image viewer, file manager and system resource monitor.
Ex. GNOME, KDE, MATE, Xfce, Cinnamon
Graphics based applications for Linux are built using toolkits that include things like buttons and widgets.
Ex. GTK+, Qt
A good bit of the above comes from: https://en.wikibooks.org/wiki/Linux_Guide/How_Linux_Works
A great place to learn more about Linux is a book called “The Linux Command Line” by William Shotts. Free download: http://linuxcommand.org/tlcl.php