Philosophy: Learn by Doing
Reading documentation is essential, but hands-on practice is what truly builds expertise. The best way to learn Linux is to break things, fix them, and understand why. Set up a VM, experiment with shell scripts, compile programs from source, configure services—fail fast, learn faster.
Theory gives you the map. Practice shows you the terrain.
My Configuration Files & Projects
Check out my dotfiles repository for my personal Linux configuration files, including shell configs, editor settings, and system tweaks optimized for LMDE and Debian-based systems.
Practical Learning Projects
Here are some of my projects that demonstrate real-world Linux programming and system administration concepts:
- BeanMon — Lightweight X11 system monitor in C. Learn about system metrics, X11 programming, and resource monitoring.
- tin — Minimal text editor in C. Understand terminal control, buffer management, and text manipulation.
- tinshell — Custom Unix shell in C. Deep dive into process management, pipes, signals, and command execution.
- lineprint — Fast file output utility. Learn about system calls, buffering, and performance optimization.
- ansible-proxmox-ve-usage-status — Ansible playbook to query CPU & RAM usage across Proxmox VMs/LXCs. Learn infrastructure automation and API integration.
- proxmox-ve-vms-ansible — Automating VM managment with Ansible using Proxmox API
- ArchLinux-KDE-Plasma-setup-script — Automated Arch Linux + KDE Plasma setup. Study system configuration automation.
- Clone-all-Github-repos-script — Script for cloning multiple/all repos from GitHub. Learn API interaction and automation.
- dotfiles — My personal dotfiles for LMDE and Debian-based systems. See real-world shell and editor configurations.
Study tip: Clone these repos, read the code, modify them, break them. Understanding existing code teaches you more than starting from scratch.
Linux Fundamentals
Getting Started
Command Line & Shell Scripting
System Administration
Virtualization & Containers
Proxmox VE
Docker & Containers
KVM/QEMU
Programming & Development
C Programming
Python
Version Control
Automation & Configuration Management
Books & Extended Reading
- The Linux Command Line by William Shotts — Free online
- UNIX and Linux System Administration Handbook by Evi Nemeth et al.
- How Linux Works by Brian Ward
- Advanced Programming in the UNIX Environment by W. Richard Stevens
- The C Programming Language by Kernighan & Ritchie
YouTube Channels
My Channel
- Tomáš Mozdřeň — My personal channel covering Linux tutorials, system administration, and open-source software
Linux & System Administration
- Chris Titus Tech — Linux tutorials, tech guides, and system optimization
- Learn Linux TV — Comprehensive Linux administration tutorials
- DistroTube — Linux distributions, window managers, and FOSS
- The Linux Experiment — Linux news, reviews, and desktop environments
- Mental Outlaw — Privacy, security, and Linux deep dives
- BugsWriter — Suckless software, shell scripting, and minimalism
- Luke Smith — Linux, Vim, LaTeX, and self-hosting
- Brodie Robertson — Linux news, discussions, and tutorials
Networking & Infrastructure
- NetworkChuck — Networking, Linux, cybersecurity, and homelab
- Jeff Geerling — Ansible, Raspberry Pi, Kubernetes, and infrastructure automation
- Techno Tim — Self-hosting, Kubernetes, Docker, and homelab tutorials
- Lawrence Systems — Enterprise networking, pfSense, and business IT
Self-Hosting & Home Labs
- Wolfgang's Channel — Proxmox, Docker, self-hosting, and home automation
- IBRACORP — Unraid, Docker, and self-hosted services
- DB Tech — Self-hosting tutorials and Docker containers
Programming & Development
- ThePrimeagen — Vim, Neovim, programming productivity, and tech discussions
- rwxrob — Shell scripting, Go, cybersecurity, and terminal workflows
- Low Level — C programming, systems programming, and low-level computing
- Jacob Sorber — C/C++ programming and computer science fundamentals
Security & Privacy