This page explains how to get Fedora running on the SiFive HiFive Premier P550 board.
Disclaimer
The image uses Jason Montleon's build of the 6.6-based vendor kernel. The configuration should be close to that of a regular Fedora kernel, but obviously the base is significantly older than current mainline and several downstream changes are included.
GRUB2 is configured not to display its menu on boot. For whatever reason, the bootloader takes forever to draw its UI on the serial console, so hiding the menu is an effective way to avoid adding a significant delay to each boot. If you need to interact with GRUB2, just press ESC while the countdown is being displayed. Note that the countdown message could be somewhat hard to spot as it might overlap with previous serial output. Just pay attention to where the cursor is and you'll figure it out.
The board's DTB is passed to the kernel via GRUB2 (see GRUB_DEFAULT_DTB
in /etc/default/grub
) instead of being automatically loaded off the /boot
filesystem. Once we have a Fedora build of the firmware ("bootchain") we should be able to drop this hack.
Machine-specific instructions
Requirements
Firmware
You need to have upgraded the board's firmware ("bootchain") to the latest release. At the time of writing, that would be:
Follow the official documentation for the process; it basically boils down to copying a single file to an ext4-formatted USB stick and running a few commands at the u-boot
prompt.
Fedora won't boot if you skip this step.
Serial console access
It should be noted however that the board exposes several serial consoles over the USB-C port, and you need to make sure you're connected to the right one.
Specifically, the device name that you should use in your configuration file (pu port
line) is /dev/serial/by-id/usb-FTDI_Quad_RS232-HS-if02-port0
.
See the generic instructions.
NVMe support (optional)
The board doesn't have a native NVMe slot, but it's still possible to install an NVMe drive by plugging an adapter such as this one into the PCIe slot.
Getting the firmware to boot off NVMe requires a small configuration change. At the u-boot
prompt, run the following commands:
=> env default -f -a ## Resetting to default environment => env print boot_targets boot_targets=mmc1 usb sata mmc0 => env set boot_targets "mmc1 usb nvme0 sata mmc0" => env print boot_targets boot_targets=mmc1 usb nvme0 sata mmc0 => env save Saving Environment to SPIFlash... Erasing SPI flash... Writing to SPI flash... done OK
From the next time the board is powered on, the NVMe drive will be the preferred internal boot media.
Media preparation
Disk images can be obtained from:
As of this writing, the most recent disk image is:
See the generic instructions.
First boot
Once the disk image has been written to the target media, you can pop that into your machine and power it on.
Assuming everything is fine, after a few seconds you should see the usual Linux boot messages scroll by on the serial console.
initial-setup
is disabled in this image, so after a short wait you'll just be presented with a login prompt.
The root password is linux
.
Post-installation tasks
See the generic instructions.
Reduce fan noise
The CPU fan that comes with the board is quite loud and by default it runs at full speed, resulting in an uncomfortable amount of noise being produced. To mitigate this issue, you can configure the fan so that it runs at a much lower speed, reducing the noise significantly.
This can be easily achieved by creating a custom systemd unit:
$ cat <<EOF | sudo tee /etc/systemd/system/custom-fan-speed.service [Unit] Description=Set custom fan speed [Service] Type=oneshot ExecStart=/bin/bash -c 'echo 20 >/sys/devices/platform/soc/50b50000.fan_control/hwmon/hwmon*/pwm1' [Install] WantedBy=multi-user.target EOF
and enabling it:
$ sudo systemctl daemon-reload $ sudo systemctl enable --now custom-fan-speed.service
The next time the machine is powered on, the fan will run at full speed for a few seconds before slowing down.
An alternative solution is to purchase a replacement fan such as the AVC DA05015R12H PWM fan. This is a much quieter fan that can be run at full speed while producing very little noise, or at a lower speed while being pretty much completely silent. Note that searching for the model name will yield several results, so make sure you order the one with a 4-pin connector. It's a bit taller than the original fan too, so you're going to need longer screws to hold it in place.