Filename specification

Depending of its version, Etherboot supports several file transfer protocols.

By default, etherboot will download by tftp, but this can be altered by

  • specifying a full URI, including the protocol prefix
  • change default to NFS at compile time: There is an appropriate option available.

TFTP

TFTP stands for Trivial File Transfer Protocol and has been the standard file transfer protocol for etherboot from the beginning. It is also used by proprietary PXE implementations, and often for firmware updating and similar tasks on network appliances.

On the server side, there are lots of tftp daemons that could be used. Good experience has been reported with the tftpd-hpa daemon for Linux. There are users having a Windows-based server that runs the complimentary tftp daemon, which seems to also work fine. In theory, every TFTP server respecting standards should work, anyway.

If you want to use TFTP, that is already enabled in the standard configuration. You can specify the filename like

filename "/image.nbi";

.

Most TFTP servers will prepend a so-called “tftp root dir” to this path, so this might refer to the file /tftpboot/image.nbi on a Linux host, or e.g. C:\windows\tftproot\image.nbi on a windows machine.

Alternatively, you can use the full syntax like

tftp://192.168.0.201/filename.nbi

If you make use of the optional DNS resolver support in Etherboot, you may even specify a server name instead of the IP address.

Beware: If you want to use the next-server as the DHCP information contains, you must either use the short form (without tftp: prefix), or use three slashes in a row, to mark the fact that no ip address is specified (like tftp:/filename.nbi).

NFS

NFS is a traditional Unix Network file system protocol. It must be specifically compiled in (which is not the case in default config).

With another option, you can make it the default protocol. Only in this case,

filename "/image.nbi";

will refer to NFS downloads. If you do not activate the NFS-as-default option, you will have to use a full URI, like

filename "nfs://192.168.0.201/path/filename.nbi"

On the server side please export the appropriate directory so that the boot clients can access the files. Read-only access is sufficient, of course. If in our example the bootfile resides in the directory /tftpboot/files/, the following line in /etc/exports could do:

/tftpboot/files 192.168.0.0/24(ro)

FIXME NFS accesses occur as “root” user (thus, on most systems, automatically remapped to “nobody”-user). Make sure that permissions allow access to the boot files for this user.

HTTP

HTTP, the hypertext transfer protocol, has been supported by Etherboot for a rather short while. Because of a quite minimalistic TCP implementation performance is not as impressive - which will probably change with the switch to uIP stack.

filename "http://192.168.0.201:80/path/filename.nbi";

gives a complete filename specification. The :80 part may be omitted, defaulting to the HTTP standard port 80. In combination with the DNS resolver option, you can even use host names. In theory you could boot a machine over the internet, there is no strictly technical reason why booting from http://www.ltsp.org/downloads/v4.2/kernel-2.6.14-1.nbi (or similar) should not work. Of course the network bandwith in a local area network tends to be better :-)

Multicast protocols

TFTM

A full URI must always be specified:

filename "x-tftm://192.168.0.201//lts/vmlinuz.ltsp";

Note the double slash behind the IP address. In case you specify a single slash, the filename really requested from the server will NOT begin with a slash. This fact depends on the usage of / as path separator and the fact that TFTM implementations might give requested files without path a special meaning. To go sure, just use the double slash.

By the way, the x- prefix has been selected because there has not been an official protocol acronym delegation like nfs, http and the like: x- means experimental.

SLAM

Also for SLAM, a full URI must be used. See the multicast page for details.

filename "x-slam://192.168.0.201:10000/239.255.1.1:10000";

QR Code
QR Code filename_specification (generated for current page)