summaryrefslogtreecommitdiff
path: root/gpxe/src/Config
blob: 210718d4bb66a973f6ad48a467c8493a645b794b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
##############################################################################
##############################################################################
#
# IMPORTANT!
# 
# The use of this file to set options that affect only single object
# files is deprecated, because changing anything in this file results
# in a complete rebuild, which is slow.  All options are gradually
# being migrated to config.h, which does not suffer from this problem.
# 
# Only options that affect the entire build (e.g. overriding the $(CC)
# Makefile variable) should be placed in here.
#
##############################################################################
##############################################################################


#
# Config for Etherboot/32
#
#
# Do not delete the tag OptionDescription and /OptionDescription
# It is used to automatically generate the documentation.
#
# @OptionDescription@
#	User interaction options:
#
#	-DASK_BOOT=n
#			Ask "Boot from (N)etwork ... or (Q)uit? " 
#			at startup, timeout after n seconds (0 = no timeout).
#			If unset or negative, don't ask and boot immediately
#			using the default.
#	-DBOOT_FIRST
#	-DBOOT_SECOND
#	-DBOOT_THIRD
#			On timeout or Return key from previous
#			question, selects the order to try to boot from
#			various devices.
#			(alternatives: BOOT_NIC, BOOT_DISK,
#			 BOOT_FLOPPY, BOOT_NOTHING)
#			See etherboot.h for prompt and answer strings.
#			BOOT_DISK and BOOT_FLOPPY work only where a driver
#			exists, e.g. in LinuxBIOS.
#			They have no effect on PCBIOS.
#	-DBOOT_INDEX	The device to boot from 0 == any device.
#			1 == The first nic found.
#			2 == The second nic found
#			...
#			BOOT_INDEX only applies to the BOOT_FIRST.  BOOT_SECOND 
#			and BOOT_THIRD search through all of the boot devices.
#	-DBAR_PROGRESS
#			Use rotating bar instead of sequential dots
#			to indicate an IP packet transmitted.
#
#	Boot order options:
#
#	-DBOOT_CLASS_FIRST
#	-DBOOT_CLASS_SECOND
#	-DBOOT_CLASS_THIRD
#			Select the priority of the boot classes
#			Valid values are:
#				BOOT_NIC
#				BOOT_DISK
#				BOOT_FLOPPY
#	BOOT_DISK and BOOT_FLOPPY work only where a driver exists,
#	e.g. in LinuxBIOS.  They have no effect on PCBIOS.
#
#	Boot autoconfiguration protocol options:
#
#	-DALTERNATE_DHCP_PORTS_1067_1068
#			Use ports 1067 and 1068 for DHCP instead of 67 and 68.
#			As these ports are non-standard, you need to configure
#			your DHCP server to use them. This option gets around
#			existing DHCP servers which cannot be touched, for
#			one reason or another, at the cost of non-standard
#			boot images.
#	-DNO_DHCP_SUPPORT
#			Use BOOTP instead of DHCP.
#	-DRARP_NOT_BOOTP
#			Use RARP instead of BOOTP/DHCP.
#	-DREQUIRE_VCI_ETHERBOOT
#			Require an encapsulated Vendor Class Identifier
#			of "Etherboot" in the DHCP reply
#			Requires DHCP support.
#	-DDHCP_CLIENT_ID=\"Identifier\"
#	-DDHCP_CLIENT_ID_LEN=<Client ID length in octets>
#	-DDHCP_CLIENT_ID_TYPE=<Client ID type>
#			Specify a RFC2132 Client Identifier option, length and type.
#			Requires DHCP support.
#	-DDHCP_USER_CLASS=\"UserClass\"
#	-DDHCP_USER_CLASS_LEN=<User Class length in octets>
# 			Specify a RFC3004 User Class option and length. Use this
#			option to set a UC (or multiple UCs) rather than munge the
#			client Vendor Class ID.
#			Requires DHCP support.
#	-DALLOW_ONLY_ENCAPSULATED
#			Ignore Etherboot-specific options that are not within
#			the Etherboot encapsulated options field.  This option
#			should be enabled unless you have a legacy DHCP server
#			configuration from the bad old days before the use of
#			encapsulated Etherboot options.
#	-DDEFAULT_BOOTFILE=\"default_bootfile_name\"
#			Define a default bootfile for the case where your DHCP
#			server does not provide the information.  Example:
#			  -DDEFAULT_BOOTFILE="tftp:///tftpboot/kernel"
#			If you do not specify this option, then DHCP offers that
#			do not specify bootfiles will be ignored.
#
#	NIC tuning parameters:
#
#	-DALLMULTI
#			Turns on multicast reception in the NICs.
#
#	Boot tuning parameters:
#
#	-DCONGESTED
#			Turns on packet retransmission.	 Use it on a
#			congested network, where the normal operation
#			can't boot the image.
#	-DBACKOFF_LIMIT
#			Sets the maximum RFC951 backoff exponent to n.
#			Do not set this unreasonably low, because on networks
#			with many machines they can saturate the link
#			(the delay corresponding to the exponent is a random
#			time in the range 0..3.5*2^n seconds).	Use 5 for a
#			VERY small network (max. 2 minutes delay), 7 for a
#			medium sized network (max. 7.5 minutes delay) or 10
#			for a really huge network with many clients, frequent
#			congestions (max. 1  hour delay).  On average the
#			delay time will be half the maximum value.  If in
#			doubt about the consequences, use a larger value.
#			Also keep in mind that the number of retransmissions
#			is not changed by this setting, so the default of 20
#			may no longer be appropriate.  You might need to set
#			MAX_ARP_RETRIES, MAX_BOOTP_RETRIES, MAX_TFTP_RETRIES
#			and MAX_RPC_RETRIES to a larger value.
#	-DTIMEOUT=n
#			Use with care!! See above.
#			Sets the base of RFC2131 sleep interval to n.
#			This can be used with -DBACKOFF_LIMIT=0 to get a small
#			and constant (predictable) retry interval for embedded
#			devices. This is to achieve short boot delays if both
#			the DHCP Server and the embedded device will be powered
#			on the same time. Otherwise if the DHCP server is ready
#			the client could sleep the next exponentially timeout,
#			e.g. 70 seconds or more. This is not what you want.
#			n should be a multiple of TICKS_PER_SEC (18).
#
#	Boot device options:
#
#	-DTRY_FLOPPY_FIRST
#			If > 0, tries that many times to read the boot
#			sector from a floppy drive before booting from
#			ROM. If successful, does a local boot.
#			It assumes the floppy is bootable.
#	-DEXIT_IF_NO_OFFER
#			If no IP offer is obtained, exit and
#			let the BIOS continue.
#			The accessibility of the TFTP server has no effect,
#			so configure your DHCP/BOOTP server properly.
#			You should probably reduce MAX_BOOTP_RETRIES
#			to a small number like 3.
#
#	Boot image options:
#
#	-DFREEBSD_KERNEL_ENV
#			Pass in FreeBSD kernel environment
#	-DAOUT_LYNX_KDI
#			Add Lynx a.out KDI support
#	-DMULTICAST_LEVEL1
#			Support for sending multicast packets
#	-DMULTICAST_LEVEL2
#			Support for receiving multicast packets
#
#	Interface export options:
#
#	-DPXE_EXPORT
#			Export a PXE API interface.  This is work in
#			progress.  Note that you won't be able to load
#			PXE NBPs unless you also use -DPXE_IMAGE.
#	-DPXE_STRICT
#			Strict(er) compliance with the PXE
#			specification as published by Intel.  This may
#                       or may not be a good thing depending on your
#			view of the spec...
#	-DPXE_DHCP_STRICT
#			Strict compliance of the DHCP request packets
#			with the PXE specification as published by
#			Intel.  This may or may not be a good thing
#			depending on your view of whether requesting
#			vendor options which don't actually exist is
#			pointless or not. You probably want this
#			option if you intend to use Windows RIS or
#			similar.
#
#	Obscure options you probably don't need to touch:
#
#	-DZPXE_SUFFIX_STRIP
#			If the last 5 characters of the filename passed to Etherboot is
#			".zpxe" then strip it off. This is useful in cases where a DHCP server
#			is not able to be configured to support conditionals. The way it works
#			is that the DHCP server is configured with a filename like
#			"foo.nbi.zpxe" so that when PXE asks for a filename it gets that, and
#			loads Etherboot from that file. Etherboot then starts up and once
#			again asks the DHCP server for a filename and once again gets
#			foo.nbi.zpxe, but with this option turned on loads "foo.nbi" instead.
#			This allows people to use Etherboot who might not otherwise be able to
#			because their DHCP servers won't let them.
#
#	-DPOWERSAVE
#			Halt the processor when waiting for keyboard input
#			which saves power while waiting for user interaction.
#			Good for compute clusters and VMware emulation.
#			But may not work for all CPUs.
#
# @/OptionDescription@

