
                               X.W.O.A.F
                          X Windows On A Floppy
                        rev. 0.2.0g Nov. 1, 2005

Copyright (C) 2005, Terry Loveall. All files released under OSI approved
licenses. See LICENSE and individual source packages for details.
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY. USE AT YOUR OWN RISK.

email: <loveall@iinet.com> 
Home page: http://www.modest-proposals.com/
X-app source available.

Xwoaf is intended for the hacker. I.E. someone who loves to explore computers
and software. If you don't know or care about the differnce between a 1 and a
0, this package is not for you.

For original, unhacked sources see the 'Credits and Kudos' section.

------------------
Table of Contents:

 1. What xwoaf is
 2. System code
 3. Quick and dirty linux xwoaf floppy
 4. List of boot floppy kit files
 5. Unpacking
 6. Modifying the xwoaf linux tree
 7. Creating a new xwoaf floppy image
 8. General Comments and Observations
 9. Credits and Kudos

------------------
 1. What xwoaf is:

XWOAF, X Windows On A Floppy, is a complete standalone, bootable, linux floppy
that installs itself on, and runs from a ramdisk. Providing the basic
functionality required to turn any computer that successfully boots it into a
modern graphical communication node.

The latest version includes builtin access for minix, vfat and ext2 file
systems. Create a mount point and run something similar to the following:
mkdir /c
mount -t vfat /dev/hda1 /c # or
mkdir /a
mount -t vfat /dev/fd0 /a # or
mkdir /e
mount -t ext2 /dev/hda5 /e

Xwoaf, though, does not do some things at all, such as USB, modems, NLS
character support or bitmapped images. If you need these capabilities either
download and run mungkie's 1diskxwin or build your own Xwoaf development
environment. Alternatively, you could pay me money to do so.

Most of the following applications started life as text-mode terminal based
programs. Converted edx from a termio based text editor several years ago.
Recently, I took the X specific code and added a curses wrapper to emulate
curses running under X. Easily ported retawq, txplor, OXElmo and the
non-curses based homegrown bcalc to run as X apps.

All of the following apps and system code run using only a cut down version
of libX11. Don' need no steenking toolkit.

Xwoaf includes the following X apps:

retawq text mode only web browser. Thank you Arne.

txplor dual pane dirtree/filelist filemanager based upon ytree. Thank you
 Werner.

Either:
rdesktop remote client for Windows NT Terminal Server. Thank you Mathew.
Uses version 1.2.0 with builtin crypto. If you need openssl then Xwoaf is not
for you.

or:
OXElmo email client. Thank you rzyjontko.

But not both on the same floppy.

edx wordstar mode text editor. Home grown.

bcalc four function GUI and command line calculator. Home grown.

calendar month/day/date/time popup. Home grown.

----------------
 2. System code:

hacked jwm window manager. Thank you Joe Wingbermuehle.

really hacked up menu program. Thank you Elliot Hughes.

hacked rxvt terminal program. Thank you X-window community.

Xvesa and Xfbdev window servers. Thank you Keith Packard.

xcmd xlib only run command with optional command parameter presets.

Basic system uses a custom configuration for a linux 2.2.25 kernel, specific
settings for uClibc-0.9.26, busybox-1.00-pre2 and a stripped version of a
libtinyX11/Xvesa/Xfbdev combo.

Text mode terminal based screen editor is Albrecht Kleine's impervious e3,
running in wordstar compatibility mode.

-----------------------------------------
 3. Quick and dirty linux xwoaf floppy:

Insert a formatted 1.4Meg floppy into the floppy drive.
From the directory containing the file 'woafnew.img', execute:
'dd if=woafnew.img of=/dev/fd0 bs=1k;sync'
Wait for the file write to complete. Either reboot the machine you used to
generate the floppy or remove the floppy and boot it on your target machine.

After booting, login as 'root'. passwd is set to 'xwoaf'. This info is also
provided at boot. Change root password after booting with the command line
'passwd'.

You can view the 'README.htm' file (main Xwoaf help file) in the root
directory from X using the retawq browser.
'README.htm' is available under X from the pop up task bar:
'Start->Local Help Xwoaf-0.2.0g"
(Place mouse at the bottom of the screen to pop up the task bar)

NB: You have to run the shell script 'unwoaf' before you can run the
shell script 'makewoaf.sh'. 'unwoaf' unpacks and creates the requisite
directories that 'makewoaf.sh' uses to create a modified floppy.

