mirror of
				https://github.com/xcat2/xNBA.git
				synced 2025-10-26 00:45:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			208 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # dhcpd.conf include file for Etherboot
 | |
| #
 | |
| # Include this file from your /etc/dhcpd.conf
 | |
| # $Id$
 | |
| 
 | |
| # Definition of Etherboot options
 | |
| # (taken from vendortags.html)
 | |
| 
 | |
| # We use an encapsulated option space to avoid polluting the site-local DHCP option space
 | |
| #
 | |
| option space etherboot;
 | |
| option etherboot-encapsulated-options code 150 = encapsulate etherboot;
 | |
| 
 | |
| # Definition of option codes within the etherboot-encapsulated-options space
 | |
| #
 | |
| option etherboot.extensions-path code 18 = string;
 | |
| option etherboot.magic		code 128 = string;
 | |
| option etherboot.kernel-cmdline	code 129 = string;
 | |
| option etherboot.menu-opts	code 160 = string;
 | |
| option etherboot.nic-dev-id	code 175 = string;
 | |
| option etherboot.menu-selection	code 176 = unsigned integer 8;
 | |
| option etherboot.motd-1		code 184 = string;
 | |
| option etherboot.motd-2		code 185 = string;
 | |
| option etherboot.motd-3		code 186 = string;
 | |
| option etherboot.motd-4		code 187 = string;
 | |
| option etherboot.motd-5		code 188 = string;
 | |
| option etherboot.motd-6		code 189 = string;
 | |
| option etherboot.motd-7		code 190 = string;
 | |
| option etherboot.motd-8		code 191 = string;
 | |
| option etherboot.image-1	code 192 = string;
 | |
| option etherboot.image-2	code 193 = string;
 | |
| option etherboot.image-3	code 194 = string;
 | |
| option etherboot.image-4	code 195 = string;
 | |
| option etherboot.image-5	code 196 = string;
 | |
| option etherboot.image-6	code 197 = string;
 | |
| option etherboot.image-7	code 198 = string;
 | |
| option etherboot.image-8	code 199 = string;
 | |
| option etherboot.image-9	code 200 = string;
 | |
| option etherboot.image-10	code 201 = string;
 | |
| option etherboot.image-11	code 202 = string;
 | |
| option etherboot.image-12	code 203 = string;
 | |
| option etherboot.image-13	code 204 = string;
 | |
| option etherboot.image-14	code 205 = string;
 | |
| option etherboot.image-15	code 206 = string;
 | |
| option etherboot.image-16	code 207 = string;
 | |
| option etherboot.kmod		code 254 = string;
 | |
| 
 | |
| # Legacy support for Etherboot options as site-local options (i.e. non-encapsulated)
 | |
| # Note: options defined after the switch to encapsulated options should not be defined here
 | |
| #
 | |
| option legacy-etherboot-magic		code 128 = string;
 | |
| option legacy-etherboot-kernel-cmdline	code 129 = string;
 | |
| option legacy-etherboot-menu-opts	code 160 = string;
 | |
| option legacy-etherboot-menu-selection	code 176 = unsigned integer 8;
 | |
| option legacy-etherboot-motd-1		code 184 = string;
 | |
| option legacy-etherboot-motd-2		code 185 = string;
 | |
| option legacy-etherboot-motd-3		code 186 = string;
 | |
| option legacy-etherboot-motd-4		code 187 = string;
 | |
| option legacy-etherboot-motd-5		code 188 = string;
 | |
| option legacy-etherboot-motd-6		code 189 = string;
 | |
| option legacy-etherboot-motd-7		code 190 = string;
 | |
| option legacy-etherboot-motd-8		code 191 = string;
 | |
| option legacy-etherboot-image-1		code 192 = string;
 | |
| option legacy-etherboot-image-2		code 193 = string;
 | |
| option legacy-etherboot-image-3		code 194 = string;
 | |
| option legacy-etherboot-image-4		code 195 = string;
 | |
| option legacy-etherboot-image-5		code 196 = string;
 | |
| option legacy-etherboot-image-6		code 197 = string;
 | |
| option legacy-etherboot-image-7		code 198 = string;
 | |
| option legacy-etherboot-image-8		code 199 = string;
 | |
