1RPLD.CONF(5)                BSD File Formats Manual               RPLD.CONF(5)
2

NAME

4     rpld.conf — rpld configuration file
5

DESCRIPTION

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

DIRECTIVES

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

NOTES

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

Example

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

FILES

217     /etc/rpld.conf  The rpld(1) configuration file.
218

SEE ALSO

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
Impressum