Well hi all ... This is what I would have liked to find in the package to start out. It also contains some help on NFRRoot filesystem creation ... I believe it has been in discussion recently ... tell me if it is any help. If you think it is good,bad,worthwhile or useless tell me. Any kind of comments are welcome. Ciaps Dave
OK if you've got this far you have probably extracted the package with a command like $ tar xvzf etherboot-4XXX.tar.gz or some equivalent command If you plan to use the 3c905b, read 3c095b.txt first and note the workaround for the 8kB mapping problem. If you're not impatient you should read the documentation starting with index.html in top level of etherboot distribution if you have a browser, or doc/text/README.txt if you just have a plain text login. Otherwise go ahead ... you'll need root privileges for some steps. With etherboot package you also get a PORTION of the netboot package which you will use mainly for creating the bootimages for tftp downloading and booting (mknbi-OS, where OS is for the moment only dos and linux, respectively for creating OS bootimage). Change directory and descend into the netboot directory. $ cd netboot-0.8.1 Once there run configure $ ./configure If you do not get any errors go ahead and run make clean and make $ make clean ; make If you intend to install the package permanently run make install $ make install If you want to put things in a different place the simplest thing to do is to unpack things where you want them to be. Now it's time to set up your server which will supply kernel to diskless clients. This doc is there only to get you started so I'll only show you how to get it working using RARP, if you intend to use BOOTP or DHCP read the "BOOTP and DHCP Users" note at the end of this document if you already have BOOTP or DHCP working otherwise you should read dedicated documentation. Do not skip RARP configuration even if you intend to use BOOTP/DHCP ( as it wont hurt ) unless you know what you're doing. However a detailed description on howto setup BOOTP and DHCP is contained in the README.txt (Chapt. 3.3, 3.4) mentioned at the beginning of this document. Edit /etc/inetd.conf and make sure that the lines that contain tftp and rarp are not commented out. If you made changes to inetd.conf run init q $ init q On some distributions this, for some unknown reason, does not work so you'll haveto reboot. (For egsample on slackware 4.0 I hadto reboot as even kill -HUP 1 did not work) Make sure that tftp package is installed. This greatly depends on distribution so no hint is given. On many distributions (including slackware and RedHat) you get restricted tftp access to /tftpboot A problem now arises concerning the ability of people to download the passwd files that you put in your NFSRoot filesystems there. Some like to create a different directory /tftpdir and put kernels there. Personally I do not because I think that it does not solve the problem as you still have access to /tftpboot and all files contained there. In any case you should be careful of the passwd files you put in your NFSRoot filesystems. Make sure that your running kernel supports rarp $ rarp -a if not compile one and use it. Most distributions have default restricted tftp access in /tftpboot directory so make sure you have sucha a directory. $ ls /tftpboot if go ahead and create it. $ mkdir /tftpboot In this directory you will place the netboot image and the root filesystem for diskless client unless you're with the /tftpdir concern. Now it's time to compile a kernel for your diskless client. (if you're planning to boot dos diskless read netboot/doc/INSTALL and documentation in mknbi-dos) Discussing all the options available for a linux or unix kernel is out of the scope of this document so I'll only give you the essentials for starting and the options needed for etherboot. (if you don't already know ) $ cd /usr/src/linux $ make menuconfig make sure you enable the following: In NETWORKING OPTIONS you should include IP: Kernel level Autoconfiguration this will popup two sub menus one of which is RARP and must be set (or bootp if you intend to use it ... read the note at the end) this will allow you to set root nfs which you will find in FILESYSTEMS....NETWORKING FILESYSTEMS set NFS and this will popup ROOT NFS which must be set After having set up your kernel you may (newer kernels 2.2 will tell you to do or not to do so) need to run make dep and make clean. Finally you will run make zImage or make bzImage ( if your kernel is big) Now copy you newly created kernel in mknbi-linux (or wherever you choose too keep you netbooting kernels) directory giving it a meaningful name. For eg net_os_cpu (net_linux_intel). It is a good idea to keep a copy of your kernel because it is easier than you think to screw it up and then if you have no copy you have to recompile it. for convenience I'll call the directory that holds kernels ~netker $ cp arch/i386/boot/zImage ~netker/net_os_cpu Now change directory to mknbi-linux and create your net image $ mknbi ~netker/net_os_cpu-famyly -o /tftpboot/net_os_cpu.img For the next step you need to know the following 1)mac address of network device of your diskless client (MAC = XX:XX:XX:XX:XX:XX where XX is a hex two digit number eg 00:AB:0F:8C:D1:E9) 2)IP address you want to give your diskless client (eg 192.32.12.3) Link net image to kernel.IP (where IP is the IP address you choose in step 2) $ ln -s /tftpboot/net_os_cpu-famyly.img kernel.IP It is a good idea to have kernel.IP linked to net_os_cpu.img because it would save you a lot of space if you have many machines booting same kernel. make a rarp entry for your diskless client (where MAC is the mac address in step 1) $ rarp -s IP MAC Create a root filesystem for your client (read /usr/doc/howto/mini/NFS-Root* for details) and put it in a directory called IP (where IP is ip in step 2) under /tftpboot. Here is a brief help on what to put in your NFSRoot filesystem. The important things to have are: /bin /dev /etc /home /lib /mnt /proc /root /sbin /tmp /var /usr is also important but you probably prefer to mount that via NFS as it is usually very large. Another upper for mounting /usr via NFS is that you will probably need very little work on diskless clients of the same cpu family to run an X terminal. And here is a quick guide on how to put things in your NSFRoot Use a command like $ tar cvl /bin -O | tar xpC /tftpboot/IP -f - for creating /bin /etc /lib /root /sbin /var REMEMBER TO EDIT passwd in the newly created etc directory so that it is NOT a copy of server's passwd /dev should be copied by: $ cp -a /dev /tftpboot/IP/ Note that /dev/mouse, /dev/cdrom and /dev/modem are symlinks to actual devices ... make sure they suit client and not server. /mnt /tmp should be made empty and remember to create empty directory in /mnt for the filesystems you wish to mount. /home ... well that depends on what users you want to keep In short the root filesystem for diskless client should be in /tftpboot/IP Make sure /tftpboot/IP is accessible by your client. To do so see that /etc/exports contains a lines like: /tftpboot/IP IP /usr IP IP can be a list of IP's and should be preferred to network address. It is NUADVISABLE to export filesystems to whole networks ... if you intend to do so you should consider putting up a firewall on the server. Now it' time to compile a bootrom for your diskless client network card. Change directory to src-32 and edit Config and make sure you have the options CFLAGS+= -DRARP_NOT_BOOTP Before creating a bootrom image you may want to test with floppy if everything is OK so you can make card.fd0 ( where card is the name of your interface eg 3c509 or ne ). When you execute this command you should have a floppy in /dev/df0. $ make card.fd0 You're ready to go, put the floppy in your future diskless client and boot. If all goes well create a rom image using make card.rom (or card.lzrom for compressed image) You will need an eprom burner to burn your eprom or a FlashCard to put the rom image into. BOOTP and DHCP Users If you're interested in getting things to work with BOOTP/DHCP instead of RARP it is because you're already using them. If not, before going on, you should install them and read dedicated documentation on who to install and configure them as the help below is only an essential for etherboot. BOOTP: Make sure the bootps service is active in /etc/inetd.conf, Remember to run init q if you made changes to inetd.conf. Edit /etc/bootptab for some basic configuration. The essential pieces of information you need to put in bootptab are: 1. The domain name (DMN) of the machine. (eg xterm.ken.net.au) 2. The Ethernet (MAC) address of the network card. Note that in the bootptab file you will have to leave out the colons which are generally displayed in any representation of a MAC address. You generally the MAC address of your card from a sticker on the card, a configuration program for the card, or in the last resort, from watching the output of Etherboot or from the packets sent from the card when trying to boot, using the debug option of bootpd. (eg 08002BB7F380) 3. The name of the tagged image file, relative to the tftpdir directory. (net_os_cpu-famyly.img) (eg vmlinuz.xterm) 4. The IP (IP) address you intend to give it. (eg 192.168.26.100) 5. The IP addresses or domain name of your Domain-Name-Server. (eg 192.168.26.1=nameserver) Here is an example of a /etc/bootptab ___________________________________________________________________ .default:\ :ht=ethernet:\ :hd=/tftpdir:bf=null:\ :ds=nameserver:\ :hn:to=36000: xterm.ken.net.au:tc=.default:ha=08002BB7F380:ip=192.168.26.100:\ bf=vmlinuz.xterm ___________________________________________________________________ DHCP: Make sure you have the DHCP server running and NOT DHCP client demon. This is the roughly equivalent dhcpd.conf file to the above bootptab: ___________________________________________________________________ option domain-name "ken.net.au"; option domain-name-servers 192.168.26.1; option broadcast-address 192.168.26.255; use-host-decl-names on; subnet 192.168.26.0 netmask 255.255.255.0 { filename "/tftpdir/vmlinuz.xterm"; host xterm { hardware ethernet 08:00:2B:B7:F3:80; fixed-address xterm.ken.net.au; filename "/tftpdir/vmlinuz.xterm"; } } ___________________________________________________________________ You don't have to use fixed addresses, of course, but if you use variable addresses, then you have to deal with the resulting issues of NFS mounting.
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.