Sections 4, 5, 6 and 7 below will tell you how to customize the ramdisk image
from the package and write a new bootable xwoaf floppy.

MS users:

Using Microsoft software is like sleeping with an HIV positive lover. It is
not a matter of if, it is a matter of when.

For FREEDOS (or DOS) based generation of the Xwoaf boot floppy, download
rawrite.exe and accompanying doc from:
ftp://ftp.slackware.com/pub/slackware/slackware/bootdisks
The appropriate dos command line _should_ be:
'rawrite' and then follow the instructions. Use a formatted 1.4M floppy.

Included is woaf.bat, loadlin.exe, bzImage and Image.gz (the last two after
running 'unwoaf') for loading and running xwoaf from a DOS command line. Boot
to DOS, cd to where ever you have unpacked Xwoaf and run the woaf.bat file.

----------------------------------
 4. List of boot floppy kit files:

CHANGELOG:
What, why and when.

LICENSE:
GPL Version 2, June 1991

README:
this file.

doc:
html and text help files for the major Xwoaf apps and utils

loadlin.exe:
program that loads bzImage and Image.gz from woaf.bat

makewoaf-Config:
Variable declarations that provide support for makewoaf.sh and makeimage.

makeimage:
shell support script for makewoaf.sh

makewoaf.sh: 
shell script to create floppy image 'woafnew.img' from 'bzImage' and
'woaf-ref'.

modules-2.2.25:
Directory containing all the NIC, BLOCK, CDROM and FS modules built for the
linux 2.2.25 kernel.

unwoaf:
Standalone shell script to unpack floppy image 'woafnew.img'.

woaf.bat:
contains the commands to boot xwoaf from a DOS command line.

woafnew.img:
Floppy image ready to be copied to a floppy with 'makewoaf.sh' or unpacked
 with 'unwoaf'.

--------------
 5. Unpacking:

Run the shell script 'unwoaf' in the same directory with the file
'woafnew.img'. 

This will unpack:

 'bzImage' the linux 2.2.5 kernel.
 'Image.gz' which is the initrd ramdisk image of the xwoaf linux system,
 'woaf-ref' which is an uncompressed directory tree of 'Image.gz'
'unwoaf' will create the 'mnt' directory for use in packing/unpacking the
floppy image.

-----------------------------------
 6. Modifying the xwoaf linux tree:

Most dynamic system configuration occurs in the commented file:
'woaf-ref/etc/rc.d/sysinit'

These include, but are not limited to, system construction during init,
system ID, networking, X-window dir/file construction and initialization, and
module installation.

Examine, change and modify to fit your specific needs.

Redesktop is provided as a convenience. I do not have any way of testing it.
Included is the man page in html format. Access it from 
'Online Help Xwoaf-0.2.0g' menu.

The password for Xwoaf is displayed at boot. Change it from the command line
with 'passwd'.

OXElmo needs to have ISP, user and password(s) set in the resource file
'/root/.elmorc'. If these are not set, OXElmo will not be able to either send
or recieve email. Available for editing under xwoaf from Start->Edit
Config->Edit E-mail Config.

WARNING setting your password leaves it in plain text for someone else to
read. Recommend pre-setting ISP and user while leaving passwd blank and
editing it in after booting the xwoaf floppy.

The window manager jwm also has a resource file:
'/root/.jwmrc'. 
Change for different 'Start' menu operation under X. Available for editing
under xwoaf from Start->Edit Config->Edit this menu. Contains the default
settings for rdesktop.

Serial/PS2 mouse only. Softlink 'mouse' to your specific configuration in:
'woaf-ref/dev'
Default is './woaf-ref/dev/mouse -> psaux'.

busybox now comes with the builtin commands: lsmod, rmmmod and insmod.

Due to size constraints the linux-2.2.25 kernel and the X Windows software
support only pure ASCII characters. XWOAF HAS NO NLS (Native Language Support)
CAPABILITY!

If you need NLS then you either need a console only version of floppy linux or
you need a larger linux distro that supports NLS under X.

You might want to take a look at:
http://cng.ateneo.net/cng/wyu/software/
where they have a single floppy rdesktop and vnc:
http://cng.ateneo.net/cng/wyu/software/others/vnclinux-v2.0.img
Uses the SVGA lib.

For a larger version of Linux and X see:
http://featherlinux.berlios.de/

