Long Story Short

I tried running a Fedora 42 bootc image on a Raspberry Pi 5. It’s a partial success, but I got far enough to learn a lot. The Pi 5 boots and I can log in, but the stock kernel can’t see the Ethernet chip, the Wi-Fi chip, or most other drivers. Only the USB ports work.

How I Installed Fedora 42 bootc into RPi5?

  1. Built an ARM64 disk.raw image with bootc-image-builder from Raspberry Pi 5 itself. (I know QEMU exists, but I couldn’t get it working due to my lack of knowledge with QEMU) *shrugs
  2. Flashed it on an SD Card with dd.
  3. Added the community EDK2 UEFI firmware (rpi5-uefi to the EFI partition, next to the existing EFI/ folder.
  4. Booted the Pi5 and reached a Fedora 42 Login. (partially successful).

Full guide here.

What worked and what didn’t?

HardwareResult
Boot to loginWorks
Password to loginWorks
USB portsWorks
EthernetHardware Not Detected
WifiHardware Not Detected
USB TetheringInterface show enu1
USB PortsWorks

Idle RAM usage was a nice surprise. htop showed about 184 MB used out of 8 GB. That’s a minimal image with no desktop, so it’s not a fair comparision with a normal install.

Blockers I Hit

  • Firmware copied to the wrong place. The first copy went into an unmounted folder on the PC, instead of the SD Card. Found a tool named findmnt and I used it to rectify the issue.
  • No way to login. The first image had an SSH key but no password. I rebuilt it with a password(+SSH key).
  • No Ethernet, ip a showed only the loopback interface.
  • Tried Device Tree Mode, but the boot stopped in the initramfs, waiting for the root disk. It couldn’t see the SD card. (Suggested by Claude). I don’t even know what is “Device Tree Mode” to begin with, so I gave up.

Why the hardware isn’t detected?

At first, I thought it was a missing package issue. It isn’t and all the required packages were installed by default from the base image. Simple enough, the reason is a driver can only attach to hardware the kernel knows/sees, and in UEFI mode nothing describes Pi5’s hardware to the kernel. Pi5’s Ethernet also sits on a separate chip called RP1, which needs proper Pi 5 kernel and device tree support. The stock Fedora kernel doesn’t have that.

What it needs to work? (from my observation)

  • A Raspberry Pi 5 kernel.
  • Possibly a U-boot instead of EDK2. As Fedora boots through U-boot with a Device Tree, we’d be able to copy those files to the EFI partition easily. (I haven’t checked how well U-boot supports the Pi 5 on Fedora)
  • A newer base bootc image. Probably Fedora 44 which seemed to make ethernet work. (but I haven’t tested it)
  • I should have tried USB to Ethernet adapter to connect to the network, but even the USB tethering was bugging out so I’m not sure that’s actually a solution here.

Why the Raspberry Pi 5 doesn’t use GRUB or UEFI

These are my general knowledge and some I just discovered after experimenting with RPi5.

A normal x86 PC starts with UEFI and then GRUB. The Pi 5 doesn’t. It starts from its own bootloader, which is stored on a small EEPROM chip on the board.

  • The Pi’s VideoCore GPU starts first, sets up the RAM, then starts the CPU.
  • By default the bootloader tries the SD card, then NVMe, then USB. That’s a fallback order, not a boot menu.
  • It can load a Linux kernel straight from a FAT32 boot partition, so GRUB isn’t really needed.
  • UEFI was never part of this design, so Fedora’s UEFI-based boot chain has nothing to start from.

The Pi 4 has a third-party UEFI firmware that fills this gap pftf/RPi4. I used the Pi 5 version of it, worproject/rpi5-uefi

This is a progress report on my Fedora experiments, not a final guide/documentation, so don’t take everything here as the final fact. I’ll follow up with the next experiments and my progression. Stay tuned! ;)