1RPLD.CONF(5) BSD File Formats Manual RPLD.CONF(5)
2
4 rpld.conf — rpld configuration file
5
7 The rpld.conf file is the configuration file for the rpld(1) program. It
8 consists of a number of HOST blocks of the form:
9
10 HOST {
11 ...
12 };
13
14 Within the HOST blocks there can be ethernet, execute, framesize, block‐
15 size, nospew, and pacing directives and FILE blocks. FILE blocks are of
16 the form:
17
18 FILE {
19 ...
20 };
21
22 Within FILE blocks there can be path, offset, length, load and linux
23 directives. Directives are of the form
24
25 foo = something;
26 or
27
28 bar;
29
30 and are detailed below. Comments are allowed in the configuration file and
31 can either be in C-form (i.e. starting with /* and ending with */) or C++ form
32 (starting with // and ending at the line break).
33
35 Directives are of the form
36
37 foo = something;
38 or
39
40 bar;
41
42 If something is a string it should be entered between quotes. Numbers are
43 assumed to be decimal unless preceded by 0x in which case they are interpreted
44 in hexadecimal. MAC addresses should be given as 6 octets in hexadecimal without
45 the leading 0x. The octets should be separated by colons.
46
47 number = 131;
48 hexnumber = 0x7382;
49 macaddr = 08:00:02:43:21:22;
50 string = "fish soup";
51
52 blocksize
53 This directive sets the maximum size in octets of data that is transmitted in
54 each
55 FILE.DATA.RESPONSE frame that the server sends. The block size should
56 be at least 48 octets smaller than the frame size. After the client negotiates
57 a frame size the block size is checked and if it is no longer 48 octets smaller
58 than frame size it is adjusted accordingly. Some buggy boot ROMs will fail
59 if block size is not a multiple of four, accordingly you should be aware of the
60 situation that could arise if the client was to negotiate the block size down
61 to something that wasn't a multiple of four.
62
63 blocksize = 528;
64
65 ethernet
66 This directive sets the MAC address of the client referenced
67 in this HOST block. It should either be formatted as six octets separated by colons. e.g..
68
69 ethernet = 00:60:6e:33:4f:2c;
70
71 or it can be specified as a range of mac addresses as six octets separated by colons followed by a solidus and the number of bytes to match. So:
72
73 ethernet = 00:50:32:33:00:00/4;
74
75 Will match anything of the form 00:50:32:33:xx:xx. It is expected that this
76 support will be changed from bytes to bits in a future release.
77
78 execute
79 This directive sets the execute address that control is transferred to when
80 downloading has finished. It should be a number in either decimal or hexadecimal.
81
82 execute = 0x92000;
83
84 It is not clear whether or not the client's Ethernet adapter is or should be shut down
85 prior to the transfer of control. This may cause problems on systems where the
86 Ethernet adapter in the client can do DMA directly into host memory. As the adapter may
87 continue writing to the buffers that the boot ROM set up, it may be necessary
88 to download a small program to reset the Ethernet adapter. See code under the
89 nics/
90 directory in the source distribution for examples.
91 framesize
92 This directive sets the maximum size of the frames that the server uses to
93 communicate with the client. The actual frame size used is negotiated between
94 the client and the server, the server will force the client to use this value
95 if it requests a larger one. The maximum frame size that Ethernet can support is
96 1500, and this is the default value.
97
98 framesize = 576;
99
100 length
101 This directive sets the number of octets transmitted to the client for this
102 FILE block. If this directive is not specified the server transmits data
103 until an end of file condition occurs.
104
105 length = 4096;
106
107 would send 4096 octets from the file.
108 linux
109 This directive takes no argument. It indicates to
110 rpld(1)
111 that the file specified in the path directive is a Linux kernel image.
112 rpld(1)
113 then analyses the kernel image and generates three FILE blocks corresponding
114 to the primary boot loader, secondary boot loader, and data portions of the image.
115 It then sets a default execute address which points to the secondary boot loader
116 which is loaded at 0x90200. The execute address may be over-ridden with an execute
117 directive which appears AFTER the FILE block.
118
119 linux;
120
121 rpld(1)
122 may have problems with bzImage kernels.
123 load
124 This directive sets the load address for this FILE block. Data is read from
125 offset
126 octets into the file at copied to the client starting at the address
127 specified by the load directive. The FILE block
128
129 FILE {
130 path = "/rplboot/fish";
131 offset = 512;
132 length = 4096;
133 load = 0x90200;
134 };
135
136 would load 4096 octets from the file
137 /rplboot/fish
138 starting 512 octets into the file into the
139 client's memory starting
140 at address 0x90200. (so the 513th byte of the file will load to address 0x90200)
141 nospew
142 This directive causes rpld to emit only one FILE.DATA.RESPONSE frame for SEND.FILE.REQUEST frame received. The usual behaviour is the client sends one FILE.DATA.RESPONSE frame which causes the server to transmit all the FILE.DATA.RESPONSE frames
143 in order (see
144 pacing
145 ) Some RPL boot proms have made this sensible modification to the protocol.
146 NB
147 if you
148 specify this directive when it is not required, most roms will send another
149 SEND.FILE.REQUEST frame after a timeout of about one second. Some roms will only
150 make twenty or so retransmits before aborting the boot.
151 offset
152 This directive sets the offset for this FILE block. Data is read from
153 offset
154 octets into the file at copied to the client starting at the address
155 specified by the load directive.
156
157 offset = 512;
158
159 pacing
160 This directive sets the minimum time gap in us between sequential frames when
161 the
162 nospew
163 option is NOT set. 1000 (or 1 ms) is a reasonable choice and the default.
164 Increase this if the client has to issue retransmits.
165 path
166 This directive sets the path to the file that is to be downloaded. The file
167 must exist, and is examined at startup and on reception of SEND.FILE.REQUEST
168 frames.
169
170 path = "/rplboot/fish";
171
172
174 The server downloads the FILE blocks in the inverse order to that in
175 which they were specified. Boot ROMs typically prefer the blocks to
176 arrive in decreasing load address, so you should specify them in increas‐
177 ing load address. The server recalculates the length of all the files
178 specified on reception of a SEND.FILE.REQUEST frame. If the file changes
179 size during downloading the server will attempt to read to the original
180 length of the file. If it encounters an end of file condition empty FILE
181 DATA FRAMES will be sent. For Linux kernel images the first sector of the
182 kernel image will only be read from disk when rpld is started. The first
183 sector contains information such as the default root device and the
184 length of secondary boot loader. You should therefore restart rpld if
185 you change the version of the kernel you are downloading. The order of
186 directives is important: the execute directive, if present, should always
187 come after the linux directive.
188
189
191 A complete example file using every directive:
192
193 // Sample rpld.conf file
194 /* (c) 1999 James McKenzie and
195 * Christopher Lightfoot
196 * All rights reserved.
197 */
198
199 HOST {
200 ethernet=08:00:02:32:1e:fc;
201 FILE {
202 path="/rplboot/vmlinuz";
203 linux;
204 };
205 FILE {
206 path="/rplboot/vesarom.img";
207 offset=0x200;
208 length=0x400;
209 load=0x92000;
210 };
211 execute=0x92000;
212 pacing=2000;
213 };
214
215
217 /etc/rpld.conf The rpld(1) configuration file.
218
220 rpld(1), bootpd(1), dhcpd(1), http://gimel.esc.cam.ac.uk/james/rpld;
221
223 (c) 1999,2000 James McKenzie, and Christopher Lightfoot. All rights
224 reserved.
225
226Linux Jun 16, 2000 Linux