Penguin

Differences between version 3 and previous revision of HowToNFSRoot.

Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Friday, October 29, 2004 10:10:23 am by StuartYeates Revert
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:10 am by perry Revert
@@ -1,544 +1 @@
-  
-  
-  
-NFS-Root Mini-Howto  
-  
-  
-  
-----  
-  
-!!!NFS-Root Mini-Howto  
-  
-!!Andreas Kostyrka, andreas@ag.or.atV8, 8 August 1997  
-  
-  
-----  
-''This Mini-HOWTO tries explains how to setup a ``disc-less'' Linux  
-workstation, which mounts it's root filesystems via NFS.  
-The newest version of this Mini-Howto can always be found in  
-ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root or  
-on any sunsite mirror NEAR YOU.''  
-----  
-  
-  
-  
-  
-!!1. Copyright  
-  
-  
-*1.1 Contributors  
-  
-  
-  
-  
-  
-!!2. General Overview  
-  
-  
-  
-  
-!!3. Setup on the server  
-  
-  
-*3.1 Compiling the kernels  
-  
-*3.2 Creation of the root filesystem  
-  
-  
-  
-  
-  
-!!4. Booting the workstation  
-  
-  
-*4.1 Using a boot rom  
-  
-*4.2 Using a raw kernel disc  
-  
-*4.3 Using a bootloader & ''RARP''  
-  
-*4.4 Using a bootloader without ''RARP''  
-  
-  
-  
-  
-  
-!!5. Known problems  
-  
-  
-*5.1 /sbin/init doesn't start.  
-  
-*5.2 /dev troubles.  
-  
-  
-  
-  
-  
-!!6. Other topics  
-----  
-  
-!!1. Copyright  
-  
-  
-(c) 1996 Andreas Kostyrka (e9207884@student.tuwien.ac.at or  
-andreas@ag.or.at)  
-  
-  
-Unless otherwise stated, Linux HOWTO documents are copyrighted by their  
-respective authors. Linux HOWTO documents may be reproduced and distributed  
-in whole or in part, in any medium physical or electronic, as long as  
-this copyright notice is retained on all copies. Commercial redistribution  
-is allowed and encouraged; however, the author would like to be notified of  
-any such distributions.  
-  
-  
-All translations, derivative works, or aggregate works incorporating  
-any Linux HOWTO documents must be covered under this copyright notice.  
-That is, you may not produce a derivative work from a HOWTO and impose  
-additional restrictions on its distribution. Exceptions to these rules  
-may be granted under certain conditions; please contact the Linux HOWTO  
-coordinator at the address given below.  
-  
-  
-In short, we wish to promote dissemination of this information through as  
-many channels as possible. However, we do wish to retain copyright on the  
-HOWTO documents, and would like to be notified of any plans to redistribute  
-the HOWTOs.  
-  
-  
-If you have questions, please contact Andreas Kostyrka  
-<mailto:andreas@ag.or.at>, the author of this mini-HOWTO, or  
-Tim Bynum, the Linux HOWTO coordinator, at  
-<mailto:linux-howto@sunsite.unc.edu> via email.  
-  
-  
-  
-  
-!!1.1 Contributors  
-  
-  
-  
-  
-  
-  
-*Avery Pennarun <apenwarr@foxnet.net> (how to boot without __LILO__)  
-*  
-  
-*  
-Ofer Maor <ofer@hadar.co.il> (providing a better mini howto about setting up discless workstations.)  
-*  
-  
-*Christian Leutloff <leutloff@sundancer.tng.oche.de> (providing infos about netboot.)  
-*  
-  
-  
-  
-  
-----  
-  
-!!2. General Overview  
-  
-  
-Generally speaking there are the following problems for the  
-workstation:  
-  
-  
-*It must find out it's own IP-address, and if needed also the  
-rest of the Ethernet configuration.  
-*  
-  
-*It must know the ''NFS''-server and the mount path to it's root  
-filesystem.  
-*  
-  
-  
-  
-The current implementation of ''NFSROOT'' in the Linux kernel (as of  
-1.3.7x) allows for  
-the following ``solutions'':  
-  
-  
-*The IP-address may be discovered by ''RARP'', or the full  
-ethernet configuration may be passed to the kernel via kernel  
-parameters by __LILO__ or __LOADLIN__.  
-*  
-  
-*The ''NFS''-path to mount can be passed via kernel  
-parameters. If this is not done, the kernel assumes the  
-''RARP''-server also as ''NFS''-server, and uses compiled in default  
-for the path part. (current default value in the kernel:  
-/tftpboot/<''IP-address of the machine''>.)  
-*  
-  
-*The client configuration may be discovered by ''BOOTP''.  
-*  
-  
-  
-  
-Before starting to setup a discless enviroment, you should decide if  
-you will be booting via __LILO__ or __LOADLIN__. The advantage of  
-doing so is flexibility, the disadvantage is speed. Booting a Linux  
-kernel without __LILO__ is faster. This may or may not be a  
-consideration.  
-  
-  
-  
-----  
-  
-!!3. Setup on the server  
-  
-!!3.1 Compiling the kernels  
-  
-  
-  
-''RARP'' support in the kernel of the server will probably be a good  
-idea. You must have it if you will boot without kernel parameters. On  
-the other hand it doesn't help you, if the client isn't on the same  
-subnet than the server.  
-  
-  
-The kernel for the workstation needs the following as a minimum set  
-compiled in:  
-  
-  
-* ''NFS''-filesystem compiled in. (It doesn't need to have  
-''ext2''-support compiled in, a module suffices.)  
-*  
-  
-* ``Root on NFS'' must be enabled.  
-*  
-  
-* The Ethernet driver for the network card of the workstation  
-must be compiled in.  
-*  
-  
-* Depending upon your needs you may have to include ''RARP'' or  
-''BOOTBP'' support for NFS-Root. (By this I mean the questions that  
-are asked after the NFS question in make config.)  
-*  
-  
-  
-  
-If the workstation will be booted without kernel parameters, you need  
-also to set the root device to :255. Do this by creating a dummy  
-device file with mknod /dev/nfsroot b 0 255. After having  
-created such a device file, you can set root device of the kernel  
-image with rdev <''kernel-image''> /dev/nfsroot.  
-  
-!!3.2 Creation of the root filesystem  
-  
-  
-!Copying the filesystem  
-  
-  
-'' Warning: while these instruction might work for you, they are by  
-no means sensefull in a production enviroment. For a better way to  
-setup a root filesystem for the clients, see the NFS-Root-Client mini  
-howto by Ofer Maor <ofer@hadar.co.il>.''  
-  
-  
-After having decided where to place the root tree, create it with  
-(e.g.) mkdir -p <''directory''> and  
-tar cClf / - | tar xpCf <''directory''> -.  
-  
-  
-If you boot your kernel without LILO, then the rootdir has to be  
-/tftpboot/<''IP-address''>. If you don't like it, you  
-can change it in the top Makefile in the kernel sources, look for a line like:  
-NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\""  
-If you change this, you have to recompile the kernel.  
-  
-  
-  
-  
-!Changes to the root filesystem  
-  
-  
-Now trim the unneeded files, and check the /etc/rc.d scripts. Some  
-important points:  
-  
-  
-* One important thing is eth0 setup. The workstation comes up  
-with a, at least partially, setup eth0. Setting up the  
-IP-address of the workstation to the the IP-Address of the server  
-is not considered a clever thing to do. (As it happened to the author  
-on one of his early attempts.)  
-  
-*  
-  
-*Another point is the /etc/fstab of the workstation. It should  
-be setup for nfs filesystems.  
-  
-*  
-  
-* __WARNING__: Don't confuse the server root filesystem and the  
-workstation root filesystem. (I've already patched up a  
-rc.inet1 on the server, and wondered why the workstation still  
-didn't work.)  
-*  
-  
-  
-  
-  
-  
-!Exporting the filesystem  
-  
-  
-Export the root dir to the work station. See exports(5). You  
-most likely will have to restart the nfsd/mountd after this change.  
-Under !RedHat this can easily be done by typing  
-/etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start .  
-  
-  
-  
-  
-!RARP setup  
-  
-  
-Setup the ''RARP'' somewhere on the net. If you boot without a  
-nfsroot parameter, the ''RARP'' server has to be the ''NFS''  
-server. Usually this will be the ''NFS'' server. To do this, you  
-will need to run a kernel with ''RARP'' support.  
-  
-  
-To do this, execute (and install it somewhere in /etc/rc.d of  
-the server!):  
-  
-  
-/sbin/rarp -s <''ip-addr''> <''hardware-addr''>  
-  
-  
- where  
-  
-; __ip-addr__:  
-  
-is the IP address of the workstation, and  
-; __hardware-addr__:  
-  
-is the Ethernet address of the network card of  
-the workstation.  
-  
-  
-  
-example: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12  
-  
-  
-You can also use a symbolic name instead of the IP-address, as  
-long the server is able to find out the IP-address. (/etc/hosts  
-or ''DNS'' lookups)  
-  
-  
-  
-  
-!BOOTP setup  
-  
-  
-For ''BOOTP'' setup you need to edit /etc/bootptab. Please  
-consult the ''bootpd(8)'' and ''bootptab(5)'' man pages.  
-  
-  
-  
-  
-!Finding out hardware addresses  
-  
-  
-I don't know the hardware address! How can I find it out?  
-  
-  
-* Boot the kernel disk you made, and watch for the line where  
-the network card is recognized. It usually contains 6 hex  
-bytes, that should be the address of the card.  
-*  
-  
-* Boot the workstation with some OS with TCP/IP networking  
-enabled. Then ping the workstation from the server. Look in  
-the ARP-cache by executing:  
-/sbin/arp -a  
-*  
-  
-  
-  
-  
-----  
-  
-!!4. Booting the workstation  
-  
-  
-  
-  
-!!4.1 Using a boot rom  
-  
-  
-  
-As I have not used such a beast myself yet, I can give you only the  
-following tips (courtesy of Christian Leutloff <leutloff@sundancer.tng.oche.de>):  
-  
-  
-* You can't use ``normal'' bootroms.  
-*  
-  
-* There is a netboot packet by Gero Kuhlmann, that provides  
-for bootroms for Linux, and further information. netboot is  
-available from the local Linux mirror, or as a Debian package  
-(netboot-.4).  
-*  
-  
-* Read the documentation coming with your boot rom carefully.  
-*  
-  
-* You probably will have to enable the tftpd on the server, but  
-this depends upon your boot rom's way of loading the kernel.  
-*  
-  
-* ''Any informations on bootrom vendors of these Linux variety,  
-mentioned above, as not everybody has access to prom burner :(  
-(especially in europe, as I'm located there.) welcome, I'll include  
-them then here.''  
-*  
-  
-  
-!!4.2 Using a raw kernel disc  
-  
-  
-  
-If you have exported the root filesystem with the correct name for the  
-default naming and your ''NFS'' server is also the ''RARP'' server  
-(which implies that the boxes are on the same subnet.), than you can  
-just boot the kernel by cating it to a disc. (You have to set the  
-root device in the kernel to :255.) This assumes, that the root  
-directory on the server is /tftpboot/''IP-Address''  
-(this value can be changed when compiling the kernel.)  
-  
-!!4.3 Using a bootloader & ''RARP''  
-  
-  
-  
-Give the kernel all needed parameters when booting, and add  
-nfsroot=<''server-ip-addr''>:<''/path/to/mount''>  
-where ''server-ip-addr'' is the IP-address of your NFS-server, and  
-''/path/to/mount'' is the path to the root directory.  
-  
-  
-Tips:  
-  
-  
-* When using __LILO__ consider using the ``lock'' feature: Simply  
-type in once all the correct parameters and add  
-``lock''. Next time when booting let LILO timeout.  
-*  
-  
-* When generating a workstation specific boot disk, you can  
-also use the append= feature in lilo.conf.  
-*  
-  
-  
-!!4.4 Using a bootloader without ''RARP''  
-  
-  
-  
-In addition to nfsroot give a  
-nfsaddrs=<''wst-IP''>:<''srv-IP''>:<''gw-IP''>:<''netm-IP''>:<''hostname''>  
-commandline argument for the kernel. The kernel will setup eth0  
-with the given parameters:  
-  
-; __wst-IP__:  
-  
-machine's IP-Address  
-; __srv-IP__:  
-  
-NFS-server IP-Address  
-; __gw-IP__:  
-  
-gateway  
-; __netm-IP__:  
-  
-netmask  
-; __hostname__:  
-  
-machine name  
-  
-----  
-  
-!!5. Known problems  
-  
-  
-  
-  
-!!5.1 /sbin/init doesn't start.  
-  
-  
-  
-A popular problem with /sbin/init is, that some (at least) current  
-distributions come with /sbin/init dynamically linked. So you have to provide  
-a correct /lib setup to the client. One easy thing one could try is replacing  
-/sbin/init (for the client) with a statically linked ``Hello World'' program.  
-This way you know if it is something more basic, or ``just'' a problem with  
-dynamic linking.  
-  
-!!5.2 /dev troubles.  
-  
-  
-  
-  
-  
-  
-If you get some garbled messages about ttys when booting, then you  
-should run a MAKEDEV from the client in the /dev directory. There are  
-rumors that this doesn't work with certain server oses which use  
-64-bit dev numbers, should you run into this, please mail me with which os  
-you have the troubles. A potential solution would be to create a small /dev  
-ram disc early in the boot process, and reinstall the device nodes each time.  
-  
-  
-  
-----  
-  
-!!6. Other topics  
-  
-  
-  
-  
-  
-* There is BOOTP client:  
-ftp://sunsite.unc.edu/system/Network/admin/bootpc.v045.tgz  
-  
-  
-With initrd (which is included in Linux 2.), it could be made to work  
-for diskless stations quite nicely. initrd is actually always an  
-advanced option for more customized setups.  
-  
-  
-  
-  
-*  
-  
-* For plain bootpd based boots this is actually probably not  
-needed as Linux 2.0 contains also the option to use BOOTP instead of  
-RARP. (To be more precise, you can compile both in the kernel, and the  
-faster response wins.)  
-  
-*  
-  
-* In the Documentation directory of kernel source there is a file  
-documenting NFS-Root systems.  
-  
-*  
-  
-* There is a patch floating around, that allows for swapping over  
-NFS. It was send to me (during a private high workload phase), but I  
-somehow managed to loose the mail. :(  
-  
- You can get it probably from  
-http://www.linuxhq.com/ in the unofficial patches section.  
-  
-  
-  
-  
-*  
-  
-* My PGP public key can be fetched by fingering andreas@ag.or.at.  
-The fingerprint is: F1 F7 43 D5 07 C4 6C 87 BF 6B 33 A2 2C EE 5A F9.  
-  
-*  
-  
-----  
+Describe [HowToNFSRoot] here.