Table of Contents
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)
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
Please see also the Multicast information page
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";