| option legacy-etherboot-image-9 	code 200 = string;
 | |
| option legacy-etherboot-image-10	code 201 = string;
 | |
| option legacy-etherboot-image-11	code 202 = string;
 | |
| option legacy-etherboot-image-12	code 203 = string;
 | |
| option legacy-etherboot-image-13	code 204 = string;
 | |
| option legacy-etherboot-image-14	code 205 = string;
 | |
| option legacy-etherboot-image-15	code 206 = string;
 | |
| option legacy-etherboot-image-16	code 207 = string;
 | |
| 
 | |
| # Apply Etherboot options only for Etherboot clients
 | |
| #
 | |
| if substring ( option vendor-class-identifier, 0, 9 ) = "Etherboot" {
 | |
| 
 | |
|   # We must specify this value for etherboot-magic, or Etherboot will
 | |
|   # ignore all other options.
 | |
|   #
 | |
|   option etherboot.magic E4:45:74:68:00:00;
 | |
| 
 | |
|   # Bootfile name: derive from etherboot.kmod (calculated below)
 | |
|   # Use boot.nbi if no NIC_DEV_ID option present
 | |
|   # (i.e. if etherboot.kmod doesn't get set)
 | |
|   # Also pass filename back in filename field
 | |
|   #
 | |
|   option bootfile-name = pick-first-value ( concat ( "boot-",
 | |
| 						     config-option etherboot.kmod,
 | |
| 						     ".nbi" ),
 | |
| 					    "boot.nbi" ) ;
 | |
|   filename = config-option bootfile-name;
 | |
| 
 | |
|   # "Sensible" default values for some options
 | |
| 
 | |
|   # Mount devfs (will probably be needed for a network-boot)
 | |
|   option etherboot.kernel-cmdline " devfs=mount";
 | |
| 
 | |
|   # Info message (includes client IP address, MAC address, hardware ID string,
 | |
|   # server IP address and name of boot file)
 | |
|   option etherboot.motd-4 = concat ( "Using Etherboot to boot ",
 | |
| 				     binary-to-ascii ( 10, 8, ".", leased-address ),
 | |
| 				     " [",
 | |
| 				     binary-to-ascii ( 16, 8, ":", suffix ( hardware, 6 ) ),
 | |
| 				     "] [",
 | |
| 				     pick-first-value ( option etherboot.nic-dev-id, "unknown card" ),
 | |
| 				     "]", 0d:0a, "  from ",
 | |
| 				     binary-to-ascii ( 10, 8, ".", option dhcp-server-identifier ),
 | |
| 				     " with file ",
 | |
| 				     config-option tftp-server-name,
 | |
| 				     ":",
 | |
| 				     config-option bootfile-name,
 | |
| 				     " [",
 | |
| 				     pick-first-value ( config-option etherboot.kmod, "unknown module" ),
 | |
| 				     "]", 0d:0a );
 | |
| 
 | |
|   # Legacy site-local option support
 | |
|   # If client does not include an etherboot-encapsulated-options field in its DHCPREQUEST, then
 | |
|   # it will not understand etherboot-encapsulated-options in the DHCPACK and so we must send
 | |
|   # back the options as site-local options (i.e. not encapsulated).
 | |
|   # Note: we need do this only for options that existed prior to the switch to encapsulation.
 | |
|   #
 | |
|   if not exists etherboot-encapsulated-options {
 | |
|     option legacy-etherboot-magic	= config-option etherboot.magic;
 | |
|     option legacy-etherboot-kernel-cmdline = config-option etherboot.kernel-cmdline;
 | |
|     option legacy-etherboot-menu-opts	= config-option etherboot.menu-opts;
 | |
|     option legacy-etherboot-menu-selection = config-option etherboot.menu-selection;
 | |
|     option legacy-etherboot-motd-1	= config-option etherboot.motd-1;
 | |
|     option legacy-etherboot-motd-2	= config-option etherboot.motd-2;
 | |
|     option legacy-etherboot-motd-3	= config-option etherboot.motd-3;
 | |
|     option legacy-etherboot-motd-4	= config-option etherboot.motd-4;
 | |
|     option legacy-etherboot-motd-5	= config-option etherboot.motd-5;
 | |
|     option legacy-etherboot-motd-6	= config-option etherboot.motd-6;
 | |
|     option legacy-etherboot-motd-7	= config-option etherboot.motd-7;
 | |
|     option legacy-etherboot-motd-8	= config-option etherboot.motd-8;
 | |
|     option legacy-etherboot-image-1	= config-option etherboot.image-1;
 | |
|     option legacy-etherboot-image-2	= config-option etherboot.image-2;
 | |
|     option legacy-etherboot-image-3	= config-option etherboot.image-3;
 | |
|     option legacy-etherboot-image-4	= config-option etherboot.image-4;
 | |
|     option legacy-etherboot-image-5	= config-option etherboot.image-5;
 | |
|     option legacy-etherboot-image-6	= config-option etherboot.image-6;
 | |
|     option legacy-etherboot-image-7	= config-option etherboot.image-7;
 | |
|     option legacy-etherboot-image-8	= config-option etherboot.image-8;
 | |
|     option legacy-etherboot-image-9	= config-option etherboot.image-9;
 | |
|     option legacy-etherboot-image-10	= config-option etherboot.image-10;
 | |
|     option legacy-etherboot-image-11	= config-option etherboot.image-11;
 | |
|     option legacy-etherboot-image-12	= config-option etherboot.image-12;
 | |
|     option legacy-etherboot-image-13	= config-option etherboot.image-13;
 | |
|     option legacy-etherboot-image-14	= config-option etherboot.image-14;
 | |
|     option legacy-etherboot-image-15	= config-option etherboot.image-15;
 | |
|     option legacy-etherboot-image-16	= config-option etherboot.image-16;
 | |
|   }
 | |
| }
 | |