The default Xwoaf NIC is an oldie-but-goodie ISA NE2000. Included in the
floppy image is various NIC modules, but you will have to uncomment the
'insmod /lib/modules/xxxx.o' # replace xxxx with your NIC name.
line# 121 in 'woaf-ref/etc/rc.d/sysinit'. 

For other modules, both NIC and mass-storage type, check for the appropriate
module in the subdirectories of 'modules-2.2.25/'. You will also need to
figure out any necessary parameters.

Xwoaf comes with a default network connection type of DHCP. If you
need/want static IP addresses, change the 'DHCP='yes'" line in
"woaf-ref/etc/rd.d/sysinit" to 'DHCP='no'" and fill in the appropriate static
IP addresses and masks. See comments in "woaf-ref/etc/rd.d/sysinit" for
details.

--------------------------------------
 7. Creating a new xwoaf floppy image:

After making any necessary changes to 'woaf-ref/etc/rc.d/sysinit' or the rest
of the structure in dir 'woaf-ref', insert a formatted floppy disk into the
drive and execute the shell script './makewoaf.sh' in the same directory as
the script. Follow the instructions and you now have a customized X-Windows On
A Floppy.

--------------------------------------
 8. General Comments and Observations:

For details about the unpacking of the floppy image, customizable system
features and the creation of a customized xwoaf floppy see the specified shell
scripts: 'unwoaf', 'sysinit' and 'makewoaf.sh'. Tried to ensure adequate
comments for clarity of understanding.

See the file 'woaf-ref/README.htm' for quick help on the various X apps on the
floppy. Since this _is_ X windows on _a_ floppy, tried not to take too much
room with documentation. The README provides the following for each individual
app: file name and location, how to exit,  how to access help (if available),
and any non-obvious essential control character commands.

If xwoaf doesn't do what you want it to, and that is something specialized, my
services are available for hire. If you want general improvements, then send
suggestions, code or flames to the above email.

It's amazing what you can do without an X toolkit. This whole project only
uses a stripped down libX11. No libXt, libXext, libXaw.

libXpm was omitted for space considerations. Didn't use/need it and it takes
up 50k of space available for other things.

For creating your own version of xwoaf, from the bottom up, get the following
archives, RTFM for each and build. See '9. Credits and Kudos' for URLs.

linux kernel 2.2.25
1diskxwin-1.2.4.tar.bz2 (contains source for uClibc, busybox and libtinyX11).
 I recommend downloading busybox-0.9.26 since 0.9.20 has network bugs.
hacked X system binaries: jwm, rdesktop-1.2.0 and menu.
Xcurses based X apps: retawq, txplor, OXElmo, edx, bcalc and shell scripts.

----------------------
 9. Credits and Kudos:

See my web page:
http://www.modest-proposals.com/Hacklin.htm
for the latest archive containing source for the hacked X system utils and
xcurses based apps. Included are all of the configuration and Makefile files
for the various components of xwoaf along with general construction
instructions.

My thanks to:

mungkie at:
http://www.angelfire.com/linux/floorzat/2diskXwin.htm
He released the basic uClibc, busybox and libtinyX11 package together as the
1diskxwin package and did a nice job. That build environment and instructions
for building the basics can be downloaded from:
ftp://ftp.berlios.de/pub/natld
Xwoaf is based upon 1diskx-1.2.6.tar.bz2.

Erik Andersen for busybox and uClibc. Without these xwoaf would not be
possible.
http://busybox.net/ and
http://www.uclibc.org/

Arne Thomassen for his cooperation in hacking up retawq.
http://retawq.sourceforge.net/

Mathew Chapman for rdesktop. A complete client for Windows NT Terminal Server.
http://www.rdesktop.org/

rzyjontko for for the original ncurses based Elmo. A complete small email
client.
http://elmo.sourceforge.net/

Werner Bregulla for writing the original ytree.
http://www.han.de/~werner/ytree.html

Joe Wingbermuehle for jwm.
http://joewing.net/programs/jwm/index.shtml

Elliott Hughes for a task bar named menu, which got radically hacked to
make the current popup vertical menu named menu.
http://www.enh.demon.co.uk/programs.html#menu

Linus and the kernel development organization.
http://www.kernel.org

Keith Packard and the XFree86 development org for X-windows.
http://www.xfree86.org/

And last but not least, the FSF with the GPL License.
http://www.gnu.org/licenses/licenses.html
