266 lines
8.3 KiB
Text
266 lines
8.3 KiB
Text
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
|
<!ENTITY base CDATA "../..">
|
|
<!ENTITY date "$Date: 1996-12-28 23:36:52 $">
|
|
<!ENTITY title "Diskless X Server: a how to guide">
|
|
<!ENTITY copyright " ">
|
|
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
|
]>
|
|
<!-- $Id: disklessx.sgml,v 1.3 1996-12-28 23:36:52 mpp Exp $ -->
|
|
|
|
<html>
|
|
&header;
|
|
|
|
<H3>By Jerry Kendall</H3>
|
|
<H3>(<a href="mailto:jerry@kcis.com">jerry@kcis.com</a>)</H3>
|
|
|
|
<p>With the help of some 'friends' on the FreeBSD-hackers list, I have
|
|
been able to create a diskless X terminal... The creation of the X terminal
|
|
required first creating a diskless system with minimal utilities mounted
|
|
via NFS. These same steps were used to create 2 separate diskless systems.
|
|
The first is 'altair.kcis.com'. A diskless X terminal that I run on my
|
|
old 386DX-40. It has a 340Meg hard disk but, I did not want to change it.
|
|
So, it boots from 'antares.kcis.com' across a Ethernet. The second system
|
|
is a 486DX2-66. I setup a diskless FreeBSD (complete) that uses no local
|
|
disk. The server in that case is a Sun 670MP running
|
|
SunOS 4.1.3. The same setup configuration was needed for both.</p>
|
|
|
|
<hr>
|
|
NOTE: I am sure that there is stuff that needs to be added to this. Please send me any comments....
|
|
<hr>
|
|
|
|
<h2>Creating the boot floppy (On the diskless system)</h2>
|
|
|
|
<p>Since the network boot loaders will not work with some of
|
|
the TSR's and such that MS-DOS uses, it is best to create
|
|
a dedicated boot floppy OR, if you can, create an MS-DOS menu
|
|
that will (via the config.sys/autoexec.bat files) ask what
|
|
configuration to load when the system starts. The later is the
|
|
method that I use and it works great. My MS-DOS (6.x) menu is below.</p>
|
|
<pre>
|
|
---- config.sys ----
|
|
[menu]
|
|
menuitem=normal, normal
|
|
menuitem=unix, unix
|
|
[normal]
|
|
....
|
|
normal config.sys stuff
|
|
...
|
|
[unix]
|
|
----
|
|
|
|
---- autoexec.bat ----
|
|
@ECHO OFF
|
|
goto %config%
|
|
|
|
:normal
|
|
...
|
|
normal autoexec.bat stuff
|
|
...
|
|
goto end
|
|
|
|
:unix
|
|
cd \netboot
|
|
nb8390.com
|
|
|
|
:end
|
|
----</pre>
|
|
|
|
<h2>Getting the network boot programs (On the server)</h2>
|
|
|
|
<p>Compile the 'net-boot' programs that are located in
|
|
/usr/src/sys/i386/boot/netboot. You should read the comments
|
|
at the top of the makefile. Adjust as required. !!!! make a
|
|
backup of the original in case it gets fobar'd !!! When the build
|
|
is done, there should be 2 MS-DOS executables, 'nb8390.com' and
|
|
'nb3c509.com'. One of these two programs will be what you need
|
|
to run on the diskless server. It will load the kernel from the
|
|
boot server. At this point, put both programs on the MS-DOS
|
|
boot floppy created earlier.
|
|
|
|
<h2>Determine which program to run (On the diskless system)</h2>
|
|
|
|
<p>If you know the chipset that your Ethernet adapter uses, this is
|
|
easy. If you have the NS8390 chipset, or a NS8390 based chipset,
|
|
use NB8390.COM. If you have a 3Com 509 based chipset, use the
|
|
NB3C509.COM boot program. If you are not sure which you have,
|
|
try using one, if it says 'No adapter found', try the other.
|
|
Beyond that, you are pretty much on your own.
|
|
|
|
<h2>Booting across the network</h2>
|
|
|
|
<p>Boot the diskless system with out any config.sys/autoexec.bat
|
|
files. try running the boot program for your Ethernet adapter.</p>
|
|
<pre>
|
|
My Ethernet adapter is running in WD8013 16bit mode so
|
|
I run NB8390.COM
|
|
|
|
C:> cd \netboot
|
|
C:> nb8390
|
|
|
|
Boot from Network (Y/N) ? Y
|
|
|
|
BOOTP/TFTP/NFS bootstrap loader ESC for menu
|
|
|
|
Searching for adapter..
|
|
WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66
|
|
|
|
Searching for server..</pre>
|
|
|
|
<p>At this point, my diskless system is trying to find a machine to act
|
|
as a boot server. Make note of the addr line above, you will need this
|
|
number later. Reset the diskless system and modify your config.sys and
|
|
autoexec.bat files to do these steps automatically for you. Perhaps in
|
|
a menu. If you had to run 'nb3c509.com' instead of 'nb8390.com' the
|
|
output is the same as above. If you got 'No adapter found' at the
|
|
'Searching for adapter..' message, verify that you did indeed set the
|
|
compile time defines in the makefile correctly.</p>
|
|
|
|
<h2>Allowing systems to boot across the network (On the
|
|
server)</h2>
|
|
|
|
<p>Make sure the /etc/inetd.conf file has entries for tftp and bootps.
|
|
Mine are listed below:</p>
|
|
<pre>
|
|
---- /etc/inetd.conf ----
|
|
tftp dgram udp wait nobody /usr/libexec/tftpd tftpd
|
|
#
|
|
# Additions by who ever you are
|
|
bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab
|
|
----
|
|
</pre>
|
|
<p>If you have to change the /etc/inetd.conf file, send a HUP signal to
|
|
inetd. To do this, get the process ID of inetd with 'ps -ax | grep
|
|
inetd | grep -v grep'. Once you have it, send it a HUP signal. Do this
|
|
by 'kill -HUP <pid>'. This will force inetd to re-read its config file.</p>
|
|
|
|
<p>Did you remember to note the 'addr' line from the output of the boot
|
|
loader on the diskless system???? Guess what, here is where you need it.</p>
|
|
|
|
<p>Add an entry to /etc/bootptab (maybe creating the file). It should be
|
|
laid out identical to this:</p>
|
|
|
|
<pre>
|
|
altair:\
|
|
:ht=ether:\
|
|
:ha=004001432666:\
|
|
:sm=255.255.255.0:\
|
|
:hn:\
|
|
:ds=199.246.76.1:\
|
|
:ip=199.246.76.2:\
|
|
:gw=199.246.76.1:\
|
|
:vm=rfc1048:
|
|
|
|
The lines are as follows:
|
|
'altair' the diskless systems name without the domain name.
|
|
'ht=ether' the hardware type of 'ethernet'.
|
|
'ha=004001432666' the hardware address (the number noted above).
|
|
'sm=255.255.255.0' the subnet mask.
|
|
'hn' tells server to send client's hostname to the client.
|
|
'ds=199.246.76.1' tells the client who the domain server is.
|
|
'ip=199.246.76.2' tells the client what it's IP address is.
|
|
'gw=199.246.76.1' tells the client what the default gateway is.
|
|
'vm=...' just leave it there...
|
|
</pre>
|
|
<p>NOTE:
|
|
****** Be sure to setup the IP addresses correctly, the addresses
|
|
above are my own......</p>
|
|
|
|
<p>Create the directory '/tftpboot' on the server it will contain the
|
|
configuration files for the diskless systems that the server will
|
|
serve. These files will be named 'cfg.<ip>' where <ip> is the IP
|
|
address of the diskless system. The config file for 'altair' is
|
|
/tftpboot/cfg.199.246.76.2. The contents is:</p>
|
|
|
|
<pre>
|
|
---- /tftpboot/cfg.199.246.76.2 ----
|
|
rootfs 199.246.76.1:/DiskLess/rootfs/altair
|
|
hostname altair.kcis.com
|
|
----
|
|
</pre>
|
|
<p>The line 'hostname altair.kcis.com' simply tells the diskless
|
|
system what its fully qualified domain name is.</p>
|
|
|
|
<p>The line 'rootfs 199.246.76.1:/DiskLess/rootfs/altair' tells the
|
|
diskless system where its NFS mountable root filesystem is located.</p>
|
|
|
|
<p>NOTE:!!!!! The NFS mounted root filesystem will be mounted READ ONLY.</p>
|
|
|
|
<p>The hierarchy for the diskless system can be re-mounted allowing
|
|
read-write operations if required.</p>
|
|
|
|
<p>I use my spare 386DX-40 as a dedicated X terminal...</p>
|
|
|
|
<p>The hierarchy for 'altair' is:</p>
|
|
|
|
<pre>
|
|
/
|
|
/bin
|
|
/etc
|
|
/tmp
|
|
/sbin
|
|
/dev
|
|
/dev/fd
|
|
/usr
|
|
/var
|
|
/var/run
|
|
</pre>
|
|
|
|
<p>The actual list of files is:</p>
|
|
|
|
<pre>
|
|
-r-xr-xr-x 1 root wheel 779984 Dec 11 23:44 ./kernel
|
|
-r-xr-xr-x 1 root bin 299008 Dec 12 00:22 ./bin/sh
|
|
-rw-r--r-- 1 root wheel 499 Dec 15 15:54 ./etc/rc
|
|
-rw-r--r-- 1 root wheel 1411 Dec 11 23:19 ./etc/ttys
|
|
-rw-r--r-- 1 root wheel 157 Dec 15 15:42 ./etc/hosts
|
|
-rw-r--r-- 1 root bin 1569 Dec 15 15:26 ./etc/XF86Config.altair
|
|
-r-x------ 1 bin bin 151552 Jun 10 1995 ./sbin/init
|
|
-r-xr-xr-x 1 bin bin 176128 Jun 10 1995 ./sbin/ifconfig
|
|
-r-xr-xr-x 1 bin bin 110592 Jun 10 1995 ./sbin/mount_nfs
|
|
-r-xr-xr-x 1 bin bin 135168 Jun 10 1995 ./sbin/reboot
|
|
-r-xr-xr-x 1 root bin 73728 Dec 13 22:38 ./sbin/mount
|
|
-r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local
|
|
-r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV
|
|
</pre>
|
|
<p>Don't forget to 'MAKEDEV all' in the 'dev' directory.</p>
|
|
|
|
<p>My /etc/rc for 'altair' is:</p>
|
|
|
|
<pre>
|
|
#!/bin/sh
|
|
#
|
|
PATH=/bin:/sbin
|
|
export PATH
|
|
#
|
|
# configure the localhost
|
|
/sbin/ifconfig lo0 127.0.0.1
|
|
#
|
|
# configure the ethernet card
|
|
/sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
|
|
#
|
|
# mount the root filesystem via NFS
|
|
/sbin/mount antares:/DiskLess/rootfs/altair /
|
|
#
|
|
# mount the /usr filesystem via NFS
|
|
/sbin/mount antares:/DiskLess/usr /usr
|
|
#
|
|
/usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair > /dev/null 2>&1
|
|
#
|
|
# Reboot after X exits
|
|
/sbin/reboot
|
|
#
|
|
# We blew up....
|
|
exit 1
|
|
</pre>
|
|
|
|
<hr>
|
|
<p>Any comments and ALL questions welcome....</p>
|
|
|
|
<address>
|
|
Jerry Kendall<br>
|
|
<a href="mailto:jerry@kcis.com">jerry@kcis.com</a>
|
|
</address>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|