Headless Ubuntu Server on Raspberry Pi SSD

Raspberry Pi: How to Install Ubuntu Server on an NVMe SSD (No Monitor Needed)

Running Ubuntu Server from an SSD on a Raspberry Pi is one of the simplest ways to squeeze real performance out of the tiny board. SD cards are fine for blinking LEDs or running a single Python script, but once you start hosting services, running containers, or doing anything disk‑intensive—SSD is the only sane option.

Below is a streamlined, headless‑friendly workflow that gets Ubuntu Server onto an NVMe SSD connected to a Raspberry Pi. No monitor, no keyboard, no magic. Just a Pi, an SSD, and a bit of patience.

What You Need

  • Raspberry Pi – anything below Raspberry Pi 5 is a waste of time.
  • NVMe SSD + adapter
  • A decent microSD card (used only for installation)
  • A computer with Raspberry Pi Imager installed
  • Network access (Ethernet or Wi‑Fi)
Raspberry Pi

Prepare the microSD Card

Start by installing Raspberry Pi Imager on your computer. It’s available for all major platforms.

  1. Open Raspberry Pi Imager
  2. Select Ubuntu Server 24.04 LTS (ARM64)
  3. Choose your microSD card
  4. Before writing, open the advanced settings and configure:
    • Hostname
    • SSH enabled
    • Username/password or SSH key
    • Wi‑Fi credentials (if needed)

Write the image and wait for the process to finish.

Save the Configuration Files

Before inserting the microSD card into the Pi, mount it on your computer and copy these three files somewhere safe:

  • cmdline.txt
  • network-config
  • user-data

These contain your SSH, Wi‑Fi, and user configuration. You’ll need them later when preparing the SSD.

These files are located on the boot partition of the microSD card

Boot the Pi From microSD

Insert the microSD card into the Raspberry Pi and power it up.

Give it a minute or two, then SSH into it using the hostname or IP address you configured earlier.

Once logged in, install Raspberry Pi Imager on the Pi itself:

sudo apt install rpi-imager

Download the Ubuntu Server Image

Still on the Pi, download the Ubuntu Server image directly:

wget https://cdimage.ubuntu.com/releases/24.04.2/release/ubuntu-24.04.2-preinstalled-server-arm64+raspi.img.xz

Verify the SSD Is Detected

Check that the Pi sees your SSD:

lsblk -f

You should see something like:

mmcblk0     (microSD)
nvme0n1     (your SSD)

If the SSD isn’t listed, fix that first—bad adapter, insufficient power, or missing firmware update.

Flash Ubuntu Server to the SSD

Use Raspberry Pi Imager’s CLI mode to write the downloaded image directly to the SSD:

sudo rpi-imager --cli ubuntu-24.04.2-preinstalled-server-arm64+raspi.img.xz /dev/nvme0n1

This will take a few minutes.

Copy Configuration Files to the SSD

Mount the SSD’s boot partition:

sudo mkdir /mnt/nvfat
sudo mount /dev/nvme0n1p1 /mnt/nvfat

Now copy the three files you saved earlier:

sudo cp cmdline.txt network-config user-data /mnt/nvfat/firmware

This ensures your SSD installation boots with the same network and SSH settings as the microSD version.

Shutdown and Boot From SSD

Once everything is copied:

sudo shutdown now

Remove the microSD card and power cycle Pi.

If everything went well, the Pi should now boot directly from the SSD.
SSH into it just like before—only now it’s fast.

Done

You now have a Raspberry Pi running Ubuntu Server directly from an SSD.
No SD card bottlenecks, no random corruption, no drama.

This setup is perfect for:

  • Home servers
  • Docker hosts
  • Home Assistant
  • Kubernetes nodes
  • Anything that needs real I/O performance

Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *