- Ubuntu for Raspberry Pi
- Full Desktop experience
- Mission-critical platform for industrial-grade Pi
- All of open source
- Your ARM exploration starts here
- How to install Ubuntu Server on your Raspberry Pi
- What you’ll learn
- What you’ll need
- 2. Prepare the SD Card
- 3. Using Advanced Options
- 4. Boot Ubuntu Server
- Connect remotely to your Raspberry Pi
- Determining the Pi’s IP address
- Using an SSH client
- Still not connected to the internet?
- 5. Install a desktop
- 6. That’s all, folks!
- Automate provisioning of your Pis and build a cluster with MAAS
Ubuntu for Raspberry Pi
A tiny machine with a giant impact. The Ubuntu community and Canonical are proud to enable desktop, server and production internet of things on the Raspberry Pi. In support of inventors, educators, entrepreneurs and eccentrics everywhere, we join the Raspberry Pi Foundation in striving to deliver the most open platform at the lowest price, powered by our communities.
Full Desktop experience
Work, web and software development, done
Raspberry Pi 4 brings the graphics, RAM and connectivity needed for a Linux workstation.
Mission-critical platform for industrial-grade Pi
The RPi Compute Module is built for production
When your invention turns into a product, the Raspberry Pi compute module is a hardened, industrial grade system-on-module that provides the brain for a range of hardware from robots to racks.
Take the Pi to production with Ubuntu Server LTS and Ubuntu Core with a decade of security updates.
All of open source
Every aspect of modern compute at your fingertips
Open source is the new normal for software innovation — from cloud to edge, containers to IoT, from AI/ML to robotics, from self-driving cars to nanosats, the biggest companies in the world are building on open source and making it better too.
Your ARM exploration starts here
The Raspberry Pi is an ARM instruction set computer, just like your Android or iOS phone, and the next generation Mac. This feels just like Ubuntu on a PC, but under the hood you have a whole new approach to architecture and devices.
© 2023 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.
How to install Ubuntu Server on your Raspberry Pi
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)
- 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
- 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
2. Prepare the SD Card
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:
Or, if you are on Ubuntu, you can run:
sudo snap install rpi-imager
Once this is done, start the Imager and open the “CHOOSE OS” menu.
Scroll down the menu click “Other general-purpose OS”.
Here you you can select Ubuntu and see a list of download options. For this tutorial we recommend you select the latest Ubuntu 22.04 LTS server for 64 bit architectures. As indicated in the imager this will work for the Raspberry Pi 3, 4 and Zero 2 W.
Select the image and open the “Choose Storage” menu. Select the microSD card you have inserted.
Before clicking ‘Write’ to flash your SD Card, click the cog icon to open a settings menu for advanced options.
3. Using Advanced Options
The Advanced options menu allows you to preconfigure a variety of network settings that would previously have required manual editing after flashing the SD card.
Here you can define the hostname of your Raspberry Pi and enable SSH, allowing you to connect to your Pi remotely.
Note: We recommend setting SSH to use password authentication to make connecting remotely simpler. If you are interested in using public-keys with SSH you can read more about them here.
You can also configure your wi-fi connection in this menu, adding your SSID (wi-fi name) and Password. This will allow your Raspberry Pi to automatically connect to the internet as soon as the device starts. If you are connecting your Raspberry Pi to the internet via an ethernet cable, you can skip this step.
Once you have entered your details, click ‘Save’ and then ‘Write’ to flash your SD card!
Eject your SD card and insert it into your Raspberry Pi to continue to the next step.
4. Boot Ubuntu Server
If you are using an HDMI screen and a USB keyboard, ensure they are plugged in before powering on the Pi. You will be able to see the boot process on the screen.
Warning
During your first boot a tool called cloud-init is doing configuration. WAIT for it to finish before trying to log in. It typically takes less than 2 minutes but there is a break between the log-in prompt and cloud-init completing. If you interrupt the process you have to start again. You’ll know it’s done when it outputs some more lines after the log-in prompt has appeared.
Once cloud-init finishes, log in using the username and password you entered in the Advanced Setting menu. 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)
You have to do this if you are running your device headless, but you might also want to do this if you are not, so you can access your Pi from anywhere.
Determining the Pi’s IP address
The easiest way to determine your Raspberry Pi’s IP address is by opening the dashboard for your wifi router and looking for connected devices. If you set a hostname in the ‘Advanced options’ this should appear as your device name.
If you don’t have access to your router dashboard you can temporarily connect a monitor and keyboard to your Raspberry Pi and run:
Which will return your device’s IP (Note: in this case the command uses the actual word ‘hostname’, not the hostname you defined in Advanced options!).
Using an SSH client
On Ubuntu and Mac OS, an SSH client is already installed. If you are on Windows you can either use Ubuntu on WSL or the built-in SSH client in the Windows terminal.
Open a terminal and run the following command:
If you set one up in the Advanced options menu.
You will be asked to confirm the connection:
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Type “yes” to confirm. You will then be asked to sign in with your username and password
Default users
If you did not create a username and password in the Advanced options menu, the username and password will both be ‘ubuntu’ by default and you will be asked to create a new password at this stage. 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.
Still not connected to the internet?
Sometimes the structure of the network-config file that you modified before boot gets messed up when you boot. This would cause your Pi not to be able to connect to your wi-fi.
To fix this you need to go into the correct file and correct the issue. Run:
sudo nano /etc/netplan/50-cloud-init.yaml
so you can edit the file. Edit it so it looks like this again, the indentation needs to be correct for the .yaml to work:
wifis: wlan0: dhcp4: true optional: true access-points: "home network": password: "123456789"
Save and exit the file with Ctrl + S and Ctrl + X .
Run sudo netplan apply and sudo reboot and when you log back in, you will be connected to your wifi.
5. Install a desktop
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
If you run into issues with either of these check out this blog. We’re working on fixing this imminently.
Once the install finishes, reboot your pi with:
And your new desktop will come up automatically
Alternatively, if you now decide you want an Ubuntu Desktop proper, a full-fat version, you can head over to our other tutorial to re-flash your Raspberry Pi with the Ubuntu Desktop.
6. 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!
Automate provisioning of your Pis and build a cluster with MAAS
You can also explore MAAS which enables the automation of installing Ubuntu on machines. You can try out our special tutorial created specifically to enable you to build your own Raspberry Pi cluster!