Raspberry Pi 4¶
Hardware Information¶
ARMv8 Architecture (64-bit)
Broadcom BCM2711 (SoC)
Includes Quad ARM Cortex-A72 CPU @ 1.8 GHz
Includes VideoCore VI GPU
SD Card Storage
1, 2, 4 or 8 GB RAM
Video Outputs
2x HDMI Video Output via micro-HDMI
Composite Video Output
Ethernet 10/100/1000 Mbit/s
Wifi b/g/n/ac dual band 2.4/5 GHz
Bluetooth 5.0
2x USB 2.0, 2x USB 3.0
Setting up the Haiku SD card¶
The Raspberry Pi SD card generally uses the MBR file system layout below. Partition 1 is all that is required to boot an OS.
partition 1 – FAT32, bootable flag, type ‘ef’
partition 2 – BeFS, Haiku filesystem, type ‘eb’
Boot Partition¶
Required Files¶
start4.elf: The GPU binary firmware image
fixup4.dat: Additional code for the GPU
bcm2711-rpi-4-b.dtb: FDT binary for the Raspberry Pi 4B
bcm2711-rpi-400.dtb: FDT binary for the Raspberry Pi 400
config.txt: A configuration file read by the Pi to start u-boot.bin
u-boot.bin: u-boot loader for the Pi 4
boot.scr: u-boot loader script for starting Haiku Loader
uEnv.txt: configuration file for the boot.scr script
haiku_loader.efi: Haiku Loader
Note: unlike previous Raspberry Pi models, there’s no bootcode.bin on the Raspberry Pi 4 as it’s replaced by a boot EEPROM.
Optional Files¶
vlls directory: Additional GPU code, e.g. extra codecs.
uEnv.txt: u-boot configuration script to automate boot.
Compiling Haiku and preparing SD card¶
Create your ARM work directory
mkdir generated.arm; cd generated.arm
Build an ARM toolchain using
../configure --build-cross-tools arm --cross-tools-source ../../buildtools
Build SD card image using
jam -q -j6 @minimum-mmc
Prepare customized SD card using the
rune
tool. E.g.rune -b rpi4 -i haiku-mmc.image /dev/mmcblk0
Booting¶
SOC starts the boot EEPROM
Boot EEPROM runs start4.elf
start4.elf reads config.txt and start u-boot
u-boot.bin starts the Haiku loader
Haiku loader boots Haiku kernel
config.txt Options¶
uart_2ndstage=1
enable_uart=1
kernel=u-boot.bin