Booting Macmini3,1 from ISC/DHCPD
Posted by Pepijn Oomen
After my recent upgrade of machines on my home-network, I discovered that the Mac mini showed Remote Disc in the Finder, suggesting it uses the same EFI boot as the Macbook Air.
Sure enough, booting it with ⌥ pressed, shows the boot-menu as mentioned in the Apple documents describing booting the Macbook Air off of the network, i.e. showing an Airport network pop-up list, but it failed to show my NetBoot server.
Using Remote Install Mac OS X.app did work, so I reverse engineered the communication involved.
An initial capture of the network traffic showed it was using a very similar workflow as the 'original' NetBoot, using a combo of DHCP, TFTP and HTTP (instead of NFS).
The machine running
Remote Install Mac OS X.appinforms the client usingbsdp_msgtype_list(by using an unsollicitedDHCP Ackpackage), containing the name of the boot image, which is shown in the menu on the client.The client sends a
bsdp_msgtype_selectmessage, and from there on forward the process is identical to the old way of doing things, evenNFSjust works as is.
To extend the configuration to also allow for netbooting it is thus necessary to implement the bsdp_msgtype_list answer. The structure of the BSDP packets (encapsulated in the vendor-encapsulated-options of the DHCP packets) has previously been described by Mike Bombich. Pay attention to the encoding of the name presented to the client in BSDP option 0x09.
[...]
} elsif (option dhcp-message-type = 8) {
option vendor-class-identifier "AAPLBSDPC";
if (substring(option vendor-encapsulated-options, 0, 3) = 01:01:01) {
log(debug, "bsdp_msgtype_list");
option vendor-encapsulated-options
01:01:01: # bsdp_msgtype_list
09:0c:81:00:00:01:07:6e:65:74:62:6f:6f:74; # netboot
} else {
log(debug, "bsdp_msgtype_select");
option vendor-encapsulated-options
01:01:02: # bsdp_msgtype_select
08:04:81:00:00:01; # bsdptag_selected_boot_image
}
}
[...]


