How To Install Linux On Virtual Machine

How To Install Linux On Virtual Machine

Reading time1 min
#Linux#VirtualMachine#Installation#Ubuntu#VirtualBox

Practical Linux Installation in a Virtual Machine Environment

A virtual machine is a controlled, reversible lab for Linux—no risk to host stability, easy to snapshot, quick to discard and reset. Whether you’re debugging packages, validating deployment scripts, or testing sysctl tunings, a VM lets you isolate experiments and iterate rapidly.

Typical Use Cases

  • Safe evaluation of unfamiliar distributions.
  • Repeatable infrastructure testing with clean system states.
  • Simultaneous QA on multiple environments—just spin up multiple VMs with the same base image.

With modern hardware, running multiple VMs is rarely a bottleneck for basic development and light testing. Resource constraints only become relevant under database or heavy I/O loads.


Prerequisites

RequirementRecommended VersionNotes
Host OSWindows 11 / macOS 13 / LinuxAny x86_64-based desktop/laptop
VirtualizerVirtualBox 7.xFree, actively maintained
Linux ISOUbuntu 22.04.4 LTS DesktopAny *-amd64.iso is acceptable
CPU VirtualizationEnabled in BIOS/UEFIVMX (Intel), SVM (AMD)

Disable Hyper-V on Windows if you see VT-x/AMD-V errors.


Step 1: Install VirtualBox (7.x) on the Host

From virtualbox.org, pick the latest release for your OS:

# Example: Windows
VirtualBox-7.0.18-162988-Win.exe

Installer will prompt for network and USB kernel extensions—accept these unless you have custom driver requirements. After install, launch VirtualBox and verify it starts without errors.


Step 2: Download a Linux ISO

Fetch the latest Ubuntu LTS ISO; for this example use:

https://releases.ubuntu.com/jammy/ubuntu-22.04.4-desktop-amd64.iso

SHA256 verification is recommended, especially when automating deployments downstream.

sha256sum ubuntu-22.04.4-desktop-amd64.iso
# Expected: 52383c83dbe04ace6d622f57c59b23e94b15e3adbf857d02e3b1ad7c229b1f8b

Step 3: Create the VM

Non-obvious tip: Using the “Expert Mode” in VirtualBox’s New VM dialog offers more granular control over base memory, CPU, and storage at creation, saving time on later adjustments.

Typical config for a development/test Ubuntu desktop VM:

SettingValue
Nameubuntu-jammy-2024
TypeLinux
VersionUbuntu (64-bit)
RAM4096 MB (more for Docker/containers)
CPUs2 (set to 1 if host is constrained)
Virtual Hard Disk Size25 GB, dynamically allocated
Video Memory128 MB

Gotcha: Dynamic disks are sparse, but rapidly grow if you install large SDKs or use flatpak/snap.


Step 4: Attach ISO and Verify Boot Order

  • Go to Settings > Storage.
  • Under IDE controller, select the Empty optical drive.
  • Load the Ubuntu ISO.
  • Under System > Boot Order, ensure 'Optical' is listed before 'Hard Disk'.

Otherwise, the VM may not boot into the installer, instead showing errors like:

FATAL: No bootable medium found! System halted.

Step 5: Install Ubuntu

Start the VM. The Ubuntu installer should appear.

  • Language and keyboard selection: defaults are usually correct, but double-check for non-US layouts.
  • “Normal” installation includes GUI, browser, office suite. For minimal memory use, select “Minimal.”
  • “Erase disk and install Ubuntu” refers only to the VM’s virtual disk. Physical disks are unaffected.
  • When prompted, set a strong password; this will be your only credential unless you enable SSH later.

Installation generally completes in under 10 minutes on SSD-backed hosts.

Known Issue: If the installer hangs at “Updates are being installed…” force shutdown the VM; installation is typically already finished.


Step 6: First Boot and Guest Additions

Before the first boot completes, detach the ISO to prevent looping into the installer:

  • VirtualBox menu: Devices > Optical Drives > Remove disk from virtual drive.

After login:

Install Guest Additions (improves display, clipboard, pointer integration):

# Mount Guest Additions ISO
sudo apt update
sudo apt install build-essential dkms linux-headers-$(uname -r)
sudo mkdir /media/cdrom
sudo mount /dev/cdrom /media/cdrom
sudo /media/cdrom/VBoxLinuxAdditions.run

Sometimes X11 restarts are needed for screen resizing to work. If integration fails, check /var/log/vboxadd-setup.log and ensure kernel headers match your running kernel.


Step 7: Verification and Snapshots

  • Update system packages:
    sudo apt update && sudo apt upgrade -y
    
  • Snapshot base install:
    Menu: Machine > Take Snapshot > “Fresh Ubuntu 22.04.4 base install”.

Use snapshots to roll back before risky changes:

+--------------+       +------------------+
| Fresh Install|<------| Before Experiment|
+--------------+       +------------------+
         |
         V
  <...Install tools or break things...>

Addenda & Practical Notes

  • For server-only instances, use Ubuntu Server ISO. Reduces memory footprint to <768 MB.
  • Alternatives: KVM/libvirt (Linux-only, superior performance/automation); VMware Workstation (commercial). VirtualBox covers >90% of desktop workflows for light testing.
  • If passing USB devices (e.g., for IoT or firmware), install the VirtualBox Extension Pack.
  • Network modes: Default NAT works for most scenarios, but bridging to LAN enables host/guest communication for cluster tests.

In Practice

A properly configured Ubuntu VM is indispensable for testing Ansible playbooks, local Kubernetes clusters (microk8s, kind), or even simulating hybrid cloud environments. Reset state with a snapshot, recover from errors instantly, and prototype infrastructure changes without touching a physical asset.

If vboxdrv kernel module fails to load on Linux hosts, check Secure Boot status or re-sign modules—failure logs appear in dmesg.

For questions or deep dives into automated VM provisioning (Vagrant, Packer), open an issue or propose edits—standard workflows have idiosyncrasies worth documenting.


Summary:
A methodical VM-based Linux install protects your host, preserves productivity, and accelerates iterative ops and dev learning. The approach is robust; for high-performance needs, revisit resource allocations or consider bare-metal.

No system is immune to configuration drift. Snapshots are not backups. For valuable data, export and store externally.