(New disk image published) |
(The 20240111 image doesn't have initial-setup) |
||
Line 35: | Line 35: | ||
= Booting = | = Booting = | ||
Pop the prepared media into the board and power it on. After a brief wait, | Pop the prepared media into the board and power it on. After a brief wait, Fedora should come up. | ||
The root password is <code>linux</code>. | |||
The image is fairly minimal, but any additional software you might need is just a short <code>dnf</code> invocation away. | The image is fairly minimal, but any additional software you might need is just a short <code>dnf</code> invocation away. |
Latest revision as of 10:29, 12 January 2025
This page explains how to get Fedora running on the SiFive HiFive Premier P550 board.
Requirements
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.
Installing
Download the disk image. The file you want is named Fedora-Server-Minimal-P550-41.YYYYMMDD.riscv64.raw.xz
, where YYYYMMDD
corresponds to the creation date. At the time of writing, the most recent version is:
Uncompress the image with
$ xz -d Fedora-Server-Minimal-P550-41.YYYYMMDD.riscv64.raw.xz
then use dd
or whatever tool you're comfortable with to write it to the target media, for example:
$ sudo dd iflag=fullblock oflag=direct status=progress bs=4M if=Fedora-Server-Minimal-P550-41.YYYYMMDD.riscv64.raw of=/dev/sdb
The command above assumes that you're writing the image to a microSD card connected to your computer via a USB card reader. Adjust as needed, making sure that you're targeting the correct media.
Booting
Pop the prepared media into the board and power it on. After a brief wait, Fedora should come up.
The root password is linux
.
The image is fairly minimal, but any additional software you might need is just a short dnf
invocation away.
Software quirks
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.
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'll be able to drop this hack.
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.
Hardware quirks
NVMe
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.
Serial console access
The board exposes several serial consoles over the USB-C port, and you need to make sure you're connected to the right one.
You can create a configuration file for minicom
like so:
$ cat <<EOF >~/.minirc.p550 pu port /dev/serial/by-id/usb-FTDI_Quad_RS232-HS-if02-port0 pu baudrate 115200 pu bits 8 pu parity N pu stopbits 1 pu rtscts No EOF
Once you've done that, you will be able to connect to the main serial console using
$ minicom p550
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.