Booting Haiku remotely over a local network.
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.
In the example below we will cover remote booting Haiku on various architectures. At the moment this is mostly geared toward developers.
Pre-requirements
- Required: Linux build tools
- Required: Haiku source code and build environment
- Required: Enough memory on the test system. (Size of haiku.image + 256MB should work)
- Required: haiku.image file generated by ` jam -q haiku-image `
- Optional: TFTP Server (for pushing out boot loader on some architectures)
The 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
Starting the remote disk server is fairly straight forward using the Jam tool. Starting the remote disk server should be performed prior to starting the boot loader on the test system.$ jam -q run ':remote_disk_server' ./generated/haiku.image ...found 109 target(s)... ...updating 1 target(s)... RunCommandLine1
run_0 The remote disk server will need to be killed via CTL+c and re-spawned each time the haiku disk image changes.Remote disk server request
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 the system
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.The completeness of remote disk booting may vary based on architecture. The architectures below are known working at the time of this guide's writing, your mileage may vary.
-
x86
The x86 version of the Haiku boot loader can be booted via a PXE server.-
PXE Boot
Generate the x86 PXE bootloader via...TARGET_BOOT_PLATFORM=pxe_ia32 jam -q pxehaiku-loader haiku-netboot-archive
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.-
TFTP boot
Copy the boot_loader_openfirmware boot binary to your build system's TFTP share.
At the OpenFirmware prompt, execute the following OpenFirmware command replacing TFTP_SERVER_IP with the IP of the tftp server. Optionally you can specify the test systems client address via MY_IP_ADDRESS.boot enet:TFTP_SERVER_IP,boot_loader_openfirmware<,MY_IP_ADDRESS>
-
