summaryrefslogtreecommitdiff
path: root/en/install-methods/install-tftp.xml
blob: 5cd1606d340f88f455f65af462a3ad7a200b16ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
<!-- retain these comments for translator revision tracking -->
<!-- $Id$ -->

 <sect1 condition="supports-tftp" id="install-tftp">
 <title>Preparing Files for TFTP Net Booting</title>
<para>

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.

</para><para>

You need to setup a TFTP server, and for many machines a DHCP 
server<phrase condition="supports-rarp">, or RARP
server</phrase><phrase condition="supports-bootp">, or BOOTP
server</phrase>.

</para><para>

<phrase condition="supports-rarp">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.</phrase>

<phrase condition="supports-bootp">BOOTP is an IP protocol that
informs a computer of its IP address and where on the network to obtain
a boot image.</phrase>

<phrase arch="m68k">Yet another alternative exists on VMEbus
systems: the IP address can be manually configured in boot ROM.</phrase>

The DHCP (Dynamic Host Configuration Protocol) is a more flexible,
backwards-compatible extension of BOOTP.
Some systems can only be configured via DHCP.

</para><para arch="powerpc">

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.

</para><para arch="alpha">

Unlike the Open Firmware found on Sparc and PowerPC machines, the SRM
console will <emphasis>not</emphasis> use RARP to obtain its IP
address, and therefore you must use BOOTP for net booting your
Alpha<footnote>

<para>
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.
</para>

</footnote>. You can also enter the IP configuration for network
interfaces directly in the SRM console.

</para><para arch="hppa">

Some older HPPA machines (e.g. 715/75) use RBOOTD rather than BOOTP.
There is an <classname>rbootd</classname> package available in Debian.

</para><para>

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.

<note arch="x86"><para>

To use the Pre-boot Execution Environment (PXE) method of TFTP
booting, you will need a TFTP server with <userinput>tsize</userinput>
support.  On a &debian; server, the <classname>atftpd</classname> and
<classname>tftpd-hpa</classname> packages qualify; we recommend
<classname>tftpd-hpa</classname>.

</para></note>

</para>

&tftp-rarp.xml;
&tftp-bootp.xml;
&tftp-dhcp.xml;

  <sect2 id="tftpd">
  <title>Enabling the TFTP Server</title>
<para>

To get the TFTP server ready to go, you should first make sure that
<command>tftpd</command> is enabled.  This is usually enabled by having
something like the following line in <filename>/etc/inetd.conf</filename>:

<informalexample><screen>
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot
</screen></informalexample>

Debian packages will in general set this up correctly by default when they
are installed.

</para>
<note><para>

Historically TFTP servers used <filename>/tftpboot</filename> as directory
to serve images from. However, &debian; packages may use other directories
to comply with the <ulink url="&url-fhs-home;">Filesystem Hierarchy
Standard</ulink>. For example, <classname>tftpd-hpa</classname> by default
uses <filename>/var/lib/tftpboot</filename>. You may have to adjust the
configuration examples in this section accordingly.

</para></note>
<para>

Look in <filename>/etc/inetd.conf</filename> and remember the directory which
is used as the argument of <command>in.tftpd</command><footnote>

<para>
The <userinput>-l</userinput> argument enables some versions of
<command>in.tftpd</command> to log all requests to the system logs;
this is useful for diagnosing boot errors.
</para>

</footnote>; you'll need that below.
If you've had to change <filename>/etc/inetd.conf</filename>, you'll have to
notify the running <command>inetd</command> process that the file has changed.
On a Debian machine, run <userinput>/etc/init.d/inetd reload</userinput>; on
other machines, find out the process ID for <command>inetd</command>, and run
<userinput>kill -HUP <replaceable>inetd-pid</replaceable></userinput>.

</para><para arch="mips">

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:

<informalexample><screen>
# echo 1 &gt; /proc/sys/net/ipv4/ip_no_pmtu_disc
</screen></informalexample>

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

<informalexample><screen>
# echo "2048 32767" &gt; /proc/sys/net/ipv4/ip_local_port_range
</screen></informalexample>

to adjust the range of source ports the Linux TFTP server uses.

</para>
  </sect2>

  <sect2 id="tftp-images">
  <title>Move TFTP Images Into Place</title>
<para>

Next, place the TFTP boot image you need, as found in
<xref linkend="where-files"/>, in the <command>tftpd</command>
boot image directory.  You may have to make a link from that
file to the file which <command>tftpd</command> will use for booting a
particular client.  Unfortunately, the file name is determined by the
TFTP client, and there are no strong standards.

</para><para arch="powerpc">

On NewWorld Power Macintosh machines, you will need to set up the
<command>yaboot</command> boot loader as the TFTP boot image.
<command>Yaboot</command> will then retrieve the kernel and RAMdisk
images via TFTP itself.  For net booting, use the
<filename>yaboot-netboot.conf</filename>.  Just rename this to
<filename>yaboot.conf</filename> in the TFTP directory.

</para><para arch="x86">

For PXE booting, everything you should need is set up in the
<filename>netboot/netboot.tar.gz</filename> tarball. Simply extract this
tarball into the <command>tftpd</command> boot image directory. Make sure
your dhcp server is configured to pass <filename>pxelinux.0</filename>
to <command>tftpd</command> as the filename to boot.

</para><para arch="ia64">

For PXE booting, everything you should need is set up in the
<filename>netboot/netboot.tar.gz</filename> tarball. Simply extract this
tarball into the <command>tftpd</command> boot image directory. Make sure
your dhcp server is configured to pass
<filename>/debian-installer/ia64/elilo.efi</filename>
to <command>tftpd</command> as the filename to boot.

</para>

   <sect3 arch="mipsel">
   <title>DECstation TFTP Images</title>
<para>

For DECstations, there are tftpimage files for each subarchitecture,
which contain both kernel and installer in one file. The naming
convention is
<filename><replaceable>subarchitecture</replaceable>/netboot-boot.img</filename>.
Copy the tftpimage file you would like to use to
<userinput>/tftpboot/tftpboot.img</userinput> if you work with the
example BOOTP/DHCP setups described above.

</para><para>

The DECstation firmware boots by TFTP with the command <userinput>boot
<replaceable>#</replaceable>/tftp</userinput>, where
<replaceable>#</replaceable> is the number of the TurboChannel device
from which to boot. On most DECstations this is <quote>3</quote>.  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:

</para><para>

<userinput>boot #/tftp/filename param1=value1 param2=value2 ...</userinput>

</para><para>

Several DECstation firmware revisions show a problem with regard to
net booting: the transfer starts, but after some time it stops with
an <computeroutput>a.out err</computeroutput>. This can have several reasons:

<orderedlist>
<listitem><para>

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 <userinput>arp -s
<replaceable>IP-address</replaceable>
<replaceable>MAC-address</replaceable></userinput> as root on the
machine acting as TFTP server. The MAC-address of the DECstation can
be read out by entering <command>cnfg</command> at the DECstation
firmware prompt.

</para></listitem>
<listitem><para>

The firmware has a size limit on the files that can be booted
by TFTP.

</para></listitem>
</orderedlist>

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:
<ulink url="http://www.netbsd.org/Ports/pmax/board-list.html#proms"></ulink>.

</para>
   </sect3>

   <sect3 arch="alpha">
   <title>Alpha TFTP Booting</title>
<para>
On Alpha, you must specify the filename (as a relative path to the
boot image directory) using the <userinput>-file</userinput> argument
to the SRM <userinput>boot</userinput> command, or by setting the
<userinput>BOOT_FILE</userinput> environment variable.  Alternatively,
the filename can be given via BOOTP (in ISC <command>dhcpd</command>,
use the <userinput>filename</userinput> directive).  Unlike Open
Firmware, there is <emphasis>no default filename</emphasis> on SRM, so
you <emphasis>must</emphasis> specify a filename by either one of
these methods.

</para>
   </sect3>

   <sect3 arch="sparc">
   <title>SPARC TFTP Booting</title>
<para>

Some SPARC architectures add the subarchitecture names, such as
<quote>SUN4M</quote> or <quote>SUN4C</quote>, to the filename. Thus,
if your system's subarchitecture is a SUN4C, and its IP is 192.168.1.3,
the filename would be <filename>C0A80103.SUN4C</filename>. However,
there are also subarchitectures where the file the client looks for is
just <filename>client-ip-in-hex</filename>. 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).

<informalexample><screen>
$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4
</screen></informalexample>

To get to the correct filename, you will need to change all letters to
uppercase and if necessary append the subarchitecture name.

</para><para>

If you've done all this correctly, giving the command <userinput>boot
net</userinput> 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.

</para><para>

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
<userinput>boot net my-sparc.image</userinput>. This must still reside
in the directory that the TFTP server looks in.

</para>
   </sect3>

   <sect3 arch="m68k">
   <title>BVM/Motorola TFTP Booting</title>
<para>

For BVM and Motorola VMEbus systems copy the files
&bvme6000-tftp-files; to <filename>/tftpboot/</filename>.

</para><para>

Next, configure your boot ROMs or BOOTP server to initially load the
<filename>tftplilo.bvme</filename> or
<filename>tftplilo.mvme</filename> files from the TFTP server.  Refer
to the <filename>tftplilo.txt</filename> file for your subarchitecture
for additional system-specific configuration information.

</para>
   </sect3>

   <sect3 arch="mips">
   <title>SGI TFTP Booting</title>
<para>

On SGI machines you can rely on the <command>bootpd</command> to supply
the name of the TFTP file. It is given either as the
<userinput>bf=</userinput> in <filename>/etc/bootptab</filename> or as
the <userinput>filename=</userinput> option in
<filename>/etc/dhcpd.conf</filename>.

</para>
   </sect3>

   <sect3 arch="mips">
   <title>Broadcom BCM91250A and BCM91480B TFTP Booting</title>
<para>

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.

</para>
   </sect3>

  </sect2>

<!-- FIXME: commented out since it seems too old to be usable and a current
            way is not known

  <sect2 id="tftp-low-memory">
  <title>TFTP Installation for Low-Memory Systems</title>
<para>

On some systems, the standard installation RAMdisk, combined with the
memory requirements of the TFTP boot image, cannot fit in memory.  In
this case, you can still install using TFTP, you'll just have to go
through the additional step of NFS mounting your root directory over
the network as well.  This type of setup is also appropriate for
diskless or dataless clients.

</para><para>

First, follow all the steps above in <xref linkend="install-tftp"/>.

<orderedlist>
<listitem><para>

Copy the Linux kernel image on your TFTP server using the
<userinput>a.out</userinput> image for the architecture you are
booting.

</para></listitem>
<listitem><para>

Untar the root archive on your NFS server (can be the same system as
your TFTP server):

<informalexample><screen>
# cd /tftpboot
# tar xvzf root.tar.gz
</screen></informalexample>

Be sure to use the GNU <command>tar</command> (other tar programs, like the
SunOS one, badly handle devices as plain files).

</para></listitem>
<listitem><para>

Export your <filename>/tftpboot/debian-sparc-root</filename> directory
with root access to your client.  E.g., add the following line to
<filename>/etc/exports</filename> (GNU/Linux syntax, should be similar
for SunOS):

<informalexample><screen>
/tftpboot/debian-sparc-root <replaceable>client</replaceable>(rw,no_root_squash)
</screen></informalexample>

NOTE: <replaceable>client</replaceable> is the host name or IP address recognized
by the server for the system you are booting.

</para></listitem>
<listitem><para>

Create a symbolic link from your client IP address in dotted notation
to <filename>debian-sparc-root</filename> in the
<filename>/tftpboot</filename> directory.  For example, if the client
IP address is 192.168.1.3, do

<informalexample><screen>
# ln -s debian-sparc-root 192.168.1.3
</screen></informalexample>

</para></listitem>
</orderedlist>

</para>

  </sect2>

  <sect2 condition="supports-nfsroot">
  <title>Installing with TFTP and NFS Root</title>
<para>

Installing with TFTP and NFS Root is similar to
<xref linkend="tftp-low-memory"/> because you don't want to
load the RAMdisk anymore but boot from the newly created NFS-root file
system.  You then need to replace the symlink to the tftpboot image by
a symlink to the kernel image (for example,
<filename>linux-a.out</filename>).

</para><para>

RARP/TFTP requires all daemons to be running on the same server (the
workstation is sending a TFTP request back to the server that replied
to its previous RARP request).

</para>


  </sect2>
END FIXME -->
 </sect1>