Virtual Machines • Linux • Labs • Snapshots

What is a VM?

A VM, or virtual machine, is a computer inside your computer. It acts like a separate machine, but it runs as software on your real hardware.

That means you can install Linux, test commands, break things, take snapshots, restore them, and learn without risking your main computer.

Simple version: a VM is a safe practice computer. It is one of the best tools for learning Linux, servers, networking, cybersecurity, and cloud computing.
Guest OS Ubuntu, Debian, Windows, Kali, pfSense, etc.
Virtual hardware Virtual CPU, RAM, disk, network card
Hypervisor VirtualBox, VMware, KVM, Hyper-V, Proxmox
Host computer Your real laptop, desktop, server, or cloud machine
The VM sees virtual hardware. The hypervisor maps that virtual hardware onto the real machine underneath.

How a VM works

A VM has the same basic parts as a normal computer, but they are simulated or managed by software.

Concept Plain English Why it matters
Host The real computer running the VM software. Your laptop, desktop, or server provides the actual CPU, RAM, disk, and network connection.
Guest The operating system inside the VM. This can be Ubuntu, Debian, Windows, Kali, pfSense, or another OS you want to test.
Hypervisor The software that runs and controls VMs. Examples include VirtualBox, VMware, KVM, Hyper-V, and Proxmox.
Virtual disk A file that acts like a hard drive. You can install an OS into it, copy it, back it up, or delete it.
Snapshot A restore point for the VM. Take a snapshot before risky changes. If something breaks, roll back.
ISO file A virtual installer disc. You use ISO files to install operating systems into a VM.

Why VMs are useful

VMs make learning less scary because they give you a reset button.

Linux practice

Install Linux without replacing your computer

Try Ubuntu, Debian, Fedora, Kali, or other Linux systems without wiping your main operating system.

Safe mistakes

Break things and roll back

Before editing configs, changing services, or testing firewall rules, take a snapshot and restore if needed.

Real labs

Build small networks

Run multiple VMs to practice servers, clients, DNS, SSH, web apps, firewalls, packet captures, and routing.

Local VM vs cloud VM

Both are useful. They just solve different problems.

Local VM

Runs on your own computer

Best for private labs, Linux practice, snapshots, testing, and learning without paying for cloud time.

  • Good for offline learning
  • Easy to snapshot and reset
  • No public internet exposure by default
  • Limited by your own CPU, RAM, and disk
Cloud VM

Runs on someone else’s server

Best when you need a public IP, a real internet-facing server, or a VPS for web apps and remote access.

  • Good for hosting small web projects
  • Can get a public IP address
  • Teaches billing, DNS, firewalls, and cloud security
  • Must be cleaned up to avoid charges
Next step: Want a public cloud VM instead? Read the AWS Free VPS Setup Guide.

VM networking modes

Networking is where VMs become really useful. The network mode controls who can talk to the VM.

Mode Plain English Use it for
NAT The VM can reach the internet through the host, but outside machines usually cannot reach the VM directly. Beginner Linux practice, updates, package installs, general safe testing.
Bridged The VM appears like another device on your real network. Server testing, SSH from another machine, LAN services, realistic networking practice.
Host-only The VM can talk to the host and maybe other lab VMs, but not the outside network. Private labs, safe experiments, isolated networking practice.
Internal network VMs can talk to each other, but not the host or internet unless you build a router VM. Advanced lab networks, firewall practice, segmented cybersecurity labs.

Common VM software

These are common tools students use to run VMs. Start simple, then move to more advanced tools when needed.

Beginner

VirtualBox

Free, common, and beginner-friendly. Good for first Linux VMs and simple labs.

Desktop

VMware Workstation

Popular desktop virtualization software. Good for labs, snapshots, and running multiple systems.

Linux native

KVM / virt-manager

Strong Linux-native virtualization. Good if your main system is Linux and you want better performance.

Windows

Hyper-V

Microsoft’s virtualization platform for Windows systems that support it.

Home lab

Proxmox

A server-focused virtualization platform for running VMs and containers on dedicated hardware.

Cloud

EC2 / VPS

Cloud VMs run on a provider’s hardware and can have public IPs for real hosting practice.

First VM lab

This is a simple first project that teaches the basic VM workflow.

Goal: install Ubuntu in a VM, update it, install a web server, take a snapshot, then safely break and restore it.

  1. Install VirtualBox, VMware, KVM, Hyper-V, or another VM tool.
  2. Download an Ubuntu Server or Ubuntu Desktop ISO.
  3. Create a VM with 2 CPU cores, 2–4 GB RAM, and a 20 GB virtual disk.
  4. Install Ubuntu into the VM.
  5. Update the system with sudo apt update && sudo apt upgrade.
  6. Install a web server with sudo apt install nginx.
  7. Check the service with systemctl status nginx.
  8. Take a snapshot called clean-nginx-install.
  9. Change something, break something, then restore the snapshot.
New to Linux? Start with the Linux Terminal Intro Guide before running commands inside the VM.

Good beginner VM projects

Once the first VM works, these are realistic next projects.

01

Linux sandbox

Practice files, users, permissions, packages, services, and logs.

02

Web server

Install Nginx or Apache and serve a basic page from the VM.

03

Two-VM network

Use one VM as a client and one VM as a server. Practice SSH, ping, and ports.

04

Firewall lab

Use UFW or a router/firewall VM to allow, block, and log traffic.

Safety rules

VMs are safer than working on your main machine, but they are not magic force fields.

Snapshots

Snapshot before risky changes

Take snapshots before major updates, firewall changes, malware analysis labs, or config edits.

Isolation

Use isolated networks for risky labs

Do not connect dangerous experiments to your normal home network or the public internet.

Secrets

Do not store real secrets in test VMs

Avoid putting real passwords, SSH keys, tokens, browser sessions, or personal files into throwaway lab machines.

Friendly resources

These are useful references that do not assume you already know everything.

Home lab

Proxmox documentation

Useful when you want to run multiple VMs on a dedicated home lab server.

Open Proxmox docs

Practice

Linux Journey

Beginner-friendly Linux lessons that pair well with a first Linux VM.

Open Linux Journey

Command line

Missing Semester

A practical course on shell tools, editors, Git, debugging, and command-line habits.

Open Missing Semester

Final idea

A VM is one of the best beginner tools because it gives you a real computer to practice on without making the project permanent. Install Linux, take snapshots, try commands, build small servers, break things, restore them, and learn how systems actually work.