HOST {
...
};
Within the HOST blocks there can be
ethernet, execute, framesize, blocksize, nospew, and pacing directives
and FILE blocks.
FILE blocks are of the form:
FILE {
...
};
Within FILE blocks there can be path, offset, length, load and linux directives.
Directives are of the form
foo = something;
or
bar;
and are detailed below. Comments are allowed in the configuration file and
can either be in C-form (i.e. starting with /* and ending with */) or C++ form
(starting with // and ending at the line break).
DIRECTIVES
Directives are of the form
foo = something;
or
bar;
If something is a string it should be entered between quotes. Numbers are
assumed to be decimal unless preceded by 0x in which case they are interpreted
in hexadecimal. MAC addresses should be given as 6 octets in hexadecimal without
the leading 0x. The octets should be separated by colons.
number = 131;
hexnumber = 0x7382;
macaddr = 08:00:02:43:21:22;
string = "fish soup";
blocksize = 528;
ethernet = 00:60:6e:33:4f:2c;
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:
ethernet = 00:50:32:33:00:00/4;
Will match anything of the form 00:50:32:33:xx:xx. It is expected that this
support will be changed from bytes to bits in a future release.
execute = 0x92000;
It is not clear whether or not the client's Ethernet adapter is or should be shut down
prior to the transfer of control. This may cause problems on systems where the
Ethernet adapter in the client can do DMA directly into host memory. As the adapter may
continue writing to the buffers that the boot ROM set up, it may be necessary
to download a small program to reset the Ethernet adapter. See code under the
nics/
directory in the source distribution for examples.
framesize = 576;
length = 4096;
would send 4096 octets from the file.
linux;
rpld(1)
may have problems with bzImage kernels.
FILE {
path = "/rplboot/fish";
offset = 512;
length = 4096;
load = 0x90200;
};
would load 4096 octets from the file
/rplboot/fish
starting 512 octets into the file into the
client's memory starting
at address 0x90200. (so the 513th byte of the file will load to address 0x90200)
offset = 512;
path = "/rplboot/fish";
The server downloads the FILE blocks in the inverse order to that in which they were specified. Boot ROMs typically prefer the blocks to arrive in decreasing load address, so you should specify them in increasing load address. The server recalculates the length of all the files specified on reception of a SEND.FILE.REQUEST frame. If the file changes size during downloading the server will attempt to read to the original length of the file. If it encounters an end of file condition empty FILE DATA FRAMES will be sent. For Linux kernel images the first sector of the kernel image will only be read from disk when rpld is started. The first sector contains information such as the default root device and the length of secondary boot loader. You should therefore restart rpld if you change the version of the kernel you are downloading. The order of directives is important: the execute directive, if present, should always come after the linux directive.
A complete example file using every directive:
// Sample rpld.conf file
/* (c) 1999 James McKenzie and
* Christopher Lightfoot
* All rights reserved.
*/
HOST {
ethernet=08:00:02:32:1e:fc;
FILE {
path="/rplboot/vmlinuz";
linux;
};
FILE {
path="/rplboot/vesarom.img";
offset=0x200;
length=0x400;
load=0x92000;
};
execute=0x92000;
pacing=2000;
};
(c) 1999,2000 James McKenzie, and Christopher Lightfoot. All rights reserved.