Network Booting Haiku

The root Haiku disk image (raw variant) can be booted remotely over the local network as of recent versions. This is especially useful when an architectures boot and kernel issues need to be troubleshot.

In the example below we will cover remote booting Haiku on various architectures. At the moment this is mostly geared toward developers.

Requirements:

Remote Disk Server

The Haiku sources include a remote disk server which listens for UDP requests from the Haiku boot loader. When a network UDP request for the disk image is received from the boot loader, it is provided over the network to the test system.

Spawning the remote disk server

jam -q run ':remote_disk_server' ./generated/haiku.image

Changes
The remote disk server will need to be killed via CTL+C and re-spwaned each time the Haiku disk image changes.

After the remote disk server receives a request, it will begin to push the provided disk image out to the Haiku boot loader running on the test system…

HELLO request
READ request: offset: 0, 512 bytes
READ request: offset: 1024, 512 bytes
READ request: offset: 2048, 512 bytes
READ request: offset: 3072, 512 bytes
READ request: offset: 4096, 512 bytes
READ request: offset: 5120, 512 bytes
READ request: offset: 6144, 512 bytes
READ request: offset: 7168, 512 bytes
READ request: offset: 0, 512 bytes
READ request: offset: 67108864, 232 bytes
READ request: offset: 67110912, 1024 bytes
READ request: offset: 67111936, 1024 bytes
READ request: offset: 67110912, 1024 bytes
READ request: offset: 67111936, 1024 bytes
.
.

Booting from remote disk server

Booting methods vary from architecture to architecture. Generally the platform’s boot loader should perform the search for remote disk images prior to the Haiku menu.

YMMV
The completeness of remote disk booting may vary based on architecture. The architectures below are known working at the time of this guides writing, your mileage may vary.

x86, x86_64

The x86 version of the Haiku boot loader can be booted via a PXE server.

Generate the x86 PXE bootloader via…

TARGET_BOOT_PLATFORM=pxe_ia32 jam -q pxehaiku-loader haiku-netboot-archive

This will generate a boot image in tar.gz format and a pxe loader for it:

  • haiku-netboot.tgz
  • objects/haiku/x86_gcc2/release/system/boot/pxehaiku-loader

The image generated can be booted via a DHCP by placing both files generated above on a TFTP server and pointing to the loader via the DHCP ‘next-server/filename’ options.

PowerPC

The PowerPC version of Haiku can be started headless via TFTP or CD.

  1. Copy the boot_loader_openfirmware boot binary to your build system’s TFTP share.
  2. At the OpenFirmware prompt, execute boot enet:TFTP_SERVER_IP,boot_loader_openfirmware,DISK_SERVER_IP;
    • Replace TFTP_SERVER_IP with the IP of the tftp server.
    • Optionally, the remote disk server can be specified by replacing DISK_SERVER_IP