summaryrefslogtreecommitdiff
path: root/static/openbsd/man8/diskless.8
diff options
context:
space:
mode:
Diffstat (limited to 'static/openbsd/man8/diskless.8')
-rw-r--r--static/openbsd/man8/diskless.8425
1 files changed, 425 insertions, 0 deletions
diff --git a/static/openbsd/man8/diskless.8 b/static/openbsd/man8/diskless.8
new file mode 100644
index 00000000..30f0e4f3
--- /dev/null
+++ b/static/openbsd/man8/diskless.8
@@ -0,0 +1,425 @@
+.\" $OpenBSD: diskless.8,v 1.72 2022/06/26 12:34:41 deraadt Exp $
+.\" $NetBSD: diskless.8,v 1.7.4.1 1996/05/30 18:58:10 cgd Exp $
+.\"
+.\"
+.\" Copyright (c) 1994 Gordon W. Ross, Theo de Raadt
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd $Mdocdate: June 26 2022 $
+.Dt DISKLESS 8
+.Os
+.Sh NAME
+.Nm diskless
+.Nd booting a system over the network
+.Sh DESCRIPTION
+The ability to boot a machine over the network is useful for
+.Em diskless
+or
+.Em dataless
+machines, or as a temporary measure while repairing or
+re-installing filesystems on a local disk.
+This file provides a general description of the interactions between
+a client and its server when a client is booting over the network.
+The general description is followed by specific instructions for
+configuring a server for diskless clients.
+.Pp
+When booting a system over the network, there are three
+phases of interaction between client and server:
+.Pp
+.Bl -enum -compact
+.It
+The PROM (or stage-1 bootstrap) loads a boot program.
+.It
+The boot program loads a kernel.
+.It
+The kernel does NFS mounts for root and swap.
+.El
+.Pp
+Each of these phases are described in further detail below.
+.Pp
+In
+.Em phase 1 ,
+the PROM loads a boot program.
+PROM designs vary widely, so this phase is inherently
+machine-specific.
+Sun and Motorola machines use RARP to determine the client's IP address
+and then use TFTP to download a boot program
+from whoever sent the RARP reply.
+HP 300-series machines use the
+HP Remote Maintenance Protocol
+to download a boot program.
+Other machines may load a
+network boot program either from diskette or
+using a special PROM on the network card.
+.Pp
+In
+.Em phase 2 ,
+the boot program loads a kernel.
+Operation in this phase depends on the design of the boot program.
+The procedure used by the boot program is as follows:
+.Pp
+.Bl -enum -compact
+.It
+The boot program
+gets the client IP address using RARP.
+.It
+The boot program
+gets the client name and server IP address by broadcasting an
+RPC/BOOTPARAMS/WHOAMI request with the client IP address.
+.It
+The boot program
+gets the server path for this client's root
+using an RPC/BOOTPARAMS/GETFILE request with the client name.
+.It
+The boot program
+gets the root file handle by calling
+.Xr mountd 8
+with the server path for the client root.
+.It
+The boot program
+gets the kernel file handle by calling
+NFS lookup on the root file handle.
+.It
+The boot program
+loads the kernel using
+NFS read calls on the kernel file handle.
+.It
+The boot program
+transfers control to the kernel entry point.
+.El
+.Pp
+In
+.Em phase 3 ,
+the kernel does NFS mounts for root and swap.
+The kernel repeats much of the work done by the boot program
+because there is no standard way for the boot program to pass
+the information it gathered on to the kernel.
+The procedure used by the kernel is as follows:
+.Pp
+.Bl -enum -compact
+.It
+The kernel finds a boot server using the same procedure
+as described in steps 1 and 2 of phase 2, above.
+.It
+The kernel gets the NFS
+file handle for root using the same procedure
+as described in steps 3, 4, and 5 of phase 2, above.
+.It
+The kernel calls the NFS
+getattr function to get the last-modified time of the root
+directory, and uses it to check the system clock.
+.It
+If the kernel is configured for swap on NFS,
+it uses the same mechanism as for root, but uses the NFS
+getattr function to determine the size of the swap area.
+.El
+.Pp
+The
+.Pa INSTALL. Ns Aq Ar arch
+notes that come with each distribution
+also give details on the specifics of net/diskless booting
+for each architecture.
+.Pp
+The procedures for AMD64 and i386 clients vary somewhat
+to the stages detailed above.
+See
+.Xr pxeboot 8
+for more detailed information.
+.Sh EXAMPLES
+Before a client can boot over the network,
+its server must be configured correctly.
+This example will demonstrate how to configure a server and client.
+.Pp
+Assuming the client's hostname is to be
+"myclient":
+.Bl -enum
+.It
+Add an entry to
+.Pa /etc/ethers
+corresponding to the client's Ethernet address:
+.Bd -literal -offset indent
+8:0:20:7:c5:c7 myclient
+.Ed
+.Pp
+This will be used by
+.Xr rarpd 8 .
+.It
+Assign an IP address for myclient in
+.Pa /etc/hosts :
+.Bd -literal -offset indent
+192.197.96.12 myclient
+.Ed
+.It
+If booting an alpha, amd64, hppa, i386,
+or sparc64 client,
+ensure that
+.Xr tftpd 8
+is configured to run in the directory
+.Pa /tftpboot .
+.Pp
+If booting an HP 300 or older HPPA machine, ensure that
+.Pa /etc/rbootd.conf
+is configured properly to transfer the boot program to the client.
+An entry might look like this:
+.Bd -literal -offset indent
+08:00:09:01:23:E6 SYS_UBOOT # myclient
+.Ed
+.Pp
+See the
+.Xr rbootd 8
+manual page for more information.
+.It
+If booting a newer alpha, amd64, hppa, i386,
+or sparc64 client,
+install a copy of the appropriate diskless boot loader in the
+.Pa /tftpboot
+directory.
+.Pp
+If booting a Motorola or Sun client,
+make a link such that the boot program is
+accessible as a file named after the client's IP address in hex.
+For example:
+.Bd -literal -offset indent
+# cd /tftpboot
+# ln -s boot.net C0C5600C
+.Ed
+.Pp
+The following example converts an IP address to hex:
+.Bd -literal -offset indent
+$ echo 192.197.96.12 | awk -F . \e
+ '{ printf "%02X%02X%02X%02X\en", $1, $2, $3, $4 }'
+.Ed
+.Pp
+Sun Sparc machines also require a
+.Dq . Ns Aq Ar arch
+suffix.
+So the filename in the example above for a Sun4 machine would be
+.Dq C0C5600C.SUN4 .
+The name used is really architecture dependent:
+it simply has to match what the booting client's PROM wishes it to be.
+If the client's PROM fails to fetch the expected file,
+.Xr tcpdump 8
+can be used to discover which filename the client is trying to read.
+.Pp
+Architectures using DHCP
+(newer alpha, amd64, hppa, or i386)
+should ensure that
+.Xr dhcpd 8
+is configured on the server to serve BOOTP protocol requests.
+An example entry in
+.Xr dhcpd.conf 5 :
+.Bd -literal -offset indent
+subnet 10.0.0.0 netmask 255.0.0.0 {
+ host myclient {
+ filename "netboot";
+ option root-path "/export/myclient/root";
+ hardware ethernet 00:02:56:00:73:31;
+ fixed-address 10.42.42.42;
+ }
+}
+.Ed
+.Pp
+Note that procedures for AMD64 and i386 clients vary somewhat.
+See
+.Xr pxeboot 8
+for more detailed information.
+.Pp
+Architectures using the HP remote boot server
+(HP 300 or older HPPA)
+should ensure that the general purpose
+boot program is installed in the directory
+.Pa /usr/mdec/rbootd .
+.Pp
+Architectures using MOP
+(older Alpha)
+should follow the instructions in
+.Xr mopd 8
+for setting up a TFTP boot.
+.It
+Add myclient to the bootparams database
+.Pa /etc/bootparams :
+.Bd -literal -offset indent
+myclient root=server:/export/myclient/root \e
+ swap=server:/export/myclient/swap
+.Ed
+.Pp
+Note that some bootparam servers are somewhat sensitive.
+Some require fully qualified hostnames or partially qualified hostnames
+(which can be solved by having both fully and partially qualified entries).
+Other servers are case sensitive.
+.It
+Build the swap file for myclient:
+.Bd -literal -offset indent
+# mkdir -p /export/myclient/root/swap
+# cd /export/myclient
+# dd if=/dev/zero of=swap bs=1m count=120
+.Ed
+.Pp
+This creates a 120 Megabyte swap file and an empty /swap directory.
+A smaller swap file may be created if the boot is for
+maintenance (i.e. temporary) purposes only.
+.It
+Populate myclient's root
+filesystem on the server.
+How this is done depends on the client architecture and the version of the
+.Ox
+distribution.
+It can be as simple as copying and modifying the server's root
+filesystem, or perhaps the files can be taken from the
+standard binary distribution.
+.It
+Export the required filesystems in
+.Pa /etc/exports :
+.Bd -literal -offset indent
+/usr -ro myclient
+/export/myclient -maproot=root -alldirs myclient
+.Ed
+.Pp
+If the server and client are of the same architecture, then the client
+can share the server's
+.Pa /usr
+filesystem (as is done above).
+If not, a properly fleshed out
+.Pa /usr
+partition will have to be built for the client in some other place.
+.It
+Copy and customize at least the following files in
+.Pa /export/myclient/root :
+.Bd -literal -offset indent
+# cd /export/myclient/root/etc
+# cp /etc/fstab fstab
+# cp /etc/hosts hosts
+# echo myclient > myname
+# echo inet 192.197.96.12 > hostname.le0
+.Ed
+.Pp
+Note that "le0" above should be replaced with the name of
+the network interface that the client will use for booting.
+.It
+Correct at least
+the critical mount points in the client's
+.Xr fstab 5
+(which will be
+.Pa /export/myclient/root/etc/fstab ) :
+.Bd -literal -offset indent
+myserver:/export/myclient/root / nfs rw 0 0
+myserver:/export/myclient/swap none swap sw,nfsmntpt=/swap
+myserver:/export/myclient/root/usr /usr nfs rw,nodev 0 0
+.Ed
+.Pp
+The above example works even if
+.Pa /usr
+is not on a separate partition.
+It allows them to be mounted with NFSv3,
+if the server allows it,
+and to specify per-partition mount options,
+such as
+.Cm nodev .
+.Pp
+If the
+.Pa /usr
+partition is to be shared between machines,
+as in the example
+.Pa /etc/exports
+above, a more suitable entry might be:
+.Bd -literal -offset indent
+myserver:/usr /usr nfs ro 0 0
+.Ed
+.It
+Make sure the correct processes are enabled on the server.
+See
+.Xr rc.conf 8
+for details of how to start these processes at boot.
+.Pp
+For all clients:
+.Xr mountd 8 ,
+.Xr nfsd 8 ,
+.Xr portmap 8 ,
+.Xr rarpd 8 ,
+and
+.Xr rpc.bootparamd 8 .
+.Pp
+For alpha, amd64, hppa, i386, and sparc64 clients:
+.Xr tftpd 8
+.Pp
+For HP 300 and older HPPA clients:
+.Xr rbootd 8
+.Pp
+For newer alpha, amd64, hppa, and i386 clients:
+.Xr dhcpd 8
+.Pp
+For older alpha clients:
+.Xr mopd 8
+.It
+Net boot the client.
+.El
+.Sh FILES
+.Bl -tag -width "/usr/mdec/rbootdXX" -compact
+.It Pa /etc/bootparams
+Client root and swap pathnames.
+.It Pa /etc/dhcpd.conf
+DHCP daemon configuration file.
+.It Pa /etc/ethers
+Ethernet addresses of known clients.
+.It Pa /etc/exports
+Exported NFS mount points.
+.It Pa /etc/fstab
+Static information about the filesystems.
+.It Pa /etc/hostname.$if
+Interface-specific configuration file.
+.It Pa /etc/hosts
+Host name database.
+.It Pa /etc/myname
+Default hostname.
+.It Pa /etc/mygate
+Default gateway.
+.It Pa /etc/rbootd.conf
+Configuration file for HP Remote Boot Daemon.
+.It Pa /tftpboot
+Location of boot programs loaded by the Sun PROM.
+.It Pa /usr/mdec/rbootd
+Location of boot programs loaded by the HP Boot ROM.
+.El
+.Sh SEE ALSO
+.Xr bootparams 5 ,
+.Xr dhcpd.conf 5 ,
+.Xr ethers 5 ,
+.Xr exports 5 ,
+.Xr fstab 5 ,
+.Xr hostname.if 5 ,
+.Xr hosts 5 ,
+.Xr mygate 5 ,
+.Xr myname 5 ,
+.Xr dhcpd 8 ,
+.Xr mopd 8 ,
+.Xr mountd 8 ,
+.Xr nfsd 8 ,
+.Xr portmap 8 ,
+.Xr pxeboot 8 ,
+.Xr rarpd 8 ,
+.Xr rbootd 8 ,
+.Xr rpc.bootparamd 8 ,
+.Xr tcpdump 8 ,
+.Xr tftpd 8