How to install Ubuntu on your Raspberry Pi

Overview

Duration: 2:00

In this tutorial, we walk you through the process of installing Ubuntu Server on a Raspberry Pi, connecting it to the internet and using it remotely. There are two setup methods in this tutorial: with an extra HDMI screen and USB keyboard for your Pi, or headless. Let’s start!

What you’ll learn

  • How to create a bootable Ubuntu Server microSD card
  • How to setup internet connectivity on the Raspberry Pi
  • How to access your Raspberry Pi remotely

What you’ll need

  • A microSD card (4GB minimum, 8GB recommended)
  • An Ubuntu Server image for Raspberry Pi
  • A computer with a microSD card drive
  • A Raspberry Pi 2, 3 or 4
  • A micro-USB power cable (USB-C for the Pi 4)
  • A Wi-Fi network or an ethernet cable with an internet connection

And optionally:

  • A monitor with an HDMI interface
  • An HDMI cable for the Pi 2 & 3 and a micro HDMI cable for the Pi 4
  • A USB keyboard

Prepare the SD Card

Duration: 5:00

:warning: Warning
Following these steps will erase all existing content on the microSD card.

First, insert the microSD card into your computer.

Now you need to install the right Raspberry Pi Imager for your operating system. You can do this with the following links:

Once this is done, start the Imager and open the “CHOOSE OS” menu.

Scroll down the menu click “Ubuntu”.

You will then be able to see a list of Ubuntu downloads to choose from. For this tutorial we recommend you select the Ubuntu 18.04 download. As indicated in the imager this will work for the Raspberry Pi 2,3, 3+ and any of the 4’s.

Select the image and open the “SD Card” menu. Select the microSD card you have inserted.

Finally, click “WRITE” and wait for the magic to happen… (This magic might take a few minutes)

Wi-Fi or Ethernet

Duration: 5:00

There are two ways to get your Pi connected to the internet:

  • The first is to connect your Pi to your router with an ethernet cable. In this case, you can skip this step and go to the next one in the tutorial.
  • The second requires a local Wi-Fi network that both your computer and Pi can be connected to. We are going to edit files you just downloaded on your SD card to ensure your Pi can connect to the Wi-Fi network at boot.

Getting setup with Wi-Fi

With the SD card still inserted in your laptop, open a file manager and locate the “system-boot” partition on the card. It contains initial configuration files that will be loaded during the first boot.

Note: Screenshots have been made on an Ubuntu desktop but it can be done on Windows and MacOS too

Edit the network-config file to add your Wi-Fi credentials. An example is already included in the file, you can simply adapt it.

To do so, uncomment (remove the “#” at the beginning) and edit the following lines:

wifis:
  wlan0:
  dhcp4: true
  optional: true
  access-points:
    <wifi network name>:
      password: "<wifi password>"

For example:

wifis:
  wlan0:
  dhcp4: true
  optional: true
  access-points:
    "home network":
      password: "123456789"

Note: If your network name has a space in it, you need to add quotation marks around it.

Save the file and extract the card from your laptop. During the first boot, your Raspberry Pi will automatically connect to this network.

Boot Ubuntu Server

Duration: 2:00

If you are using an HDMI screen and a USB keyboard, ensure they are plugged in before powering the Pi. You will be able to see the boot process on screen and log in using “ubuntu” as both the password and login ID.

If you are running your device headless, you need to connect to it remotely from your laptop. We are going to do so using the SSH protocol.

Insert the SD card into the Pi and power it up (plug in your power supply). After a minute or so, Ubuntu on your Raspberry Pi will have fully booted and connected to the network.

Connect remotely to your Raspberry Pi

To connect to your Raspberry Pi remotely, you need two things (we’ll help you find them):

  • Its IP address on the local network
  • An SSH client (SSH is a communication protocol between machines)

Determining the Pi’s IP address

To determine the IP address of your board, open a terminal and run the arp command:

On Ubuntu and Mac OS:

arp -na | grep -i "b8:27:eb"

🛈 Information
Depending on your version of Ubuntu, you may need to install the net-tools package. Install it with sudo apt install net-tools and try the arp command again.

On Windows:

arp -a | findstr b8-27-eb

This will return an output similar to:

 ? (xx.xx.xx.x) at b8:27:eb:yy:yy:yy [ether] on wlp2s0

Where the x’s are the IP address of any Raspberry Pi connected to the local network. Note it down.

If the command doesn’t return an IP address, you may need to wait a little longer for your Pi to join the network. If you still can’t see it after a few tries, which can happen with some home or office network configurations, we recommend you use a USB keyboard and HDMI screen to interact with your device.

Using an SSH client

On Ubuntu and Mac OS, an SSH client is already installed. On Windows, follow these steps to install one.

Open a terminal and run the following command:

ssh ubuntu@<Rapsberry Pi’s IP address>

You will be asked to confirm the connection:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

Type “yes” to confirm.

Changing the password

When prompted, use “ubuntu” for the password. The first thing Ubuntu will do is to ask you to change it to a secure password. Once done, you can reconnect again with the SSH command and the new password.

Success! You are now connected to Ubuntu Server running on your Raspberry Pi.

Install a desktop

Duration: 10:00

Optional step
Depending on what you are going to use your Pi for, you may want a desktop environment to run graphical applications. Nevertheless, this step is completely optional.

First you need to ensure your packages are updated to the latest version, run:

sudo apt update
sudo apt upgrade

Then, you can use the apt install command to install a desktop environment.

Here are some popular and lightweight options:

sudo apt install xubuntu-desktop
sudo apt install lubuntu-desktop
sudo apt install kubuntu-desktop

Learn more about Ubuntu flavours.

Once the install finishes, reboot your pi with:

sudo reboot

And your new desktop will come up automatically

That’s all folks!

You are done! Up and running on Ubuntu Server.

For more details about Raspberry Pi specific packages included with this image and further customisations, such as accelerated video drivers and optional package repositories, you can refer to the RaspberryPi wiki.

You also might want to install some software on your Pi. Ubuntu has extensive repositories available, that you can browse at packages.ubuntu.com. You can also use the snap command to install snap packages. The Snap Store is where you can find the best Linux open source and proprietary apps to install on your Raspberry Pi and get started with any project!

I recommend adding a step to this tutorial to have users run:

sudo apt-get update
sudo apt-get upgrade

prior to attempting to install a desktop. When I first tried to load a desktop, the install failed, but it did suggest running those two commands. I did so, then re-ran the installation of the desktop, and it worked.

Very good point, thanks for catching this, I’ve updated the tuto.

Hi,
I have been trying to install Ubuntu Server 18.04 on my Raspberry Pi. I am ok until until I get to booting the Ubuntu server. The boot up process asks for a login and password. The tutorial mentions using ubuntu as password, but what do I use for a login ID?

Hi kvemuri, you can use ubuntu for both the login ID and the password. That’s a good catch though thank you. I have now included that in the tutorial :slight_smile: