fedora installation on raspberry pi

How To Install And Use Fedora On Your Raspberry Pi?

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 story

Fedora was created in 2003, as the open-source alternative to RedHat.

Fedora Core 1 desktop

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.

Fedora differences

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.

Join Our Community!

Connect, learn, and grow with other Raspberry Pi enthusiasts. Support RaspberryTips and enjoy an ad-free reading experience. Get exclusive monthly video tutorials and many other benefits.

Learn more

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 Your Essential Linux Commands Guide!
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now

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:
    etcher menu
    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:
    fedora first install menu
  • 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 <user>@<ip_address>

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

ip addr show
IP is under eth0 for cable and wlan0 for Wi-Fi

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:
    sudo reboot
  • 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:

Download Your Essential Linux Commands Guide!
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now
  • 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.
I used the BSSID in this example, but you can simply use the SSID.

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 upgrade
There is no need to do dnf update before, as it’s just an alias of this one:

dnf update

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:
sudo reboot

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:
    sudo reboot

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:

Install Gnome

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

Disable desktop

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.

Basic settings

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:
    timedatectl
  • Change timezone:
    timedatectl list-timezones
    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

Localization

For language and keyboard layout, there is a similar command: localectl

  • Check the current settings:
    localectl
  • Change the default language:
    localectl list-locales
    sudo localectl set-locale LANG=<VALUE>
    sudo localectl set-locale LANG=en_GB
  • Change the keyboard layout:
    localectl list-keymaps
    sudo localectl set-keymap <VALUE>
    sudo localectl set-keymap fr-azerty

Root usage

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:
raspberrytips$ su
Password: <root password>
root# timedatectl set-date YYYY-MM-DD
root# exit
raspberrytips$

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.

Network configuration

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:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.50
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
TYPE=Ethernet

Change eth0 by wlan0 if you are configuring a static IP for your wireless connection.

More information here

DNF commands

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)
    dnf upgrade
  • Remove temporary files:
    dnf clean
  • Remove unnecessary packages:
    dnf autoremove

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).

Other questions

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.

Download Your Essential Linux Commands Guide!
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now

Video

Download Your Essential Linux Commands Guide!
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now

🛠 This tutorial doesn't work anymore? Report the issue here, so that I can update it!

If you are looking for exclusive tutorials, I post a new course each month, available for premium members only. Join the community to get access to all of them right now!

Conclusion

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.

Similar Posts

4 Comments

  1. Hello, in the same way that exist raspbian for raspberry also exist pidora for raspberrypi: http://pidora.ca/

    I’m a Fedora user since 2 years ago and I didn’t know that I can use Fedora in raspberry xD
    Thanks for share.

  2. In order to get my wifi working with the Fedora 31 for raspberry Pi 3+ I had to enter
    nmcli device wifi list -> to get the SSID
    nmcli device wifi connect ‘SSID’ –ask -> using or $SSID did not work

    I was then able to enter my password. I’m not sure if that is the same for the Fedora 30

  3. Howdy Patrick,

    It’s funny you should mention this. I just installed Fedora 36 Workstation on my Pi – 4B-8GB – two days ago. It is a little slow, but rather a nice OS. I was having audio issues for a bit. I re-installed it and that seemed to work things out nicely – sorta…the volume leaves a little bit to be desired, but that’s not a deal breaker. I don’t use my Pi for listening to music or watching videos and what-not. I just got used to the system sound alerts when I plug or unplug a thumb drive, or the sound of the camera click when I take a screen shot, stuff like that.

    My 3D CAD program, OpenSCAD doesn’t work as smoothly as it does in Ubuntu 22.04, so there’s that.All in all, it’s a really good OS. I’m still a noob with Linux, so my recommending Fedora may not carry much weight, but there it is. I recommend it for Raspberry Pi. Of course, the version I’m using may not suit older versions of Pi, but you did offer different choices that should do just fine for others.

    Thanks for the post

Comments are closed.