While it’s also possible to load single files via the Open Firmware interface already (by typing something like “boot net:” at the firmware prompt for example), you need a secondary boot loader like yaboot or GRUB 2 to handle more complex boot scenarios like loading both, kernel and an initrd.

GRUB 2 is able to load files via network, too, and this is also working when it is running on an Open Firmware implementation like SLOF. However, while there are a couple of pages on the web that describe how to do network booting with GRUB 2 when it is running on a x86-based PC, I haven’t found a single page that tells you how to do network booting in GRUB when it is running on a POWER-based machine. So here’s how to do it – you basically have got to put something like this in your grub.cfg file:

 menuentry 'Network boot' --class os {
     insmod net
     insmod ofnet
     insmod tftp
     insmod gzio
     insmod part_gpt
     # TFTP server address (seems not to work via DHCP configuration): 
     set net_default_server=10.0.2.2
     # DHCP setup:
     net_bootp
     echo 'Network status: '
     net_ls_cards
     net_ls_addr
     net_ls_routes
     echo 'Loading Linux ...'
     linux (tftp)/linux
     echo 'Loading initial ramdisk ...'
     initrd (tftp)/initrd
 }

The tricky line here was the “insmod ofnet” (which adds the Open Firmware network driver), the other parts are pretty much the same as on other architectures.