mirror of
https://github.com/xcat2/xNBA.git
synced 2025-02-02 03:51:43 +00:00
Michael Brown
3961c1ca02
[dhcp] Send broadcast PXE boot server discovery requests to port 67
We currently send all boot server discovery requests to port 4011. Section 2.2.1 of the PXE spec states that boot server discovery packets should be "sent broadcast (port 67), multicast (port 4011), or unicast (port 4011)". Adjust our behaviour so that any boot server discovery packets that are sent to the broadcast address are directed to port 67 rather than port 4011. This is required for operation with dnsmasq as a PXE server, since dnsmasq listens only on port 67, and relies upon this (specified) behaviour. This change may break some setups using the (itself very broken) Linux PXE server from kano.org.uk. This server will, in its default configuration, listen only on port 4011. It never constructs a boot server list (PXE_BOOT_SERVERS, option 43.8), and uses the wrong definitions for the discovery control bits (PXE_DISCOVERY_CONTROL, option 43.6). The upshot is that it will always instruct the client to perform multicast and broadcast discovery only. In setups lacking a valid multicast route on the server side, this used to work because gPXE would eventually give up on the (non-responsive) multicast address and send a broadcast request to port 4011, which the Linux PXE server would respond to. Now that gPXE correctly sends this broadcast request to port 67 instead, it is never seen by the Linux PXE server, and the boot fails. The fix is to either (a) set up a multicast route correctly on the server side before starting the PXE server, or (b) edit /etc/pxe.conf to contain the server's unicast address in the "multicast_address" field (a hack that happens to work). Suggested-by: Simon Kelley <simon@thekelleys.org.uk>
gPXE README File gPXE is an implementation of the PXE specification for network booting, with extensions to allow additional features such as booting via HTTP, iSCSI, and AoE. In generally, gPXE is compatible with the industry-standard PXE specification, and also supports Etherboot .nbi file loading and some additional protocols and features. For more detailed information about gPXE, please visit our project website at: http://etherboot.org/ BUILDING gPXE IMAGE FROM SOURCE If you don't want to install development tools, and have access to the Web, you can get gPXE and Etherboot ROM images made on demand from http://rom-o-matic.net/ If you would like to compile gPXE images from source, here are some tips. We normally compile gPXE images on x86, 32-bit Linux machines. It is possible to also use x86-64 machines. We use gcc compiler options to create 32-bit output. It is important to have the necessary software packages installed. A gcc-based toolchain is required. The following packages (at least) are required: - a gcc tool chain (gcc 3.x or gcc 4.x) - binutils - perl - syslinux - mtools To test your environment, cd to the "src" directory and type: make You should see a lot of output, and when it stops, the "bin" directory should be populated with gPXE images and object files. To learn more about what to build and how to use gPXE, please visit our project website at http://etherboot.org/ , particularly the "howto" section. CONTACTING US Pointers to our project mailing lists are on http://etherboot.org/ Real-time help is often available on IRC on the #etherboot channel of irc.freenode.net.
Description
Languages
C
94.5%
Objective-C
2.1%
Assembly
1.3%
Perl
0.9%
Makefile
0.4%
Other
0.7%