# These default settings compile Etherboot with a small number of options.
# You may wish to enable more of the features if the size of your ROM allows.


# For prompting and default on timeout
# CFLAGS+=	-DASK_BOOT=3 -DBOOT_FIRST=BOOT_NIC
# If you would like to attempt to boot from other devices as well as the network.
# CFLAGS+=	-DBOOT_SECOND=BOOT_FLOPPY
# CFLAGS+=	-DBOOT_THIRD=BOOT_DISK
# CFLAGS+=	-DBOOT_INDEX=0

# If you prefer the old style rotating bar progress display
# CFLAGS+=	-DBAR_PROGRESS

# Show size indicator
# CFLAGS+=	-DSIZEINDICATOR

# Enabling this creates non-standard images which use ports 1067 and 1068
# for DHCP/BOOTP
# CFLAGS+=	-DALTERNATE_DHCP_PORTS_1067_1068

# Enabling this makes the boot ROM require a Vendor Class Identifier
# of "Etherboot" in the Vendor Encapsulated Options
# This can be used to reject replies from servers other than the one
# we want to give out addresses to us, but it will prevent Etherboot
# from getting an IP lease until you have configured DHCPD correctly
# CFLAGS+=	-DREQUIRE_VCI_ETHERBOOT

# EXPERIMENTAL! Set DHCP_CLIENT_ID to create a Client Identifier (DHCP
# option 61, see RFC2132 section 9.14) when Etherboot sends the DHCP
# DISCOVER and REQUEST packets.  This ID must UNIQUELY identify each
# client on your local network.  Set DHCP_CLIENT_ID_TYPE to the
# appropriate hardware type as described in RFC2132 / RFC1700; this
# almost certainly means using '1' if the Client ID is an Ethernet MAC
# address and '0' otherwise. Set DHCP_CLIENT_ID_LEN to the length of
# the Client ID in octets (this is not a null terminated C string, do
# NOT add 1 for a terminator and do NOT add an extra 1 for the
# hardware type octet).  Note that to identify your client using the
# normal default MAC address of your NIC, you do NOT need to set this
# option, as the MAC address is automatically used in the
# hwtype/chaddr field; note also that this field only sets the DHCP
# option: it does NOT change the MAC address used by the client.

