A hands-on, challenge-based hackathon to help you master Linux fundamentals — from basic commands to networking, firewalls, and real-world troubleshooting. 20 challenges, cloud agnostic. Run it on any cloud provider, a local VM, or even WSL2.
Note: This hackathon was incorporated into Microsoft What The Hack as the first Linux hackathon by Microsoft!
Linux is a family of free and open-source operating systems based on the Linux kernel. Operating systems based on Linux are known as Linux distributions or distros. Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
The Linux kernel has been under active development since 1991 and has proven to be extremely versatile and adaptable. You can find computers that run Linux in a wide variety of contexts all over the world, from web servers to cell phones. Today, 90% of all cloud infrastructure and 74% of the world's smartphones are powered by Linux.
To read more about Linux history, distributions, and the kernel, click here.
In this hack you will be challenged with common tasks from real-world Linux administration duties, such as:
- Create a Linux virtual machine
- Handle files and directories
- Manipulate file contents
- Work with standard Linux permissions
- Collect information about Linux processes in your environment
- Manage users and groups
- Basic shell scripting
- Work with disks, partitions, and logical volume manager
- Linux package management
- Implement a basic web server
- Protect a server with Fail2Ban
- Run containers with Docker
- Understand Linux networking fundamentals
- Manage services with systemd and journalctl
- Process text with sed, awk, and pipes
- Schedule tasks with cron and at
- Configure host-level firewalls with UFW
- Troubleshoot real-world Linux scenarios
With the exception of Challenge 01 (which sets up the Linux environment required for all other challenges), each challenge can be done separately and they are not interdependent. The level of complexity increases with the challenge number.
| # | Challenge | Description |
|---|---|---|
| 01 | Create a Linux Virtual Machine | Set up an Ubuntu Linux environment — cloud VM, local VM, or WSL2 |
| 02 | Handling Directories | Common directory operations: displaying your current directory and listing contents |
| 03 | Handling Files | File manipulation: create, rename, find, and remove files |
| 04 | File Contents | File content manipulation: count lines, display specific lines, and more |
| 05 | Standard File Permissions | Linux standard file permissions and ownership management |
| 06 | Process Management | Basic process management: checking running processes and identifying PIDs |
| 07 | Group and User Management | Creation of users and groups in a Linux environment |
| 08 | Scripting | Basic shell scripting with echo, cut, read, and grep |
| 09 | Disks, Partitions and File Systems | Linux filesystems and commands: fdisk, mkfs, and mount |
| 10 | Logical Volume Manager | LVM commands: pvcreate, vgcreate, lvcreate, and more |
| 11 | Package Management | Package management: update lists, install, and uninstall packages |
| 12 | Setting up a Webserver | Set up Nginx + PHP-FPM and deploy a simple web application |
| 13 | Protecting a Server | Use Fail2Ban to protect services in a Linux environment |
| 14 | Running Containers | Deploy an Nginx container with Docker and optionally build a custom image |
| 15 | Networking Fundamentals | IP addresses, DNS resolution, routing, ports, and connectivity tools |
| 16 | systemd & Service Management | Manage services with systemctl, view logs with journalctl, create custom units |
| 17 | Text Processing | Master sed, awk, pipes, and text manipulation pipelines |
| 18 | Task Scheduling | Automate tasks with cron jobs and one-time scheduling with at |
| 19 | Firewall Configuration | Control network access with UFW — allow, deny, and rate limiting |
| 20 | Linux Troubleshooting | Capstone: diagnose and fix three real-world scenarios |
-
A Linux environment — choose one:
- ☁️ Cloud VM: Azure, AWS, GCP, or any cloud provider — create an Ubuntu 24.04 LTS VM
- 💻 Local VM: VirtualBox, UTM, Hyper-V, or VMware with Ubuntu 24.04 LTS
- 🪟 WSL2: Windows Subsystem for Linux (Ubuntu)
- 🖥️ Existing server: Any Ubuntu/Debian-based Linux system
-
Access to a terminal. The terms "terminal," "shell," and "command line interface" are often used interchangeably, but there are subtle differences:
- A terminal is an input/output environment that presents a text-only window running a shell.
- A shell is a program that exposes the operating system to a user. In Linux, the shell in a terminal is a command-line interpreter.
- A command-line interface (CLI) processes commands and outputs results.
Becoming a Linux expert requires you to be comfortable with using a terminal. Any administrative task — file manipulation, package installation, user management — can be accomplished through the terminal. The terminal is interactive: you type commands and press ENTER to execute them.
-
Background knowledge (optional but helpful):
- Basic Linux concepts
- Filesystem Hierarchy Standard (FHS)
- Linux commands cheat sheet
- The Linux
manpages are your best friend. Make sure to use them!
- Linux Journey
- Linux Upskill Challenge
- Beginner's Guide for Linux — Tecmint
- Preparation for Linux Foundation Certified System Administrator
- Linux Foundation Certified System Administrator (LFCS) Notes
- The Linux Documentation Project
- Introduction to Linux — TLDP
- Linux Commands Notes for Professionals
- Introduction to Linux — Free course on Linux Foundation
Once you have mastered Linux fundamentals, take your skills to the next level:
🚀 Kubernetes Hackathon — From Linux admin to Kubernetes expert. 20 hands-on challenges covering 100% of CKA + CKAD + CKS certification domains.
🤖 AI for Infrastructure Professionals — Learn how AI is transforming infrastructure management.
In the Coach directory are the guidelines for running the hackathon as an event, as well as the solutions for the proposed challenges. If you are doing the hackathon as a student, don't look at the solutions during the hack! Go learn something. :)
Contributions in the form of bug reports, feature requests, and PRs are always welcome. Please follow these steps before submitting a PR:
- Create an issue describing the bug or feature request.
- Clone the repository and create a topic branch.
- Make changes, adding new tests for new functionality.
- Submit a PR.
This project is licensed under the MIT License.
This hackathon is the starting point of a complete learning journey:
flowchart TB
subgraph journey["🚀 Progressive Learning Path"]
direction LR
A["🐧 <b>Linux FUNdamentals</b><br/>20 hands-on challenges<br/><i>linuxhackathon.com</i>"] ==> B["☸️ <b>Kubernetes Hackathon</b><br/>20 hands-on challenges<br/><i>k8shackathon.com</i>"] ==> C["🤖 <b>AI for Infrastructure</b><br/>AI + Cloud<br/><i>ai4infra.com</i>"]
end
A -.->|companion reading| D
B -.->|companion reading| D
C -.->|companion reading| D
D["📖 <b>From Server to Cluster</b><br/>The WHY behind the WHAT<br/><i>fromservertocluster.com</i>"]
classDef challenge fill:#2b5ea7,stroke:#1e4a8a,color:#fff,stroke-width:2px
classDef hackathon fill:#1a7f37,stroke:#116329,color:#fff,stroke-width:3px
class A hackathon
class B,C,D challenge
click A "https://linuxhackathon.com" _blank
click B "https://k8shackathon.com" _blank
click C "https://ai4infra.com" _blank
click D "https://fromservertocluster.com" _blank
🇧🇷 This hackathon is also available in Brazilian Portuguese!
Check out the pt-br branch for the full translated version of all challenges, coach guides, and documentation.
For additional articles, tutorials, and resources on Linux, Kubernetes, and Cloud Infrastructure in Portuguese, visit ricardomartins.com.br.
Give a ⭐ if this content helped you!
Disclaimer: This is an independent, personal project — not an official Microsoft publication. The views and content are solely the author's own.
Created by Ricardo Martins — Principal Solutions Engineer @ Microsoft
