Expand PMF_FN_* macros.
[netbsd-mini2440.git] / distrib / notes / common / netboot
blob5580d71e80862f96312dc774fd8bea8fa028c7e4
1 .\"     $NetBSD: netboot,v 1.33 2008/04/30 13:10:48 martin Exp $
2 .\"
3 .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc.
4 .\" All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\"
15 .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 .\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 .\" POSSIBILITY OF SUCH DAMAGE.
26 .\"
28 .(enum
29 Introduction
30 .Pp
31 To netboot a \*M, you must configure one or more servers to provide
32 information and files to your \*M (the
33 .Sq client ) .
34 If you are using
35 .Nx
36 (any architecture) on your netboot server(s), the information
37 provided here should be sufficient to configure everything.
38 Additionally, you may wish to look at the
39 .Xr diskless 8
40 manual page and the manual pages for each daemon you'll be configuring.
41 If the server(s) are another operating system, you should consult the
42 NetBSD Diskless HOW-TO, which will walk you through the steps necessary to
43 configure the netboot services on a variety of platforms.
44 .Lk http://www.NetBSD.org/docs/network/netboot/
45 .if !\n[hp700]:\n[next68k] \{\
46 .Pp
47 You may either netboot the installer so you can install onto a locally
48 attached disk, or you may run your system entirely over the network.
49 .\}
50 .Pp
51 .ie \n[evbppc] \{\
52 Briefly, the netboot
53 process involves discovery, kernel and file system stages.
54 In the first stage, the client discovers information
55 about where to find the kernel image.
56 Once the kernel is loaded, it starts executing.
57 .\}
58 .el \{\
59 Briefly, the netboot
60 process involves discovery, bootstrap, kernel and file system stages.
61 In the first stage, the client discovers information
62 about where to find the bootstrap program.
63 Next, it downloads and executes the bootstrap program.
64 .ie \n[hp700] \{\
65 The server contains one large file (a LIF file system) with the bootloader
66 and the kernel.  The bootstrap program simply loads the kernel from the
67 LIF image.
68 .\}
69 .el \{\
70 The bootstrap program goes through another discovery phase to determine
71 where the kernel is located.
72 The bootstrap program tries to mount the NFS share containing the kernel.
73 .\}
74 Once the kernel is loaded, it starts executing.
75 .\}
76 .ie !\n[hp700]:\n[next68k] \{\
77 For RAM disk kernels, it mounts the RAM disk file system and begins
78 executing the installer from the RAM disk.
79 For normal (non-RAM disk) kernels, the
80 .\}
81 .el The
82 kernel tries to mount the NFS share that had the kernel and starts
83 executing
84 .if !\n[hp700]:\n[next68k] the installation tools or
85 .Xr init 8 .
86 .if \n[hp300] \{\
87 All supported \*M systems use HP's proprietary RMP (the
88 .Xr rbootd 8
89 daemon) for the first discovery stage and bootstrap download stages.
90 The bootstrap program uses DHCP for its discovery stage.
91 .\}
92 .if \n[hp700] \{\
93 Early \*M systems use HP's proprietary RMP (the
94 .Xr rbootd 8
95 daemon) for the discovery stage, bootstrap download, and kernel download 
96 stages.  Later \*M systems use  BOOTP for the discovery stage and TFTP for
97 the bootstrap and kernel download.
98 .\}
99 .if \n[evbppc]:\n[macppc]:\n[next68k] \{\
100 All \*M systems use BOOTP for the discovery stage.
102 .if \n[sparc] \{\
103 All \*M systems except JavaStations with OpenFirmware PROM
104 use a combination of RARP and BOOTP for the discovery stage.
105 In the past, these systems used RARP and BOOTPARAMS. JavaStations
106 booting from OpenFirmware use DHCP.
108 .if \n[sparc64] \{\
109 All \*M systems use a combination of RARP and DHCP for the discovery stage.
111 .if !\n[hp300]:\n[hp700] \{\
112 TFTP is used in the bootstrap phase to download
113 .if \n[macppc] \{\
114 the bootstrap program,
115 .Pa ofwboot.xcf .
117 .if \n[next68k] \{\
118 the bootstrap program,
119 .Pa boot .
121 .if \n[sparc] \{\
122 the bootstrap program,
123 .Pa boot.net ,
124 which has been linked to a file name appropriate to the client's
125 architecture and IP address as described in the TFTP section below.
126 JavaStations with OpenFirmware need a special bootstrap program,
127 .Pa bootjs.net ,
128 which is a version of boot.net in ELF format.
129 It is not linked to the IP address.
131 .if \n[sparc64] \{\
132 the bootstrap program,
133 .Pa ofwboot.net ,
134 which has been linked to a file name appropriate to the client's
135 IP address as described in the TFTP section below.
137 .if \n[evbppc] \{\
138 the kernel via the on-board Ethernet card by the firmware.
139 Thus,
141 support for the on-board card is not needed in this step.
142 For NFS mounting a file system on the other hand,
144 support for the Ethernet card is needed, and the on-board one
145 will not suffice; you have to provide a second Ethernet card
146 supported by
147 .Nx "" .
149 .\} \" ! !\n[hp300]:\n[hp700]
150 .if !\n[evbppc]:\n[hp700] \{\
151 NFS is used in both the kernel and file system stages to download the
152 kernel, and to access files on the file server.
153 .\} \" !\n[evbppc]
155 We will use
156 .Sq Li "CC:CC:CC:CC:CC:CC"
157 as the MAC address (ethernet hardware address) of your netboot client
158 machine.
159 You should have determined this address in an earlier stage.
160 In this example, we will use
161 .Sq Li 192.168.1.10
162 as the IP address of your client and
163 .Sq Li client.test.net
164 as its name.
165 We will assume you're providing all of your netboot services
166 on one machine called
167 .Sq Li server.test.net
168 with the client's files exported from the directory
169 .Pa /export/client/root .
170 You should, of course, replace all of these with the names, addresses,
171 and paths appropriate to your environment.
173 You should set up each netboot stage in order (i.e., discovery,
174 bootstrap, kernel, and then file system) so that you can test them as you
175 proceed.
176 .if \n[hp700] \{\
178 If your system uses RMP to netboot, you must set up
179 .Xr rbootd 8
180 but can skip
181 .Xr dhcpd 8
183 .Xr tftpd 8 .
184 If your system uses BOOTP to netboot, then you must set up
185 .Xr dhcpd 8
187 .Xr tftpd 8
188 but can skip
189 .Xr rbootd 8 .
193 .if \n[hp300]:\n[hp700] \{\
194 .Xr rbootd 8
197 .if \n[hp300] .Pa SYS_UBOOT
198 .if \n[hp700] .Pa SYSNBSD
199 from the
200 .if \n[hp300] .Pa installation/misc
201 .if \n[hp700] .Pa installation
202 directory of the distribution.
204 .(disp
205 .No # Ic "mkdir -p /usr/mdec/rbootd"
206 .if \n[hp300] .No # Ic "cp SYS_UBOOT /usr/mdec/rbootd"
207 .if \n[hp700] .No # Ic "cp SYSNBSD /usr/mdec/rbootd"
208 .No # Ic "chmod -R a+rX /usr/mdec/rbootd"
209 .disp)
211 Create
212 .Pa /etc/rbootd.conf
213 with the following line:
214 .(disp
215 .if \n[hp300] CC:CC:CC:CC:CC:CC SYS_UBOOT
216 .if \n[hp700] CC:CC:CC:CC:CC:CC SYSNBSD
217 .disp)
219 You will need to start the
220 .Ic rbootd .
221 If it's already running, you will need to
222 restart it to force it to re-read its configuration file.
223 If the server is running
224 .Nx ,
225 you can achieve this with:
227 .(disp
228 .No # Ic "/etc/rc.d/rbootd restart"
229 .disp)
231 If your netboot server is not running
232 .Nx 
233 but other OSs (like Linux, Solaris etc.), you have to use
234 YAMAMORI Takenori's
235 .Li sun-rbootd
236 package instead of native
237 .Xr rbootd 8 .
238 Please refer the "Setting up the rbootd server" section
239 in the NetBSD Diskless HOW-TO
240 .Lk http://www.NetBSD.org/docs/network/netboot/rbootd/
241 for details.
244 .\} \" ! \n[hp300]:\n[hp700]
245 .if \n[evbppc]:\n[hp300]:\n[hp700]:\n[macppc]:\n[next68k]:\n[sparc]:\n[sparc64] \{\
246 .ie !\n[hp300] \{\
247 .Xr dhcpd 8
249 .Xr bootpd 8
250 compatible mode
253 .el \{\
254 .Xr dhcpd 8
256 The bootstrap program uses DHCP to discover the location of the kernel.
258 Put the following lines in your
259 .Pa /etc/dhcpd.conf
260 (see
261 .Xr dhcpd.conf 5
263 .Xr dhcp-options 5
264 for more information):
265 .(disp
266 ddns-update-style none;
267                 # Do not use any dynamic DNS features
268                 #
269 allow bootp;    # Allow bootp requests, thus the dhcp server
270                 # will act as a bootp server.
271                 #
272 authoritative;  # master DHCP server for this subnet
273                 #
274 subnet 192.168.1.0 netmask 255.255.255.0 {
275                 # Which network interface to listen on.
276                 # The zeros indicate the range of addresses
277                 # that are allowed to connect.
279 group {
280                 # Set of parameters common to all clients
281                 # in this "group".
282                 #
283         option broadcast-address        192.168.1.255;
284         option domain-name              "test.net";
285         option domain-name-servers      dns.test.net;
286         option routers                  router.test.net;
287         option subnet-mask              255.255.255.0;
288                 #
289                 # An individual client.
290                 #
291         host client.test.net {
292                 hardware ethernet       CC:CC:CC:CC:CC:CC;
293                 fixed-address           192.168.1.10;
294                 #
295                 # Name of the host (if the fixed address
296                 # doesn't resolve to a simple name).
297                 #
298                 option host-name        "client";
299 .if !\n[hp300] \{\
300 .if \n[evbppc] \{\
302                 #
303                 # Name of the kernel image to download via tftp.
304                 # Note: Plain (ELF) kernels won't work, you
305                 # have to use the corresponding *.img file.
306                 #
307                 filename                "netbsd-INSTALL_WALNUT.img"
309                 #
310                 # Name of the bootloader or kernel
311                 # to download via tftp.
312 .if \n[sparc] \{\
314                 #
315                 # Only needed for JavaStations with OpenFirmware!
316                 #
317                 filename                "bootjs.net";
319 .if \n[hp700] \{\
320                 #
321                 filename                "SYSNBSD";
323 .ie \n[macppc] \{\
324                 #
325                 filename                "ofwboot.xcf";
327 .el \{\
328 .if \n[next68k] \{\
329                 #
330                 filename                "boot";
331 .\} \" \n[next68k]
332 .\} \" \n[macppc]
333 .\} \" !\n[hp300]
335                 #
336                 # The path on the NFS server.
337                 #
338                 option root-path "/export/client/root";
339 .if \n[next68k] \{\
341                 #
342                 #next68k machines require non-RFC1048 BOOTP
343                 #
344                 always-reply-rfc1048 false;
347                 #
348                 # If your DHCP server is not your NFS server, supply the
349                 # address of the NFS server. Since we assume you run everything
350                 # on one server, this is not needed.
351 .if \n[macppc] \{\
352                 #
353                 # macppc machines will look for their bootloader, 
354                 # ofwboot.xcf, on the next-server as well.
356                 #
357                 # next-server server.test.net;
358         }
359  #you may paste another "host" entry here for additional 
360  #clients on this network
362 .disp)
363 .if \n[sparc] \{\
364 Note that for JavaStations booting from OpenFirmware you do not need
365 the 
366 .(disp
367 allow bootp;
368 .disp)
369 statement, since this machines use real DHCP.
372 You will need to make sure that the
373 .Pa dhcpd.leases
374 file exists.
376 .(disp
377 .No # Ic "touch /var/db/dhcpd.leases"
378 .disp)
380 You will need to start the
381 .Ic dhcpd .
382 If it's already running, you will need to
383 restart it to force it to re-read its configuration file.
384 If the server is running
385 .Nx ,
386 you can achieve this with:
388 .(disp
389 .No # Ic "/etc/rc.d/dhcpd restart"
390 .disp)
392 .\} \" ! \n[evbppc]:\n[hp300]:\n[hp700]:\n[macppc]:\n[next68k]:\n[sparc]:\n[sparc64]
393 .if \n[sparc]:\n[sparc64] \{\
396 .Xr rarpd 8
398 .if \n[sparc] \{\
399 Note: no
400 .Nm rarpd
401 is needed to boot OpenFirmware based JavaStations.
404 Create an
405 .Pa /etc/ethers
406 file with the following line:
408 .(disp
409 CC:CC:CC:CC:CC:CC     client
410 .disp)
412 Add your client to the server's
413 .Pa /etc/hosts
414 file:
416 .(disp
417 192.168.1.10 client
418 .disp)
420 You will need to start the
421 .Ic rarpd .
422 If it's already running, you will need to
423 restart it to force it to re-read its configuration file.
424 If the server is running
425 .Nx ,
426 you can achieve this with:
428 .(disp
429 .No # Ic "/etc/rc.d/rarpd restart"
430 .disp)
432 .\} \" ! \n[sparc]:\n[sparc64]
433 .if !\n[hp300] \{\
436 .Xr tftpd 8
438 The default configuration of the TFTP server is to run in a
439 .Xr chroot 8
440 environment in the
441 .Pa /tftpboot
442 directory.
443 Thus, the first order of business is to create this directory:
444 .(disp
445 .No # Ic "mkdir -p /tftpboot"
446 .disp)
448 Next, edit
449 .Pa /etc/inetd.conf
450 and uncomment the line with the TFTP daemon:
451 .(disp
452 tftp  dgram  udp  wait  root  /usr/libexec/tftpd tftpd -l -s /tftpboot 
453 .disp)
455 Now, restart
456 .Xr inetd 8 .
457 If the server is running
458 .Nx ,
459 you can achieve this with:
461 .(disp
462 .No # Ic "/etc/rc.d/inetd restart"
463 .disp)
465 Now, you need to copy the
466 .ie \n[evbppc] kernel
467 .el bootloader
468 for your \*M machine to
469 .Pa /tftpboot .
470 .if \n[hp700] \{\
472 .Pa SYSNBSD
473 from the
474 .Pa installation
475 directory of the distribution.
476 .(disp
477 .No # Ic "cp SYSNBSD /tftpboot"
478 .disp)
480 .if \n[macppc] \{\
482 .Xr ofwboot.xcf 8
483 from the
484 .Pa installation
485 directory of the distribution.
486 .(disp
487 .No # Ic "cp ofwboot.xcf /tftpboot"
488 .disp)
490 .if \n[next68k] \{\
492 .Pa boot
493 from the
494 .Pa installation
495 directory of the distribution.
496 .(disp
497 .No # Ic "cp boot /tftpboot"
498 .disp)
500 .if \n[sparc]:\n[sparc64] \{\
502 .if \n[sparc] .Pa boot.net
503 .if \n[sparc64] .Pa ofwboot.net
504 from the
505 .Pa installation/netboot
506 directory of the distribution.
507 .(disp
508 .if \n[sparc] .No # Ic "cp boot.net /tftpboot"
509 .if \n[sparc64] .No # Ic "cp ofwboot.net /tftpboot"
510 .disp)
512 Now, you need to link
513 .if \n[sparc] .Pa boot.net
514 .if \n[sparc64] .Pa ofwboot.net
515 to the filename that your \*M will look for.
516 It will look for a filename composed of the machine's IP address
517 .if \n[sparc] \{\
518 (in hexadecimal) followed by the machine's architecture,
519 separated by a period.
520 For example, a sun4c machine which has been assigned IP address
521 192.168.1.10, will make a TFTP request for
522 .Pa C0A8010A.SUN4C .
524 .if \n[sparc64] \{\
525 (in hexadecimal).
526 For example, a machine which has been assigned IP address
527 192.168.1.10, will make a TFTP request for
528 .Pa C0A8010A .
531 You can use
532 .Xr bc 1
533 to help calculate the filename:
534 .(disp
535 .No # Ic bc
536 .Ic obase=16
537 .Ic 192
539 .Ic 168
541 .Ic 1
543 .Ic 10
545 .Ic quit
546 .No # Ic "cd /tftpboot"
547 .if \n[sparc] .No # Ic "ln -s boot.net C0A8010A.SUN4C"
548 .if \n[sparc64] .No # Ic "ln -s ofwboot.net C0A8010A"
549 .disp)
551 .\} \" \n[sparc]:\n[sparc64]
552 .if \n[sparc] \{\
553 For OpenFirmware based JavaStations you use the file
554 .Pa bootjs.net
555 and do not create a symlink for the IP address. This machines do full
556 DHCP autoconfiguration, so the bootstrap filename is provided by the
557 DHCP server.
560 Just to be sure, let's make everything readable.
561 .(disp
562 .No # Ic "chmod -R a+rX /tftpboot"
563 .disp)
565 Sometimes, the
566 .Xr arp 8
567 table gets messed up, and the TFTP server can't communicate with the
568 client.
569 In this case, it will write a log message (via
570 .Xr syslogd 8 )
572 .Pa /var/log/messages
573 saying:
574 .Sq Li "tftpd: write: Host is down" .
575 If this is the case, you may need to force the server to map your client's
576 ethernet address to its IP address:
577 .(disp
578 .No # Ic "arp -s client CC:CC:CC:CC:CC:CC"
579 .disp)
580 .\} \" ! !\n[hp300]
583 .Xr nfsd 8 ,
584 .Xr mountd 8 ,
586 .Xr rpcbind 8
587 .ie !\n[evbppc] \{\
589 Now your system should be able to load the bootstrap program and start
590 looking for the kernel.
592 .el \{\
594 You can either boot a kernel, or the RAM disk-based installer
595 .Pa binary/kernel/netbsd-INSTALL.img.gz .
596 In the first case you'll also need an NFS-mounted userland.
598 Let's set up the NFS server.
599 Create the directory you are exporting for the netboot client:
601 .(disp
602 .No # Ic "mkdir -p /export/client/root"
603 .disp)
605 Put the following line in
606 .Pa /etc/exports
607 to enable NFS sharing:
609 .(disp
610 .No "/export/client/root -maproot=root client.test.net"
611 .disp)
613 If your server is currently running an NFS server, you only need to
614 restart
615 .Xr mountd 8 .
616 Otherwise, you need to start
617 .Xr rpcbind 8
619 .Xr nfsd 8 .
620 If the server is running
621 .Nx ,
622 you can achieve this with:
624 .(disp
625 .No # Ic "/etc/rc.d/rpcbind start"
626 .No # Ic "/etc/rc.d/nfsd start"
627 .No # Ic "/etc/rc.d/mountd restart"
628 .disp)
632 kernel
633 .if !\n[next68k]:\n[hp700] and installation tools
635 .if !\n[evbppc]:\n[hp700] \{\
636 Now, if you place a kernel named
637 .Pa netbsd
639 .Pa /export/client/root
640 your client should boot the kernel.
641 .\} \" !\n[evbppc]:\n[hp700]
642 .if \n[hp300] \{\
643 If you are netbooting the installer, you can use either
644 the traditional miniroot-based installer
645 .Pa installation/miniroot/miniroot.fs.gz
646 or the experimental RAM disk-based installer
647 .Pa binary/kernel/netbsd-RAMDISK.gz .
649 To use the miniroot-based installer, mount the miniroot file system on your
650 netboot server.
651 This procedure does
652 .Em not
653 work on any operating system other than
654 .Nx .
655 You'll also need to either set up a new NFS share point or an FTP server
656 for the distribution files, as they won't fit inside the miniroot
657 file system.
659 .(disp
660 .No # Ic "gunzip miniroot.fs.gz"
661 .No # Ic "vnconfig -c /dev/vnd0c /path/to/miniroot.fs"
662 .No # Ic "mount -o ro /dev/vnd0c /export/client/root"
663 .No # Ic "ls /export/client/root"
664  .profile     dist/        install.md   mnt/         sbin/        usr/
665  bin/         etc/         install.sub  mnt2/        tmp/         var/
666  dev/         install*     kern/        netbsd*      upgrade*
667 .disp)
669 If there are no files present in your exported directory, then
670 something is wrong.
672 To use the RAM disk-based installer, uncompress and rename the kernel.
673 Also, copy the distribution files to the client's root directory.
675 .(disp
676 .No # Ic "cp *tgz /export/client/root"
677 .No # Ic "gunzip netbsd-RAMDISK.gz"
678 .No # Ic "mv netbsd-RAMDISK /export/client/root/netbsd"
679 .disp)
681 If you are running your \*M diskless, simply use
682 .Pa binary/kernel/netbsd-GENERIC.gz .
683 .\} \" \n[hp300]
684 .if \n[hp700] \{\
685 You do not need to place a kernel in
686 .Pa /export/client/root
687 since the kernel is contained inside 
688 .Pa SYSNBSD .
690 .if \n[macppc] \{\
691 If you are netbooting the installer, use
692 .Pa binary/kernel/netbsd-GENERIC_MD.gz
693 (this has the installation tools in a RAM disk).
694 Also, copy the distribution files to the client's root directory.
696 .(Note
697 Some combinations of Open Firmware version and 
698 .Pa ofwboot.xcf
699 version have trouble loading compressed kernels.  If you have trouble loading
700 a kernel, try uncompressing it with
701 .Xr gunzip 1
702 .Note)
704 .(disp
705 .No # Ic "cp *tgz /export/client/root"
706 .No # Ic "gunzip netbsd-GENERIC_MD.gz"
707 .No # Ic "mv netbsd-GENERIC_MD /export/client/root/netbsd"
708 .disp)
710 If you are running your \*M diskless, simply use
711 .Pa binary/kernel/netbsd-GENERIC.gz .
713 .if \n[next68k] \{\
715 .Pa binary/kernel/netbsd-GENERIC.gz .
717 .(disp
718 .No # Ic "gunzip netbsd-GENERIC.gz"
719 .No # Ic "mv netbsd-GENERIC /export/client/root/netbsd"
720 .disp)
722 .if \n[sparc]:\n[sparc64] \{\
724 .Pa binary/kernel/netbsd-GENERIC.gz .
726 .(disp
727 .No # Ic "gunzip netbsd-GENERIC.gz"
728 .No # Ic "mv netbsd-GENERIC /export/client/root/netbsd"
729 .disp)
731 If you are netbooting the installer, copy the distribution files to
732 the client's root directory and extract the tools from
733 .if \n[sparc] .Pa installation/netboot/rootfs.tgz .
734 .if \n[sparc64] .Pa installation/misc/instfs.tgz .
736 .(disp
737 .No # Ic "cp *tgz /export/client/root"
738 .No # Ic "cd /export/client/root"
739 .if \n[sparc] .No # Ic "tar -xpzf rootfs.tgz"
740 .if \n[sparc64] .No # Ic "tar -xpzf instfs.tgz"
741 .disp)
743 .if \n[evbppc] \{\
744 If you are netbooting the installer, use
745 .Pa binary/kernel/netbsd-INSTALL_WALNUT.img.gz
746 (this has the installation tools in a RAM disk).
747 Also, copy the distribution files to the client's root directory.
749 .(disp
750 .No # Ic "cp *tgz /export/client/root"
751 .No # Ic "gunzip netbsd-INSTALL.img.gz"
752 .No # Ic "mv netbsd-INSTALL.img /export/client/root/netbsd"
753 .disp)
755 If you are running your \*M diskless, simply use
756 .Pa binary/kernel/netbsd.img-WALNUT.gz .
759 Client file system
761 .ie !\n[hp700]:\n[next68k] \{\
762 You can skip this step if you do not plan to run your client
763 diskless after installation.
764 Otherwise, you
766 .el You
767 need to extract and set up the client's installation of
768 .Nx .
769 The Diskless HOW-TO describes how to provide better security and save
770 space on the NFS server over the procedure listed here.
772 .Lk http://www.NetBSD.org/docs/network/netboot/nfs.html
773 for details.
774 .(bullet -compact
775 Extracting distribution sets
777 .(disp
778 .No # Ic "cd /export/client/root"
779 .No # Ic "tar -xpzf /path/to/files/base.tgz"
780 .No # Ic "tar -xpzf /path/to/files/etc.tgz"
781 .disp)
783 Continue with the other non-essential distribution sets if desired.
786 Set up swap
788 .(disp
789 .No # Ic "mkdir /export/client/root/swap"
790 .No # Ic "dd if=/dev/zero of=/export/client/swap bs=4k count=4k"
791 .No # Ic "echo '/export/client/swap -maproot=root:wheel client.test.net' | cat \*[Gt]\*[Gt] /etc/exports"
792 .No # Ic "/etc/rc.d/mountd restart"
793 .disp)
794 This creates a 16 MB swap file and exports it to the client.
797 Create device nodes
799 .(disp
800 .No # Ic "cd /export/client/root/dev"
801 .No # Ic "./MAKEDEV all"
802 .disp)
804 This procedure only works on
806 hosts.
809 Set up the client's
810 .Xr fstab 5
812 Create a file in
813 .Pa /export/client/root/etc/fstab
814 with the following lines:
816 .(disp
817 server:/export/client/swap   none  swap  sw,nfsmntpt=/swap
818 server:/export/client/root   /     nfs   rw 0 0
819 .disp)
822 Set up the client's
823 .Xr rc.conf 5
825 Edit
826 .Pa /export/client/root/etc/rc.conf
827 .(disp
828 rc_configured=YES
829 hostname="client"
830 defaultroute="192.168.1.1"
831 nfs_client=YES
832 auto_ifconfig=NO
833 net_interfaces=""
834 .disp)
836 Make sure rc does not reconfigure the network device since it will lose
837 its connection to the NFS server with your root file system.
840 Set up the client's
841 .Xr hosts 5
842 file.
844 Edit
845 .Pa /export/client/root/etc/hosts
847 .(disp
848 ::1                     localhost
849 127.0.0.1               localhost
850 192.168.1.10 client.test.net client
851 192.168.1.5  server.test.net server
852 .disp)
853 .bullet)
856 Setting up the server daemons
858 .ie !\n[hp700]:\n[next68k] If you want
859 .el You need
860 these services to start up every time you boot
861 your server, make sure the following lines are present in your
862 .Pa /etc/rc.conf :
863 .(disp
864 .if \n[hp300]:\n[hp700] \{\
865 rbootd=YES       rbootd_flags=""
867 .if \n[hp300]:\n[hp700]:\n[macppc]:\n[next68k]:\n[sparc]:\n[sparc64] \{\
868 dhcpd=YES        dhcpd_flags="-q"
870 .if \n[sparc]:\n[sparc64] \{\
871 rarpd=YES        rarpd_flags="-a"
873 nfs_server=YES         # enable server daemons
874 mountd=YES
875 rpcbind=YES      rpcbind_flags="-l"   # -l logs libwrap
876 .disp)
878 .if !\n[hp300] \{\
879 Also, you'll need to make sure the
880 .Pa tftpd
881 line in
882 .Pa /etc/inetd.conf
883 remains uncommented.
885 .enum)