Trace the Linux boot process from BIOS to login screen: UEFI, GRUB bootloader, kernel initialization, systemd, runlevels and targets. Then explore the X Window System architecture, Wayland, display managers, and locale internationalization settings.
/etc/default/grub, updated with update-grub.dmesg./sbin/init (which is systemd on modern distros) as the first userspace process (PID 1). systemd reads its unit files, resolves dependencies, and starts all required services in parallel to reach the configured target (runlevel equivalent). Boot completes when the target is reached.multi-user.target: a login prompt appears on the console (tty). If graphical.target: a Display Manager (GDM, LightDM, SDDM) presents a graphical login screen. After authentication, the user session starts — shell or desktop environment.| SysV Runlevel | systemd Target | State | Description |
|---|---|---|---|
| 0 | poweroff.target | Halt | Shutdown and power off the system |
| 1 | rescue.target | Single User | Minimal single-user mode for recovery. Root shell, no network. |
| 2 | multi-user.target | Multi-User | Multi-user text mode, no NFS (Debian/Ubuntu) |
| 3 | multi-user.target | Multi-User Net | Full multi-user text mode with networking. Standard server target. |
| 5 | graphical.target | Graphical | Full graphical desktop environment. Default on desktop systems. |
| 6 | reboot.target | Reboot | Shut down and restart the system |
The X Window System (X11 or simply "X") provides the graphical infrastructure for Linux desktop environments. Developed at MIT in 1984, X11 uses a client-server architecture — the X Server manages display hardware (screen, keyboard, mouse), while X Clients are the GUI applications that talk to the server to draw their windows.
Crucially: X uses a network-transparent protocol. An X application running on a remote server can display its windows on your local screen — the foundation for remote desktop workflows in Linux environments.
Manages the physical display, keyboard, and mouse. Draws pixels on screen based on requests from X clients. Handles input events and routes them to the appropriate application window. Runs as a privileged process (usually as root or via xorg group).
Any GUI application: Firefox, terminals, file managers. They request the X Server to display windows and receive input events. Clients communicate with the server via the X11 protocol over a socket (or network). Each client has no direct hardware access.
Controls window appearance, placement, and behavior. Draws title bars, handles minimize/maximize, manages focus. Examples: GNOME Shell, KDE Plasma, i3 (tiling), Openbox. Can be replaced independently — a core Linux flexibility.
Provides the graphical login screen. Authenticates users and launches their chosen desktop session. Sits before the desktop environment in the startup sequence. Examples: GDM, LightDM, SDDM, XDM.
X11 was designed in 1984 for hardware and security models that no longer exist. Wayland is a modern display protocol designed from scratch to address X11's limitations: simpler architecture, better security (applications cannot spy on each other's windows), better performance, and native support for modern hardware acceleration.
Key difference: In Wayland, each application talks directly to the Wayland compositor (which replaces both the X Server and Window Manager). There is no network transparency by default — but XWayland provides backward compatibility for X11 applications.
Current state: GNOME defaults to Wayland since version 3.22. KDE Plasma 6 defaults to Wayland. Most major distros are transitioning. Some applications (especially older games, screen recorders, remote desktop) still require X11/XWayland.
Internationalization (i18n) — designing software to support multiple languages and regions. The "18" is the count of letters between "i" and "n" in "internationalization".
Localization (l10n) — adapting software for a specific language and region. Translating text, formatting dates/times/currency/numbers according to local conventions.
Linux locale settings control: language for system messages, date/time format, numeric format (decimal separator), currency symbol, character encoding (UTF-8 is standard), and keyboard layout.
Production servers should always be configured to UTC timezone — never a local timezone. Reasons: log timestamps across servers in multiple timezones are directly comparable without conversion; daylight saving time transitions do not cause duplicate or skipped timestamps in logs; forensic analysis across global infrastructure is unambiguous. Set sudo timedatectl set-timezone UTC and enable NTP (sudo timedatectl set-ntp true) on every server you deploy. For display purposes, user interfaces can convert UTC to local time — the source of truth should always be UTC. This is not a preference — it is a sysadmin non-negotiable.