Internet boot protocol server
bootpd [-d] [-s] [-t timeout] [configfile]
The bootpd utility implements an Internet Boot Protocol server as defined in RFC 951 and RFC 1048. To conserve resources, it's normally run by the inetd utility via the following line in the /etc/inetd.conf file:
bootps dgram udp wait root /etc/bootpd bootpd
This causes bootpd to be started only when a boot request arrives. If bootpd doesn't receive another boot request within fifteen minutes of the last one it received, it will exit to conserve system resources. You can use the -t option to specify a different timeout value in minutes (e.g. -t20). A timeout value of zero means forever.
Rather than wait for a boot request, bootpd can be started independent of inetd (for example in /etc/netstart using the -s option). This is probably the desired mode of operation for large network installations with many hosts.
When using the -s option, bootpd and inetd may compete for the same port. Make sure to comment out the bootps entry in the /etc/inetd.conf file. In this case, the -t option has no effect since bootpd will never exit. |
Upon startup, bootpd first reads its configuration file, /etc/bootptab, and then begins listening for BOOTREQUEST packets.
The server rereads its configuration file when it receives a hangup signal (SIGHUP) or when it receives a bootp request packet and detects that the file has been updated. Hosts may be added, deleted, or modified when the configuration file is reread.
The bootpd utility works with tftpd to provide the client with a boot image. This method is an alternative to the QNX OS netboot utility. The default network mapping file used by QNX, /etc/config/netmap, is used by tftpd to resolve the markers.
You can use the following markers in a buildfile served by tftpd:
The following buildfile (/boot/build/ws.ether1000) contains parameter markers that inherit their values from the network environment:
sys/Proc32 $ 1 Proc32 -l $(lnode) -D sys/Slib32 $ 1 Slib32 sys/Slib16 $ 1 Slib16 /bin/Net $ 1 Net -m $(netmap) /bin/Net.ether1000 $ 1 Net.ether1000 /bin/sinit $ 1 sinit -r //$(bnode)/ TERM=qnx TZ=$(TZ) sys/Debugger32 $ 1 Debug
The $(lnode) marker in the Proc32 command takes as its value the logical node ID of a booting machine. The logical node ID is determined by netboot and passed to buildqnx based on the Ethernet address of the booting machine and its mapping entry in the /etc/config/netmap file.
The $(netmap) marker in the Net command tells Net the initial network mapping of the boot server so that the booting machine can start network communications with it.
The $(bnode) marker in the sinit command represents the logical node ID of the boot server. The command sets the root (/) of the booting machine's filesystem to the root of the boot server.
The value of the $(TZ) marker is inherited from the boot server. The command sets the booting machine's time zone information to match the current setting of the boot server's TZ environment variable.
If you must build a pre-built image for a node, don't use markers - hardcode the required values directly into a custom buildfile instead. For more information, see buildqnx in the QNX OS Utilities Reference, as well as the Networking chapter in the QNX OS Installation & Configuration guide. |
Reported to system log.
Individual host entries must not exceed 1024 characters.
The images for the bootp ROMs manufactured by Lanworks must be located at 0x10000.
The bf tag to set the boot image would be:bf=|cd /boot; buildqnx -b0x10000 build/node1: |
/etc/bootptab file,
inetd
tftpd
RFC 951, RFC 1048, RFC 1084, Assigned Numbers