Series
Learning Linux from Scratch
22 parts
Learning Linux from Scratch — After a Full IT Apprenticeship
I completed a 4-year IT apprenticeship and thought I knew Linux. A few weeks into college proved me wrong. This is why I am starting over from scratch.
What is Linux?
When you ask ChatGPT what Linux is, you get the exact answer. "Linux is a kernel". While this is technically true, it is also completely unhelpful for anyone trying to actually learn the OS.
The Filesystem
Before you open a terminal and start typing commands, it helps to understand what you are actually navigating. Linux has a specific folder structure that looks strange at first but follows a clear logic once you know what each folder is for.
Users and Permissions
If you came from Windows, you are probably used to being the administrator of your own machine by default. Linux works differently. Understanding how Linux handles users and permissions will save you a lot of confusion early on.
Installing and Managing Software
On Windows you download an installer from a website and run it. On Linux you almost never do that. Instead you use a package manager — and once you understand why, you will not want to go back.
Text Editors
At some point you will need to edit a file directly in the terminal. Knowing how to use a terminal text editor is not optional if you want to work with Linux seriously. This post covers nano and vim.
Shell Scripting Basics
Everything you have typed in the terminal so far has been a command you ran manually. Shell scripting is what happens when you stop running commands one at a time and start writing programs that run them for you.
Process Management
Every program running on your system is a process. Understanding how Linux manages processes — how to inspect them, control them, and kill them — is essential for anyone working with Linux seriously.
Networking Fundamentals
Networking on Linux is not abstract. Every interface, every connection, every DNS lookup is visible and controllable from the terminal. Once you know the tools, diagnosing network problems becomes straightforward.
SSH
SSH is how you connect to remote Linux machines. Understanding it properly — key-based auth, server hardening, tunneling — means you can use it securely and efficiently every day.
systemd and Services
systemd is the init system on most modern Linux distributions. It manages everything that runs on your system — services, timers, mounts and more. Understanding it is not optional for serious Linux work.
Disk Management
Disks on Linux are not plug and play. Understanding how partitions, filesystems, and mounting work gives you real control over your storage — and the knowledge to fix things when they go wrong.
Users and Groups — In Depth
The earlier permissions post covered the basics. This one goes deeper — how Linux stores user accounts in /etc/passwd and /etc/shadow, how to manage users properly, and how the sudoers file actually works.
Cron and Scheduled Tasks
cron is the classic Linux task scheduler. It runs commands on a schedule — every minute, every hour, every day, or any combination you define. Understanding the syntax and the gotchas makes it reliable.
Firewall — iptables and ufw
The Linux firewall is built into the kernel. iptables has been the tool to configure it for decades. ufw makes the common cases much simpler. This post covers how it all fits together.
Environment Variables and the Shell
Every time you open a terminal the shell sets up an environment — variables that control how it and every program you run behave. Understanding PATH, export, and shell startup files makes everything click into place.
Log Management
When something goes wrong on a Linux system, logs are where you find out why. Knowing where logs live, how to read and filter them efficiently, and how to stop them eating all your disk space is core sysadmin knowledge.
Kernel Module Management
The Linux kernel uses a modular system — most functionality loads as separate modules at runtime without rebooting. Understanding lsmod, modprobe, blacklisting, and module configuration gives you real control over what the kernel is doing.
The /proc Filesystem — In Depth
/proc is a virtual filesystem generated on the fly by the kernel. Nothing in it exists on disk. It gives you a live window into CPU info, memory state, process details, network state, and the kernel's own runtime configuration.
The /sys Filesystem and udev
/sys exposes the kernel's hardware device tree as a filesystem. Every device, driver binding, and hardware parameter is visible and writable. udev sits on top and automates responses to hardware events. Together they are the kernel's live hardware interface.
Kernel Parameters and sysctl
sysctl lets you read and modify hundreds of kernel parameters at runtime — memory management, network stack tuning, security hardening. Understanding what to change and why is what kernel tuning actually is.
Compiling and Installing a Custom Kernel
Compiling a custom kernel is the deepest level of Linux. This post covers the full process — getting the source, configuring with menuconfig, building, generating an initramfs, updating GRUB, and booting your own kernel.