Ubuntu is my favorite Linux distribution on PC, I’ve been using it for years (even if recent desktop styles don’t suit me).
But on Raspberry Pi, it has always been complicated. I don’t know why, but I haven’t managed to install it properly.
I tried again this week, and good news – almost everything works fine. Let’s see how to install it on your Raspberry Pi.
Ubuntu has now an official release for the Raspberry Pi. An image is available for each model and architecture (32 or 64 bits). Then, it can be flashed on a SD card with Balena Etcher and there is a wizard on the first boot to configure the basics.
In this post, I will do a quick recap on Ubuntu (if needed), then show you how to install the Server version, and how to upgrade it to your favorite Desktop environment (Gnome, XFCE, LXDE or KDE).
What is Ubuntu?
I don’t know if it’s really necessary to do this, but for those who don’t know Ubuntu or need a quick reminder, here it is:
Ubuntu is a famous Linux distribution, based on Debian.
It’s commonly used by most PC users on Linux, but also on an increasing part of the servers in the world (39.1% according to W3Techs).
Ubuntu is an African word that means “humanity” or “humanity to others” from the Canonical translation.
This distribution runs on a shorter development cycle and therefore provides the latest news much earlier than Debian.
So, it’s perfect for a desktop system.
Mark Shuttleworth, a South African billionaire, launched the Ubuntu project in 2004.
The goal was to create an easy-to-use alternative to Debian.
He created the Canonical company the same year, to manage this project.
The first version was released on October 20, 2004.
Since that date, Canonical releases a new version twice a year: in April and October.
We’ll see that now in details.
On Ubuntu, versions publish numbers, dates and code names set like a clock:
- The version number is always on the same format template: YY.MM.
For example, 11.04 is the release of April 2011, and 14.10 is October 2014
- So, the release date is always in April or October.
Apparently, there hasn’t been a delay, ever.
- And the code names also follow a template: Adjective + Animal.
Both starting with the same letter, in a chronological order.
Examples: Utopic Unicorn, Vivid Vervet, Wily Werewolf, etc.
You can check the history of all the Ubuntu versions on this Wikipedia page if you are interested :).
Ubuntu Server Installation
After this short introduction, let’s move into installation!
Ubuntu exists in three versions for PC :
- Desktop (the traditional environment with a graphic interface)
- Server (something minimal close to Raspberry Pi OS Lite)
- Core (for IoT projects)
On Raspberry Pi, only there are a two versions available: Server and Desktop.
But you can install the Server version and add a Desktop environment later, and I will show you how.
Here is the download link to Ubuntu for Raspberry Pi.
They now release the Raspberry Pi version almost at the same time of the official release for PC. So, you’ll always find the latest one on this link.
Choose the one you prefer and click on the Download button.
The desktop version is a little further down the page.
For your information, I’m writing this post while testing on my Raspberry Pi 4.
Flash the SD card
Now, you need to flash the SD card as usual.
I recommend using Etcher to do this, as it’s very intuitive:
- Download Etcher here if you don’t have it yet.
It’s available on any operating system.
- Install Etcher (double-click on the downloaded file on Windows).
- Start it, a window like this will appear:
- On the left, click on select image and browse to the Ubuntu image location.
- Then insert your SD card into your computer.
- And click “Flash!” to start the SD card creation process.
After a few minutes, the SD card is ready to use!
- Insert the SD card in your Raspberry Pi.
- Start it and wait a few minutes.
- On the login screen, enter the default username and password: ubuntu / ubuntu
- Follow the instructions to change it to something different:
On the Server version you arrive at an almost empty system, with many packages missing.
Yes, it’s the principle of a minimal version, but I like to have at least the basics :).
The following tips might help you to get started (by the way, if you installed the Desktop version, a graphical wizard will guide you, so you can probably skip the next sections).
If you plan to use Wi-Fi on this installation, it’s almost impossible to configure it right now (at least on 19.10).
So, I recommend starting with an RJ45 cable if you can.
If not, check the next paragraph to learn what you will need to configure.
Once connected to your network, the first thing to do is to update the system:
sudo apt update
sudo apt upgrade
Note: if like me you don’t have a QWERTY keyboard, you can edit the /etc/default/keyboard file and set the XKBLAYOUT option to fit your hardware.
Here is how to configure the wireless connection on your Raspberry Pi with Ubuntu Server.
If possible, I recommend doing this from your computer by using SSH, so you can copy and paste the commands and configuration.
Anyway, here is what you need to do:
- Install the needed packages:
sudo apt install wireless-tools net-tools ifupdown
- Then, edit the /etc/network/interfaces configuration file:
sudo nano /etc/network/interfaces
- The file is empty, paste these lines into it:
iface wlan0 inet dhcp
- Save & exit (CTRL+X).
- Enable the Wi-Fi interface:
sudo ifup wlan0
- It should work immediately (use ifconfig to check).
If not, reboot your system:
From here, there is no big difference with a Raspberry Pi OS Lite system.
You can use the classic Linux commands to manage your device (except the Raspberry Pi ones, there is no raspi-config on Ubuntu).
In the next part, I will show you how to upgrade this Server version with a Desktop interface.
I just need to inform you that I didn’t manage to have Wi-Fi working in Gnome, so if it’s your only available connection method, it’s probably better to seek a solution before. I do give you a workaround in the next part, but it’s not perfect.
Upgrade Ubuntu Server to Ubuntu Desktop
The main benefit of using Ubuntu rather than Raspberry Pi OS is the Desktop interface, so let’s look at how to install it on Ubuntu Server.
Choose your desktop environment
If you want to install a desktop environment, you have to make a choice between 4 alternatives:
- Gnome: the default interface on Ubuntu Desktop
- KDE (Kubuntu)
- LXDE (Lubuntu)
- XFCE (Xubuntu)
It mainly depends on your tastes, so I’ll let you choose the one you prefer.
But on a performance level, LXDE and XFCE are probably faster than Gnome and KDE.
If you have a Raspberry Pi 4 with 4 GB RAM, it’s probably not a big deal, but on older models, it’s something to consider.
For each desktop environment there is a specific meta package to install:
- Gnome: ubuntu-desktop
- KDE: kubuntu-desktop
- LXDE: lubuntu-desktop
- XFCE: xubuntu-desktop
To install it, use apt:
sudo apt install <package>
You can add the –no-install-recommends option to avoid the installation of all the default packages (like OpenOffice).
It will require half the download time and the size of the disk space to install:
sudo apt install --no-install-recommends <package>
In my case, I’m a player, and I choose Gnome with all default packages:
sudo apt install ubuntu-desktop
Now you have time to take a coffee, the installation process will take a little time.
I lost the SSH connection during the installation, so it’s probably better to do the installation directly on the screen, but I didn’t run into any issues, after a reboot my installation was complete:
After the reboot, the login screen shows up.
Choose the Ubuntu user and enter the same password you have set on the Server version.
The desktop appears:
The interface isn’t very responsive on Gnome, but it works pretty well.
And I suppose it’s probably better on XFCE without all the default packages.
I was surprised to see that even applications that I consider heavy, like Firefox, work well on this system:
If I had to update my post “Can a Raspberry Pi really Replace your Desktop PC?“, it’s probably the system I would choose for this.
As I previously mentioned, the Wi-Fi isn’t working with the Desktop interface.
I don’t understand why, probably because the Network Manager is not compatible or something like that.
There probably is a solution as this is working without the interface, but I didn’t find it.
The only way I managed to get Wi-Fi working is by using a USB dongle.
As it was not working with all my Wi-Fi adapters, I give you the reference here if needed.
My Dlink USB adapter (this one on Amazon) was the only working option. It’s a basic model, nothing fancy, but it works very well on Raspberry Pi (any operating system I tried).
Once detected, you can configure the Wi-Fi settings from the network icon on the top right of the desktop (pick a SSID in the list and follow the wizard).
Let me know if you find another solution, I would edit this part.
Ubuntu is one of the most used systems in the world, so you’ll find help effortlessly on Internet.
But just to get you started:
- All the apps are available by clicking on the dots icon at the bottom left of the screen:
- From here, you can scroll to find the app you want or use the search engine.
- All the configuration settings are in the “Settings” app:
- To install a new software you can start the “Ubuntu Software” app in the left panel. It works like an app store on smartphone.
- You can also use apt in a terminal if you prefer:
sudo apt search <name>
sudo apt install <package>
Many Raspberry Pi packages are available, like Python libraries and more. And you can probably add new repositories to expand the possibilities.
That’s it for this quick review of Ubuntu on Raspberry Pi.
I really like this system, and it’s a good alternative to Raspberry Pi OS if you are using your Pi as a Desktop PC.
I didn’t have time to make more tests with GPIO, I think the basics should be OK, but I’m not sure that everything would work (I didn’t find any package for the Sense HAT for example).
Let me know if you have some experience with that.