install fedora on raspberry pi

How to install and use Fedora on your Raspberry Pi?

Today, I just tried to install Fedora on my Raspberry Pi, and I want to share with you all the information about it
If you are used to Fedora on desktop, you need to know that it’s also possible to use it on your Raspberry Pi
I will show you how in this post

How to install Fedora on your Raspberry Pi?
Since a few versions, the classic Fedora distribution is available on Raspberry Pi and works pretty well
You can download it from the official website, install it and enjoy almost the same experience as on PC

In this post, I’ll show you how to do this on your Raspberry Pi

In the first part, I’ll do a short introduction to the Fedora project for those who are not already at ease with it
Then I’ll show you how to install the minimal version, before installing any desktop interface, because the Workstation version is a bit too slow, even for the Raspberry Pi 3B+
And finally, I’ll give you some useful commands, specific to Fedora, so you can start to use it with confidence on a daily basis

Introduction about the Fedora Project

To begin, let’s do a quick reminder about the Fedora Project for those who are not already familiar with it

What is Fedora?

Fedora is a popular Linux distribution, based on RedHat, with something like 1.5 million users today

Fedora exists in three main versions:

  • Fedora Workstation : for desktop users, with a graphical interface and preinstalled software like LibreOffice or Firefox
  • Fedora Server : release dedicated to servers, with a short life cycle and tools for sysadmins
  • Fedora Cloud : release intended specially for virtual machines

We have seen a development cycle of one to two releases each year since the beginning
They use a simple version number: 1, 2, 3 … 29, 30, 31 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 turned into a pay to use model, including a bundle with operating system and professional support
From this, Fedora was born to keep a free version of their software, with a community support

Today, RedHat sponsors the Fedora Project and Fedora is a trademark of RedHat
There is a real partnership between both for a long time

Fedora differences

If you are new to Fedora, you’ll get something similar to other distributions like Debian or Ubuntu in term of software and usage, as you can run most of the desktop environment on Fedora, with any popular software

But there are some changes you may have issue with it
Some commands are completely different and you’ll also note differences in the package management or the files locations
That’s why I’ll add an extra part to this installation guide about this, if you come from Ubuntu/Raspbian, you 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
Commands are almost the same, but I’ll use it in this post rather than yum (still available)

Installation guide for the Fedora Minimal on Raspberry Pi

What is the Minimal version of Fedora?

The Minimal version of Fedora is something similar to the Raspbian Lite one
You’ll get a working Fedora with basic packages and only a command line interface

I tried Workstation and Server versions on my Raspberry Pi 3B+, but after this test I highly recommend to start with the Minimal version
Then install exactly what you need, but the other versions are too slow for the Raspberry Pi capacities

On Workstation for example, I always had a minimum load average of 5 and the RAM almost full, when doing nothing
As soon as I started Firefox or any other app, I have to wait 10min to see something
The Gnome default environment is probably not adapted for this kind of device

So in this post, I’ll show you first how to get the Minimal version working, and in the next part how to install a desktop environment

Download the image

Fedora has a dedicated page for Raspberry Pi with download links and basic information
Go to this page and download the Fedora Minimal version for your architecture

Create the SD card

Once you have the image file, you can flash it on a SD card like for other systems :

  • Download and install Etcher, if needed
    Etcher is a magic tool to create SD card easily on any platform (Windows, macOS, Linux)
  • 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 seconds, the SD card is ready to use

First boot

Like for 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 Minimal allows you to custom the basic settings directly, there is no default user for example (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 to start here if you have another keyboard layout or come from another country
  • Type 2 for the time settings
    • Not very useful at this step, you can do this later
  • Type 3 for the network configuration
    • Mainly if you absolutely need a static IP address or a specific host name
    • 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 have a root user accessible directly
    • But you can also give administrator privileges to another user, and use sudo like on Raspbian
  • And finally type 5 for the first user creation
    • In this step you need to choose the user name 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
  • 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

SSH access

If like me you like to follow a tutorial from an SSH access, here is 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
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 Minimal, 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

Expand the main partition size

As with a few other Raspberry Pi distributions, the main partition in the SD card takes only what 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 resize2fs /dev/mmcblk0p3
  • Reboot your system to apply changes
    sudo reboot
  • It’s ready!

Wi-Fi configuration

If you only use Wi-Fi on your Raspberry Pi, you now need to configure it to get an Internet access and continue this tutorial
After some complex commands and drivers installation tests, I found this which works directly

  • See 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 to do is to 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:
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:
dnf install <package>

Here is an example:

If needed, you can now install a desktop environment
But for most projects it’s not mandatory, and I recommend to not do it as it’ll slow down your Raspberry Pi

You can skip the next part if the Minimal version is fine for you

Upgrade to a desktop environment

We’ll now see how to install a lightweight Fedora desktop environment

Recommendations

As said in introduction, the default Gnome Shell was terrible
Even installed after on a Minimal version, I had a bad experience

So if you really need a graphical interface, I recommend to look 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 step-by-step tutorial, I’ll show you how to install LXDE, now replaced by LXQt
I didn’t succeed to install LXQt, whereas LXDE is working directly

LXDE step-by-step installation

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"
  • Set 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 start to use it normally

Fedora 30 LXDE login screen

And the desktop looks like this with default options and a few windows open

Fedora 30 desktop

You can click on the Fedora menu (bottom left) to start a new app

Other desktop environments

For other desktop environments, it’s the same installation process
You just need to find the group name

  • The command I use is:
    sudo dnf group list | grep "Desktop"
  • You’ll get a list like this:
    •   Xfce Desktop (xfce-desktop-environment)
    •   LXDE Desktop (lxde-desktop-environment)
    •   LXQt Desktop (lxqt-desktop-environment)
    •   Cinnamon Desktop (cinnamon-desktop-environment)
    •   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 it
  • For 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

Gnome installation

The Gnome shell installation seems different (or 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

Useful tips & commands for Fedora on Raspberry Pi

Finally, I’ll give you a few tips if you are used to Raspbian 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/Raspbian 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 Raspbian, so I’ll not be long
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 to take 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

Other questions

I can’t do here a complete documentation about Fedora usage on Raspberry Pi
But you can check the official one here: docs.fedoraproject.org
This will answer most of your questions

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 comment section

If you are just checking several new operating systems to leave Raspbian, I recommend the reading of the CentOS installation guide

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.

Leave a Comment