# CFLAGS+=	-DDHCP_CLIENT_ID="'C','L','I','E','N','T','0','0','1'" \
#		-DDHCP_CLIENT_ID_LEN=9 -DDHCP_CLIENT_ID_TYPE=0

# CFLAGS+=	-DDHCP_CLIENT_ID="0xDE,0xAD,0xBE,0xEF,0xDE,0xAD" \
#		-DDHCP_CLIENT_ID_LEN=6 -DDHCP_CLIENT_ID_TYPE=1

# EXPERIMENTAL! Set DHCP_USER_CLASS to create a User Class option (see
# RFC3004) when Etherboot sends the DHCP DISCOVER and REQUEST packets.
# This can be used for classification of clients, typically so that a
# DHCP server can send an appropriately tailored reply.  Normally, a
# string identifies a class of to which this client instance belongs
# which is useful in your network, such as a department ('FINANCE' or
# 'MARKETING') or hardware type ('THINCLIENT' or 'KIOSK').  Set
# DHCP_USER_CLASS_LEN to the length of DHCP_USER_CLASS in octets.
# This is NOT a null terminated C string, do NOT add 1 for a
# terminator.  RFC3004 advises how to lay out multiple User Class
# options by using an octet for the length of each string, as in this
# example.  It is, of course, up to the server to parse this.

# CFLAGS+=	-DDHCP_USER_CLASS="'T','E','S','T','C','L','A','S','S'"	\
#		-DDHCP_USER_CLASS_LEN=9

# CFLAGS+=	-DDHCP_USER_CLASS="5,'A','L','P','H','A',4,'B','E','T','A'" \
#		-DDHCP_USER_CLASS_LEN=11

# Enabling this causes Etherboot to ignore Etherboot-specific options
# that are not within an Etherboot encapsulated options field.
# This option should be enabled unless you have a legacy DHCP server
# configuration from the bad old days before the use of
# encapsulated Etherboot options.
# CFLAGS+=	-DALLOW_ONLY_ENCAPSULATED

# Disable DHCP support
# CFLAGS+=	-DNO_DHCP_SUPPORT

