18c2ecf20Sopenharmony_ci===============================================
28c2ecf20Sopenharmony_ciMounting the root filesystem via NFS (nfsroot)
38c2ecf20Sopenharmony_ci===============================================
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci:Authors:
68c2ecf20Sopenharmony_ci	Written 1996 by Gero Kuhlmann <gero@gkminix.han.de>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci	Updated 1997 by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci	Updated 2006 by Nico Schottelius <nico-kernel-nfsroot@schottelius.org>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci	Updated 2006 by Horms <horms@verge.net.au>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci	Updated 2018 by Chris Novakovic <chris@chrisn.me.uk>
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciIn order to use a diskless system, such as an X-terminal or printer server for
198c2ecf20Sopenharmony_ciexample, it is necessary for the root filesystem to be present on a non-disk
208c2ecf20Sopenharmony_cidevice. This may be an initramfs (see
218c2ecf20Sopenharmony_ciDocumentation/filesystems/ramfs-rootfs-initramfs.rst), a ramdisk (see
228c2ecf20Sopenharmony_ciDocumentation/admin-guide/initrd.rst) or a filesystem mounted via NFS. The
238c2ecf20Sopenharmony_cifollowing text describes on how to use NFS for the root filesystem. For the rest
248c2ecf20Sopenharmony_ciof this text 'client' means the diskless system, and 'server' means the NFS
258c2ecf20Sopenharmony_ciserver.
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ciEnabling nfsroot capabilities
318c2ecf20Sopenharmony_ci=============================
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ciIn order to use nfsroot, NFS client support needs to be selected as
348c2ecf20Sopenharmony_cibuilt-in during configuration. Once this has been selected, the nfsroot
358c2ecf20Sopenharmony_cioption will become available, which should also be selected.
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ciIn the networking options, kernel level autoconfiguration can be selected,
388c2ecf20Sopenharmony_cialong with the types of autoconfiguration to support. Selecting all of
398c2ecf20Sopenharmony_ciDHCP, BOOTP and RARP is safe.
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciKernel command line
458c2ecf20Sopenharmony_ci===================
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ciWhen the kernel has been loaded by a boot loader (see below) it needs to be
488c2ecf20Sopenharmony_citold what root fs device to use. And in the case of nfsroot, where to find
498c2ecf20Sopenharmony_ciboth the server and the name of the directory on the server to mount as root.
508c2ecf20Sopenharmony_ciThis can be established using the following kernel command line parameters:
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ciroot=/dev/nfs
548c2ecf20Sopenharmony_ci  This is necessary to enable the pseudo-NFS-device. Note that it's not a
558c2ecf20Sopenharmony_ci  real device but just a synonym to tell the kernel to use NFS instead of
568c2ecf20Sopenharmony_ci  a real device.
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_cinfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
608c2ecf20Sopenharmony_ci  If the `nfsroot' parameter is NOT given on the command line,
618c2ecf20Sopenharmony_ci  the default ``"/tftpboot/%s"`` will be used.
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci  <server-ip>	Specifies the IP address of the NFS server.
648c2ecf20Sopenharmony_ci		The default address is determined by the ip parameter
658c2ecf20Sopenharmony_ci		(see below). This parameter allows the use of different
668c2ecf20Sopenharmony_ci		servers for IP autoconfiguration and NFS.
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  <root-dir>	Name of the directory on the server to mount as root.
698c2ecf20Sopenharmony_ci		If there is a "%s" token in the string, it will be
708c2ecf20Sopenharmony_ci		replaced by the ASCII-representation of the client's
718c2ecf20Sopenharmony_ci		IP address.
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci  <nfs-options>	Standard NFS options. All options are separated by commas.
748c2ecf20Sopenharmony_ci		The following defaults are used::
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci			port		= as given by server portmap daemon
778c2ecf20Sopenharmony_ci			rsize		= 4096
788c2ecf20Sopenharmony_ci			wsize		= 4096
798c2ecf20Sopenharmony_ci			timeo		= 7
808c2ecf20Sopenharmony_ci			retrans		= 3
818c2ecf20Sopenharmony_ci			acregmin	= 3
828c2ecf20Sopenharmony_ci			acregmax	= 60
838c2ecf20Sopenharmony_ci			acdirmin	= 30
848c2ecf20Sopenharmony_ci			acdirmax	= 60
858c2ecf20Sopenharmony_ci			flags		= hard, nointr, noposix, cto, ac
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ciip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>:<ntp0-ip>
898c2ecf20Sopenharmony_ci  This parameter tells the kernel how to configure IP addresses of devices
908c2ecf20Sopenharmony_ci  and also how to set up the IP routing table. It was originally called
918c2ecf20Sopenharmony_ci  nfsaddrs, but now the boot-time IP configuration works independently of
928c2ecf20Sopenharmony_ci  NFS, so it was renamed to ip and the old name remained as an alias for
938c2ecf20Sopenharmony_ci  compatibility reasons.
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci  If this parameter is missing from the kernel command line, all fields are
968c2ecf20Sopenharmony_ci  assumed to be empty, and the defaults mentioned below apply. In general
978c2ecf20Sopenharmony_ci  this means that the kernel tries to configure everything using
988c2ecf20Sopenharmony_ci  autoconfiguration.
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci  The <autoconf> parameter can appear alone as the value to the ip
1018c2ecf20Sopenharmony_ci  parameter (without all the ':' characters before).  If the value is
1028c2ecf20Sopenharmony_ci  "ip=off" or "ip=none", no autoconfiguration will take place, otherwise
1038c2ecf20Sopenharmony_ci  autoconfiguration will take place.  The most common way to use this
1048c2ecf20Sopenharmony_ci  is "ip=dhcp".
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci  <client-ip>	IP address of the client.
1078c2ecf20Sopenharmony_ci  		Default:  Determined using autoconfiguration.
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci  <server-ip>	IP address of the NFS server.
1108c2ecf20Sopenharmony_ci		If RARP is used to determine
1118c2ecf20Sopenharmony_ci		the client address and this parameter is NOT empty only
1128c2ecf20Sopenharmony_ci		replies from the specified server are accepted.
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci		Only required for NFS root. That is autoconfiguration
1158c2ecf20Sopenharmony_ci		will not be triggered if it is missing and NFS root is not
1168c2ecf20Sopenharmony_ci		in operation.
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci		Value is exported to /proc/net/pnp with the prefix "bootserver "
1198c2ecf20Sopenharmony_ci		(see below).
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci		Default: Determined using autoconfiguration.
1228c2ecf20Sopenharmony_ci		The address of the autoconfiguration server is used.
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ci  <gw-ip>	IP address of a gateway if the server is on a different subnet.
1258c2ecf20Sopenharmony_ci		Default: Determined using autoconfiguration.
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci  <netmask>	Netmask for local network interface.
1288c2ecf20Sopenharmony_ci		If unspecified the netmask is derived from the client IP address
1298c2ecf20Sopenharmony_ci		assuming classful addressing.
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ci		Default:  Determined using autoconfiguration.
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ci  <hostname>	Name of the client.
1348c2ecf20Sopenharmony_ci		If a '.' character is present, anything
1358c2ecf20Sopenharmony_ci		before the first '.' is used as the client's hostname, and anything
1368c2ecf20Sopenharmony_ci		after it is used as its NIS domain name. May be supplied by
1378c2ecf20Sopenharmony_ci		autoconfiguration, but its absence will not trigger autoconfiguration.
1388c2ecf20Sopenharmony_ci		If specified and DHCP is used, the user-provided hostname (and NIS
1398c2ecf20Sopenharmony_ci		domain name, if present) will be carried in the DHCP request; this
1408c2ecf20Sopenharmony_ci		may cause a DNS record to be created or updated for the client.
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci  		Default: Client IP address is used in ASCII notation.
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci  <device>	Name of network device to use.
1458c2ecf20Sopenharmony_ci		Default: If the host only has one device, it is used.
1468c2ecf20Sopenharmony_ci		Otherwise the device is determined using
1478c2ecf20Sopenharmony_ci		autoconfiguration. This is done by sending
1488c2ecf20Sopenharmony_ci		autoconfiguration requests out of all devices,
1498c2ecf20Sopenharmony_ci		and using the device that received the first reply.
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci  <autoconf>	Method to use for autoconfiguration.
1528c2ecf20Sopenharmony_ci		In the case of options
1538c2ecf20Sopenharmony_ci		which specify multiple autoconfiguration protocols,
1548c2ecf20Sopenharmony_ci		requests are sent using all protocols, and the first one
1558c2ecf20Sopenharmony_ci		to reply is used.
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci		Only autoconfiguration protocols that have been compiled
1588c2ecf20Sopenharmony_ci		into the kernel will be used, regardless of the value of
1598c2ecf20Sopenharmony_ci		this option::
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci                  off or none: don't use autoconfiguration
1628c2ecf20Sopenharmony_ci				(do static IP assignment instead)
1638c2ecf20Sopenharmony_ci		  on or any:   use any protocol available in the kernel
1648c2ecf20Sopenharmony_ci			       (default)
1658c2ecf20Sopenharmony_ci		  dhcp:        use DHCP
1668c2ecf20Sopenharmony_ci		  bootp:       use BOOTP
1678c2ecf20Sopenharmony_ci		  rarp:        use RARP
1688c2ecf20Sopenharmony_ci		  both:        use both BOOTP and RARP but not DHCP
1698c2ecf20Sopenharmony_ci		               (old option kept for backwards compatibility)
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci		if dhcp is used, the client identifier can be used by following
1728c2ecf20Sopenharmony_ci		format "ip=dhcp,client-id-type,client-id-value"
1738c2ecf20Sopenharmony_ci
1748c2ecf20Sopenharmony_ci                Default: any
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci  <dns0-ip>	IP address of primary nameserver.
1778c2ecf20Sopenharmony_ci		Value is exported to /proc/net/pnp with the prefix "nameserver "
1788c2ecf20Sopenharmony_ci		(see below).
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ci		Default: None if not using autoconfiguration; determined
1818c2ecf20Sopenharmony_ci		automatically if using autoconfiguration.
1828c2ecf20Sopenharmony_ci
1838c2ecf20Sopenharmony_ci  <dns1-ip>	IP address of secondary nameserver.
1848c2ecf20Sopenharmony_ci		See <dns0-ip>.
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci  <ntp0-ip>	IP address of a Network Time Protocol (NTP) server.
1878c2ecf20Sopenharmony_ci		Value is exported to /proc/net/ipconfig/ntp_servers, but is
1888c2ecf20Sopenharmony_ci		otherwise unused (see below).
1898c2ecf20Sopenharmony_ci
1908c2ecf20Sopenharmony_ci		Default: None if not using autoconfiguration; determined
1918c2ecf20Sopenharmony_ci		automatically if using autoconfiguration.
1928c2ecf20Sopenharmony_ci
1938c2ecf20Sopenharmony_ci  After configuration (whether manual or automatic) is complete, two files
1948c2ecf20Sopenharmony_ci  are created in the following format; lines are omitted if their respective
1958c2ecf20Sopenharmony_ci  value is empty following configuration:
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci  - /proc/net/pnp:
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ci	#PROTO: <DHCP|BOOTP|RARP|MANUAL>	(depending on configuration method)
2008c2ecf20Sopenharmony_ci	domain <dns-domain>			(if autoconfigured, the DNS domain)
2018c2ecf20Sopenharmony_ci	nameserver <dns0-ip>			(primary name server IP)
2028c2ecf20Sopenharmony_ci	nameserver <dns1-ip>			(secondary name server IP)
2038c2ecf20Sopenharmony_ci	nameserver <dns2-ip>			(tertiary name server IP)
2048c2ecf20Sopenharmony_ci	bootserver <server-ip>			(NFS server IP)
2058c2ecf20Sopenharmony_ci
2068c2ecf20Sopenharmony_ci  - /proc/net/ipconfig/ntp_servers:
2078c2ecf20Sopenharmony_ci
2088c2ecf20Sopenharmony_ci	<ntp0-ip>				(NTP server IP)
2098c2ecf20Sopenharmony_ci	<ntp1-ip>				(NTP server IP)
2108c2ecf20Sopenharmony_ci	<ntp2-ip>				(NTP server IP)
2118c2ecf20Sopenharmony_ci
2128c2ecf20Sopenharmony_ci  <dns-domain> and <dns2-ip> (in /proc/net/pnp) and <ntp1-ip> and <ntp2-ip>
2138c2ecf20Sopenharmony_ci  (in /proc/net/ipconfig/ntp_servers) are requested during autoconfiguration;
2148c2ecf20Sopenharmony_ci  they cannot be specified as part of the "ip=" kernel command line parameter.
2158c2ecf20Sopenharmony_ci
2168c2ecf20Sopenharmony_ci  Because the "domain" and "nameserver" options are recognised by DNS
2178c2ecf20Sopenharmony_ci  resolvers, /etc/resolv.conf is often linked to /proc/net/pnp on systems
2188c2ecf20Sopenharmony_ci  that use an NFS root filesystem.
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_ci  Note that the kernel will not synchronise the system time with any NTP
2218c2ecf20Sopenharmony_ci  servers it discovers; this is the responsibility of a user space process
2228c2ecf20Sopenharmony_ci  (e.g. an initrd/initramfs script that passes the IP addresses listed in
2238c2ecf20Sopenharmony_ci  /proc/net/ipconfig/ntp_servers to an NTP client before mounting the real
2248c2ecf20Sopenharmony_ci  root filesystem if it is on NFS).
2258c2ecf20Sopenharmony_ci
2268c2ecf20Sopenharmony_ci
2278c2ecf20Sopenharmony_cinfsrootdebug
2288c2ecf20Sopenharmony_ci  This parameter enables debugging messages to appear in the kernel
2298c2ecf20Sopenharmony_ci  log at boot time so that administrators can verify that the correct
2308c2ecf20Sopenharmony_ci  NFS mount options, server address, and root path are passed to the
2318c2ecf20Sopenharmony_ci  NFS client.
2328c2ecf20Sopenharmony_ci
2338c2ecf20Sopenharmony_ci
2348c2ecf20Sopenharmony_cirdinit=<executable file>
2358c2ecf20Sopenharmony_ci  To specify which file contains the program that starts system
2368c2ecf20Sopenharmony_ci  initialization, administrators can use this command line parameter.
2378c2ecf20Sopenharmony_ci  The default value of this parameter is "/init".  If the specified
2388c2ecf20Sopenharmony_ci  file exists and the kernel can execute it, root filesystem related
2398c2ecf20Sopenharmony_ci  kernel command line parameters, including 'nfsroot=', are ignored.
2408c2ecf20Sopenharmony_ci
2418c2ecf20Sopenharmony_ci  A description of the process of mounting the root file system can be
2428c2ecf20Sopenharmony_ci  found in Documentation/driver-api/early-userspace/early_userspace_support.rst
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_ci
2458c2ecf20Sopenharmony_ciBoot Loader
2468c2ecf20Sopenharmony_ci===========
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_ciTo get the kernel into memory different approaches can be used.
2498c2ecf20Sopenharmony_ciThey depend on various facilities being available:
2508c2ecf20Sopenharmony_ci
2518c2ecf20Sopenharmony_ci
2528c2ecf20Sopenharmony_ci- Booting from a floppy using syslinux
2538c2ecf20Sopenharmony_ci
2548c2ecf20Sopenharmony_ci	When building kernels, an easy way to create a boot floppy that uses
2558c2ecf20Sopenharmony_ci	syslinux is to use the zdisk or bzdisk make targets which use zimage
2568c2ecf20Sopenharmony_ci      	and bzimage images respectively. Both targets accept the
2578c2ecf20Sopenharmony_ci     	FDARGS parameter which can be used to set the kernel command line.
2588c2ecf20Sopenharmony_ci
2598c2ecf20Sopenharmony_ci	e.g::
2608c2ecf20Sopenharmony_ci
2618c2ecf20Sopenharmony_ci	   make bzdisk FDARGS="root=/dev/nfs"
2628c2ecf20Sopenharmony_ci
2638c2ecf20Sopenharmony_ci   	Note that the user running this command will need to have
2648c2ecf20Sopenharmony_ci     	access to the floppy drive device, /dev/fd0
2658c2ecf20Sopenharmony_ci
2668c2ecf20Sopenharmony_ci     	For more information on syslinux, including how to create bootdisks
2678c2ecf20Sopenharmony_ci     	for prebuilt kernels, see https://syslinux.zytor.com/
2688c2ecf20Sopenharmony_ci
2698c2ecf20Sopenharmony_ci	.. note::
2708c2ecf20Sopenharmony_ci		Previously it was possible to write a kernel directly to
2718c2ecf20Sopenharmony_ci		a floppy using dd, configure the boot device using rdev, and
2728c2ecf20Sopenharmony_ci		boot using the resulting floppy. Linux no longer supports this
2738c2ecf20Sopenharmony_ci		method of booting.
2748c2ecf20Sopenharmony_ci
2758c2ecf20Sopenharmony_ci- Booting from a cdrom using isolinux
2768c2ecf20Sopenharmony_ci
2778c2ecf20Sopenharmony_ci     	When building kernels, an easy way to create a bootable cdrom that
2788c2ecf20Sopenharmony_ci     	uses isolinux is to use the isoimage target which uses a bzimage
2798c2ecf20Sopenharmony_ci     	image. Like zdisk and bzdisk, this target accepts the FDARGS
2808c2ecf20Sopenharmony_ci     	parameter which can be used to set the kernel command line.
2818c2ecf20Sopenharmony_ci
2828c2ecf20Sopenharmony_ci	e.g::
2838c2ecf20Sopenharmony_ci
2848c2ecf20Sopenharmony_ci	  make isoimage FDARGS="root=/dev/nfs"
2858c2ecf20Sopenharmony_ci
2868c2ecf20Sopenharmony_ci     	The resulting iso image will be arch/<ARCH>/boot/image.iso
2878c2ecf20Sopenharmony_ci     	This can be written to a cdrom using a variety of tools including
2888c2ecf20Sopenharmony_ci     	cdrecord.
2898c2ecf20Sopenharmony_ci
2908c2ecf20Sopenharmony_ci	e.g::
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci	  cdrecord dev=ATAPI:1,0,0 arch/x86/boot/image.iso
2938c2ecf20Sopenharmony_ci
2948c2ecf20Sopenharmony_ci     	For more information on isolinux, including how to create bootdisks
2958c2ecf20Sopenharmony_ci     	for prebuilt kernels, see https://syslinux.zytor.com/
2968c2ecf20Sopenharmony_ci
2978c2ecf20Sopenharmony_ci- Using LILO
2988c2ecf20Sopenharmony_ci
2998c2ecf20Sopenharmony_ci	When using LILO all the necessary command line parameters may be
3008c2ecf20Sopenharmony_ci	specified using the 'append=' directive in the LILO configuration
3018c2ecf20Sopenharmony_ci	file.
3028c2ecf20Sopenharmony_ci
3038c2ecf20Sopenharmony_ci	However, to use the 'root=' directive you also need to create
3048c2ecf20Sopenharmony_ci	a dummy root device, which may be removed after LILO is run.
3058c2ecf20Sopenharmony_ci
3068c2ecf20Sopenharmony_ci	e.g::
3078c2ecf20Sopenharmony_ci
3088c2ecf20Sopenharmony_ci	  mknod /dev/boot255 c 0 255
3098c2ecf20Sopenharmony_ci
3108c2ecf20Sopenharmony_ci	For information on configuring LILO, please refer to its documentation.
3118c2ecf20Sopenharmony_ci
3128c2ecf20Sopenharmony_ci- Using GRUB
3138c2ecf20Sopenharmony_ci
3148c2ecf20Sopenharmony_ci	When using GRUB, kernel parameter are simply appended after the kernel
3158c2ecf20Sopenharmony_ci	specification: kernel <kernel> <parameters>
3168c2ecf20Sopenharmony_ci
3178c2ecf20Sopenharmony_ci- Using loadlin
3188c2ecf20Sopenharmony_ci
3198c2ecf20Sopenharmony_ci	loadlin may be used to boot Linux from a DOS command prompt without
3208c2ecf20Sopenharmony_ci	requiring a local hard disk to mount as root. This has not been
3218c2ecf20Sopenharmony_ci	thoroughly tested by the authors of this document, but in general
3228c2ecf20Sopenharmony_ci	it should be possible configure the kernel command line similarly
3238c2ecf20Sopenharmony_ci	to the configuration of LILO.
3248c2ecf20Sopenharmony_ci
3258c2ecf20Sopenharmony_ci	Please refer to the loadlin documentation for further information.
3268c2ecf20Sopenharmony_ci
3278c2ecf20Sopenharmony_ci- Using a boot ROM
3288c2ecf20Sopenharmony_ci
3298c2ecf20Sopenharmony_ci	This is probably the most elegant way of booting a diskless client.
3308c2ecf20Sopenharmony_ci	With a boot ROM the kernel is loaded using the TFTP protocol. The
3318c2ecf20Sopenharmony_ci	authors of this document are not aware of any no commercial boot
3328c2ecf20Sopenharmony_ci	ROMs that support booting Linux over the network. However, there
3338c2ecf20Sopenharmony_ci	are two free implementations of a boot ROM, netboot-nfs and
3348c2ecf20Sopenharmony_ci	etherboot, both of which are available on sunsite.unc.edu, and both
3358c2ecf20Sopenharmony_ci	of which contain everything you need to boot a diskless Linux client.
3368c2ecf20Sopenharmony_ci
3378c2ecf20Sopenharmony_ci- Using pxelinux
3388c2ecf20Sopenharmony_ci
3398c2ecf20Sopenharmony_ci	Pxelinux may be used to boot linux using the PXE boot loader
3408c2ecf20Sopenharmony_ci	which is present on many modern network cards.
3418c2ecf20Sopenharmony_ci
3428c2ecf20Sopenharmony_ci	When using pxelinux, the kernel image is specified using
3438c2ecf20Sopenharmony_ci	"kernel <relative-path-below /tftpboot>". The nfsroot parameters
3448c2ecf20Sopenharmony_ci	are passed to the kernel by adding them to the "append" line.
3458c2ecf20Sopenharmony_ci	It is common to use serial console in conjunction with pxeliunx,
3468c2ecf20Sopenharmony_ci	see Documentation/admin-guide/serial-console.rst for more information.
3478c2ecf20Sopenharmony_ci
3488c2ecf20Sopenharmony_ci	For more information on isolinux, including how to create bootdisks
3498c2ecf20Sopenharmony_ci	for prebuilt kernels, see https://syslinux.zytor.com/
3508c2ecf20Sopenharmony_ci
3518c2ecf20Sopenharmony_ci
3528c2ecf20Sopenharmony_ci
3538c2ecf20Sopenharmony_ci
3548c2ecf20Sopenharmony_ciCredits
3558c2ecf20Sopenharmony_ci=======
3568c2ecf20Sopenharmony_ci
3578c2ecf20Sopenharmony_ci  The nfsroot code in the kernel and the RARP support have been written
3588c2ecf20Sopenharmony_ci  by Gero Kuhlmann <gero@gkminix.han.de>.
3598c2ecf20Sopenharmony_ci
3608c2ecf20Sopenharmony_ci  The rest of the IP layer autoconfiguration code has been written
3618c2ecf20Sopenharmony_ci  by Martin Mares <mj@atrey.karlin.mff.cuni.cz>.
3628c2ecf20Sopenharmony_ci
3638c2ecf20Sopenharmony_ci  In order to write the initial version of nfsroot I would like to thank
3648c2ecf20Sopenharmony_ci  Jens-Uwe Mager <jum@anubis.han.de> for his help.
365