X.W.O.A.F X Windows On A Floppy rev. 0.1.4 Feb. 20, 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: 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 10. Technical footnote ------------------ 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 communication node. If you need access to other file systems than the minix based ramdisk, you will need to compile your own kernel and include the required functionality. Sorry, there just wasn't room. Xwoaf, though, does not do some things at all, such as USB, modems, framebuffer or 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. OXElmo email client. Thank you rzyjontko. 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 window server. Thank you Keith Packard. 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 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 'xwoafnew.img', execute: 'dd if=xwoafnew.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. You can view the 'README' file (help as such) in the root directory with 'more README' or start X-windows with 'cd /;startx' which displays the HTML for of README. Sections 4, 5, 6 and 7 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. Switch to linux, BSD or some other FLOSS system. 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. ---------------------------------- 4. List of boot floppy kit files: README: this file. Config: Variable declarations that provide support for makewoaf.sh and makeimage. makeimage: shell support script for makewoaf.sh makewoaf.sh: shell script to create a floppy image 'woafnew.img' from 'bzImage' and 'woaf-ref'. unwoaf: Standalone shell script to unpack floppy image 'woafnew.img'. woafnew.img: Floppy image ready to be copied to a floppy with 'makewoaf.sh' or unpacked with 'unwoaf'. keymaps: Directory containing various international keyboard mappings. 'woafnew.img' defaults to US. nic: Directory containing all the NIC, BLOCK, CDROM and FS modules included in the linux 2.2.25 kernel. -------------- 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' 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. 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. Serial/PS2 mouse only. Softlink 'mouse' to your specific configuration in: 'woaf-ref/dev' Default is './woaf-ref/dev/mouse -> ttyS1'. For non-US keyboards see the README in directory 'keymaps' and select from the available options. Copy the selected file to file: 'woaf-ref/keys.gz' and uncomment line# 56 in 'woaf-ref/etc/rc.d/sysinit'. The default NIC is an oldie-but-goodie ISA NE2000. Included in the floppy image is the NIC module for an SIS900, but you will have to uncomment the 'insmod /lib/modules/sis900.o' line# 121 in 'woaf-ref/etc/rc.d/sysinit'. For other modules, both NIC and mass-storage type, check for the appropriate module in directory 'nic/'. You will also need to figure out any necessary parameters. Xwoaf now 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' 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 utils: jwm 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/binary/woaf-0.1.4a.kit.tgz for the complete 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 woaf-0.1.0 is based upon 1diskx-1.2.4.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/ rzyjontko for OXElmo. 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 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 ----------------------- 10. Technical footnote: The four files: txplor, bcalc, retawq and OXElmo all started life as curses based text-mode terminal apps. I took and hacked together an xcurses interface layer based upon code in edx, that replaces the curses lib. The binary size overhead for the X-window and curses emulation wrapper is about 8k. The author of retawq wrote his own and has released retawq with an Xlib only curses interface. Haven't heard back from the the original author of ytree, which I hacked into txplor.