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:
- Haiku source code and build environment
- Linux build tools
- Enough memory on the test system. (Size of haiku.image + 256MB should work)
- haiku.image file generated by
jam -q haiku-image
- TFTP Server (for pushing out boot loader on PowerPC, ARM?)
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.
- Copy the boot_loader_openfirmware boot binary to your build system’s TFTP share.
- 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