While we’re used to Debian-based systems like Raspberry Pi OS and Ubuntu on Raspberry Pi, that doesn’t mean there’s no alternative. If you’re used to using Fedora on your desktop, you need to know that it’s possible to install it on your Raspberry Pi. I will show you how in this article.
The Raspberry Pi is officially supported by the Fedora project. Fedora images are available on the official website for different versions (Workstation, Server, IoT or Spins) and can be flashed to an SD card using Balena Etcher or Raspberry Pi Imager.
In this article, I’ll show you how to do this on your Raspberry Pi. We’ll start with a brief introduction to Fedora, and then I’ll show you how to install both versions (workstation or server). Use the table of contents below to quickly get to the part you’re interested in.
If you’re looking to quickly progress on Raspberry Pi, you can check out my e-book here. It’s a 30-day challenge where you learn one new thing every day until you become a Raspberry Pi expert. The first third of the book teaches you the basics, but the following chapters include projects you can try on your own.
Fedora Project introduction
To begin, let’s start with a quick reminder about the Fedora Project for those who aren’t familiar with it
What is Fedora?
Fedora is a popular Linux distribution, based on RedHat, with an estimated 1.5 million users today.
Fedora exists in four main versions:
- Fedora Workstation: for desktop users, with a graphical interface and pre-installed software like LibreOffice or Firefox.
- Fedora Server: release dedicated to servers, with a short life cycle and tools for sysadmins.
- Fedora IoT: built with IoT devices in mind, to use containerized applications for example.
- Fedora Spins: custom builds to fit your needs (to use other desktop environments, for example, like KDE or MATE).
Since Fedora’s inception, we’ve seen a development cycle of one to two releases per year.
Fedora uses a simple version number: 1, 2, 3 … 37, 38, 39 and there is also a less public code name.
Fedora was created in 2003, as the open-source alternative to RedHat.
RedHat has moved to a pay-to-use model, including a bundle with an operating system and professional support. From this, Fedora was born to provide a free version of its software with community support.
Today, RedHat sponsors the Fedora Project, and Fedora is a trademark of RedHat. There is a long-standing partnership between the two.
If you’re new to Fedora, you’ll have a similar experience than with distributions like Debian or Ubuntu, as you can run most of the desktop environment on Fedora with any popular software.
But you may have some problems with other low-level changes. For example, some commands are entirely different, and you’ll also notice differences in package management or file locations. So I’m going to add an extra part to the installation guide: if you’re coming from Ubuntu/Raspberry Pi OS, you’ll probably need it.
For very old Fedora users (like me), note that DNF (Dandified YUM) is now the default package manager, replacing YUM since version 22. The commands are almost the same, but I’ll use it in this post instead of yum (still available).
Install Fedora Workstation on Raspberry Pi
If you have a Raspberry Pi 4 or better, you can try the Workstation version and get the desktop environment right away. For older models, I would recommend starting with the Server version and install only what you need (skip this part and read the next).
You can also try “Spins” images, with a lighter desktop environment (XFCE, for example).
Download & flash Fedora Workstation
Anyway, getting started with Fedora Workstation is pretty straightforward:
- Go to the Fedora official website.
- Click on “Download now” under “Workstation”
- Then download the raw image for the AARCH64 architecture:
If aarch64 is not supported on your device, you won’t be able to use this version. Fedora decided to cut off support for (32 bit) armv7 / armhfp.
- Once downloaded, use Balena Etcher or Raspberry Pi Imager to flash Fedora on your media.
You can use an SD card or a USB drive, both work perfectly.
Note: Fedora images are currently not available in Raspberry Pi Imager. Fedora has a custom tool to flash all versions to an SD card or USB drive, but I had many issues with it, so instead, I recommend downloading the image directly, and flashing it with Etcher or Imager.
First boot with Fedora Workstation
When you start Fedora for the first time, you’ll get a welcome wizard, asking you to configure your network connection (especially if you need some Wi-Fi), and create the first user.
There are a few other questions, like if you want to connect to some online accounts (Google, Nextcloud, Microsoft) or enable the third-party repositories. You can skip those steps and configure them later if needed.
Once done, Gnome will start, giving you access to the full interface. There is even a demo tour you can take if you are new to this environment.
From there, you can use the interface to configure everything else you need.
I particularly like the control center with this version of Gnome, as you can configure everything from one app. There is a search engine, so you’ll quickly find all settings.
You can also use the “Software” app to install any missing application. For example, you can replace Firefox with Chromium in a few clicks :-).
You are welcome to watch my video about Fedora on my YouTube channel if you need further advices:
Install Fedora Server on Raspberry Pi
About the Fedora Server version
The Server version of Fedora is similar to the Raspberry Pi OS Lite.
It’s a working Fedora with basic packages and only a command-line interface.
Depending on your Raspberry Pi model you might try another version, but for Raspberry Pi 3B+ and older, I recommend starting with this minimal version and only install the packages you need.
I’ll show you how to install a desktop environment on it because the default GNOME isn’t the best for old Raspberry Pi models.
By the way, I haven’t tried the Spins version, but it might be the easiest and fastest way to get something like LXDE or XFCE to work really well on any Raspberry Pi model. You can go to this page to get an ARM-compatible version of them.
Anyway, I’ll show you first how to get the Server version working, and how to install a desktop environment on it.
Download the Fedora Server image
Like for the Workstation edition, you’ll find on this page the Server version of the latest Fedora release.
Pick the Raw image for aarch64:
Flash Fedora Server on your SD card
Once you have the image file, you can flash it on a SD card like you would for other systems:
- Download and install Etcher, if needed.
Etcher is a magic tool to create an SD card easily on any platform (Windows, macOS, Linux).
You can also use Raspberry Pi Imager if you prefer (it’s a bit slower, but that’s fine).
- Insert the SD card into your computer.
- Start Etcher.
- Configure the SD card settings:
On the left, click on “Select image” and browse to its location (you don’t need to extract it, Etcher will manage this).
Then select your SD card drive by clicking on the second button (it’s often automatic).
And finally, click on “Flash!” to start the SD creation.
- After a few minutes, the SD card will be ready to use.
Start Fedora Server
As with most distributions, there is nothing to do once the SD card is ready.
Insert it in your Raspberry Pi, and you can start the basic configuration process.
- On the first boot, Fedora Server allows you to directly customize the basic settings. For example, there is no default user (like for graphical installations).
- The first menu looks like this:
- At each step, you need to type a number corresponding to the menu above, or to use the other options to continue (“c”), quit (“q”) or refresh (“r”).
User creation and root password are almost mandatory before leaving.
- Type 1 if you need to change the default language settings.
- The system offers a subsection to configure it.
- I highly recommend starting here if you have another keyboard layout or come from another country.
- Type 2 for the time settings.
- Not very useful at this step, so you can do this later.
- Type 3 for the network configuration.
- Mainly if you absolutely need a static IP address or a specific hostname.
- Wi-Fi is not working at this step, I’ll show you how to configure it later.
- Type 4 for the root password.
- Yes, on Fedora, you can have a root user who is accessible directly. It’s disabled by default.
- But you can also give administrator privileges to another user, and use sudo like on Raspberry Pi OS.
- And finally, type 5 for the first user creation.
- In this step, you need to choose the username and password for the first user.
- You can also give him administrator rights.
- A “strong” password is needed. I didn’t look at minimum requirements, but I needed 11 characters, a capital letter and numbers in mine to let the system allow it.
It will ask you again for a password if the one you use is too weak (no error message).
- Try to use a different password than root if possible:
- Press “c” once everything is set up.
- Then the configuration is complete:
- Type “c” to continue the boot process.
You’ll finally get the login prompt from Fedora.
Type your user name and password, and continue to the next step.
Enable SSH access
If you like to follow a tutorial from SSH access like me, I’ll explain what you need to do on this new Fedora system.
If you are not familiar with SSH, it’s secure remote access to your Raspberry Pi from your computer (more details in this article).
You can use Putty on Windows (download here), or a simple terminal on Linux with:
SSH is already installed by default on Fedora Server, you just need to start it with:
sudo systemctl start sshd
This way, you can now copy/paste the following commands to go faster.
If needed, you can find the current IP address of your Raspberry Pi with:
ip addr show
Are you a bit lost in the Linux command line? Check this article first for the most important commands to remember and a free downloadable cheat sheet so you can have the commands at your fingertips.
Expand the main partition size
As with a few other Raspberry Pi distributions, the main partition in the SD card takes only what’s necessary for the system.
If you use “df”, you’ll see that the root partition is already full.
So the first step before you can do anything else is to expand it to use the full SD card capacity:
- For most devices, the / partition is mmcblk0p3.
To be sure you can use “fdisk -l” to see the current partition list.
The following commands enlarge the 3rd partition of mmcblk0, but with a very specific device (maybe dual SD card or multi-boot?), replace this with your own values.
- Expand the main partition with this command:
sudo growpart /dev/mmcblk0 3
- Then grow the volume to the SD card size:
sudo xfs_growfs /Reboot your system to apply changes:
- It’s ready!
Use Wi-Fi on Fedora Server
If you only use Wi-Fi on your Raspberry Pi, you need to configure it to get Internet access to continue this tutorial.
After some complex commands and driver installation tests, I found this which works directly:
- List the available SSID near the Raspberry, if not sure for the exact name:
nmcli device wifi list
- Connect to one of them:
sudo nmcli device wifi connect <SSID> --ask
- Enter the Wi-Fi password and you’re ready.
Update your system
As after any distribution installation, the first thing you need to do is update the whole system
As I said in the first section, Fedora uses DNF to manage packages.
It’s close to APT with small differences.
To update your system, simply type:
sudo dnf upgradeThere is no need to do dnf update before, as it’s just an alias of this one:
Confirm the installation with “y” and wait a few minutes depending on your connection speed :).
When you get the “Completed” message, you can reboot the system to apply all changes:
Install useful packages
From here you are ready to use the minimal version as you want.
You can look for packages name with:
dnf search <string>
And install them with:
sudo dnf install <package>
Here is an example:
If needed, you can now install a desktop environment.
But for most projects, it isn’t mandatory, and I don’t recommend doing it as it’ll slow down your Raspberry Pi.
You can skip the next part if the Server version is fine for you.
Install a desktop environment on Fedora Server
We’ll now see how to install a lightweight Fedora desktop environment.
Choose a good environment
As said in the introduction, the default Gnome Shell was terrible.
Even after installed on a Server version, I had a bad experience.
So if you really need a graphical interface, I recommend looking for a lightweight one.
After a little research and tests, I found that XFCE is good but LXDE is better.
If you like XFCE and already use it somewhere else, that’s fine.
But for the example in this tutorial, I’ll show you how to install LXDE, now replaced by LXQt.
I got issues with LXQt, but LXDE was working directly, so let’s see how to install it. The procedure is similar for the other options.
Install LXDE on Fedora Server
One powerful feature with DNF is the possibility to use the group install switch to install all dependencies at once.
A few groups exist in DNF, including most of the popular desktop environments.
- To install LXDE, you just need to type:
sudo dnf groupinstall -y "LXDE Desktop"
It may take a while, depending on your Internet connection speed and the desktop environment you choose. LXDE is one of the lighter options, with about 600 new packages to install for a total around 500 MB to download.
- Once done, set the graphical interface as default with:
sudo systemctl set-default graphical.target
- And that’s it, nothing else to do.
You need to reboot to apply changes and start directly on the Desktop:
After the reboot you’ll get the login screen, looking like this:
And once logged, you are on the LXDE desktop and can begin using it normally.
And the desktop looks like this with default options and a few windows open:
You can click on the Fedora menu (bottom left) to start a new app.
Test other desktop environments
For other desktop environments, it’s the same installation process.
You just need to find the group name.
- The command I used is:
dnf group list | grep "Desktop"
- You’ll get a list like this:
- Xfce Desktop (xfce-desktop-environment)
- LXDE Desktop (lxde-desktop-environment)
Like the default one on Raspberry Pi OS.
- LXQt Desktop (lxqt-desktop-environment)
- Cinnamon Desktop (cinnamon-desktop-environment)
It’s the one used by Linux Mint for example.
- MATE Desktop (mate-desktop-environment)
- Sugar Desktop Environment (sugar-desktop-environment)
- Deepin Desktop (deepin-desktop-environment)
- Basic Desktop (basic-desktop-environment)
- Then use for example:
sudo dnf groupinstall -y "Xfce Desktop"to install XFCE.
- For your information, you can also use the name in brackets with @ but it’s often longer in this case :).
sudo dnf install -y @mate-desktop-environment
- Don’t forget to reboot after the installation.
Note: When you have several desktop environments installed, you can choose the one to start on the login page:
The Gnome shell installation seems different (or did I miss something?).
To install it, use:
sudo dnf install -y @base-x sudo dnf install -y gnome-shell sudo systemctl set-default graphical.target sudo reboot
You can also keep the desktop environment installed, and ask not to start it on boot.
To do this, you can use:
sudo systemctl set-default multi-user.target
Tips & commands for Fedora on Raspberry Pi
Finally, I’ll give you a few tips if you are used to Raspberry Pi OS and looking for basic stuff.
If you miss something in the configuration menu during the installation, here is how to change your settings now.
Date and timezone
As there is no raspi-config on Fedora, the best way to do this is to use commands.
You can use the “date” command but I find the timedatectl one, easier to understand:
- Display current settings:
- Change timezone:
sudo timedatectl set-timezone <VALUE>
sudo timedatectl set-timezone Europe/London
- Change date manually (not recommended):
sudo timedatectl set-time 15:00:00
sudo timedatectl set-time 2020-07-12
sudo timedatectl set-time 2020-07-12 15:00:00
For language and keyboard layout, there is a similar command: localectl
- Check the current settings:
- Change the default language:
sudo localectl set-locale LANG=<VALUE>
sudo localectl set-locale LANG=en_GB
- Change the keyboard layout:
sudo localectl set-keymap <VALUE>
sudo localectl set-keymap fr-azerty
Fedora comes with a direct possibility to use the root account.
You can use it with sudo, su, or directly log in the root account.
Sudo is the Debian/Raspberry Pi OS way to handle administrator privileges for a standard account.
When you need to run a system command, you have to add sudo at the beginning, like in the “Localization” section.
You probably already know how to use it.
Su is a way to switch to the root account from your standard account.
This also exists on Raspberry Pi OS, so I won’t be long with my explanation.
Here is just a simple example where I switch to root, change the date without sudo, and go back to my account:
Password: <root password>
root# timedatectl set-date YYYY-MM-DD
And finally, Fedora allows you to directly log into the root account with SSH.
This might be, at the same time, a convenient way to do a change on the Raspberry Pi, but also a security risk as everyone will try the root login when attacking an SSH prompt.
So it depends on your environment. At home, it’s probably fine. In a company you probably need to disable the direct access and use sudo or su to do the same thing.
The last basic settings you may need to change is the network configuration.
The network configuration files are located in this folder on Fedora: /etc/sysconfig/network-scripts/
You’ll find a file for each interface: ifcfg-eth0 and ifcfg-wlan0
Edit them to configure the network as you want.
To set a static IP:
Change eth0 by wlan0 if you are configuring a static IP for your wireless connection.
Finally, I want to give you all the DNF commands in one place, to be sure you have everything you need for a good start on Fedora.
DNF is the Fedora alternative to APT, and there are almost the same commands.
Here is the complete list:
- Search a new package name:
dnf search <VALUE>
dnf search myadmin
dnf search php | grep mongo
- Install a new package:
dnf install <PACKAGE>
dnf install php-mongodb
- Uninstall a package:
dnf remove <PACKAGE>
dnf remove php-mongodb
- Update your system:
(Fedora recommend stopping using the update alias)
- Remove temporary files:
- Remove unnecessary packages:
So if you get an error, saying that the apt command is not found, it’s normal. With Fedora, you have to use the alternative (dnf).
I can’t do a complete documentation about Fedora usage on Raspberry Pi here.
But you can check the official one here: docs.fedoraproject.org.
This will answer most of your questions.
Want to chat with other Raspberry Pi enthusiasts? Join the community, share your current projects and ask for help directly in the forums.
Here it is for today, I hope you really enjoy this guide and try it on your own Raspberry Pi.
If you like Fedora on Raspberry Pi, I can do a couple more posts on the topic. Let me know in the community!
If you are just checking several new operating systems to leave Raspberry Pi OS, I recommend the reading of the CentOS installation guide (or rather Rocky Linux now). It’s also based on Red Hat, so there are many similar things, and it works even better.
OpenSUSE is also a great alternative on Raspberry Pi for Red Hat fans.
Whenever you’re ready, here are other ways I can help you:
The RaspberryTips Community: If you want to hang out with me and other Raspberry Pi fans, you can join the community. I share exclusive tutorials and behind-the-scenes content there. Premium members can also visit the website without ads.
Master your Raspberry Pi in 30 days: If you are looking for the best tips to become an expert on Raspberry Pi, this book is for you. Learn useful Linux skills and practice multiple projects with step-by-step guides.
The Raspberry Pi Bootcamp: Understand everything about the Raspberry Pi, stop searching for help all the time, and finally enjoy completing your projects.
Master Python on Raspberry Pi: Create, understand, and improve any Python script for your Raspberry Pi. Learn the essentials step-by-step without losing time understanding useless concepts.
You can also find all my recommendations for tools and hardware on this page.