Booting Haiku on the SiFive unmatched

Haiku published a quick article (full disclosure, my article :slight_smile: ) on how to boot Haiku’s RV64 port on the SiFive unmatched! This is not Linux, but a completely MIT licensed open source operating system based on the BeOS.

If you have a spare SD card, a semi-modern Radeon HD video card, and a spare USB flash drive, give it a try :slight_smile:

For now only one CPU core is supported. There is a working patch for full SMP support we’re refining and tuning however.

Big thanks to @X512 for doing all the heavy lifting getting this port functional!

4 Likes

Is the GPU accelerated or just a frame buffer?

@X512 is working on GPU acceleration and people interested can follow his work here:
https://discuss.haiku-os.org/t/vulkan-lavapipe-software-rendering-is-working-on-haiku/11363/308

1 Like

I tried writing the sd card using that script and dd’ing the ~350MB image to sdcard (I’m sometimes unsure if to /dev/sdb or /dev/sdb1.
Upon boot the screen terminal just says ‘f’ and freezes.
I can not mount the the SDcard OR the USBstick as filesystem in ubuntu (in case I should be able).
Any experiences on that?

The ~350MB OS image should go onto a USB flash drive. The SD card should be made into a “uefi bios card” (see unmatched-uboot.sh « kallisti5 « 3rdparty - haiku - Haiku's main repository)

Pretty much, putting (just) the u-boot UEFI bios on the SD card lets you boot from any “traditional” media attached to the system like a PC (USB, NVMe, etc)

The SD Card slot is extremely slow, so we decided to only use it for the u-boot bios :slight_smile:. Don’t think of the Unmatched as a Raspberry Pi… think of it like a full desktop computer.

Thanks, yes, I followed those instructions and I currently use my Unmatched as main-desktop running 21.10 Ubuntu (with a modern Laptop to the rescue on occasion :).
However the procedure didnt succeed on first attempt.
Might be bad SD card, or inproper USBstick etc etc.
I was just wondering if after preparing the SD card and the USB stick either of those should be mountable with proper contents (both were not, which would help me trouble shoot).
I will get back to this and utilize a known-to-work 16GB sd card…

The “bios sd card” won’t have any real files on it. It’s all raw data within two special SiFive unmatched partitions. The USB drive will have files on it with our native BeFS filesystem (which can be read-only mounted from Linux)

There is a known and documented bug with the zero stage bootloader. It sends output at 89856 baud and these errors are illegible at 115200 baud. Some people have reported success using 57600 baud to see these messages. But if you are having trouble with the zero stage bootloader that suggests a problem with the sdcard.

I think I ran into that screen issue now but it works after reconnecting the USB.
BUT, when I boot now without manual interaction it boots from NVME (ubuntu)
If I press a key and follow this page: [bug?] SiFive Unmatched default boot script update?
pci enum ; usb start ; run bootcmd_usb0
I get a direct kernel error.
https://www.astro.physik.uni-potsdam.de/~mwendt/err.jpg

Any ideas here? Is that the proper U-Boot command to run Haiku from USB when an Ubuntu nvme is present?

pci enum ; usb start ; run bootcmd_usb0

Works with default factory SD card image. Haiku need to be installed to USB by dd command or alternative.

This seems Haiku bug. You can try another image, for example from here.

There are some bugs in the older u-boot that ships with the unmatched.

@enthusi I’d recommend trying our SD card image (a second MicroSD card here would be useful then you won’t risk your current install of Ubuntu).

Hah, it was indeed an issue with that particular haikuimage I used - it was a nightly build.
Thanks alot!

hm. We just updated our upstream images to GCC11. x512’s image is the older gcc8.
I’ll dig into this and confirm on my unmatched.

Doesnt output on HDMI etc but this might be the gfx card I currently use (RX550).

Radeon/AMD GPU driver is common for x86 and RISC-V, sou you can fill bug report at https://dev.haiku-os.org/. You need to fill Haiku revision number (hrev…), GPU PCI ID and select component to Drivers → Graphics → radeon_hd. Primary driver author is @kallisti5.

Also note that my new AMD GPUs driver “RadeonGfx” supporting hardware 3D acceleration with Vulkan and Zink is in progress. See Vulkan lavapipe software rendering is working on Haiku - #243 by X512 - Development - Haiku Community.