Problems installing a bootp server

Hi

I want to gather some embedded developing experience by using an old pc as a target and my laptop with SuSE Linux as a development host. I want to load the root fs on the target with nfs. My tutorial book (basing on a very old 2.2.19 kernel) tells me to configure the bootp server in the /etc/inetd.conf. I didn't find any bootps executable on my SuSE 9.1 installation. Therefore I tried to install the bootp-DD2 with YaST. But this did not install any executable. It only installed some files in the /usr/share/doc/bootp-DD2 directory. There also lack a lot of files mentioned in the README within this directory, as e.g. the makefile. Do I really first have to build the bootp-DD2 or did I fail installing with YaST (I checked the box: automatic check for dependencies)?

Furthermore the tutorial tells me bootp is searching for the ip configurations in the /etc/bootptab that is also missing on my SuSE installation. Any suggestions or guidance for a good short primer for bootp, nfs, better dedicated discussion groups ... ?

TIA Hans-Joerg

Reply to
Hans-Joerg Wagner
Loading thread data ...

I would suggest to put etherboot on your target.... There is plenty of documentation on the net, and it is simple to set up.

best regards Wolfgang

Reply to
Wolfgang Mües

Thanks Wolfgang

but as I am a very newbie, I prefer to stay step by step with my tutorial labs. But if nobody has other ideas I will be forced to use your recommendation.

BTW: Doesn't etherboot to be put on the host, if the target has to catch its fs over nfs?

TIA Hans-Joerg

Reply to
Hans-Joerg Wagner

You put the etherboot sources on the host and compile them to create an etherboot binary which is suitable for your target. However, for common configurations (such as your "old PC") you can quite conveniently configure and download a suitable etherboot image online (just go to

formatting link
The easiest way to use etherboot with an old PC is to create a floppy boot image so that the PC loads etherboot from floppy.

Note that etherboot has nothing to do with the filesystem: it is only responsible for loading a kernel via network, similar to the way LILO or GRUB load the kernel from harddisk. How the kernel accesses its root FS after being loaded is entirely up to that the kernel.

The procedure is roughly as follows:

- The target wakes up from reset or power on. After doing its initialization stuff (BIOS), it runs the etherboot program.

- Etherboot only knows the NIC's MAC address. It broadcasts BOOTP and/or DHCP (depending on how etherboot was configured) requests on the network.

- This is where your hotst's bootpd enters the picture: in response to these BOOTP requests from the target, a bootp server checks its database (the /etc/bootptab file) for an entry matching the MAC address of the target that issued the request.

- if it finds a matching entry, it sends the network configuration info attached to it to the target. This info contains a lot of tags, many of which are optional ("man bootptab" for details). The info however must be sufficient for the target to configure its network interface (i.e. IP address, mask, gateway, ...) and to request a boot file (IP/hostname of TFTP server, location of boot file on that server ...).

- With that information, the etherboot program on the target configures its network interface and then sends TFTP requests to its designated TFTP server to load the designated boot file (containing the Linux kernel).

- After the boot file was loaded to RAM, etherboot passes control to it.

Note that the DHCP protocal is a superset of BOOTP, so you could as well set up a DHCP server instead of a BOOTP one (this is probably the reason why SuSE do not seem to provide a functional BOOTP server package). Both these protocols are only responsible for passing network configuration parameters to the target upon request. The actual boot is then done via TFTP (which means that in addition to a BOOTP or DHCP server, you also need to set up a TFTP server).

Once the target has successfully booted the kernel, that kernel needs to mount a root filesystem. For a diskless system, this can either be an NFS filesystem (which would imply that you also need to run an NFS server), or it can be an initial RAMDISK image which was booted along with the kernel image.

Also see the mknbi manpage. If it is missing you need to install that tool as well.

Rob

--
Robert Kaiser                     email: rkaiser AT sysgo DOT com
SYSGO AG                          http://www.elinos.com
Klein-Winternheim / Germany       http://www.sysgo.com
Reply to
Robert Kaiser

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.