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 set up 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. 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. 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-dhcp.xml; &tftp-bootp.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 All in.tftpd alternatives available in Debian should log TFTP requests to the system logs by default. Some of them support a -v argument to increase verbosity. It is recommended to check these log messages in case of boot problems as they are a good starting point for diagnosing the cause of 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. You will need to download the following files from the netboot/ directory: vmlinux initrd.gz yaboot yaboot.conf boot.msg 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. 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. 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.