# Specify a default bootfile to be used if the DHCP server does not
# provide the information.  If you do not specify this option, then
# DHCP offers that do not contain bootfiles will be ignored.
# CFLAGS+=	-DDEFAULT_BOOTFILE=\"tftp:///tftpboot/kernel\"

# Limit the delay on packet loss/congestion to a more bearable value. See
# description above.  If unset, do not limit the delay between resend.
# CFLAGS+=	-DBACKOFF_LIMIT=5 -DCONGESTED

# More optional features
# CFLAGS+=	-DTRY_FLOPPY_FIRST=4
# CFLAGS+=	-DEXIT_IF_NO_OFFER


# Multicast Support
# CFLAGS+=	-DALLMULTI -DMULTICAST_LEVEL1 -DMULTICAST_LEVEL2

# Etherboot as a PXE network protocol ROM
# CFLAGS+=	-DPXE_IMAGE -DPXE_EXPORT
# Etherboot stricter as a PXE network protocol ROM
# CFLAGS+=	-DPXE_DHCP_STRICT

# Support for PXE emulation. Works only with FreeBSD to load the kernel
# via pxeboot, use only with DOWNLOAD_PROTO_NFS
# CFLAGS+=	-DFREEBSD_PXEEMU



# Garbage from Makefile.main temporarily placed here until a home can
# be found for it.

# NS8390 options:
#	-DINCLUDE_NE	- Include NE1000/NE2000 support
#	-DNE_SCAN=list	- Probe for NE base address using list of
#			  comma separated hex addresses
#	-DINCLUDE_3C503 - Include 3c503 support
#	  -DT503_SHMEM	- Use 3c503 shared memory mode (off by default)
#	-DINCLUDE_WD	- Include Western Digital/SMC support
#	-DWD_DEFAULT_MEM- Default memory location for WD/SMC cards
#	-DWD_790_PIO    - Read/write to WD/SMC 790 cards in PIO mode (default
#			  is to use shared memory) Try this if you get "Bogus
#			  packet, ignoring" messages, common on ISA/PCI hybrid
#			  systems.
#	-DCOMPEX_RL2000_FIX
#
#	If you have a Compex RL2000 PCI 32-bit (11F6:1401),
#	and the bootrom hangs in "Probing...[NE*000/PCI]",
#	try enabling this fix... it worked for me :).
#	In the first packet write somehow it somehow doesn't
#	get back the expected data so it is stuck in a loop.
#	I didn't bother to investigate what or why because it works
#	when I interrupt the loop if it takes more then COMPEX_RL2000_TRIES.
#	The code will notify if it does a abort.
#	SomniOne - somnione@gmx.net
#
# 3C90X options:
#	Warning Warning Warning
#	If you use any of the XCVR options below, please do not complain about
#	the behaviour with Linux drivers to the kernel developers. You are
#	on your own if you do this. Please read 3c90x.txt to understand
#	what they do. If you don't understand them, ask for help on the
#	Etherboot mailing list. And please document what you did to the NIC
#	on the NIC so that people after you won't get nasty surprises.
#
#	-DCFG_3C90X_PRESERVE_XCVR - Reset the transceiver type to the value it
#			  had initially just before the loaded code is started.
#	-DCFG_3C90X_XCVR - Hardcode the tranceiver type Etherboot uses.
#	-DCFG_3C90X_BOOTROM_FIX - If you have a 3c905B with buggy ROM
#			  interface, setting this option might "fix" it.  Use
#			  with caution and read the docs in 3c90x.txt!
#
#	See the documentation file 3c90x.txt for more details.
#
# CS89X0 (optional) options:
#	-DISA_PROBE_ADDRS=list	
#			  Probe for CS89x0 base address using list of
#			  comma separated hex addresses; increasing the
#			  address by one (0x300 -> 0x301) will force a
#			  more aggressive probing algorithm. This might
#			  be neccessary after a soft-reset of the NIC.


CFLAGS_3c503	= -DINCLUDE_3C503 # -DT503_SHMEM
CFLAGS_ne	= -DINCLUDE_NE -DNE_SCAN=0x300,0x280,0x320,0x340,0x380
CFLAGS_ns8390	= -DINCLUDE_NS8390	# NE2000/PCI!
CFLAGS_wd	= -DINCLUDE_WD -DWD_DEFAULT_MEM=0xCC000

#
# SYSLINUX: Local addition to build PXELINUX combined image
#
EMBEDDED_IMAGE	= ../../pxelinux.0