Netboot Mailing List (by thread)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A quickstart for etherboot (and NFSRoot filesystem creation)



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.