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