              Diskless X-window Toolkit (DXT) v2.1 (97/06/14)
              ===============================================
               by Roman Dolejsi, (c) 1997 roman@sorry.vse.cz
               ---------------------------------------------
            WARNING: This package is not meant for Linux NOVICES!

History saga
------------
  Two years ago (1995) there were some trends in implementing technology of
mounting Linux's root directory remotely via NFS (NFS-root). In those times
of Linux 1.2.x I have decided to try to make complete net-booted linux
machine which would not need any bit of local storages (hard/floppy disks).
  After some week of tweaking I've got into the stage where I've been
running local machine with telnet daemon and login possibilities. I've
tested it a lot and realized that on 4MB machine without swap file (which
I can't have on diskless system) I have no chance to do anything more than
simple 'ls' or so.
  Instead of standalone server I have decided to try to make a dumb system
which will run telnet client to some 'real' server only (ie. no services, no
local servers...). That took me no time for implementation and I finally had
functional mechanism for starting linux, mounting remote root and starting
telnet client to it's dialog line.
  Since then I have decided to try to make diskless X-window booting based
on freely available XFree86 X-servers. The mechanisms were absolutely same
as for telnet client so the acceptable configuration was available in a while.
  Because of the technology of the diskless booting I was able to boot ONE
machine at a time with only one specific hardware configuration, which was
not what I wanted...
  The goal for further work was to make a bootable X-windows for dozens of
configurations and legions of computers running x-win simultaneously all
from one server.
  First of all I had to separate directory tree for every computer, every
computer had pre-determined configuration in it's own directory determined
via computer's IP address. With this I lived for about one year and moreless
successfully managed about 150 computers and their configurations.
  But then, my campus has been connected with fast line to the rest of the
world and I had to face big problem: how to manage about 1000 computers from
the rest of the university ? I had to make unified booting tree with somewhat
unified configuration mechanisms.
  After a day of hard work I had one r/w tree for all computers, every computer
had it's temporary directory in /tmp/[IPnumber]. Computer configuration was
selected by some DOS-program and then used in linux. Everything worked fine
for another half a year.
  Then I decided to mount a ramdisk in /tmp - since this step, all distribution
requires R/O NFS services only, what's a definitely a big jump in server's
security...
  From this point I've been thrown in several weeks of work on expanding
toolkit capabilities and generality because of the substantial popularity
which it got from users.
  During those weeks, user-interface based on 'dialog' utility and other
features have been changed, improved and added rapidly and now you have nearly
complete powerfull system for your daily use, still very generic and quite
easily configurable.


Description & current status
----------------------------
  This is a package for installing, managing and running diskless Linux
clients for remote X-window and telnet access to unix hosts. It has these
features:

* menu driven
* X window available on diskless clients
* telnet available on diskless clients
* dynamically allocated Xwin & telnet consoles (std. up to 16)
* text console & Xwin desktop cut & paste support via mouse
* runtime changeable text screen size (80x25..132x60)
* runtime selectable Xwindow desktop color depth
* Network Audio System (NAS) and Rplay support
* multilingual menu support (currently english and czech language only)
* runtime autodetectable client configuration
* IP dependend runtime configuration via configuration table
* command line dependend configuration
* runtime changeable configuration
* all booted from R/O filesystem in about 3.5MB for all clients!!


Requirements
------------
  This part discuss each part of the system required for running package...
 
* functional network (theretically also PLIP is possible)

* Linux (maybe another flavor of UN*X) server
  - with NFS daemons running (rpc.portmap, rpc.mountd, rpc.nfsd)

* networked client
  - some computer with at least 4MB RAM connected to the server (via network)
  - must be able to do 'loadlin' - no WinNT cmdline nor Win95 dos-shell,
    pure DOS is the best (ie. RPL-booted Netware client etc..)
  - you can probably do straight linux-booted client via BOOTP/TFTP technology
    (not discussed here, get etherboot package and try yourself)

* this package

* recent distribution of XFree
  - suggested is XFree version 3.3 (although tests were made also on older
    versions)


Package Contents
----------------
  In this package you will find these files:

  readme             - this file
  xfreelist          - list of files and dirs needed from XFree86 distribution
  client/l.exe       - loadlin for loadling linux kernel from DOS environment
  client/kernel      - client's generic kernel available for immediate use
  client/xserver.bat - booting script example
  serverside.tar     - archive of the /dless tree
  patches/*          - various patches to used utilities


Client part installation
------------------------
  To run linux on your client you need a kernel for him. I suggest compiling
the most generic kernel you can with support for 386+, netcards around you
(WD80x3, NE2k, 3com, etc..), TCP/IP, !Ramdisk!, Mouses (Serial, PS/2), NFS,
NFS-root (BOOTP/RARP), Ext2fs. If you are planning to read specific configs
from client's local hard drive, you have to compile in also msdosfs.
  One of the possible kernels is included with this package, you can found
it in location client/kernel. It's Linux kernel 2.0.30 with above configuration
and in most cases it will fit your needs. However, it doesn't contain any sound
support and if you have sound card on your client and want network audio, you
have to compile kernel for yourself.
  Copy your kernel together with other tools from client-side directory to
your floppy/netware path/(other booting place of your client).
  You should have there l.exe (linux loader), your kernel and file named
xserver.bat, which is the starting file with required parameters. These
specify:
  1) booting type
    - parameter root=nfs
  2) from which server and which directory you will boot linux
    - parameter nfsroot=serverIP:/path
Optionally you can also specify other IP numbers in this format:
    - parameter nfsaddrs=clientIP:serverIP:gateway:netmask
(but this is not needed if you have BOOTP/RARP server on the network with
record for you)

  Often, your command line will look like this:
              l kernel root=nfs nfsroot=myserver.mydomain:/dless


Server part installation
------------------------
  Server part is much more complex and harder than the client installation.

a) -= file copy procedure =-
  First of all decide where you would like to have your diskless directory
tree. Nice directory is /dless, tar xvf there files from serverside.tar
archive. From here now, all remarks in documentation about this newly
created server-side directory will be discussed as /dless directory.
  You also have to include this directory in export table of your NFS
server, which often reside in /etc/exports file. Put there this line:
		/dless		(ro)
After this is done, restart NFS server.
  Ok, now - for the possibility of starting X-windows, you need X-windows
package. You may find one at ftp://ftp.xfree86.org/pub/XFree86/3.3.
  What you will need from that package is listed in the xfreelist.
All these files put either in /dless/usr/X11R6 or somewhere else. If you put
it in other directory than the standard one, you have to:
  1) include this directory in /etc/exports and restart NFS daemon
  2) uncomment mount line in /dless/etc/xrc and modify to your needs

  After these steps you should be able to boot client and get into main menu.
But don't try anything more yet..

b) -= default configuration change =-
  Now - the most problematic part - configuration....

Look into file /dless/etc/resolv.conf and put there your local net name and
your Domain Name Server (DNS). If you don't know what this means, simply
copy this file from your /etc.
Look into file /dless/etc/xrc and check whether the Xwin mounting command is
required or not and whether it is set right.
Look at the beginning of the file /dless/etc/xmain and change default
configuration to fit your needs. Note that adding more max consoles usually
requires more memory, 16 consoles (default) fit in 8MB RAM.
Look at /dless/etc/conf/base and correct Font Paths for your Xfree
distribution (remember these paths are from client's point of view, all
starting from /dless directory).

After these steps, you probably have functional server part and you can try
to boot diskless-linux on your client.


Tuning configuration
--------------------
  As you may notified during client startup, video card is detected
automatically. During this detection a directory /etc/conf/*cardname* is
assigned as the configuration directory for getting text & x-win parameters.
For every card there is a directory on your server which has to be tweaked to
work with *every* computer with this card on your network.
  In these directories you can find:
  * txconf - this file contains informations about video card chipset needed
             for managing text modes. It's derived from txconf.orig
             which may be found in /dless/etc/conf.
  * xconf  - this file contains options for video card setup during X-window
             startup sequence.
  * X?     - these files are links to X-servers needed to start monochrome
             (Xm), 16-color (X0), 256-color (X1), 16-bit color (X2), 24-bit
             color (X3) and 32-bit color (X4) X-window desktops. When some
             of these files doesn't exist, corresponding color depth will not
             be available in client's menu.

  You can reconfigure these to get proper results, but for most of the present
directories current config is ok.
  When you encounter new video card on your network, you have to make a proper
directory for it and put in that directory configuration for that card.

  If you want to make some specific configurations for your clients, you
have to edit /dless/etc/conf/defaults file and put there lines for them. Every
line starts with client's IP and contains all parameters which differ from
standard parameters defined in /dless/etc/xmain.
  You can also change configuration on booting line of your client's linux,
by appending parameter optln=... You can also use parameter opthd=hd??/...
in case you want to read configuration from client's hard drive. This
requires IDE/SCSI and msdos filesystem support in your kernel and also
corresponding devices in /dless/dev (not done by default). I suggest to use
optln= (it's cleaner and kernel is much smaller without hard disk support).

  If you want to create own video modes for X-windows, you can do so by
editing records in /dless/etc/mon directory where you will find files for
most common monitor configurations.

  Adding video modes for text screens is complicated and currently is not
suggested. It requires adding this mode to /dless/etc/conf/txmodes and txfonts,
but also you have to change configuration program in /dless/etc/xcfg.

  You can change default fonts for your text modes. Fonts can be found in
/dless/etc/fonts and definition when to use them is in /dless/etc/conf/txfonts.

  You can add your own language. You only have to copy some of the existing
languages in /dless/etc/lang directory to the new name and rewrite all texts
in it.


Audio support
-------------
  Sound support is started when sound card is detected in kernel and when
sound is enabled in /dless/etc/xmain. You can use two types of audio systems:

  *NAS*
  Network audio system is quite good package for networked audio, although
has not so big support comparing to rplay. It works perfect and has
automatic client resolution when you are connecting to the server via
X-windows. For non-xwindows sessions (ie. telnet) you have to define system
variable AUDIOSERVER=tcp/clientname:8000.

  *Rplay*
  Quite well application-supported package for network audio. It has not so
many features like NAS (at least I think) and also sometimes replaying samples
is a bit delayed. On diskless non-swapping linux, rplay server's *growing*
buffers sometimes lead to the rplay daemon crash. When you want to use RPlay's
applications, you have to define environment variable SOUNDHOST=clientname.


Future enhancements
-------------------
  Currently, there are some features I would like to add, like multiple text
font support, native keyboards, more languages, more video modes, generic text
mode setup, multiple native keyboards, font encodings, help menus, subtitles
and other..
  There were numerous questions from users about including some management
of local storages of client, especially access to local hard drive and floppy.
Currently, I have no idea how to do that (at least in elegant and secure way).
I've been told about some Ix's XFree server extension for floppy access, but
did not go any further. If you have some ideas, feel free to write me.
   Whole package can now be considered as late beta release in it's third year
of *very* lazy development.


Packages and utilites used (ie. credits) in order of appearance
---------------------------------------------------------------
* Loadlin 0.5
  location... surely Slackware distribution, also somewhere on sunsite.

* Linux kernel
  location... somewhere on the planet

* various linux binaries/libraries, mostly got from Slackware distribution
  location... ftp://ftp.cdrom.com/pub/linux/slackware

* Dialog v0.6z
  (modified a !lot! to fit my needs - created version 0.7a, patch included)
  location... ftp://sunsite.unc.edu/pub/Linux/utils/shell

* Doprog v2.2
  location... ftp://sunsite.unc.edu/pub/Linux/utils/console

* XFree86 X-window package for ix86-linux-elf, currently at version 3.3.
  (SuperProbe v2.14 modified to fit my needs, patch included)
  location... ftp://ftp.xfree86.org/pub/XFree86/3.3

* SVGATextMode v1.5
  location... ftp://sunsite.unc.edu/pub/Linux/utils/console

* Aumix 1.6.1
  (modified to not allow status saving, patch included)
  location... ftp://sunsite.unc.edu/pub/Linux/...

* NAS 1.2p5
  location... ftp://ftp.x.org/contrib/audio/nas

* Rplay 3.2.0b5
  location... ftp://ftp.x.org/contrib/audio/rplay


Where to find package
---------------------
ftp://sorry.vse.cz/dimension       (FTP site in Prague, Czech Republic)
ftp://sunsite.unc.edu/pub/Linux... (FTP site in the USA)
   Ask your local Internet or FTP expert on how to reach them.

You may also visit package homepage at:
http://sorry.vse.cz/dimension/rdos/dxt


Thanx
-----
  I would like to thank mainly Tuttle for his numerous hints which led me
to main improvements in functionality of this package. Also that to all
users of VSE network for contributing in X-window tests.


Ending words & contact
----------------------
  This package has been developed mainly for internal purposes and lately
I have decided to make it publicly available. For this reason don't expect
profesional work or error-free environment!
  However, If you find it useful, have implemented new languages, new video
modes, new video cards or if you have some new ideas what to add in the
package, feel free to send me email! I always like to get email :-)
If you wanna make me feel good send me some nice postcard from your living
place.. (money would be good too ;)
                                      E-Mail:
                                          roman@sorry.vse.cz

Plese put all your materials sent to me as attachments to the E-mail coded
in this way: TAR/GZIP, ZIP, ARJ, AIN, LZH/LHA, RAR or UC2, then use UUENCODE.

bye for now,
Roman
