Preparing Files for TFTP Net Booting
If your machine is connected to a local area network, you may be able
to boot it over the network from another machine, using TFTP. If you
intend to boot the installation system from another machine, the
boot files will need to be placed in specific locations on that machine,
and the machine configured to support booting of your specific machine.
You need to setup a TFTP server, and for many machines a DHCP
server, or RARP
server, or BOOTP
server.
The Reverse Address Resolution Protocol (RARP) is
one way to tell your client what IP address to use for itself. Another
way is to use the BOOTP protocol.
BOOTP is an IP protocol that
informs a computer of its IP address and where on the network to obtain
a boot image.
Yet another alternative exists on VMEbus
systems: the IP address can be manually configured in boot ROM.
The DHCP (Dynamic Host Configuration Protocol) is a more flexible,
backwards-compatible extension of BOOTP.
Some systems can only be configured via DHCP.
For PowerPC, if you have a NewWorld Power Macintosh machine, it is a
good idea to use DHCP instead of BOOTP. Some of the latest machines
are unable to boot using BOOTP.
Unlike the Open Firmware found on Sparc and PowerPC machines, the SRM
console will not use RARP to obtain its IP
address, and therefore you must use BOOTP for net booting your
Alpha
Alpha systems can also be net-booted using the DECNet MOP (Maintenance
Operations Protocol), but this is not covered here. Presumably, your
local OpenVMS operator will be happy to assist you should you have
some burning need to use MOP to boot Linux on your Alpha.
. You can also enter the IP configuration for network
interfaces directly in the SRM console.
Some older HPPA machines (e.g. 715/75) use RBOOTD rather than BOOTP.
There is an rbootd package available in Debian.
The Trivial File Transfer Protocol (TFTP) is used to serve the boot
image to the client. Theoretically, any server, on any platform,
which implements these protocols, may be used. In the examples in
this section, we shall provide commands for SunOS 4.x, SunOS 5.x
(a.k.a. Solaris), and GNU/Linux.
To use the Pre-boot Execution Environment (PXE) method of TFTP
booting, you will need a TFTP server with tsize
support. On a &debian; server, the atftpd and
tftpd-hpa packages qualify; we recommend
tftpd-hpa.
&tftp-rarp.xml;
&tftp-bootp.xml;
&tftp-dhcp.xml;
Enabling the TFTP Server
To get the TFTP server ready to go, you should first make sure that
tftpd is enabled. This is usually enabled by having
something like the following line in /etc/inetd.conf:
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot
Debian packages will in general set this up correctly by default when they
are installed.
Historically, TFTP servers used /tftpboot as directory
to serve images from. However, &debian; packages may use other directories
to comply with the Filesystem Hierarchy
Standard. For example, tftpd-hpa by default
uses /var/lib/tftpboot. You may have to adjust the
configuration examples in this section accordingly.
Look in /etc/inetd.conf and remember the directory which
is used as the argument of in.tftpd
The -l argument enables some versions of
in.tftpd to log all requests to the system logs;
this is useful for diagnosing boot errors.
; you'll need that below.
If you've had to change /etc/inetd.conf, you'll have to
notify the running inetd process that the file has changed.
On a Debian machine, run /etc/init.d/inetd reload; on
other machines, find out the process ID for inetd, and run
kill -HUP inetd-pid.
If you intend to install Debian on an SGI machine and your TFTP server is a
GNU/Linux box running Linux 2.4, you'll need to set the following on your
server:
# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
to turn off Path MTU discovery, otherwise the SGI's PROM can't
download the kernel. Furthermore, make sure TFTP packets are sent from
a source port no greater than 32767, or the download will stall after
the first packet. Again, it's Linux 2.4.X tripping this bug in the
PROM, and you can avoid it by setting
# echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range
to adjust the range of source ports the Linux TFTP server uses.
Move TFTP Images Into Place
Next, place the TFTP boot image you need, as found in
, in the tftpd
boot image directory. You may have to make a link from that
file to the file which tftpd will use for booting a
particular client. Unfortunately, the file name is determined by the
TFTP client, and there are no strong standards.
On NewWorld Power Macintosh machines, you will need to set up the
yaboot boot loader as the TFTP boot image.
Yaboot will then retrieve the kernel and RAMdisk
images via TFTP itself. For net booting, use the
yaboot-netboot.conf. Just rename this to
yaboot.conf in the TFTP directory.
For PXE booting, everything you should need is set up in the
netboot/netboot.tar.gz tarball. Simply extract this
tarball into the tftpd boot image directory. Make sure
your dhcp server is configured to pass pxelinux.0
to tftpd as the filename to boot.
For PXE booting, everything you should need is set up in the
netboot/netboot.tar.gz tarball. Simply extract this
tarball into the tftpd boot image directory. Make sure
your dhcp server is configured to pass
/debian-installer/ia64/elilo.efi
to tftpd as the filename to boot.
DECstation TFTP Images
For DECstations, there are tftpimage files for each subarchitecture,
which contain both kernel and installer in one file. The naming
convention is
subarchitecture/netboot-boot.img.
Copy the tftpimage file you would like to use to
/tftpboot/tftpboot.img if you work with the
example BOOTP/DHCP setups described above.
The DECstation firmware boots by TFTP with the command boot
#/tftp, where
# is the number of the TurboChannel device
from which to boot. On most DECstations this is 3
. If the
BOOTP/DHCP server does not supply the filename or you need to pass
additional parameters, they can optionally be appended with the
following syntax:
boot #/tftp/filename param1=value1 param2=value2 ...
Several DECstation firmware revisions show a problem with regard to
net booting: the transfer starts, but after some time it stops with
an a.out err. This can have several reasons:
The firmware does not respond to ARP requests during a TFTP
transfer. This leads to an ARP timeout and the transfer stops. The
solution is to add the MAC address of the Ethernet card in the
DECstation statically to the ARP table of the TFTP server. This is
done by running arp -s
IP-address
MAC-address as root on the
machine acting as TFTP server. The MAC-address of the DECstation can
be read out by entering cnfg at the DECstation
firmware prompt.
The firmware has a size limit on the files that can be booted
by TFTP.
There are also firmware revisions that cannot boot via TFTP at all. An
overview about the different firmware revisions can be found at the
NetBSD web pages:
.
Alpha TFTP Booting
On Alpha, you must specify the filename (as a relative path to the
boot image directory) using the -file argument
to the SRM boot command, or by setting the
BOOT_FILE environment variable. Alternatively,
the filename can be given via BOOTP (in ISC dhcpd,
use the filename directive). Unlike Open
Firmware, there is no default filename on SRM, so
you must specify a filename by either one of
these methods.
SPARC TFTP Booting
Some SPARC architectures add the subarchitecture names, such as
SUN4M
or SUN4C
, to the filename. Thus,
if your system's subarchitecture is a SUN4C, and its IP is 192.168.1.3,
the filename would be C0A80103.SUN4C. However,
there are also subarchitectures where the file the client looks for is
just client-ip-in-hex. An easy way to determine the
hexadecimal code for the IP address is to enter the following command
in a shell (assuming the machine's intended IP is 10.0.0.4).
$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4
To get to the correct filename, you will need to change all letters to
uppercase and if necessary append the subarchitecture name.
If you've done all this correctly, giving the command boot
net from the OpenPROM should load the image. If the image
cannot be found, try checking the logs on your tftp server to see which
image name is being requested.
You can also force some sparc systems to look for a specific file name
by adding it to the end of the OpenPROM boot command, such as
boot net my-sparc.image. This must still reside
in the directory that the TFTP server looks in.
BVM/Motorola TFTP Booting
For BVM and Motorola VMEbus systems copy the files
&bvme6000-tftp-files; to /tftpboot/.
Next, configure your boot ROMs or BOOTP server to initially load the
tftplilo.bvme or
tftplilo.mvme files from the TFTP server. Refer
to the tftplilo.txt file for your subarchitecture
for additional system-specific configuration information.
SGI TFTP Booting
On SGI machines you can rely on the bootpd to supply
the name of the TFTP file. It is given either as the
bf= in /etc/bootptab or as
the filename= option in
/etc/dhcpd.conf.
Broadcom BCM91250A and BCM91480B TFTP Booting
You don't have to configure DHCP in a special way because you'll pass the
full path of the file to be loaded to CFE.