What Is Linux
Introduction
Linux powers most of the world’s servers, cloud virtual machines, and CI runners. As a developer, you will deploy Java, Node, and database services on Linux even if you code on Windows or macOS. This chapter explains what “Linux” actually means, how distributions differ, and how to pick a learning path that matches this tutorial—command-line skills on Ubuntu LTS, not desktop customization.
Prerequisites
- No prior Linux experience required
- Willingness to use a terminal (local, SSH, or WSL2)
- Optional: you may already use Java on Linux or Node on Linux—this track explains the OS underneath
Linux Is More Than an Operating System
People say “Linux” loosely, but three pieces matter:
| Piece | What it is |
|---|---|
| Kernel | Core that talks to CPU, memory, disks, and network |
| GNU tools | Shell, ls, cp, gcc, and much of what feels like “Linux commands” |
| Distribution | Curated bundle: kernel + tools + package manager + defaults |
A distribution (distro) is what you download and install—Ubuntu, Debian, Rocky Linux, and so on. They share the same kernel family but differ in packaging, release cadence, and commercial support.
Why Developers Learn Linux
| Scenario | Why Linux shows up |
|---|---|
| Cloud VPS | AWS, Alibaba Cloud, Tencent Cloud images are Linux |
| CI/CD | GitHub Actions, GitLab Runner jobs often run Ubuntu |
| Containers | Docker images are Linux inside |
| Production APIs | Spring Boot, Node, Nginx, MySQL typically run on Linux servers |
| Cost and stability | No desktop license; strong server tooling |
Your laptop might be Windows or macOS; your deployment target is still often Linux. Learning the shell reduces “it works locally but fails on the server” incidents.
Linux vs Windows vs macOS (Developer View)
| Topic | Windows | macOS | Linux (server) |
|---|---|---|---|
| Primary UI | GUI desktop | GUI desktop | SSH + shell (GUI optional) |
| Paths | C:\Users\... | /Users/... | /home/user/... |
| Case sensitivity | Usually no | Default no (APFS can be sensitive) | Yes |
| Package install | Installer / winget | Homebrew | apt, dnf, etc. |
| Typical dev role | Desktop IDE | Desktop IDE | Runtime / deploy target |
Tip
Learn Linux Even on Windows
WSL2 runs a real Linux kernel on Windows—enough for most commands in this course. See the next chapter on getting a Linux environment.
Choosing a Distribution
This course uses Ubuntu LTS commands first (apt, systemd). Debian-family and RHEL-family differences are called out when they matter.
| Distribution | Good for | Notes |
|---|---|---|
| Ubuntu Server LTS | Learning, cloud, Spring/Node deploy | Recommended default for this tutorial |
| Debian | Stable servers, minimal images | Very similar to Ubuntu for CLI work |
| Rocky / Alma Linux | Enterprise RHEL replacement | Uses dnf; common in regulated industries |
| Fedora | Bleeding-edge desktop/server | Short lifecycle; less common in prod |
| WSL2 + Ubuntu | Windows developers | Local practice without a VM |
We do not focus on:
- Desktop themes, wine, or gaming on Linux
- Deep comparison of every niche distro
- Linux kernel development or driver writing
We do focus on:
- Files, permissions, packages, processes, networking, and deployment
Warning
Production and tutorials on this site assume a current Ubuntu LTS or similar (22.04, 24.04). Very old releases (for example end-of-life Ubuntu 18.04) miss security updates and modern packages.
How This Tutorial Fits Hello Code
Other tracks teach languages and build tools; Linux teaches the environment they run in:
| Track | Linux connection |
|---|---|
| Java | JDK install, java -jar, server deploy |
| JavaScript / Node | Node LTS, PM2, ports |
| Maven / Gradle | CI builds on Linux agents |
| JDBC | MySQL on Linux or in Docker |
| Vue | Build SPA in Docker, serve with Nginx on Linux |
| Nginx | Reverse proxy for API and static frontend |
Follow gen_article_plan/linux.md for the full chapter list. Examples use American English and bash; commands are shown with comments on the line above when they appear in code blocks.
The Command-Line Mindset
Linux servers are operated through a shell (usually bash):
# Ask the system who you are
whoami
# See kernel and architecture
uname -a
# On Ubuntu, show distro version
lsb_release -aYou will type commands, chain them with pipes, and edit small config files. GUIs exist, but remote servers are almost always SSH + text.
Mini Example: Read-Only System Peek
After you have any Linux environment (VM, cloud, or WSL), run:
# Current user
whoami
# Home directory shortcut
echo $HOME
# List files in home (including hidden dotfiles)
ls -la ~Nothing here modifies the system—it is a safe first contact.
FAQ
Is Linux free?
The kernel and most distros are open source and free to use. Companies may pay for support contracts (RHEL, Ubuntu Pro), not for the basic OS.
Do I need to replace Windows or macOS?
No. Many developers use Linux only on servers and keep their familiar desktop. WSL2 is a popular hybrid.
Ubuntu Desktop vs Ubuntu Server?
Server images have no GUI by default—ideal for this course. Desktop is fine for learning if you use the terminal heavily; we still skip desktop customization topics.
How long to become productive?
Basic navigation and package install: days. Comfortable deploy and logs: a few weeks of practice alongside real projects.