Linux
Back in 2003/2004, my first exposure to Linux was conversing with someone on a forum and they sent me a .tar.gz file. I had no idea
what this was or how to open it. They replied with "I forget that not everyone uses linux lol" and a web search later, I was down a rabbit hole.
When I'd go to Office Max with my mom, I discovered the Linux boxed sets of SuSE, Red Hat, and I think Mandrake. I don't remember what sold in stores.
I never purchased one, regretfully, but eventually I got a copy of SuSE by going to a Novell event.
These days, I mostly use Enterprise Linux, Ubuntu, and Debian. This page is my Linux reference shelf: the links and commands I reach for when I am building a server, troubleshooting a weird problem, or trying to remember which tool owns which part of the system.
How I Think About Linux
Linux is not one thing. The kernel, userland, init system, package manager, filesystem layout, desktop environment, and distribution policies all matter. A useful reference should help you identify which layer you are dealing with before you start changing things.
Distribution Families
| Family | Examples | Package Tools | Best Fit |
|---|---|---|---|
| Enterprise Linux | RHEL, Rocky Linux, AlmaLinux, CentOS Stream | dnf, rpm |
Long-lived servers, hosting platforms, predictable operations, SELinux-first environments. |
| Debian | Debian Stable | apt, dpkg |
Conservative servers, small systems, clean dependency management, simple maintenance. |
| Ubuntu | Ubuntu Server, Ubuntu Desktop | apt, snap, dpkg |
Cloud images, broad hardware support, desktop use, lots of third-party documentation. |
| Arch | Arch Linux | pacman |
Learning, rolling-release desktops, and people who want to understand every piece they install. |
| SUSE | openSUSE Leap, openSUSE Tumbleweed, SLES | zypper, rpm |
Excellent administration tooling, Btrfs snapshots, and historically strong enterprise roots. |
Core References
| Reference | Use It For | Link |
|---|---|---|
| Linux Kernel Documentation | Kernel behavior, admin guides, filesystems, networking internals, drivers, and kernel APIs. | docs.kernel.org |
| Linux man-pages | System calls, command behavior, configuration file formats, and low-level Linux interfaces. | man7.org/linux/man-pages |
| Arch Wiki | Deep practical notes. Useful even if you do not run Arch, especially for desktop, boot, storage, and networking topics. | wiki.archlinux.org |
| Debian Administrator's Handbook | Debian administration from installation through services, packaging, upgrades, and troubleshooting. | debian.org/doc/manuals/debian-handbook |
| Ubuntu Server Documentation | Ubuntu server installation, storage, networking, security, virtualization, and common services. | ubuntu.com/server/docs |
| Red Hat Enterprise Linux Documentation | Enterprise Linux administration, DNF, SELinux, firewalld, storage, networking, identity, and lifecycle planning. | docs.redhat.com |
| Rocky Linux Documentation | Community Enterprise Linux guides, labs, and practical server administration notes. | docs.rockylinux.org |
| AlmaLinux Wiki | AlmaLinux release notes, migration notes, SIG information, and distribution-specific guidance. | wiki.almalinux.org |
First Commands I Run On A New Server
hostnamectl
cat /etc/os-release
uname -a
ip addr
ip route
ss -tulpn
df -h
lsblk -f
free -h
timedatectl
systemctl --failed
journalctl -p warning -b
That gives a quick picture of the distribution, kernel, network layout, listening services, disks, memory, time sync, failed units, and boot-time warnings. Before making changes, I like to know what the machine thinks it is and what state it is already in.
Package Management Quick Reference
| Task | RHEL / Rocky / Alma | Debian / Ubuntu | Arch |
|---|---|---|---|
| Update package metadata | dnf check-update |
apt update |
pacman -Sy |
| Upgrade packages | dnf upgrade |
apt upgrade |
pacman -Syu |
| Install package | dnf install name |
apt install name |
pacman -S name |
| Remove package | dnf remove name |
apt remove name |
pacman -R name |
| Find package owning a file | rpm -qf /path |
dpkg -S /path |
pacman -Qo /path |
Systemd And Logs
| Command | What It Answers |
|---|---|
systemctl status name.service |
Is the service running, and what were its most recent log lines? |
systemctl enable --now name.service |
Start the service now and configure it to start at boot. |
journalctl -u name.service -b |
Show logs for one service since the last boot. |
journalctl -xe |
Show recent logs with explanatory hints where available. |
systemd-analyze blame |
Show which units slowed down boot. |
Networking Checklist
- Addressing:
ip addr,ip route, andresolvectl statususually tell you whether the local network stack is sane. - Listening services:
ss -tulpnshows TCP/UDP listeners and the processes that own them. - DNS: test with
dig example.com,dig @1.1.1.1 example.com, andgetent hosts example.com. DNS can fail differently at resolver, network, and libc layers. - Firewall: on Enterprise Linux, start with
firewall-cmd --list-all. On Debian/Ubuntu, check whether the system usesufw, rawnft, or something else. - Path testing: use
ping,tracerouteortracepath,curl -v, and packet captures withtcpdumpwhen guessing stops being useful.
Storage And Filesystems
- Inventory:
lsblk -f,blkid, andfindmntshow block devices, filesystems, UUIDs, and mount relationships. - Space:
df -hanswers filesystem free space;du -sh *helps find where it went. - LVM:
pvs,vgs, andlvsshow physical volumes, volume groups, and logical volumes. - Health: use
smartctl -a /dev/sdXfor disk health where supported. On NVMe, usenvme smart-log /dev/nvme0. - Mounts: always validate
/etc/fstabchanges withfindmnt --verifyor a test mount before rebooting.
Security Baseline
- Use SSH keys, disable password logins where practical, and avoid exposing SSH directly if a VPN or bastion host is available.
- Keep automatic security updates in mind for small systems that otherwise will not receive routine maintenance.
- Prefer least privilege with
sudo; do not use the root account as your normal shell. - Understand the local firewall tool before opening ports. A service can be installed, running, listening, and still blocked by policy.
- On SELinux systems, investigate denials instead of immediately disabling SELinux.
ausearch,sealert, and audit logs are there for a reason. - Backups matter more than clever rebuild notes. Test restores before you trust the backup plan.
Troubleshooting Order
- Read the exact error. Do not paraphrase it too early.
- Identify the layer: hardware, kernel, network, DNS, authentication, package manager, service config, filesystem, or application.
- Check recent change history: package updates, config edits, reboots, disk growth, certificate expiration, DNS changes, firewall changes.
- Look at logs for the relevant unit or subsystem.
- Make one change at a time and keep enough notes to undo it.
- After fixing it, write down the signal that proved the fix worked.
Learning Path
- Install a server distribution in a VM and learn SSH, users, packages, services, logs, and networking.
- Run a simple web service behind a firewall and make it survive reboots.
- Add storage deliberately: partitioning, filesystems, LVM, mounts, and backups.
- Break DNS, firewall rules, permissions, and service configs on purpose in a lab, then recover them.
- Build the same service on Debian/Ubuntu and Enterprise Linux to learn what is universal and what is distribution-specific.