Haiku on Raspberry Pi 2

Hi everyone!
I have a RPi2 model B Rev1.1. I’ve been attempting to boot Haiku on it since 2018 with no luck. As of now, I managed to get to the splash screen! I’m using hr59791. Ofc I’m not expecting to get a desktop; however, there are a couple of simple but curious errors for which I ask for help:

  • On my first try, I got a kernel panic because no interrupt controller was found. After digging through the loader source code, it appears the FDT node is not loaded. Apparently, the BCM2836’s Cortex A7 uses GICv2, so I added the compatible name of the A15 GIC, and it booted! I don’t actually know how right that is, as the BCM2836 peripheral docs and some Linux references consider its interrupt controller as separate model, not based on GIC. I have no knowledge on interrupt controllers so any hint on what the appropriate way should be is appreciated.
  • After working that out, I got another kernel panic on KDiskDeviceManager::InitialDeviceScan() such file or directory. After checking the loader logs, it reports an error on PackageVolumeInfo::_InitState(): failed to parse activated-packages: No such file or directory; and LoadOldState(): failed to open administrative directory: No such file or directory. Other than that, I have no clue what is wrong, and the boot process doesn’t go any further.
  • Throughout all this lil experiment, the UART console didn’t work for Haiku. For the bootcode and U-Boot I got no problem. However, as soon as it loaded the loader ELF, the serial console receives only garbage. I tried to change some config and uEnv options to no avail. [I got the loader logs by getting to the menu, and I had to take pictures for the panic screens lol]

Anyway, I have a lot of love to Haiku and I’d like to see it take over as much archs as possible! So I’d like to test at least.

2 Likes
  • Looking at the device tree for BCM2836, I don’t see any GICv2s, but there is a “brcm,bcm2836-l1-intc” interrupt controller and a “brcm,bcm2836-armctrl-ic” interrupt controller. I think you’d need to support both to do anything useful. Haiku doesn’t currently have any way to use multiple interrupt controllers, but my (WIP) arm64 changes do include a way to do that.
  • I would expect a crash somewhere around there since there probably aren’t any storage drivers. The errors with “PackageVolumeInfo::_InitState()” and “LoadOldState()” are unrelated errors that you can ignore. Those errors show up since you haven’t installed/uninstalled any packages yet and there aren’t any previous package states to roll back to.
  • “Receives only garbage” sounds like a baud rate issue. I think Haiku’s PL011 driver might initialize the UART registers without setting the baud rate
1 Like