Welcome to the Linux shelf.
Penguin Pages is a compact reference site in the old Linux mirror tradition: restrained colors, small type, hard borders, dense links, and notes that are meant to be read.
what is here?
- Kernel boot parameter notes
- /proc, /sys, modules, devices, initramfs
- Boot chain and recovery commands
- Filesystem, init, security, audio, virtualization, and networking notes
- Source tree map for browsing Linux kernel code
- X.Org, Wayland, Mesa, DRM, and desktop stack references
- A tiny local lookup shell for common Linux topics
classic reading order
- Learn paths, permissions, shells, and logs.
- Read
man hier,man boot, and the docs for your init system. - Learn how your bootloader finds the kernel and initramfs.
- Learn storage, networking, users, services, and package tools.
- Build a kernel once, even if you never daily-drive it.
- Keep notes when you fix things.
sample boot log
[ 0.000000] Linux version 6.x.x (builder@penguinbox)
[ 0.000000] Command line: root=UUID=... rw loglevel=3
[ 0.120241] x86/fpu: Supporting XSAVE feature 0x001
[ 0.428922] ACPI: bus type PCI registered
[ 1.104911] virtio_blk virtio2: 1/0/0 default/read/poll queues
[ 2.021014] EXT4-fs mounted filesystem with ordered data mode
[ 2.880100] init: reached multi-user target
Old rule: read the logs first. They are not friendly, but they are usually honest.
Site crew.
Penguin Pages is maintained as a small static GitHub Pages site. This page lists the active people working on the site and the main project links.
active maintainers
| person | role | github |
|---|---|---|
| RobertFlexx | Main design and maintainer. Handles the site direction, old-web layout, content structure, and repository upkeep. | github.com/RobertFlexx |
| Moritisimor | Active developer. Works on site development, fixes, additions, and keeping the page useful as it grows. | github.com/Moritisimor |
about the site
Penguin Pages is built as a plain static website with separate HTML, CSS, and JavaScript files. The goal is to keep it readable, fast, easy to host, and easy to edit without needing a build system.
The design follows an old Linux documentation mirror style: simple boxes, small text, practical links, and direct reference material.
development focus
- Keep the site lightweight and static.
- Use real project links and official documentation where possible.
- Keep tabs organized by Linux topic.
- Keep the style consistent with early Linux reference pages.
- Avoid unnecessary frameworks, tracking, and heavy page effects.
Kernel documentation notes.
The kernel is memory management, schedulers, filesystems, drivers, networking, architecture code, process handling, security hooks, build logic, and many small interfaces that userspace quietly depends on.
how to read this page
Start with the boot parameters and virtual filesystems, then move to modules and logs. Most kernel troubleshooting begins with dmesg, /proc/cmdline, loaded modules, and the exact hardware or filesystem involved.
official kernel documentation
- docs.kernel.org - current rendered kernel documentation.
- kernel.org documentation index - documentation mirrored from kernel source.
- git.kernel.org - official kernel git browser.
- Bootlin Elixir - searchable Linux source browser.
boot parameters
| parameter | purpose | example |
|---|---|---|
root= |
Root filesystem device or UUID. | root=UUID=abcd-1234 |
rw / ro |
Mount root read-write or read-only during early boot. | rw |
init= |
Use a specific first userspace process. | init=/bin/sh |
loglevel= |
Control console kernel message verbosity. | loglevel=7 |
nomodeset |
Disable kernel mode setting for graphics debugging. | nomodeset |
systemd.unit= |
Boot to a systemd target. | systemd.unit=rescue.target |
single |
Request single-user or rescue style boot on many systems. | single |
panic= |
Automatically reboot after a panic delay. | panic=10 |
/proc
Runtime process and kernel information. Try cat /proc/cpuinfo, cat /proc/meminfo, cat /proc/cmdline, and cat /proc/mounts.
/sys
Kernel object model exported to userspace. Devices, buses, drivers, firmware, power, and module attributes live here.
/dev
Device nodes. Disks, terminals, loop devices, random devices, input devices, and pseudo devices are exposed as files.
module workflow
# list loaded modules
lsmod
# inspect a module
modinfo i915
# load and unload manually
sudo modprobe loop
sudo modprobe -r loop
# show kernel ring buffer
sudo dmesg -T
Linux kernel lab.
This tab is for kernel source, releases, building, patching, and Linux From Scratch references. It keeps the deeper kernel material separate from the basic kernel notes.
official kernel sources
| resource | link | use |
|---|---|---|
| The Linux Kernel Archives | kernel.org | Main place to find current kernel releases, tarballs, patches, changelogs, and release information. |
| Kernel release list | kernel.org releases | Explains mainline, stable, and longterm release categories. |
| Kernel source archive | cdn.kernel.org/pub/linux/kernel | Direct archive tree for kernel tarballs and patches. |
| Official git browser | git.kernel.org | Browse official kernel git repositories. |
| Torvalds tree | torvalds/linux on git.kernel.org | Mainline Linux kernel source tree. |
| GitHub mirror | github.com/torvalds/linux | Convenient read-only style mirror for browsing and cloning. |
| Bootlin Elixir | Bootlin source browser | Search and cross-reference Linux kernel source online. |
release types
| type | meaning | good use |
|---|---|---|
| mainline | Current development release line after a merge window. | Testing new kernel work and following current development. |
| stable | Released kernel with bug fixes backported after mainline release. | General users who need newer hardware support or fixes. |
| longterm | Older supported kernel maintained for a longer period. | Servers, appliances, conservative systems, and production-style setups. |
| linux-next | Integration tree for upcoming kernel work. | Developers testing future merge material, not normal installs. |
get the source
# clone mainline from kernel.org
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
# or clone the GitHub mirror
git clone https://github.com/torvalds/linux.git
cd linux
# check current version
make kernelversion
basic kernel build
# start from the running distro kernel config
cp /boot/config-$(uname -r) .config
# update config for the new tree
make olddefconfig
# optional terminal config menu
make menuconfig
# build kernel and modules
make -j$(nproc)
# install modules and kernel
sudo make modules_install
sudo make install
Many distributions handle bootloader updates differently. Keep an older working kernel in your boot menu.
Debian and Ubuntu style packages
# build Debian packages from a kernel tree
make -j$(nproc) bindeb-pkg
# install generated packages from parent directory
cd ..
sudo dpkg -i linux-image-*.deb linux-headers-*.deb
Arch style package path
Arch users usually build kernels through PKGBUILDs, the Arch Build System, or custom packages. This keeps the kernel tracked by pacman instead of scattering files outside the package database.
asp export linux
cd linux
makepkg -s
patching sketch
# apply a patch
patch -p1 < ../some-kernel.patch
# inspect changes
git diff
# build after patching
make olddefconfig
make -j$(nproc)
For serious kernel work, use git branches, keep patches small, and read the kernel development process documentation.
Linux From Scratch
| resource | link | use |
|---|---|---|
| LFS home | linuxfromscratch.org | Main project site. |
| Read LFS online | LFS read online | Read current stable and development books. |
| Download LFS | LFS download | Download the book in available formats. |
| Beyond Linux From Scratch | BLFS | Desktop, networking, server, and extended package instructions after base LFS. |
| Hints | LFS hints | Community notes and extra build ideas. |
Boot chain and recovery notes.
A Linux boot usually fails at one layer: firmware, bootloader, kernel, initramfs, root filesystem, init system, display manager, or user session. Name the layer before replacing random packages.
boot repair rule
Work in order. Check firmware entries, bootloader config, kernel files, initramfs contents, root filesystem UUIDs, and service logs. Random reinstalling usually hides the real problem.
boot path
| stage | what happens | common clues |
|---|---|---|
| firmware | UEFI or BIOS initializes hardware and picks a boot entry. | No boot menu, missing disk, wrong EFI entry. |
| bootloader | GRUB, systemd-boot, Limine, rEFInd, or another loader starts the kernel. | GRUB prompt, missing config, wrong UUID. |
| kernel | Hardware discovery, drivers, mounts, and early console output. | Kernel panic, driver errors, root not found. |
| initramfs | Temporary early userspace assembles storage and mounts root. | Emergency shell, missing modules, LUKS or LVM issue. |
| init | systemd, runit, OpenRC, s6, dinit, or another init starts services. | Failed units, stuck target, service loops. |
| login/session | Display manager, shell login, desktop session, user services. | Black screen, login loop, broken user config. |
chroot repair pattern
# from a live USB, adjust partitions first
sudo mount /dev/nvme0n1p2 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
# example GRUB EFI reinstall
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Linux
grub-mkconfig -o /boot/grub/grub.cfg
initramfs tools
- Debian or Ubuntu:
update-initramfs -u - Arch:
mkinitcpio -P - Fedora:
dracut --force - Generic dracut:
dracut --regenerate-all --force
boot inspection
efibootmgr -vlists UEFI entries.lsblk -fshows UUIDs and filesystems.cat /proc/cmdlineshows kernel args.journalctl -xbshows current boot logs.
Sysadmin field notes.
Most repair work is finding which layer lied to you: firmware, bootloader, kernel, initramfs, root filesystem, init system, display stack, network stack, package database, or user config.
admin method
Before editing config files, collect basic facts: what changed, which service failed, which log mentions it, which package owns the file, and whether the problem happens for a fresh user account.
filesystem layout
| path | role |
|---|---|
| /boot | kernel, initramfs, bootloader files |
| /etc | system configuration |
| /usr | programs, libraries, shared data |
| /var | logs, cache, databases, spools |
| /home | user files and per-user config |
| /run | runtime state since boot |
first checks
journalctl -xbfor current boot errors.dmesg -Tfor kernel and driver messages.lsblk -ffor block devices and filesystems.ip addrandip routefor networking.systemctl --failedfor failed units.df -hfor full filesystems.
users and permissions
| task | command |
|---|---|
| show identity | id |
| change owner | sudo chown user:group file |
| change permissions | chmod 755 script.sh |
| show ACL | getfacl file |
| edit sudo permissions | sudo visudo |
| add user to group | sudo usermod -aG group user |
Command cribsheet.
A small shelf of commands that eventually become muscle memory. None of this replaces the manual pages, but it gets you moving.
command habit
Prefer commands that show state before commands that change state. Read with
lsblk
,
findmnt
,
ip
,
ss
,
journalctl
, and
systemctl status
before editing files or restarting services.
daily shell
| task | command |
|---|---|
| find files by name | find . -name "*.conf" |
| show tree size | du -h --max-depth=1 . |
| watch a command | watch -n1 free -h |
| search text | grep -R "needle" /etc |
| list sockets | ss -tulpn |
| show open files | lsof -i |
| process tree | ps auxf |
| environment | printenv |
network
ip addr
ip route
resolvectl status
ping -c 4 1.1.1.1
tracepath kernel.org
nmcli dev status
ss -tulpn
storage
lsblk -f
blkid
findmnt
df -h
sudo smartctl -a /dev/sda
sudo btrfs filesystem usage /
sudo zpool status
package managers
| system | install | search |
|---|---|---|
| Debian or Ubuntu | sudo apt install pkg |
apt search pkg |
| Fedora | sudo dnf install pkg |
dnf search pkg |
| Arch | sudo pacman -S pkg |
pacman -Ss pkg |
| openSUSE | sudo zypper in pkg |
zypper se pkg |
| Void | sudo xbps-install pkg |
xbps-query -Rs pkg |
| Gentoo | sudo emerge pkg |
emerge --search pkg |
mini lookup shell
Linux source tree map.
The kernel source tree looks scary until the top-level directories become familiar. Start by reading names, then build paths, then small subsystems.
browsing advice
Use a source browser first, then clone the tree later. Follow one subsystem at a time. For example, a filesystem path usually touches fs/ , headers in include/ , and shared code in kernel/ or mm/ .
top level directories
| directory | what lives there |
|---|---|
| arch/ | Architecture-specific code: x86, arm64, riscv, powerpc, and more. |
| block/ | Block layer and request handling. |
| drivers/ | The giant driver forest: GPU, USB, PCI, net, storage, input, sound, etc. |
| fs/ | Filesystem implementations and VFS glue. |
| include/ | Kernel headers and public UAPI headers. |
| init/ | Early kernel init and startup path. |
| kernel/ | Core scheduler, locking, time, signals, tracing, cgroups, and process machinery. |
| mm/ | Memory management. |
| net/ | Networking stack. |
| security/ | LSM framework and security modules. |
| tools/ | Userspace tooling like perf and testing helpers. |
build sketch
# configure
make menuconfig
# build with all cores
make -j$(nproc)
# install modules and kernel
sudo make modules_install
sudo make install
# update bootloader if your distro does not do it automatically
sudo grub-mkconfig -o /boot/grub/grub.cfg
useful source browsers
patch culture
The kernel is developed through mailing lists, maintainers, subsystem trees, review, signed-off patches, and a long memory for broken changes. Read the development process docs before sending patches.
Graphics stack notes.
Linux graphics is a stack: kernel DRM and KMS, Mesa or vendor drivers, display server or compositor, toolkit, desktop shell, and applications. Debug from the bottom upward.
graphics method
First identify the GPU, kernel driver, session type, and userspace graphics libraries. Most desktop issues make more sense after checking whether the session is X11 or Wayland and whether hardware acceleration is active.
X.Org and Wayland
| project | link | notes |
|---|---|---|
| X.Org | x.org | Open source implementation of the X Window System. |
| X.Org documentation | X.Org docs | User documentation, protocol specs, client programming references. |
| Wayland | wayland.freedesktop.org | Protocol and architecture intended to replace X11. |
| freedesktop.org | freedesktop.org wiki | Desktop interoperability specifications and project hosting. |
| Mesa | mesa3d.org | Open source OpenGL, Vulkan, and video acceleration drivers. |
| DRM docs | kernel GPU docs | Kernel graphics and DRM documentation. |
debug commands
lspci -nnk | grep -A3 -E "VGA|3D|Display"
loginctl show-session "$XDG_SESSION_ID" -p Type
cat /sys/module/nvidia_drm/parameters/modeset
journalctl -b | grep -iE "drm|nvidia|amdgpu|i915|wayland|xorg"
common layers
- Kernel: DRM, KMS, framebuffer, GPU driver.
- Userspace driver: Mesa, libglvnd, vendor OpenGL or Vulkan stack.
- Display server: X.Org or Wayland compositor.
- Shell: KDE Plasma, GNOME Shell, XFCE, sway, etc.
- Portal: xdg-desktop-portal and desktop portal backend.
Desktop environments and window managers.
Desktop environments and window managers are central for using Linux as a desktop OS. Without them, you are working from a shell, a TTY, or a manually built graphical session.
choosing a desktop
Choose a desktop environment when you want a complete session with panels, settings, file manager integration, portals, notifications, and login polish. Choose a window manager when you want a smaller, keyboard-focused setup and are willing to assemble more pieces yourself.
common desktop environments
| Name | Description | Link |
|---|---|---|
| KDE Plasma | Feature-rich Qt-based desktop with strong customization and modern Wayland support. | kde.org |
| GNOME | GTK-based desktop focused on a consistent workflow and simplified user experience. | gnome.org |
| XFCE | Lightweight GTK desktop that runs well on older or lower-resource machines. | xfce.org |
| LXQt | Lightweight Qt desktop commonly used for fast, simple installations. | lxqt-project.org |
| Cinnamon | Traditional desktop layout developed by Linux Mint. | Cinnamon |
| MATE | Continuation of the GNOME 2 desktop style. | mate-desktop.org |
| Budgie | Modern desktop environment with a clean panel-driven workflow. | buddiesofbudgie.org |
common window managers
| Name | Description | Link |
|---|---|---|
| i3 | Popular X11 tiling window manager with plain text configuration. | i3wm.org |
| sway | Wayland compositor compatible with the i3 workflow. | swaywm.org |
| xmonad | Highly configurable tiling window manager written and configured in Haskell. | xmonad.org |
| Hyprland | Dynamic Wayland compositor with animations and extensive configuration. | hypr.land |
| IceWM | Fast stacking window manager with a traditional desktop feel. | ice-wm.org |
| JWM | Small window manager commonly used in lightweight systems. | JWM |
| dwm | Minimal suckless tiling window manager configured by editing source. | dwm.suckless.org |
Filesystem notes.
Filesystems decide how data is stored, recovered, checked, mounted, snapshotted, and sometimes compressed. Pick one for the job, not because a forum yelled loudly.
filesystem choice
For a normal install, ext4 is the quiet dependable choice. Btrfs is useful for snapshots and compression. XFS is strong for large files and server workloads. ZFS is excellent when storage integrity and pools matter more than being built into the mainline kernel.
common filesystems
| filesystem | use | notes |
|---|---|---|
| ext4 | General Linux systems | Reliable, common, simple, mature. |
| Btrfs | Desktops, snapshots, subvolumes | Supports compression, snapshots, send/receive, and checksumming. |
| XFS | Large files and servers | Strong performance and mature tooling. |
| ZFS | Storage pools and data integrity | Checksums, snapshots, datasets, compression, replication. |
| FAT32 | Firmware and portable media | Common for EFI System Partitions. |
| exFAT | Large portable drives | Useful between Linux, Windows, and macOS. |
| tmpfs | Temporary RAM-backed storage | Used for runtime files and fast temporary storage. |
| overlayfs | Containers and live systems | Layers one filesystem view over another. |
inspection
lsblk -f
findmnt
blkid
df -h
du -h --max-depth=1 /
cat /etc/fstab
repair and maintenance
sudo fsck /dev/sdXN
sudo btrfs scrub start /
sudo xfs_repair /dev/sdXN
sudo zpool status
sudo zpool scrub poolname
Init systems and services.
The init system is the first long-running userspace process. It starts services, manages boot targets or runlevels, and decides what happens when the machine shuts down.
service thinking
Service management is mostly dependency order, supervision, logging, and failure handling. Learn how your init system starts services, where it stores service definitions, and how to inspect logs for the current boot.
common init systems
| init | commands | notes |
|---|---|---|
| systemd | systemctl, journalctl |
Common on most major Linux distributions. |
| OpenRC | rc-service, rc-update |
Service manager used by Alpine, Gentoo, and others. |
| runit | sv |
Small supervision suite used by Void Linux by default. |
| s6 | s6-rc, s6-svstat |
Process supervision and service management toolkit. Used by Obarun Linux, and Adelie Linux by default. |
| dinit | dinitctl |
Dependency-aware service manager with a small design. Used by Chimera Linux by default. |
| SysVinit | service, update-rc.d |
Traditional init style built around scripts and runlevels. Popularly known by being used in Slackware Linux by default. |
service checks
systemctl status sshd
journalctl -u sshd -b
rc-service sshd status
sv status /var/service/*
s6-rc -a list
dinitctl list
Security basics.
Linux security starts with ordinary administration: permissions, users, groups, updates, logs, network exposure, and service configuration. Fancy tools do not replace sane defaults.
baseline
Patch regularly, expose fewer services, use SSH keys, limit sudo access, check listening ports, and know where authentication logs are stored. Security starts with fewer surprises.
security areas
| area | tools | notes |
|---|---|---|
| users and groups | id, groups, passwd |
Know which user can do what. |
| sudo | sudo -l, visudo |
Keep privilege escalation narrow and readable. |
| permissions | chmod, chown, umask |
Basic Unix permissions still matter. |
| ACLs | getfacl, setfacl |
Extended permissions beyond user/group/other. |
| capabilities | getcap, setcap |
Fine-grained privileges for binaries. |
| MAC | aa-status, sestatus |
AppArmor and SELinux add policy enforcement. |
| firewall | nft, ufw, firewalld |
Limit what services are reachable. |
checks
id
groups
sudo -l
ss -tulpn
sudo nft list ruleset
last
journalctl -p warning -b
ssh basics
- Use keys instead of passwords where possible.
- Disable root login on exposed systems.
- Keep OpenSSH updated.
- Use a firewall to expose only needed services.
- Check logs after failed login storms.
Audio stack notes.
Linux audio has layers. Hardware is handled by ALSA, desktop routing often goes through PipeWire or PulseAudio, and pro-audio workflows may involve JACK.
audio method
Start at the bottom. Confirm the card exists with ALSA, then check the desktop sound server, then check the session manager and selected output device. Many audio problems are routing problems, not driver problems.
audio layers
| layer | role | commands |
|---|---|---|
| ALSA | Kernel and low-level userspace audio support. | aplay -l, alsamixer |
| PulseAudio | Older common desktop sound server. | pactl info |
| PipeWire | Modern audio and video graph server. | pw-top, wpctl status |
| WirePlumber | Session manager for PipeWire. | systemctl --user status wireplumber |
| JACK | Low-latency pro-audio system. | jack_lsp |
debug commands
aplay -l
alsamixer
pactl info
wpctl status
pw-top
systemctl --user status pipewire wireplumber pipewire-pulse
Containers and virtualization.
Linux can isolate workloads with namespaces, cgroups, chroots, containers, virtual machines, and full hypervisor stacks. The right tool depends on how much isolation and hardware emulation you need.
container or VM
Use a container when you want isolated userspace on the same kernel. Use a virtual machine when you need a separate kernel, stronger machine boundaries, firmware testing, or another operating system entirely.
common tools
| tool | type | notes |
|---|---|---|
| chroot | filesystem isolation | Classic repair and build environment tool. |
| systemd-nspawn | container | Lightweight system container tool. |
| Docker | container platform | Popular application container tooling. |
| Podman | container platform | Daemonless container tooling with rootless workflows. |
| LXC | system containers | Containers closer to lightweight machines. |
| QEMU/KVM | virtual machines | Hardware virtualization and emulation. |
| libvirt | VM management | Management layer used by virt-manager and virsh. |
commands
sudo chroot /mnt
machinectl list
podman ps
docker ps
lxc-ls --fancy
virsh list --all
qemu-system-x86_64 --version
Troubleshooting flowcharts.
Good troubleshooting is boring: identify the layer, collect evidence, change one thing, test, and write down what changed.
general loop
Observe, isolate, test, document. Avoid changing five things at once. A fix you cannot explain is hard to trust and harder to repeat.
boot failure
network failure
graphical session failure
disk space failure
Linux glossary.
Short definitions for common Linux terms.
how to use it
This glossary is for quick orientation while reading the rest of the site. It keeps definitions short so you can get back to the command output, manual page, or source file you were looking at.
terms
| term | meaning |
|---|---|
| kernel | The core program managing hardware, memory, processes, filesystems, and system calls. |
| userspace | Programs outside the kernel: shells, services, desktops, tools, and applications. |
| initramfs | Temporary early userspace used during boot before the real root filesystem is mounted. |
| module | Loadable kernel code, often used for drivers and filesystems. |
| syscall | A controlled entry point from userspace into the kernel. |
| daemon | A background service process. |
| TTY | Text terminal interface, often available with Ctrl+Alt+F keys. |
| compositor | Display server component that draws windows and effects, especially in Wayland. |
| display manager | Graphical login manager such as SDDM, GDM, LightDM, or LXDM. |
| package manager | Tool for installing, removing, updating, and querying software packages. |
| mount point | Directory where a filesystem is attached. |
| environment variable | Named value inherited by processes, such as PATH or HOME. |
Distro downloads.
Use official download pages. Pick a distribution by release model, hardware support, documentation, package tools, and how much system maintenance you want. Take information here AS IS, and information here is NOT opionated, only based on common consensus.
user friendly desktops
| distro | download | why choose it |
|---|---|---|
| Ubuntu Desktop | ubuntu.com/download/desktop | Broad hardware support, large community, common third-party software support, good first desktop choice. |
| Linux Mint | linuxmint.com/download.php | Traditional desktop feel, comfortable defaults, good for users moving from Windows-style workflows. |
| Fedora Workstation | fedoraproject.org/workstation/download | Modern GNOME desktop, fresh software, good developer workstation, strong upstream alignment. |
| Zorin OS | zorin.com/os/download | Polished desktop aimed at users coming from Windows or macOS. |
| Pop!_OS | system76.com/pop/download | Desktop-focused Ubuntu-based system with System76 polish and simple graphics options. |
| MX Linux | mxlinux.org/download-links | Debian-based desktop with helpful tools and good performance on older hardware. |
advanced and hands-on
| distro | download | why choose it |
|---|---|---|
| Arch Linux | archlinux.org/download | Rolling release, direct control, simple packaging, excellent documentation. |
| Gentoo | gentoo.org/downloads | Source-based system for users who want deep control over build options and system composition. |
| Void Linux | voidlinux.org/download | Independent distro with XBPS, runit, fast tooling, and non-systemd defaults. |
| Slackware | slackware.com/getslack | Traditional Linux with minimal abstraction and old-school administration. |
| NixOS | nixos.org/download | Declarative configuration, reproducible systems, rollbacks, and a very different package model. |
| Linux From Scratch | linuxfromscratch.org/lfs/download | Build a Linux system from source to learn how the pieces fit together. |
rolling and fresh packages
| distro | download | why choose it |
|---|---|---|
| openSUSE Tumbleweed | get.opensuse.org/tumbleweed | Rolling release with strong tooling, snapshots, and quality control. |
| EndeavourOS | endeavouros.com | Arch-based system with an easier installer and friendly defaults. |
| CachyOS | cachyos.org/download | Arch-based distro focused on performance tuning and desktop responsiveness. |
| Manjaro | manjaro.org/download | Arch-family desktop with its own repos, graphical tools, and delayed package flow. |
| openSUSE Slowroll | openSUSE Slowroll | A slower rolling option between Leap-style stability and Tumbleweed pace. |
server and stable base
| distro | download | why choose it |
|---|---|---|
| Debian | debian.org/distrib | Stable, conservative, widely supported, excellent for servers and quiet systems. |
| Ubuntu Server | ubuntu.com/download/server | Popular server choice with cloud support, predictable LTS releases, and broad documentation. |
| Rocky Linux | rockylinux.org/download | RHEL-compatible server and workstation base with enterprise-style lifecycle. |
| AlmaLinux | almalinux.org/get-almalinux | Community-governed enterprise Linux compatible distribution. |
| openSUSE Leap | get.opensuse.org/leap | Stable openSUSE track with YaST, zypper, and conservative package movement. |
| Oracle Linux | oracle.com/linux/downloads | Enterprise Linux family option commonly used for Oracle-oriented server environments. |
minimal, container, and special use
| distro | download | why choose it |
|---|---|---|
| Alpine Linux | alpinelinux.org/downloads | Small, simple, security-oriented distro using musl libc, BusyBox, and apk. Also very desktop capable. |
| Kali Linux | kali.org/get-kali | Security lab and penetration testing distribution. Best used for labs, not normal daily desktop installs. |
| Tails | tails.net/install | Live privacy-focused system designed around Tor and amnesic sessions. |
| Qubes OS | qubes-os.org/downloads | Security-focused desktop OS built around compartmentalized virtual machines. |
| Chimera Linux | chimera-linux.org/download | Independent Linux using apk-tools, LLVM, musl, and a non-GNU userland approach. Very desktop capable. |
Distro families and package notes.
A distro is a kernel plus userland plus packaging plus policy. The family matters because it decides package tools, service defaults, release rhythm, and documentation culture.
choosing a distro
Pick a distro based on hardware support, package freshness, release model, documentation, driver needs, and how much maintenance you want. The best distro is the one whose tradeoffs match the machine and the job.
common families
| family | docs | tools | good fit |
|---|---|---|---|
| Debian | Debian docs | apt, dpkg |
Stable servers, conservative desktops, and users who prefer a slow-moving base with a large package archive. |
| Ubuntu | Ubuntu docs | apt, dpkg, Snap |
General desktop use, hardware support, gaming setups, and people who want broad third-party software support. |
| Linux Mint | Mint docs | apt, dpkg |
Traditional desktop users, Windows switchers, and machines that need a comfortable out-of-box setup. |
| Pop!_OS | Pop!_OS docs | apt, dpkg |
Desktop users who want a polished GNOME-based workflow, System76 hardware support, and simple graphics setup. |
| Fedora | Fedora docs | dnf, rpm |
Modern Linux desktops, developers, GNOME users, and people who want fresh software without full rolling release behavior. |
| RHEL family | Rocky docs | dnf, rpm |
Servers, enterprise-style systems, long maintenance windows, and production-like lab environments. |
| AlmaLinux | AlmaLinux wiki | dnf, rpm |
RHEL-compatible servers and workstations with community governance and long-term stability. |
| Arch | Arch Wiki | pacman, PKGBUILD |
Users who want rolling packages, simple packaging, direct control, and excellent documentation. |
| EndeavourOS | EndeavourOS Discovery | pacman, AUR helpers |
Arch-style systems with a friendlier installer and fewer manual setup steps. |
| openSUSE | openSUSE docs | zypper, YaST |
Users who want strong admin tooling, snapshot-friendly setups, and a choice between stable and rolling tracks. |
| Gentoo | Gentoo Wiki | emerge, Portage |
People who want source-based control, USE flags, custom builds, and deep system learning. |
| Alpine | Alpine docs | apk |
Containers, small systems, security-minded minimal installs, and users comfortable with musl and BusyBox. |
| Void | Void Handbook | xbps, runit |
Independent systems, fast package management, non-systemd setups, and users who like simple service supervision. |
| NixOS | NixOS Manual | nix, declarative config |
Reproducible systems, rollback-friendly machines, declarative configuration, and users willing to learn a different model. |
| Slackware | SlackDocs | pkgtool |
Traditional Unix-like Linux setups with minimal abstraction and old-school administration style. |
| MX Linux | MX manuals | apt, MX tools |
Stable desktop systems, older hardware, and users who want Debian-based convenience with helpful graphical tools. |
| Kali | Kali docs | apt, dpkg |
Security labs, penetration testing, training environments, and tool collections. Not the best choice for a normal daily desktop. |
release model notes
| model | what it means | tradeoff |
|---|---|---|
| stable | Packages change slowly and receive security fixes. | Predictable, but less fresh. |
| rolling | Packages continuously update. | Fresh, but requires more attention. |
| source based | Packages are commonly built locally from source. | Highly configurable, but time-consuming. |
| declarative | System state is described in configuration. | Reproducible, but requires learning the model. |
| enterprise clone | Tracks enterprise Linux compatibility. | Excellent for servers, less exciting for new desktop software. |
stable
Good for servers, boring laptops, and systems where surprise upgrades should not be part of the hobby.
rolling
Good for new hardware, fresh desktops, and users willing to read package transaction output.
source based
Good for learning internals, tuning options, and understanding what your toolchain is doing.
Links, manuals, and bookmarks.
A good Linux bookmark folder is worth more than a random tweak script. Start with primary docs, man pages, source browsers, and distro handbooks.
link policy
This page favors official documentation, source browsers, manuals, and long-lived project sites. Forum posts and random scripts can be useful, but primary docs should be checked first.
core documentation
distribution docs
desktop and graphics
related web
tux artwork
The header image links to Tux.svg on Wikimedia Commons. The image is loaded directly from Wikimedia's static upload host.