| 
 | |
| # Some options should be set for both Etherboot and the udhcpc client
 | |
| #
 | |
| if ( ( substring ( option vendor-class-identifier, 0, 9 ) = "Etherboot" ) 
 | |
|      or ( substring ( option vendor-class-identifier, 0, 5 ) = "udhcp" ) ) {
 | |
| 
 | |
|   # TFTP server defaults to DHCP server and is specified in both
 | |
|   # next-server field and tftp-server-name option field
 | |
|   #
 | |
|   option tftp-server-name = binary-to-ascii ( 10, 8, ".", config-option dhcp-server-identifier );
 | |
|   server-name = config-option tftp-server-name;
 | |
|   next-server = config-option dhcp-server-identifier;
 | |
| 
 | |
|   # Root path defaults to root of TFTP server
 | |
|   option root-path = concat ( config-option tftp-server-name, ":/" );
 | |
| 
 | |
|   # A fallback hostname, generated from the IP address
 | |
|   option host-name = concat ( "client_", binary-to-ascii ( 10, 8, "_", leased-address ) );
 | |
| }
 | |
| 
 | |
| # Force some items onto parameter request list for udhcp
 | |
| #
 | |
| if substring ( option vendor-class-identifier, 0, 5 ) = "udhcp" {
 | |
|   # Forcibly add root-path to list
 | |
|   option dhcp-parameter-request-list = concat ( option dhcp-parameter-request-list, 11 );
 | |
| }
 | |
| 
 | |
| # Etherboot sends a string to identify the NIC in etherboot.nic-dev-id.
 | |
| # For PCI NICs, this string is of the form "PCI:vvvv:dddd" where vvvv is the 
 | |
| # vendor identifier and dddd the device identifier, in lower-case ASCII hex.
 | |
| # For ISA NICs, the format of the string is "ISA:..." where ... is not yet
 | |
| # decided upon.
 | |
| #
 | |
| # We use the identifier to select the NBI image that will be specified via
 | |
| # the "bootfile-name" option.
 | |
| #
 | |
| # PCI NICs - use PCI vendor and device IDs
 | |
| # Listed in file generated by mknbi-set
 | |
| #
 | |
| include "/etc/dhcpd.conf.etherboot-pcimap.include";
 | |
| 
 | |
| # ISA NICs
 | |
| #
 | |
| if substring ( option vendor-class-identifier, 0, 9 ) = "Etherboot" {
 | |
|   if exists etherboot.nic-dev-id {
 | |
| 
 | |
|   }
 | |
| }
 |