
           Linux Gazette... making Linux just a little more fun!
                                      
      Copyright © 1996-97 Specialized Systems Consultants, Inc. linux@ssc.com
     _________________________________________________________________
   
                       Welcome to Linux Gazette! (tm)
     _________________________________________________________________
   
                                 Published by:
                                       
                               Linux Journal
     _________________________________________________________________
   
                                 Sponsored by:
                                       
                                   InfoMagic
                                       
                                   S.u.S.E.
                                       
                                    Red Hat
                                       
   Our sponsors make financial contributions toward the costs of
   publishing Linux Gazette. If you would like to become a sponsor of LG,
   e-mail us at sponsor@ssc.com.
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                                The Mailbag!
                                      
                    Write the Gazette at gazette@ssc.com
                                      
                                 Contents:
                                      
     * Help Wanted -- Article Ideas
     * General Mail
     _________________________________________________________________
   
                        Help Wanted -- Article Ideas
     _________________________________________________________________
   
   Date: Mon, 18 Aug 1997 00:25:47 -0400
   From: Anthony Wilson anthony@pisces.globalserve.net
   Subject: Difficulty running programmes
   
   I am using Linux Slackware 3.0 with kernel version 2.0. I am running a
   LAN and whenever I try to run a script or a program that I created on
   the server, I get a command not found error, even though I have read
   write permissions on the file in my own directory. If I transfer that
   same file to another Linux box on this LAN, I can run it without any
   problems.
   
   Is there an easy fix to this problem?
   
   Thank you.
   
   Anthony Wilson
     _________________________________________________________________
   
   Date: Wed, 20 Aug 1997 06:00:38 +0200
   From: Denny denny@ele.kth.se
   Subject: Connecting to dynamic IP via ethernet
   
   Hello. I want to connect my Linux box to our ethernet ring here at my
   company. The problem is that they(we) use dynamic IP adresses, and I
   don't know how to get an adress. I use win95 on one partition on my
   pc, from where it works fine to connect. I know the IP adress to the
   DCHP-server (that the one who distributes the IP-adresses, right?) but
   how do I do to get assigned an IP-adress from Linux? I got so tired of
   trying, that I finally just assigned an adress myself and hey,
   somethings work. I can use telnet and ftp but X takes 15 minutes to
   start, and emacs likewise. I can't wait that amount and also I'm sure
   there are several thing that don't work. Please, if you know how to
   do, explain carefully, I'm not all that good at linux and tcp/ip
   hacking.
   
   Denny
     _________________________________________________________________
   
   Date: Fri, 15 Aug 1997 09:47:03 -0500
   From: Cory Sticha csticha@apci.net
   Subject: Printing PostScript to a DeskJet 682C
   
   I've got a question that I'd to have answered. I've got an HP DeskJet
   682C printer that I'd like to use to print pages out from Netscape.
   Unfortunately, the printer only recognizes text and PCL 3, while
   Netscape only uses PostScript. Is there a filter that is capable of
   converting PostScript to PCL 3. Also, to print text to this printer, I
   have to pipe the file that I want to print to todos and then pipe that
   to the printer. How can I automate this? Thank you very much in
   advance for any help that you can give me.
   
   Cory Sticha, SrA, USAF
     _________________________________________________________________
   
   Date: Mon, 04 Aug 1997 14:12:42 +1000
   From: Marcus B marcus@cwi.net.au
   Subject: Problem with adaptec 2940U
   
   Answer: RedHat versions 2.x kernels only) but there are problems on
   some hardware configurations.
     _________________________________________________________________
   
   Date: Wed, 6 Aug 97 20:55:49 BST
   From: George russell george.russell@clara.net
   Subject: Linux Help needed to connect to Internet
   
   I am a new Linux user, and inexperienced in Unix environments. My aim
   in using Linux is to connect to the internet without needing to use
   Windows, in order to learn about Linux and update my linux setup
   (Slackware Linux Toolkit March 1997, which I will install again soon).
   I have had X Windows and Netscape Navigator 3.01 installed,and will do
   so again after a hard disc upgrade. I am unable to connect to the
   internet. Could anyone help me to do this? My modem is on COM2, and
   works under windows as a generic modem. I know the number of my ISP,
   that my IP address is server assigned. I have the IP addresses of the
   primary and secondary DNS, and have my own username and password. Is
   there anyhing else I need to know, and can anyone help me with this? I
   would be very grateful for all assistance given.
     _________________________________________________________________
   
   Date: Wed, 06 Aug 1997 15:35:20 -0700
   From: Luke luke@holdens.org
   Subject:LILO Problems
   
   I have this 2 gig scsi drive. I have Linux and Windows 95 on my
   system. 95 is on the first gig and Linux is on the 2nd. Lilo gives me
   problems with booting Linux from the second gig. And windows just will
   not see it. Its a old scsi disk. So I cant use sector compadibility
   mode. Right now. I use Lodlin (and some 95 proggy) to drop out of 95
   and kick linux in. Eather this or I have to use a installation floppy
   (I cant load lilo on a floppy because it gives me disks problems there
   too) You know of any boot managers that I can gain access to that can
   read the entire disk? I know the NT boot loader can do this. But there
   is no point in loading NT for this task. Another problem I have is
   this. I have a Windows NT box as a proxy server for my internet
   connection. (I can't convert it to Linux, it's not my box) I can get
   Windows 95 to send all ip requests threw the proxy using the ms proxy
   client. (ex: quake over the net) But with Linux I can't seem to do
   that. I have used Netscape a bit for this purpose. But I still can't
   do anything else. Is there a way to get Linux to work over a proxy
   itself? I could just dail into my ISP va PPP. But I already have a 10
   megabit connection to them. What's the point of using a modem. Is
   there a way I can get around this problem? Another question I have is
   can I make a swap from an image or some other media. I don't want to
   kill my Linux partition to gain this. But, I have a 16 meg swap
   partition and 16 megs of ram. Trying to run progams like Wabi is of no
   use. They don't seem to have enough memory. Is there a way to add more
   swap space with out disturbing the exsisting partitions? Well thank
   you for your time. Long live LINUX!!!
   Luke Holden
     _________________________________________________________________
   
   Date: Sat, 09 Aug 1997 23:14:04 -0400
   From: David Nghiem klaks@bu.edu
   Subject: Pointers
   
   Hey all,
   
   Do you guys know of any information regarding programming a game in
   Linux on the X11 platform? I want to use it as a cross developer for
   some DOS games. The main issue here is this: How do I display my
   output?
   
   Laterz,
   Dave.
     _________________________________________________________________
   
   Date: Fri, 08 Aug 1997 20:03:21 -0400
   From: Raymond E. Rogers rrogers@voyager.net
   Subject: Apllixware -- Fax
   
   I bought applixware some time ago and found that I was supposed to
   roll my own Fax interface. Somebody at work suggested just setting up
   a "printer" for fax. Logical to me. As I don't do Linux for a living
   or a hobby; it would be nice if somebody could write and article on
   how to do it. Or point me to instructions. I looked around and was
   unable to find any.
   
   There is supposed to be instructions in how to make netscape do
   standard PGP/RSA digital signatures that can be verified on any PGP
   system, not just inside of netscape. Simple instructions on this would
   be nice.
   
   If I get around to doing these things first, I will write an article
   on how I did it.
   
   Enjoy
   Ray
   
     (An article entitled "Faxing from the Web" will be included in the
     upcoming November issue of Linux Journal. While the magazine won't
     be out until next month, the listings that go with it (including
     his front end) are available at
     http://www.ssc.com/pub/lj/listings/issue43/2044.tgz. Since the
     author was not using Applixware, I'm not sure how much his code
     will help, but check it out, it may be just what you need.
     --Editor) 
     _________________________________________________________________
   
                                General Mail
     _________________________________________________________________
   
   Date: Wed, 30 Jul 1997 12:22:41 -0700
   From: Tom Schenck tschenck@concentric.net
   Subject: Organize and overtake!
   
   Well, I'm pretty sure there are people doing this, but not very fast
   or efficiently. We need a stable, friendly, easy-to-install system
   that comes equiped with applications that allow the user to begin
   working right away, and configure without programming knowledge!
   
   Yes, it's *nix. Yes, it's a programmers environment. Yes, it doesn't
   HAVE to be terse, hard to configure, etc.
   
   Hell, maybe I'll have to do it!
     _________________________________________________________________
   
   Date: Fri, 22 Aug 97 21:09:09 BST
   From: Duncan Simpson feynmen.ecs.soton.ac.uk
   Subject: M$ word
   
   Those who need to read a word document might like to get the latest
   version of wqord2x by anonymous ftp from amil.telstar.net in the
   pub/duncan directory. Note the machine's main job is a mail
   redirection service, which sends me the logs, amoung other things!!
   
   Duncan
     _________________________________________________________________
   
   Date: Sun, 10 Aug 1997 13:56:23 -0600 (MDT)
   From: Michael J. Hammel mjhammel@csn.net
   Subject: MS quote
   
   This comes via a Mac friend of mine. We should look closely at
   aligning with the Mac users of the world. They hate MS almost as much
   as we do. :-) From: EvangeList evangelist@apple.com This tidbit is
   from: Dave Reiser, dbr@ptd.net In a page 1 article in the July 28,
   1997 Computerworld there's an article ENTITLED "Microsoft Declares
   War" about how MS has announced that it will not ship the Java class
   libraries. I absolutely howled when I read this quote: "'We have no
   intention of shipping another bloated operating system and forcing
   that down the throats of our Windows customers'" [attributed to Paul
   Maritz, Microsoft Group Vice President] Are they feeling guilty about
   the fact that they've already rammed one bloated operating system down
   their customers' throats? -- Michael J. Hammel
     _________________________________________________________________
   
   From mjhammel@csn.net Fri Aug 8 21:48:52 1997
   Date: Fri, 08 Aug 1997 23:00:22 -0600
   Subject: Descent 3D for Linux?
   
   Linux has always been the perfect platform for games, it's just very
   few developers (id and Crack.com are the only two worth mentioning
   that I know of) know that.
   
   Actually I think many of the developers know the value of Linux, but
   there is no marketing proof that a Linux port will make money. As many
   others have said in the past, we need certifiable numbers to prove the
   market exists and that its willing to spend money on commercial
   products. I don't have any info on it, but I'd love to know if either
   Id or Crack.com made any money on their Linux ports. And I'd like to
   know if it was enough, in their eyes, to warrant future ports. I've a
   gut feeling the Id guys may have done their port simply because they
   liked the idea and did it for fun, but thats just an unsubstantiated
   hunch.
   
   I just got back from SIGGRAPH today and after having talked to many
   engineers from lots of different companies I can say that nearly all
   are *very* aware of Linux and most (that I talked to) are using it.
   One engineer from Cosmos Software, the new division at SGI, said
   they'd probably be happy to let someone do the port of the new Cosmo
   Player 1.0 to Linux (although he wasn't sure how to go about getting
   that done). Most of the companies at the conference who are Unix aware
   are also Linux aware. They just need a little proof that the market
   will return their investment within a reasonable time frame.
   
   One of the things I decided to do while I was at SIGGRAPH was to write
   an article outlining how to begin to get reasonable market figures for
   Linux with respect to graphics tools and games (other vertical markets
   are a bit out of my league). I'm sketching this out now and will
   probably submit it to the Linux Journal in September or October. Much
   of it resolves around the use of simple Multimedia applications.
   Anyway, once we have the numbers to back us up, it will be a little
   easier to convince game developers to include Linux ports of their
   software.
   
   -- Michael J. Hammel
     _________________________________________________________________
   
   Date: Fri, 08 Aug 1997 22:36:23 -0600
   From: Michael J. Hammel mjhammel@csn.net
   Subject: Firewire and DV
   
   I just got back from SIGGRAPH. To my knowledge there are no plans for
   Firewire support for Linux, but I have to admit I didn't specifically
   go looking for it. I'm not even completely sure what it is (although
   thought it was just another 3D chipset). I've been on a personal
   crusade to get Linux noticed as a terrific platform for image
   processing and graphic arts tools, and that includes (eventually)
   Digital Video (DV) tools. However, although there are quite a large
   number of tools for doing computer graphics (including plenty of
   support for OpenGL, both commercially and in the freeware MesaGL
   package), I've not seen any DV style tools. I'd say its a little early
   for such tools on a commercial basis since more basic tools are not
   commercially supported yet. But its certainly something I'll continue
   to keep an eye on and do my best to encourage.
   
   DV tools would work as well on Linux as any other high-end Unix
   system, but tools like graphics tablets and scanners need better
   support before we'll get into DV tools. We also need a decent GUI
   toolkit. Motif is ok, but a bit bloated. Most of the other toolkits
   don't have enough printed documentation available yet. While at
   SIGGRAPH, Mark Kilgard told me that there is a new toolkit that sits
   on top of GLUT that might be a good basis for a more advanced toolkit.
   I haven't had time to look at it yet (I just got back today). Anyway,
   I hope this helps a little. If you find any DV tools or have contacts
   that could use a little polite prodding, feel free to drop me a line.
   
   -- Michael J. Hammel
     _________________________________________________________________
   
   Date: Wed, 27 Aug 1997 09:04:22 -0700 (PDT)
   From: Riley Eller RILEYE@datalight.com
   
   It took Linus to make it happen
   It took everyone to make it right
   It takes HOWTOs to make it work
   It takes the Gazette to make it FUN
   Thank You Linux Gazette :-)
   
   Riley Eller
   Newbie Jihad Warrior
     _________________________________________________________________
   
            Published in Linux Gazette Issue 21, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Next 
   
      This page written and maintained by the Editor of Linux Gazette,
      gazette@ssc.com
      Copyright © 1997 Specialized Systems Consultants, Inc.
      
    "Linux Gazette...making Linux just a little more fun! "
     _________________________________________________________________
   
                               More 2¢ Tips!
                                      
               Send Linux Tips and Tricks to gazette@ssc.com 
     _________________________________________________________________
   
  Contents:
  
     * Changing Video Modes
     * Colormap Questions
     * Netcat!
     * Starting and Stopping Services
     * A New Tool for Linux
     * Of Logs and Other Things
     * Calculator Tip
     * Another Way to View Tarred Files
     * Script Ease
     * Syslog Thing
     * Sorta E-mail-to-FAx...Well, to-Printer
     * Setting Xterm Title to Current Process
     * CVS
     _________________________________________________________________
   
  Changing Video Modes
  
   Date: Fri, 08 Aug 1997 22:41:05 -0600
   From: Michael J. Hammel mjhammel@csn.net
   
   I don't know how AccelX and XiGraphics and MetroX handle these things.
   
   AccelX is ( I think) a PC graphics company. You might mean Xaccel,
   which is the actual program name for Xi Graphics X server. Its product
   name is "AcceleratedX". Xi Graphics is the company name.
   
   As for how Xaccel changes its video modes - try CTRL-ALT-+ (thats a
   plus sign). I believe that cycles through the various modes. Check the
   man pages or manual to be certain. I believe MetroX does similar, but
   the keystroke is probably different.
   
   --
     _________________________________________________________________
   
  Colormap Question
  
   Date: Fri, 08 Aug 1997 23:47:31 -0600
   From: Michael J. Hammel mjhammel@csn.net
   
   The question was "can you force an X application to use its own
   colormap in some way other than using a command line option". The
   answer is: it depends (aint it always the case?).
   
   An applications ability to use its own colormap is not a "builtin"
   part of X. Colormaps are part of X, but the application still has to
   add code to make use of colormaps. So if the application doesn't have
   any code specifically for handling colormaps (for example, my
   XPostitPlus doesn't have any such code) then neither the command line
   or any other method will force it to use a private colormap. The
   default for applications (like XPostitPlus) is to use the default
   colormap, and thats why you often see applications with weird colors
   that you can't get rid of till you exit some other application.
   
   Now, if the application *does* have code to deal with colormaps, it
   can also make the use of the private colormap a user configurable
   option. X provides a mechanism for making an option either a command
   line option (eg. -usePrivateColormap) or an X resource. X resources
   can be specified in X resource files (like .Xdefaults) or on the
   command line using the -xrm option. X is so configurable that the
   number of ways for a user to supply configuration information can
   often be quite confusing, both for the user and the developer. In any
   case, its up to the programmer to make any of these methods available.
   None is available by default simply becaue its "an X windows program".
   
   The correct thing for an application to do is to allow the user to
   configure the use of the private colormap in at least one way and to
   provide a best-guess default for determining if a private colormap
   would be the best thing to do or not if the user doesn't provide a
   preference. Few applications do this, however. The GIMP does. So do XV
   and Netscape. Even my own programs aren't very good at this, although
   I intend to get much better in the very near future.
   
   As for an X column, well, I'd love to see one. We just need to
   convince some X hack to spend a little time writing articles instead
   of code. Thats kinda hard to do. I'll probably be adding some X coding
   tidbits to my Muse column, but only with respect to using Motif or
   OpenGL in graphical and multimedia applications.
   
   Hope this helps a little.
   
   -- Michael
     _________________________________________________________________
   
  Netcat!
  
   Date: 01 Aug 1997 15:46 EDT
   From: Jean-Philippe Sugarbroad da1wizard@geocities.com
   
   I was going through back issues of the Linux Gazette and I remembered
   a program I use quite frequently... netcat. This program enables you
   to open sockets and connect or listen with them - all from a shell
   script! It's a great way to quickly fetch web pages or see if a server
   is running... It even has UDP 'connection' mode and zero-io mode
   (which closes the connection as soon as it succeeds...). The UDP mode
   even uses a TCP connection to check round-trip time :) I love it!
   
   Jean-Philippe Sugarbroad
     _________________________________________________________________
   
  Starting and Stopping Services
  
   Date: Tue, 5 Aug 1997 18:55:19 -0600 (CST)
   From: Terrence Martin twm139@its.to
   
   I was just reading the August version of Linux Journal and I noticed
   refrence to rebooting the system after making changes to the
   /etc/syslog.conf file in order for those changes to take affect. This
   is contrary to a feature that is the main reason I use Linux at home
   and at work.
   
   It is only generally necessary to reboot Linux to add/remove hardware
   or when installing a new kernel. In the specific case of syslogd(8)
   you can inform the server to reread it's initialization file by
   sending it a SIGHUP signal.

eg.
kill -HUP `cat /var/run/syslogd.pid`

   This will work with many of the servers available for Linux including
   (most) httpd(8), named(8), and inetd(8).
   
   Sometimes however it is preferable to actually restart these services.
   In Slackware I believe most of your services are placed in a single
   script and this makes it a little more difficult to pick and choose
   which services to stop and start.
   
   In RedHat it is a little more modular. In the directory
   /etc/rc.d/init.d are the scripts that are run on bootup to start
   various services.
   
   These scripts allow you to start and stop various services just as if
   you had shutdown and rebooted your machine. eg.

# /etc/rc.d/init.d/named.init stop
# /etc/rc.d/init.d/named.init start

   This will start and stop the name service.
   
   The scripts supplied with RedHat are not too complex compared to
   similar scripts I have seen on other systems. They can usually be
   adapted to new services that you may wish to have start on bootup,
   without complicating the rc.local file and giving you much finer
   control.
   
   If you examine the soft links in /etc/rc.d/rc0.d through
   /etc/rc.d/rc6.d you will notice that they link to the files in
   /etc/rc.d/init.d. Each of these numbers on these directories refer to
   a "runlevel".
   
   As the system boots the /etc/inittab tells the init process which
   directories to examine to determine which services to start up, most
   systems not running xdm will end at runlevel 3, otherwise it is
   runlevel 5.
   
   All of the files(softlinks) in runlevel 3 beginning with 'S' are
   executed in order of occurance in the directory, this is controlled by
   giving each a number ie

S30syslog -> ../init.d/syslog comes before
S40cron -> ../init.d/cron.init.

   Note: Links with the same number are executed in lexical order.
   
   The sequence may be important depending what services depend on other
   services.
   
   I put most of the services I add in runlevel 3, as I usually boot into
   multiuser mode. You then should add the approriate script link to
   /etc/rc6.d as those are the files that are executed on shutdown. Note
   the convention here is to begin all soft link names with 'K'. ie
K10named.init -> ../init.d/named.init

   Again these scripts are executed on order with the highest number
   being last to run.
   
   The net effect of all these links is that with an 'S' preceding the
   soft link the script is run with the argument "start" and with a 'K'
   it is run with the argument "stop".
   
   Over the last two weeks I have set up and configured a news server,
   web server, name server, sshd server, updated the syslog.conf file
   plus a hundred other little tweaks on our RedHat 4.x box and I have
   not had to reboot once. In fact the system has not been rebooted since
   we added a new CPU and SCSI card 31 days ago...I love Linux :)...
   
   Regards
   Terrence Martin
     _________________________________________________________________
   
  A New Tool for Linux
  
   Date: Fri, 22 Aug 1997 08:29:59 -0500
   From: Ian Beth13@mail.utexas.edu
   
   The version posted in issue 20 assumes you have exec access to ALL
   dirs under the one you 'TREE'
   
   Here's a modified version which works even in cases of unreadable
   folders:

-------------------------------- cut here --------------
#!/bin/sh
#         @(#) tree      1.1  30/11/95       by Jordi Sanfeliu
#                                         email: mikaku@arrakis.es
#
#         Initial version:  1.0  30/11/95
#         Next version   :  1.1  24/02/97   Now, with symbolic links
#         Patch by       :  Ian Kjos, to support unsearchable dirs
#                           email: beth13@mail.utexas.edu
#
#         Tree is a tool for view the directory tree (obvious :-) )
#
search () {
   for dir in `echo *`
   do
      if [ -d $dir ] ; then
         zz=0
         while [ $zz != $deep ]
         do
            echo -n "|   "
            zz=`expr $zz + 1`
         done
         if [ -L $dir ] ; then
            echo "+---$dir" `ls -l $dir | sed 's/^.*'$dir' //'`
         else
            echo "+---$dir"
            if cd $dir ; then
               deep=`expr $deep + 1`
               search    # with recursivity ;-)
               numdirs=`expr $numdirs + 1`
            fi
         fi
      fi
   done
   cd ..
   if [ $deep ] ; then
      swfi=1
   fi
   deep=`expr $deep - 1`
}

# - Main -
if [ $# = 0 ] ; then
   cd `pwd`
else
   cd $1
fi
echo "Initial directory = `pwd`"
swfi=0
deep=0
numdirs=0
zz=0

while [ $swfi != 1 ]
do
   search
done
echo "Total directories = $numdirs"


-------------------------------- cut here --------------

   The changes are to put the "cd $dir" as the predicate of an IF
   statement, NOT IN A SUBSHELL, and the recursive part is the switched
   clause. This prevents infinite recursion in the case of an unreadable
   or unexecable dir.
     _________________________________________________________________
   
  Of Logs and Other Things
  
   Date: Sun, 10 Aug 1997 21:47:39 +0200
   From: D. Emilio Grimaldo T. grimaldo@panama.iaehv.nl
   
   Hi,
   I recently saw on the August issue of Linux Gazzete and some previous
   issues about the handling of system logs. Well, it doesn't have to be
   complicated, in fact I have written a very useful script/package that
   has been around for a couple of years, it is called Chklogs and is
   used by major network providers, companies and small-time users of
   Linux systems. In fact it is going to be featured in the Linux Journal
   some time this year. IT fulfills all the log handling needs. For more
   information see http://www.iaehv.nl/users/grimaldo/info/
   
   Catch the link to Chklogs
   
   Best Regards,
   Emilio
     _________________________________________________________________
   
  Calculator Tip
  
   Date: Sun, 27 Jul 1997 23:43:37 +0200 (MET DST) From: Hans Zoebelein
   zocki@goldfish.cube.net
   
   Hello Linux Gazetters,
   Here comes a real cheap command line calculator. Since shell scripts
   do only integer calculation, you are stuck if you want floating point
   precision.
   
   You also want to do sometimes stuff like 'how much is 1200*3/7' at the
   commandline without firing up a full blown GUI calculator.
   
   Just for that work you can use the calcme command line calculator,
   which is hacked in perl. Dont forget that a shell thinks differently
   about 10*3 than a calculator. So do it as 10\*3 or "10*3".
   
   The icing of the cake is the optional formatting. If you supply
   something like %.3f as second parameter, the output is nicely
   formatted as floating point number and up/down rounded correctly after
   3 decimals.
   
   You also can do a calc 10/3 %20.6f which returns a string with 6
   digits and 20-6=14 spaces like ______________3.3333. So formatting of
   lists in shell scripts is real fun now.
   
   Enjoy!
   Hans
#!/usr/bin/perl

#
# The ultimate command line calculator :-^
# Usage calcme <string_to_calculate> [<output_format>]
#

# Input is a string like (10+3)/7 or "(10 + 3) / 7"
# Output is the calculated result of the string (sic!).
# Optional formatting can supplied as 2nd parameter.

if (@ARGV == 0 || @ARGV > 2)
{
   die("Usage: $0 <\"formula_to_calculate\"> [<output_format>]\n");
}

$format = "";
$calcme = $ARGV[0];
(@ARGV == 2) && ($format = $ARGV[1]);

$output = eval($calcme);

if(@ARGV == 1)
{
   print(STDOUT "$output\n");
}
else
{
   printf(STDOUT "$format\n", $output);
}
exit(0);

   -- Hans
     _________________________________________________________________
   
  Another Way to View Tarred Files
  
   Date: Sat, 02 Aug 1997 02:18:07 +1000 (GST) From: Gerald J Arce
   garce@starcommand.mang.net
   
   In issue 19, I read a 2 cents tip regarding viewing a tarred file. I
   use less instead..

ex:
tar tzf foo.tar.gz

less foo.tar.gz

   Less typing (grin).
     _________________________________________________________________
   
  Script Ease
  
   Date: Wed, 6 Aug 1997 01:54:19 +0200 (GMT+0200) From: Trucza Csaba
   ctrucza@cemc.soroscj.ro
   
   Hi all,
   
   As a programmer-wannabe, I do a lot of typing. To ease at least the
   beginning of each source file (which is mainly the same: include-s,
   define-s, imports and stuff), I wrote a script to automatize this. For
   the quality of the script please read the notice at the end of my
   mail.
(file: se)
---------cut here---------------
#!/bin/sh
#
#       source editor (se)
#
#       usage: se <filename> <type>
#
#       WARNINGS:
#               1. do not supply extension:
#                       se MyProg.java will make a MyProg.java.java!!!
#
#               2. manually create the
#                       SE_HOME_DIR,
#                       SE_HOME_DIR/temp,
#                       SE_HOME_DIR/templates
#
#       man se:
#
#       create two files for each type of the source you want to se.
#       the script will copy the first file+filename+second file into a new
#       file (you got it?:-)
#
#       so: if you want java, create two files:
#
#       templates/java.1:
#
#       ---8<---
#       public class
#       --->8---
#       (Do not put a newline at the end!)
#
#       templates/java.2
#
#       ---8<---
#       {
#               public static void main(String args[]){
#               }
#       }
#       --->8---
#
#       the script for se MyProg java (or jus se MyProg if the last time you
#       used java as type) will create a new file called MyProg.java:
#
#       public class MyProg
#       {
#               public static void main(String args[]){
#               }
#       }
#
#       examine and modify at will
#
#       author: Trucza Csaba ctrucza@cemc.soroscj.ro
#
#       this script may be full of errors
#

SE_HOME_DIR=~/.source-editor
LAST_USED=$SE_HOME_DIR/last_used

if [ -f $LAST_USED ] ; then
        SE_DEFAULT_TYPE=`cat $LAST_USED`
fi

case $# in
        0)
        echo "no parameter"
        if [ -z $SE_DEFAULT_TYPE ] ; then
                SE_DEFAULT_TYPE=java
        fi
        FILE_TYPE=$SE_DEFAULT_TYPE
        FILENAME=~/.source-editor/temp/temp.$FILE_TYPE
        ;;
        1)
        echo "filename"
        if [ -z $SE_DEFAULT_TYPE ] ; then
                SE_DEFAULT_TYPE=java
        fi
        FILE_TYPE=$SE_DEFAULT_TYPE
        FILENAME=$1.$FILE_TYPE
                ;;
        2)
        echo "name and type"
        FILE_TYPE=$2
        FILENAME=$1.$FILE_TYPE
        ;;
esac

echo "FILE_TYPE="$FILE_TYPE
echo "FILENAME="$FILENAME


if [ -f $FILENAME ]; then
        echo file exists
else
        build-template $FILE_TYPE $1
        mv ~/.source-editor/templates/$FILE_TYPE.template $FILENAME
fi
echo $FILENAME
echo $FILE_TYPE > $LAST_USED

jstar -tab 4 $FILENAME
---------cut here---------------

   The second script is a simple backup script, to back all the sources
   up and edit the tracking file.
(file: backup)
---------cut here---------------
#!/bin/sh
#
#       kind of backup with kind of version control
#       usage: backup
#
#       backs up the current directory (well not all of it, just your
#       programs)
#
#       1. creates a dir named backup (or whatever)
#       2. in this directory will be a tracking file, a plain text file
#               in which you can write some comments every backup
#       3. optionally in the file named filelist you can write the names of
#       the files you want to back up
#       4. examine and modify at will
#
#       author: Trucza Csaba ctrucza@cemc.soroscj.ro
#
#       this script may be full of errors
#

#
#       where to back up
#
if [ -z $BACKUPDIR ] ; then
        BACKUPDIR=backup
fi

if [ ! -d $BACKUPDIR ] ; then
        mkdir $BACKUPDIR
fi

#
#       last version backed up
#

LAST_FILE=$BACKUPDIR/last

if [ -f $LAST_FILE ] ; then
        VERSION=`cat <$LAST_FILE`
else
        VERSION=0
fi
let VERSION=$VERSION+1

#
#       prepare next backup directory
#

NEXT_DIR=$BACKUPDIR/ver.$VERSION

mkdir $NEXT_DIR

#
#       get files to back up
#

LIST_FILE=$BACKUPDIR/filelist

if [ -f $LIST_FILE ] ; then
        cp `cat $LIST_FILE` $NEXT_DIR
else
#
#       if no filelist found, backup C and Java files
#       modify as you wish
#
        cp *.c $NEXT_DIR >/dev/null 2>&1
        cp *.h $NEXT_DIR >/dev/null 2>&1
        cp *.java $NEXT_DIR >/dev/null 2>&1
fi

#
#       update last
#

echo $VERSION >$LAST_FILE

#
#       edit trackfile
#

TRACK=$BACKUPDIR/track

echo >> $TRACK
echo >> $TRACK
echo "=====================================================================">>
$TRACK
date >> $TRACK
echo "Version: "$VERSION >>$TRACK

#
#       here use your favorite editor :)
#
jstar $TRACK
---------cut here---------------

   They should be self-explanatory. but, These scripts should not be used
   for design or development of nuclear, chemical, biological, weapons or
   missile technology, or any other places where humans can be hurt
     _________________________________________________________________
   
  Syslog Thing
  
   Date: Thu, 07 Aug 1997 15:00:29 -0700
   From: Kent Friis dk5f@ehs.dk
   
   In issue 20, I saw a 2c tip regarding syslog, Including changing the
   config file, and REBOOTING. Now wait a minute, I thought this was
   Linux. How can one get uptime's of 300+ days, if you need to reboot
   every time you change a config file.
   
   The solution is simply to edit the config file, and kill -HUP (pid of
   syslogd).
   
   You should NEVER need to reboot, except to install a new kernel.
   
   Kent Friis.
     _________________________________________________________________
   
  Sorta E-mail-to-Fax...Well to-Printer
  
   Date: Fri, 8 Aug 1997 20:04:30 +0500 (PKT)
   From: Tee Emm tm@super.net.pk
   
   Hello,
   
   I can bet that many of you readers will try out this tip atleast for
   once. Here we go:
   
   I work at an ISP here in Pakistan with 4 more shift engineers. We have
   offices in three different locations and, although email and talk are
   used very frequently, we sometime require ABSOLUTELY IMMEDIATE
   responce from the other office. Emails remain unchecked and talk
   request are sometimes ignored because the other party might be busy
   doing something else on a talk-disabled terminal. Well, you cannot
   ignore a Panasonic Dotmatrix printer printing out messages in your
   control center!
   
   One of my so-to-say boss talked of having a utility which will poll a
   POP3 mailbox every few seconds and printing out any mail that might be
   in the box. He, being a visual basic guru, started writing a windows
   based application that would do the required. I, being a die hard
   Linux creature, started thinking how I can do the same on my dear
   Linux box. Well, it took me a day to ponder on this issue and when I
   clicked, it was just a breeze! Sixteen key strokes and I was ready
   with my system. I yelled 'Windoz Suxs, Linux Rules'!
   
   I edited the /etc/aliases file and keyed in the following line:
urgent:         "| lpr"

   saved, the file and did a 'newaliases' and bingo! Any mail sent to
   urgent@super.net.pk was immediately printed on the screaming dot
   matrix printer. My boss was duly stunned!
   
   (Note: You must have your 'lpr' command working before you can go
   ahead with this tip.)
   
   Tariq Mustafa,
     _________________________________________________________________
   
  Setting Xterm Title to Current Process
  
   Date: Tue, 12 Aug 1997 01:09:02 -0500 (CDT)
   From: Rob Mayoff mayoff@dqd.com
   
   I saw this tip the Gazette: Hi, after searching (to no avail) for a
   way to display the currently executing process in the xterm on the
   xterm's title bar, I resorted to changing the source of bash2.0 to do
   what I wanted. from line 117 of eval.c in the source, add the lines
   marked with # (but don't include the #)
   
   If you use ksh instead of bash, you can get the same effect without
   changing the source:
typeset -A Keytable
trap -- 'eval "${Keytable[${.sh.edchar}]}"' KEYBD
[[ "$TERM" == xterm ]] && \
Keytable[$'\r']=$'[[ -n ${.sh.edtext} ]] && print -n "\E]2;${.sh.edtext}\a"'

   You can download ksh (the POSIX-compliant Korn shell) for free from
   http://www.research.att.com/orgs/ssr/book/reuse
     _________________________________________________________________
   
  CVS
  
   Date: Thu, 14 Aug 1997 11:08:27 -0400
   From: Paul Rensing paulr@dragonsys.com
   
   Mario Storti wrote:
   
   Using shar + RCS to Backup Set of Source Files
   
   Hi, RCS (see rcs(1)) is a very useful tool that allows to store
   versions of a file by storing only the differences between successive
   versions. In this way I can make a large amounts of backups of my
   source files but with a negligible amount of storage. I use it all the
   time, even for TeX files!! However, when you are working with a set of
   source files (*.c, shell or Perl scripts, I work mainly with Fortran
   .f and Octave *.m files) what I want is to make backups of the whole
   set of files in such a way that you can recover the state of the whole
   package at a given time. I know that there is a script called
   rcsfreeze around, but I know that it has problems, for instance if you
   rename, delete or create new files, it is not guaranteed to recover
   the same state of the whole set.
   
   I think a good way to handle this is by "upgrading" to CVS. CVS is a
   version control system built on top of RCS and was designed
   specifically to handle version control of large trees of files (the
   company who wrote it was a Sun VAR and handled the > 1000 files which
   they regularly received from Sun).
   
   Once you have the project set up, you could simply do "cvs commit"
   from the top directory of a project, and CVS will check in all the
   changes to all the controlled files in the tree. If you are using this
   for "backup", you would only need to keep a copy of the CVS
   "repository".
   
   Paul Rensing
     _________________________________________________________________
   
            Published in Linux Gazette Issue 21, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
      This page maintained by the Editor of Linux Gazette, gazette@ssc.com
      Copyright © 1997 Specialized Systems Consultants, Inc.
      
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                                 News Bytes
                                      
                                 Contents:
                                      
     * News in General
     * Software Announcements
     _________________________________________________________________
   
                              News in General
     _________________________________________________________________
   
  Linux® Trademark Resolution
  
   Ownership of Linux® Trademark Resolved
   
   Monterey, California, August 20, 1997 - A long standing dispute over
   ownership of the Linux® operating system trademark has been resolved.
   As a result of litigation brought by a group of five Linux companies
   and individuals against William R. Della Croce, Jr. of Boston,
   Massachusetts, Della Croce has assigned ownership for the registered
   mark to Linux Torvalds, the original author of Linux, as part of the a
   settlement agreement.
   
   The plaintiffs in the suit were Linus Torvalds; specialized Systems
   Systems Consultants, Inc. (the Linux Journal of Seattle; Yggdrasil
   computing, Inc. in San Jose; Linux International, Amherst, NH; and
   Work Group Solutions of Aurora, CO. Non-plaintiffs Red Hat Software,
   Inc., Metrolink Inc., and Digital Equipment Corporation supported the
   litigation and contributed to the cost of the litigation.
   
   The five plaintiffs brought suit against Della Croce in the U.S.
   Trademark Trial and Appeals Board, in November 1996. Della Croce had
   obtained registration of the Linux mark in September 1995, which
   created a storm of protests by the Linux community, who felt the mark
   belonged to Torvalds or the Linux community and not to any individual.
   In an attempt to correct the situation, the plaintiffs retained the
   internationally known intellectual property law firm of Davis &
   Schroeder of Monterey, California, who handled the case on a greatly
   reduced fee bases, as a service to the Linux community.
   
   The five plaintiffs, through their attorneys, announced that (1) the
   matter has been settled by the assignment of the mark to Linus
   Torvalds, on behalf of all Petitioners and Linux users, and the
   dismissal with prejudice of the pending PTO Cancellation Proceeding;
   and (2) that Respondent was reimbursed for his trademark filing fees
   and costs by Petitioners. The other terms of the Settlement Agreement
   are confidential.
   
   All inquiries should be referred to Petitioners' law firm, Davis &
   Schroeder at 408-649-1122 or by email at ggd@iplawyers.com. A copy of
   the original Cancellation Petition filed in the TTAB, can be found at
   http://www.iplawyers/text/linux.htm.
     _________________________________________________________________
   
  Linux Journal 1996 Back Issue CD-ROM
  
   Linux Journal announced the release and ship date of their 1996
   back-issue CD-ROM. It will be available September 17, 1997. LJ's first
   back-issue CD-ROM will consist of twelve issuews of Linux Journal
   published during 1996. Features covered in 1996 include; systems
   administration, World Wide Web, back-ups, Linux distribution
   comparisons, software development, shell programming, getting new
   users started, graphics and several other topics.
   
   An HTML interface will allow you to access the CD-ROM infromation
   using any World Wide Web browser. For those that don't have a World
   Wide Web browser, gzilla, has been included on the CD-ROM.
   
   Linux Journal's 1996 back issues CD-ROM is $19.95 plus shipping and
   handling and can be ordered directly from Linux Journal.
   
   For more information take a look at http://www.linuxjournal.com/.
     _________________________________________________________________
   
  Vi Mugs
  
   You might be interested in the vi reference mugs found at
   http://www2.cic.net/~gpoulos/vimug_main.html. Check them out!
     _________________________________________________________________
   
  New Mailing List
  
   Check out a new mailing list for Linux users to help each other with
   problems.. To subscribe send email to majordomo@ourweb.net with the
   following in the body: subscribe linuxlst
     _________________________________________________________________
   
  Linux Aptitude Test
  
   There is a project which is trying to establish a quantitative measure
   to assist in determining a person's knowledge and general usefulness
   in Linux setup, configuration, and maintenance. The project is aiming
   to create a test that can be used to assess an employee's strenths and
   general understanding of Linux.
   
   Take a look at http://www.icv.net/LAT
     _________________________________________________________________
   
                           Software Announcements
     _________________________________________________________________
   
  The Hawkeye Project
  
   "Hawkeye" is the name of a new Linux Web server program, which has
   recently been released to the public. IT is an Internet/Intranet
   server suite, implementing Internet protocols for information
   interchange. A short list of the most important functions of Hawkeye:
     * HTTP 1.0 Server, HTTP 1.1 coming soon
     * POP3 / SMTP Server (E-Mail)
     * NNTP Server (Newsgroups)
     * FTP Server (File area)
       
   Hawkeye is running under the LINUX operating system and requires the
   Linux SQL database MySQL http://www.tcs.se. Hardware requirements are
   much like what you would need to build a normal Linux system. For
   optimal performance, we recommend a Pentium machine withat least 16
   Megabytes of RAM. Hawkeye itself uses very little Harddisk space, so
   the size depends mainly on your site. Check it out on the Hawkeye Web
   Home Site
     _________________________________________________________________
   
  LinkScan 3.1 Released
  
   Electronic Software Publishing Corporation introduced a number of new
   features in LinkScan version 3.1. There is added ability to check
   hyperlinks that are embedded within Adobe Acrobat PDF files and
   enhanced TapMap features such as...
   
   Free evaluation copies of LinkScan 3.0 may be downloaded from the
   company's website at: http://www.elsop.com/linkscan
     _________________________________________________________________
   
            Published in Linux Gazette Issue 21, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
      This page written and maintained by the Editor of Linux Gazette,
      gazette@ssc.com
      Copyright © 1997 Specialized Systems Consultants, Inc.
      
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                               The Answer Guy
                                      
                   By James T. Dennis, jimd@starshine.org
          Starshine Technical Services, http://www.starshine.org/
     _________________________________________________________________
   
  Contents:
  
     * Linux Control Panel
     * Linux Command Line Arguments
     * More Random Crashes
     * More on Disk Defrag
     * X-Windows is Crashing
     * Lunx and Frames
     * More on ftpd
     * DNS Problem
     * Sendmail
     * Linux PPP Server
     * Linux/Unix Emulator
     * LILO Concerns
     * Crypt
     * Apache 1.2.1
     * PPP and Internet MCI
     * Enabling Automounter on a Linux Notebook
     * XLocks Monitor
     * Pop3d That Doesn't Use /etc/passwd
     * Configuration of Two Ethernet Cards
     * Attaching a Colsole to a PC
     _________________________________________________________________
   
  Linux Control Panel
  
   To: ggonzale@ix.netcom.com 
   
   I have recently installed RedHat Linux ver 4.2 on my pc . My problem
   is that I cannot get the control-panel to work when I run startx or
   XDM . The panel comes up but I am unable to activiate any buttons in
   control-panel . I don't know what I did wrong or what to check !
   Please help... 
   
   Are you running it as root? Are there any interesting error messages
   in /var/log/messages? Are there any interesteing error messages back
   on the text console from which you ran "startx" (you can switch out of
   XFree86 with {Ctrl}+{Alt}+{Fx} -- where {Fx} is the function key that
   corresponds to any of you other virtual consoles). Are you sure you
   installed the Python and related libraries (last I heard all of the
   Red Hat GUI control panel stuff is written in Python).
   
   As I've said several times -- I'm not a Red Hat specialist (although
   that is what I'm running here at the moment) and I barely use X (since
   I vastly prefer old fashion text mode).
   
   Have they ever gotten a support line running that can answer questions
   that are specific to their code? (Hey! I wouldn't even object to a
   paid support line -- if it was good).
   
   Thank you for responding to my question I will look into the areas you
   suggested . However I have one other question that is how would I
   activate my modem from a Linux command line? I thought I needed the
   xwindow to do that in the first place. 
   
   One of the virtues of Unix is that you don't need X Windows to do
   anything except run X applications -- there are other ways to access
   graphics (SVGALib, MGR) use your mouse (GPM) do cut and paste
   (GPM/select, 'screen'), provide task/session switching (virtual
   consoles, and 'screen'), do screen management ('splitvt', emacs) etc.
   
   In answer to your question regarding modems: There are a number of
   programs that are included with the typical Linux distribution that
   may use your modem:
   
   pppd is the PPP daemon -- it usually uses the 'chat' command to talk
   to the modem.
   
   minicom is a vaguely Telix like ncurses terminal emulation package
   (Telix is a popular shareware MS-DOS program). It provides a
   fullscreen, color interface.
   
   'cu' is a "call utility" usually associated with UUCP. It uses the
   UUCP configuration files for information about your modem -- if you
   have those configured. It's a very limited communications package --
   that's only virtue is that it is small.
   
   UUCP is a suite of programs -- of which the uucico program actually
   talks to the modem. You almost certainly are not planning on using
   this. However UUCP was (and still is) used as a mail, file, and
   netnews transport protocol for years before TCP/IP existed. I still
   use it for my mail.
   
   C-Kermit is a communications package from Columbia University. You can
   fetch it freely -- but it can't be included with Linux (or other)
   CD-ROM collections of software due to it's licensing model. If you
   decide you like it you should buy a copy of the C-Kermit book by Frank
   da Cruz (the program's principal architect and head of the project
   since it's foundation).
   
   C-Kermit is also a scripting language and can be used as a telnet or
   rlogin client, and Kermit is a file transfer protocol which can be
   used by C-Kermit over any communications channel that it can
   establish. I wrote an article for SysAdmin Magazine on the subject
   just a couple of months ago.
   
   There are other program that access your modem if you want to use
   them, There's a SLIP package which usually controls the modem via
   'dip' -- there's a variety of different "getty" implementations which
   "Get a tty" (terminal) so that you can log in from a terminal, or
   another system running a terminal package.
   
   I use mgetty which not only allows incoming dial-up data connections
   but adds support for FAX and even voice/DTMF with some modems. That
   package also includes "sendfax" -- a program for outgoing faxes. efax
   is another package for support FAXes under Linux.
   
   Judging from your earlier question regarding the Red Hat Control Panel
   I suspect that you're just interested in configuring your system for
   PPP access to your Internet service provider (ISP). There is a script
   floating around (on http://sunsite.unc.edu somewhere) called
   'pppsetup'. I think this will allow you to setup your PPP
   configuration from a text console (I used plain old 'vi' and made my
   own configuration files -- so I've never used this -- though I've seen
   it recommended many times).
   
   There are several HOW-TO's on configuring PPP (and SLIP) which can be
   found at http://sunsite.unc.edu/LDP/HOWTO Look for the ones that refer
   to "PPP" and "ISP."
   
   Hope all of that helps.
   
   -- Jim
     _________________________________________________________________
   
  Linux Command Line Arguments
  
   From: Ronald B. Simon ronald.b.simon@boeing.com 
   
   Where can I find a list of the linux boot command line arguments?
   e-mail addresses: 
   
   Look in the following HOW-TO document: BootPrompt HOWTO
   http://sunsite.unc.edu/LDP/HOWTO/BootPrompt-HOWTO.html
   
   -- Jim
     _________________________________________________________________
   
  More Random Crashes
  
   Date: Fri, 01 Aug 1997 14:40:06 -0700
   From: sloth sloth7@hotmail.com 
   
   Hi, I wrote to you a while ago with a problem regarding random crashes
   while installing Linux... I recently tried again, with exactly the
   same hardware but a different hard disk and the whole thing worked
   fine. unfortunately, the hdd i used was only and 80mb conner :). The
   hard disk i want to use is a 2.1 gb Quantum Fireball. When I try on
   this hard disk the computer locks up at a different place each time
   during the installation ( but only when it is decompressing the
   files). I have an IDE Hard disk controller. 
   
   h/w list: 
     * Intel Pentium 150 CPU 
     * Intel Triton VX m/b 
     * S3 Virge 3d graphics card 
     * 16mb EDO RAM 
     * 2.1gb Quantum Fireball 
     * onboard (ide) hdd controller 
     * 24x IDE CDROM 
       
   any help would be much appreciated. 
   
   cheers, sloth... 
   
   This new information about your situation suggests two possibilities:
   
   1) Your HD is bad -- possibly it has some bad sectors that the drive
   electronics haven't mapped out, or possibly it's something more
   subtle.
   
   2) Your controller (IDE) is incompatible with your HD and/or the
   combination of your HD and CD drive.
   
   Some notes:
   
   Any IDE drive that's over 540Mb requires an EIDE (enhanced IDE)
   controller/BIOS. There have been cases where specific IDE devices
   weren't compatible with one another -- where a particular combination
   of devices couldn't share the same IDE channel.
   
   So, try getting a new EIDE controller and disabling the interface on
   the motherboard (or configuring the new on as a "secondary" IDE
   channel. Try running the two devices on the new EIDE controller if you
   can get it installed as the primary (but don't blindly trust the
   motherboard documentation -- I've heard that some of the "disable me"
   settings on some boards just don't work). Then try running the CD-ROM
   drive and the hard disk on separate channels (controllers).
   
   If you can get a copy of Spinrite or the Norton Utilities for DOS then
   you might install a small DOS partition and run that on your Fireball.
   It might be able to map out any bad sectors.
   
   If you get a new controller (which will be less expensive then buying
   either of the software packages I just mentioned) I'd try a a
   QuickPath Portfolio or a GSI brand multi-funtion card with 4 high
   speed (16550 UART) serial ports. The QuickPath is an ISA card (rather
   than taking up one of your PCI slots for a set of relatively slow
   interfaces) and is what I'm using in a couple of my machines here. It
   combines floppy, four serial, two parallel, two IDE channels and a
   game port (for 13 devices in all).
   
   Hope that helps. Unfortunately the diversity and cheapness of PC
   hardware results in a diversity of inexplicable incompatibilities and
   a common "cheapness" in quality that's imposed by the competition. So,
   as much as I hate to recommend "black magic" experiments in new
   hardware -- it's frequently the most effective approach.
   
   -- Jim
     _________________________________________________________________
   
  More on Disk Defrag
  
   Date: Mon, 4 Aug 1997 20:27:11 +0200
   From: Markus Enzenberger Markus.Enzenberger@physik.uni-muenchen.de 
   
   ...them in any Linux books that I have consulted. Is disk
   degragmentation not needed in maintaining a Linux file system? 
   
   No, disk fragmentaion is a particular problem of the DOS FAT file
   system and its descendants. You can see the fragmentation status of
   one your partitions by running the e2fsck file system check program as
   root on an unmounted partition. It is run every boot time too. It will
   report the amount of non-contiguous files.
   
   - Markus
     _________________________________________________________________
   
  X-Windows is Crashing
  
   Date: Sun, 13 Jul 1997 19:34:12 -0700
   From: Gerramie Dinselgerr@weaveworld.unix.net 
   
   Hello. I am searching all over for an answer or a pointer to this
   problem: 
   
   I upgraded my memory from 18 megs to 48. Now, X-Windows crashes on me
   when I load FVWM2.. Odd, because XDM loads fine and will sit there,
   waiting, without crashing for as long as you want. Also, console mode
   works wonderfully... 
   
   Can you offer any help? Gerramie Dinsel 
   
   The first guess might be that the new memory is bad -- and that you
   normal (console) usage -- and the overhead of xdm just doesn't "land"
   on the bad chips.
   
   One way to test this would be to do something from console mode that
   will use *a lot* of memory. make's -j switch (to parallelize as many
   gcc processes as memory allows) is a good way to test for this sort of
   thing. Just make a new kernel (no need to even to an install of it --
   just the make is fine).
   
   If that runs O.K. than we have linked the problem X -- possibly to any
   graphical use of the card beyond xdm's. So we try to run X with no
   window manager and a minimal configuration file (no setting of special
   root images like xli, xloadimage, or xsetroot, no -16bpp or any of
   that).
   
   It could be that your video card uses a region of address space (a
   video frame buffer). Look carefully in the configuration settings, or
   call the manufacturer's tech support. That's the most likely problem.
   
   If you have access to another, simpler video card -- try swapping it
   in and seeing if that helps. If it does than you need to reconfigure
   that video card or use one that's better behaved.
   
   If that doesn't help then it's just anyone's guess what's happening.
   Try rearranging the adapters in your card cage -- it may be that the
   video card is emanating some noise or crosstalk that's affecting your
   RAM. Re-arranging adapters used to be a time honored sport among PC
   technicians. I think it's more rare in the PCI era -- but you don't
   even mention what sort of bus your using -- and I have no information
   about your hardware. Besides -- it can't hurt.
   
   If it still doesn't work try switching to 32Mb. This might be some
   weird chipset bug on your amount of RAM. More systems work with 16 or
   32Mb of RAM than with 24 or 48Mb.
   
   There are a plethora of parameters you can pass to the kernel for
   excluding specific memory address ranges from its use. They might help
   -- but I'd hate to have to experiment with them.
   
   -- Jim
     _________________________________________________________________
   
  Lynx and Frames
  
   Date: Tue, 05 Aug 1997 02:48:26 -0700
   From: Scott omegam@COMMUNIQUE.NET 
   
   Hey Jim, Caught this quote in your article: 
   
   (Warning for Lynx users -- both of these sites use frames and neither
   bothers to put real content in the "noframes" section -- Yech!) 
   
   Current versions of lynx support frames and tables in a fairly nice
   and elegant fashion. They even handle cookies. 
   
   Check out http://lynx.browser.org 
   
   Just thought you should know. Sure, I use Netscape for some of my
   browsing and I hope to begin using Mnemonic soon. But for really fast,
   heavy-content oriented browsing, lynx on the console or in a
   color-xterm does the trick. 
   
   Scott 
   
   Oh, I know that Lynx 2.7.1 can handle frames, by simply showing you a
   list of the available frames as a set of hot points at the top of the
   rendered page. I use Lynx for almost all of my web browsing.
   
   The problem is that the HTML editors used by many sites don't put
   meaningful names on the frames so you get a list of: frame01.html,
   frame02.html, etc. instead of something like: navigation.html,
   main.html, toolbar.html etc.
   
   It's as irritating as those sites that use large tableaus of image
   icons with no Alt="" attributes or imagemaps that with no sane
   information in the .map file. (The current Lynx can also handle most
   types of image maps.
   
   -- Jim
     _________________________________________________________________
   
  More on ftpd
  
   Date: Tue, 05 Aug 1997 01:59:18 -0700
   From: Benjamin Peikes benp@npsa.com 
   
   Jim, 
   
   I am currently trying to set up some user accounts on our webserver so
   that other people working on their sites can ftp their files up and
   down easily. I am using wu.ftpd and have set up the line 
guestgroup ftponly

   in /etc/ftpaccess. I have also added the group into /etc/group and
   added the users name to the group. The problems is that everything
   seems to work correctly except that ls and dir return nothing during
   an ftp session. 
    1. ftpd chroot's to the correct directory. 
    2. ftpd changes to the correct home directory. 
    3. you can upload and download files without any problems if you know
       the name of the files you want. 
    4. I have made the directories world rwx just to make sure it wasn't
       a permissions problem. 
       
   I'm so close that it's driving me nuts. The main problem arises when
   people need to transfer entire directories. Most of them are using GUI
   driven ftp clients and the lack of directory listings kill those
   clients. I know there must be a simple solution. Any help would be
   great. 
   
   Ben 
   
   You're probably having problems with the shared libraries or devices
   that are typically required by the ls command. Some version of ls
   require that you have a /dev/null and/or a /dev/tcp in order to work
   properly. Most versions of ls require some shared libraries and all of
   them require the existence of some of /etc/passwd and /etc/group files
   (even with completely fictional data in them) in order to resolve UID
   numbers into symbolic ownership information to display in long
   listings.
   
   For real information about setting up wu-ftpd on any platform look at
   the following resources: http://www.landfield.com/wu-ftpd/
   http://www.cetis.hvu.nl/~koos/we-ftpd-faq.html (Or, send mail with
   subject of "send faq" no quotes, body ignored).
   
   ... and information about the guestgroups feature in particular can be
   found at: http://www.landfield.com/wu-rtpd/guest-howto.html
   
   ... or ftp://ftp/fni/com/pub/wu-ftpd/guest-howto
   
   A document describing virtual ftp servers:
   http://www.westnet.com/providers/multi-wu-ftpd.txt
   
   Ftpaccess on virtual ftp servers
   ftp://ftp.meme.com/pub/software/wu-ftpd-2.4.2/README.ALT.FTPACCESS
   
   Hope that covers it.
   
   -- Jim
     _________________________________________________________________
   
  DNS Problem
  
   Date: Mon, 04 Aug 1997 18:31:36 -0700
   From: Dr Ceezaer ceezaer@cyberspace.org 
   
   (Ping doesn't work -- but /etc/resolv.conf and /etc/hosts.conf are
   correct and nslookup works). 
   
   It used to work before I upgraded my library files (/lib and /usr/lib)
   so I don't think there is an error in /et/resolv.cfg 
   
   Well... I've solved the problem. First I re-installed Linux on a small
   120 MB harddisk. By comparing all relevant directories I found that I
   had a file called libc.so.5 (no symlink) in /usr/X11R6/lib plus the
   normal one in /lib. By removing the file /usr/X11R6/lib/libc.so.5 it
   all works again :) 
   
   Ahh the mysteries of the shared libraries. I've always wondered how
   the dynamic loading code searches for these .so (shared object) files.
   However I've never wondered enough to leave stray copies of them
   laying around.
   
   Well... I would need such a HOWTO, I didn't even got chroot to run... 
   
   The only real trick is to do a 'cd' before trying to execute the
   command -- otherwise your process is very confused becuase it can't
   access its current working directory (cwd).
   
   The other problem is that your target program must be contained in the
   chroot tree with any shared libraries and usually it will need a set
   of /etc/ files including the termcap and maybe a set of
   /usr/lib/terminfo files.
   
   -- Jim
     _________________________________________________________________
   
  Sendmail
  
   Date:Sun, 10 aug 1997 14:4457 -0700
   From: Stephen P. Smith ssmith1@vilma.bcasd.az.honeywell.com 
   
   When I send mail (using the mail program) to someone my reply to
   address is wrong. What sendmail is sending is
   account@computername.isp.com What I want is popaccount@isp.com What do
   I need to change to fix this 
   
   Stephen Smith 
   
   You use the "masquerade" feature in your local sendmail configuration.
   I recommend that you use the m4 macro package to reate a new sendmail
   configuration.
   
   First copy the old configuration. I like to use RCS -- the revision
   control system to track changes to my configuration files. Here's how
   you'd do that:
   
   (As root)
                # cd /etc
                # mkdir RCS
                        (unless you already have one)
                # ci sendmail.cf
                        (checks the cf file into the RCS directory)
                # co -l sendmail.cf
                        (checks it back out, locked for editing)

   Now you want to create a sendmail "mc" file. This is a file that uses
   sendmail specific macros -- which is then processed by the m4 program
   to generate the full sendmail.cf. A typical sendmail.cf is over a 1000
   lines long -- a typical "mc" file is less than 20.
   
   Under my Red Hat installation the sample "mc" files are located in
   /usr/lib/sendmail-cf/cf/. You can put yours there, or you might use
   /usr/local/lib/sendmail (and perhaps add a symlink under the other
   path). This helps maintain the separation between your local changes
   and the distribution's files "as shipped."
   
   I name my "mc" files after my hostnames -- so mine is "antares.mc." It
   looks like this:

divert(-1)
include(`../m4/cf.m4')
VERSIONID(`@(#)antares.uucp.mc  .9 (JTD) 8/11/95')
OSTYPE(`linux')

FEATURE(nodns)
FEATURE(nocanonify)
FEATURE(mailertable)
FEATURE(local_procmail)
FEATURE(allmasquerade)
FEATURE(always_add_domain)
FEATURE(masquerade_envelope)

MAILER(local)
MAILER(smtp)
MAILER(uucp)

MASQUERADE_AS(starshine.org)
SITECONFIG(uucp.antares, starshine.org, U)

define(`UUCP_RELAY', a2i)
define(`UUCPNAME', starshine)
define(`UUCPNODES', a2i)
define(`RELAY_HOST', a2i)
define(`RELAY_MAILER',uucp)
define(`SMART_HOST', uucp-dom:mailer)
define(`PSEUDONYMS', starshine|antares|antares.starshine.org|starshine.org)
undefine(`BITNET_RELAY')

   I've seen some of these that end each line with a 'dnl' -- which is a
   macro to "do newline" -- I don't bother with that.
   
   You'll want to ignore all the UUCP references and my SITECONFIG line
   (mine is also a UUCP reference -- so yours will be different --
   preserve whatever is in the samples that mathc your current
   configuration).
   
   What your interested in here is the various "masquerade" lines. Now
   you'd just 'cd' to the directory where you've created this "mc" file
   and issue a command like:
        m4 < $MYFILE > /etc/sendmail.cf

   (where you replace $MYFILE with whatever you named your "mc" file, of
   course).
   
   It's also possible to to simply add a line like:
DMisp.com

   ... directly to your /etc/sendmail.cf. DM "defines masquerading" to be
   for "isp.com" (from your earlier example). This is easier, on the one
   hand -- but learning the m4 configuration method will serve you well
   if you ever have to do upgrades to your sendmail -- and it's a
   valuable skill if you ever have to administer Unix systems as (or as
   part of) your work.
   
   There are a variety of HOWTO's on configuring your mail to work well
   with your ISP. I don't have my PPP connection up at the moment -- but
   you should search the SSC web site (http://www.ssc.com) for the the
   HOWTO archive and look for the strings "ISP" and "mail."
   
   -- Jim
     _________________________________________________________________
   
  Linux PPP Server
  
   Date: Sun, 10 Aug 1997 05:34:45 -0700
   From: sengir@ozemail.com.au 
   
   I have a Linux PPP server but I can not get my Windows95 client to do
   the "automatic" login. Sure, I can get it all to work if I check
   "bring up terminal window after connecting". 
   
   All I have is the login: prompt, followed by the Password: prompt then
   right into PPP. 
   
   What gives ? 
   
   TIA
   -Rob 
   
   Here's a URL that talks about getting Linux mgetty to work with
   Microsoft's infamous "AutoPPP":
   
   ISP Resources - mgetty info(AutoPPP)
   
   For more general information about mgetty look at: Mgetty + Sendfax
   Documentation Centre
   
   -- Jim
     _________________________________________________________________
   
  Linux/Unix Emulator
  
   Date: Sun, 10 Aug 1997 05:30:18 -0700
   From: Jun Liu stefan@public.sta.net.cn 
   
   Hi, Dear James, 
   
   First I'd like express my gratitude for your great work on the Linux
   Gazette. But for the Linux/Unix Emulator, I think you're somehow
   wrong. Actually there do exist at least one such product as far as I
   know. When I was staying in Japan, I've learned there're quite some
   people there use a software called BOW (namely BSD on Windows ), which
   is a BSD emulator for Windows. Check out
   http://www.ascii.co.jp/superascii/bow if you do know Japanese. In
   short, this is a BSD kernel emulator for 4.4BSD-Lite based BSD Unix
   program. It's said most BSD binaries (x86 certainly,character mode
   applications only, no X, no debuggers like gdb) can be run unmodified.
   
   Actually, there has been quite a bit of work on supporting Unix under
   NT. Cygnus Support (http://www.cygnus.com) has made quite a bit of
   progress with their GNU-Win32 Project
   
   A couple of other sources worth noting are: OpenNT 2.0 Server Data
   Sheet UNIX to NT Resource Center 
   
   There was also a paper presented at the Anaheim USENIX conference this
   year:
     * Title: Porting UNIX to Windows NT
     * Author: David G. Korn
     * Pages: 43-57
     * Publisher: USENIX
     * Proceedings: 1997 Annual Technical Conference
     * Date: January 6-10, 1997
     * Location: Anaheim, CA
     * Institution: AT&T Labs-Research
       
   The advantages are, you have the rich development environment from
   Unix, and the nice( ? ) UI from Windows as well as lots of Windows
   applications around all at the same time. It's said BOW Version 1.5
   which is Windows95 compatible, is already published last year in May
   as a book and available in Japanese bookstores, priced at 9,800 yen
   with one floppy disk and one CD-ROM. 
   
   Hope this can be helpful. 
   
   Best regards.
   Stefan 
   
   Again, in the article to which you refer I was asking what the
   original person was asking for. Many Unix packages have been ported to
   NT, Windows '95, and DOS (emacs, perl, awk, most of the simple
   commands like grep, cp, find, and a couple of shells: Korn, bash) --
   and it would certainly be possible to host some binaries under (ELF,
   iBCS).
   
   At what point to NT become Unix?
   
   -- Jim
     _________________________________________________________________
   
  LILO Concerns
  
   Date: Sun, 10 Aug 1997 03:50:35 -0700
   From: Tibs tjf1@acpub.duke.edu
   
   I have been looking all over for an answer to my linux
   question...nobody seems able to help so I thought I'd ask you (liked
   the LG web stuff very much). I am about to take the plunge and install
   linux but I am concerned about how LILO will work on my system. I have
   two IDE drives on my system. The first is 1 gig and I have DOS, Win95,
   etc. on it and that's what I boot to. The second is divided into two
   1.5 gig partitions, and 1 500 meg partition. I planned on putting
   linux on that last 500 meg partition. 
   
   First: you'll want to learn how to use paragraphs. Break your question
   down into short steps so we can read it (particularly when we're doing
   the reading at 3:30 in the morning after hacking all day)
   
   .... The problem is that in order for my computer to recognize the
   full 3.5 gig capacity of the second hard drive, the hard drive
   installation floppy (it's a Maxtor) installed something called
   EZ-BIOS. So booting to DOS or Win95 now works and my BIOS recognizes
   all 3.5 gigs of the space. When I boot to a floppy I have to use the
   EZ-BIOS "boot to a:" option otherwise I can only access the first
   partition on the second drive. So when I install linux and add LILO,
   will LILO start doing stuff after the EZ-BIOS stuff loads? If so then
   it is not a problem but if LILO starts before EZ-BIOS does it's thing,
   then I don't think I'll be able to access my 500 meg partition. And
   since that's wherelinux would be, that would be a bit of a problem. 
   
   You're using an alternative master boot program which will be
   incompatible with any other boot software.
   
   You should use LOADLIN and forget all about LILO.
   
   I've written about LOADLIN several times in this column -- so please
   look back through some of the pack issues for details.
   
   So I guess my question would be: 1. do you know anything about this
   EZ-BIOS stuff and it's compatibility with linux (the Maxtor people
   aren't helping with linux questions) 
   
   The EZ-BIOS and the old Ontrack Disk Manager and similar drivers were
   originally created to allow DOS to see larger partitions (which they
   did by hooking into the BIOS Int 13H disk access routines before DOS
   was loaded -- by replacing the MBR). They have always been a bad idea.
   
   Now that DOS supports partitions larger than 32Mb these programs have
   a different purpose -- to allow older systems to see IDE drives that
   are larger than 512Mb. The BIOS interface only supports a maximum of
   1024 cylinders of up to 64 sectors each. A typical drive is less than
   16 heads. This "geometry" gives a maximum of about 528Mb. It's
   possible to "lie" to some BIOS' and double the number of heads -- or
   even go up do 255 "virtual heads" -- the drive electronics will simply
   translate for you.
   
   Essentially this is how SCSI and EIDE drives give you access to larger
   disks (up to about 9Gb).
   
   Your other alternative is to get an EIDE controller and get rid of the
   non-standard software (sofware which isn't supported under OS that I
   know of, Linux, any Unix, FreeBSD, NT, OS/2 or anything other than
   DOS). 
   
   2. is there some workaround that would still let me use linux if
   EZ-BIOS would be a problem (like using a boot floppy everytime I
   wanted to use linux, or something like that) 
   
   You can probably just use LOADLIN. However you might have to cook up
   some weird boot time parameters (you can store them in the bathc file
   that invokes LOADLIN) to tell the kernel what the drive geometry
   really is -- so it doesn't step on anything.
   
   Here are the two HOWTO documents you want to read:
   
   Large Disk mini-HOWTO
   
   Loadlin+Win95 mini-HOWTO
   
   -- Jim
     _________________________________________________________________
   
  Crypt
  
   Date: Fri, 08 Aug 1997 20:47:11 -0700
   From: David Saccon, dasac@speed.it
   
   Hi; I'm a Linux enthusiast bla bla bla, compliments for the good work,
   etc etc. 
   
   Well, charmed I'm sure!
   
   I don't know if an e-mail to this address is the right way to ask you
   a question. 
   
   It isn't really -- but most of the readers of Linux Gazette's "The
   Answer Guy" column haven't see the "tag@" address that I currently
   prefer.
   
   Please feel free to get rid of this mail if it bugs you. Anyway, my
   question is: where can I find an implementation of the fine tool
   "crypt" for Linux ? You know, "crypt <myfile >myfile.x password", and
   back to the clear text the same way. 
   
   I'm not sure that the traditional Unix 'crypt' command is all that
   "fine." I'd suggest that you obtain a copy of PGP from one of the
   international sites that carry it.
   
   (Please don't obtain it from any of my "free" fellow U.S. citizens --
   since it would be illegal for them to exercise this particular form of
   free speech at this time. I'd like to apologize for the ludicrous
   attitude my government takes with regards to cryptographic software --
   feel free to refer to the "Electronic Freedom Frontier"
   (http://www.eff.org) for more information about that).
   
   I haunted the internet for days but couldn't find it. I also tried
   something like this: 

include "stdio.h"
include "unistd.h"
void main(int argc, char ** argv )
{
puts(crypt(argv[1], argv[2]))
}

   but it doesn't work the same way. 
   
   Help!
   Thank you
   Davide Saccon 
   
   There is a library function named "crypt" which is technically a
   "hash" rather than a cryptographic function -- it's used to compute
   the hash of a password for comparison to that which is stored in the
   second field each entry in the /etc/passwd file.
   
   I've heard that the program named 'crypt' varies from one Unix
   implementation to another. I think its currently not included in many
   Linux distributions to the export (U.S. ITAR and related) restrictions
   to which I alluded earlier. Since many of the companies that produce
   these distributions are U.S. they would have to ensure that their
   products were for "domestic use" only if they were to include this on
   their CD's and in their FTP sites.
   
   Here are a few sites I picked off of Yahoo! International PGP FAQ
   Guida Pratica a PGP Guida Pratica a PGP PGP User's Guide (in Italian
   -- 250K) The Crypto Chamber -- Italian Cryptographer's WorkBench.
   
   There are other strong cryptographic products available
   internationally for other purposes. I think the new Linux "TCFS"
   (transparent cryptographic filesystem) is being done in Italy. TCFS is
   apparently similar to Matt Blaze's research on CFS -- it allows a
   Linux admin to create filesystems that are encrypted in such a away
   that users can have confidence that no other user access their files.
   Given its design is should be difficult even for the root user to
   compromise the cryptographic integrity of any local user -- and it
   should be impractical for remote systems.
   
   Here's some more links for that: Transparent Cryptographic File System
   Project Page TCFS TCFA FAQ v1.7.7
   
   Come to think of it STEL (a secure telnet) was also done in Italy.
   Seems that a lot of work on cryptography is coming out of your
   country. Obviously your government hasn't been interferring in this
   work. If you'd like to look at the sources for STEL I'd FTP over to
   ftp://idea.sec.dsi.unimi.it/cert-it/
   
   Another set of useful cryptographic resources are in Eric A. Young's
   free implementation of Netscape's SSL (secure sockets layer)
   specification and a set of related applications (like ssltelnet and
   sslftp): SSLeay: SSLeay and SSLapps FAQ SSLeay: SSLeayand SSLapps FAQ
   
   (This set of pages is an excellent resource for anyone that wants to
   learn anything about SSL).
   
   Eric's work was instrumental in the development of the Stronghold web
   server by C2 Software Inc. (http://www.c2.net) (I recently published
   an interview with C2's founder, Sameer Parekh, in Linux Journal, if
   your interested).
   
   And, of course, no discussion of Internet cryptography tools would be
   complete without a mention of Tatu Ylongen's SSH ssh (Secure Shell)
   ssh FAQ
   
   -- Jim
     _________________________________________________________________
   
  Apache 1.2.1
  
   Date: Mon, 11 Aug 1997 13:53:14 -0700
   From: Alf Stockton stockton@acenet.co.za
   I am playing with Apache 1.2.1 and have it running well except that it
   won't run cgi scripts. If I give the full path in the command line of
   the browser the CGIs run fine but the server cannot/does not run these
   CGIs when I expect it to. Where can I turn for help? The Apache team
   don't appear too interested. I suspect that one of my config files is
   wrong but don't know enough to tell which. 
   
   I wouldn't necessarily say that the Apache team isn't "interested."
   However, they far more interested in providing the software than in
   answering questions about it.
   
   It sounds like you don't have your "ScriptAlias" set up correctly --
   or you're trying to access a CGI script that isn't stored in one of
   the proper "ScriptAlias" directories.
   
   Here are links to the relevant documentation pages at the Apache site
   (http://www.apache.org):
   
   Apache: Configuration: ScriptAlias
   http://www.apache.org/docs/mod/mod_alias.html#scriptalias
   
   Apache: FAQ: How do I enable CGI execution in directories other than
   the ScriptAlias?
   http://www.apache.org/docs/misc/FAQ.html#CGIoutsideScriptAlias
   
   Another possibility is that you have built it with no CGI support.
   Apache has many compile-time configuration options -- include a large
   list of "modules" that can ben enabled or disabled. However I'm sure
   that it would take some work to build Apache with no CGI support -- so
   I think this possibility is remote.
   
   -- Jim
     _________________________________________________________________
   
  Red Hat Questions
  
   From: Brent Johnson brent@saturn.msstate.edu 
   
   So are you the answer guy and can you answer a very important question
   for me? 
   
   I appear to have been dubbed "The Answer Guy" (it wasn't a
   self-appointment -- but I did volunteer for it).
   
   I can certainly answer any question. Answering it correctly and
   usefully are not as sure a bet -- but I'll try.
   
   I first heard about RedHat's Linux distribution about a year ago and
   there was no way Slackware could compete to the easy installation
   procedure, RPMS, and other great features included in RedHat. 
   
   But, ever since I moved to RedHat Ive had a terrible gcc compiler
   problem. This has happened to me on two different machines... on the
   first Id assumed it was some memory problem (as in hardware), but now
   Im on a totally different machine that has (or shouldnt have) any
   memory problem. 
   
   Everytime I try and compile anything (Apache 1.2.1 for example)... it
   gets to about the 3rd or 4th .c file, and it bombs out with the
   following error: 
gcc -c -Iregex  -O2 -DLINUX=2   util_date.c
gcc -c -Iregex  -O2 -DLINUX=2   util_snprintf.c
gcc: Internal compiler error: program cc1 got fatal signal 11
make: *** [util_snprintf.o] Error 1

   It happens at different times on different .c files when compiling
   different things. Any help would be greatly appreciated... a Unix
   system with a defective compiler or defective hardware is almost
   useless! 
   
   - Brent 
   
   I notice that you haven't told me *which version* of Red Hat you're
   working with. However I've used 3.03, 4.0, 4.1, and 4.2 -- and I think
   I remember playing with an earlier one before 3.03 and I never saw
   this behavior from gcc.
   
   I did get it from my original copy of minicom anytime I was running in
   an extended video mode and trying to use the dialer (and not when
   issuing the same dialing function as a direct ATDT command from the
   terminal window). In this case I suspect there was a bug in the
   ncurses calls being made by minicom. In any event I switched to
   CKermit and forgot all about it.
   
   In your case the signal 11 (SEGV) is probably not caused by
   curses/ncurses calls.
   
   Do you have a swap partition or file? If so, have you tried disabling
   it (possibly creating a new one temporarily)? If you have a defect on
   the disk you could get a SEGV from some piece of data/code that gets
   swapped out, read back in (with errors) and subsequently used by the
   running process.
   
   If you don't have a swap partition or file you might just be running
   out of RAM completely. gcc does use up quite a bit of memory -- so I'd
   suggest at least 32Mb virtual memory (RAM + swap) available when
   running it (you could certainly ask the FSF for more specific
   recommendations -- this is just my unsubstantiated and untested
   suggestion).
   
   When you installed, did you let Red Hat's install routine perform
   thorough block checking while it was making filesystems? If not, try
   re-installing and enabling that (in case you hit some bad spots on
   your disk and you have corrupted gcc binaries).
   
   This is extremely unlikely to be related to your distribution, but you
   could try installing Slackware to see if its gcc works on this system
   -- or you could try booting up in single user mode and just run a few
   test "make's" from a simple shell line (no emacs M-x shell mode, no X
   Windows, no "integrated dev. environment" nothing else running).
   
   If you still get SEGV's then, you want to find some other sort of
   memory intensive program to run as a test -- to see what else will
   die. It may be worth extracting the RAM and taking it to a good
   hardware tester -- and/or removing any ethernet cards or unecessary
   adapters for other tests.
   
   These sorts of things can be very frustrating to track down regardless
   of OS. If you have a copy of DOS and an old copy of Norton Utilities
   (version 8 or later) you could boot that up and run NDIAGS.EXE. There
   are several other diagnostics packages that were available before it
   -- but NU is still my personal favorite untill the Linux crowd does up
   a suite of them. Unfortunately the results of any software diagnostics
   package aren't definitive -- they can detect trouble -- but they can't
   "prove" that there isn't any hardware problem.
   
   I suppose, for some systems, particularly some 386's and 386SX's, you
   might also try twiddling the CMOS "wait states" settings. Those used
   to make a difference -- particularly with earlier generations of
   "3-chip" SIMM's. Apparently in the early attempts to use SIMM's with
   three chips (two four bit chips and a parity bit chip) there were some
   slight timing differences between the "signal settling"
   characteristics -- so the parity bit wouldn't "settle" before the
   system was trying to read the memory. This resulted in parity errors
   if the systems were set for "zero wait states" -- and was generally
   solved by changing the CMOS settings.
   
   (I've never heard of a Pentium system or any system using 72-pin
   SIMM's having these problems -- but that doesn't mean it's not worth
   looking in your "advanced" CMOS and trying some experiments therein).
   
   I hope some of this helps.
   
   -- Jim
     _________________________________________________________________
   
  PPP and Internet MCI
  
   From: Demosthenes radams@capaccess.org
   Subject: Re: PPP and InternetMCI 
   
   Hey there, I've been reading through your column from August in the
   Linux Gazette, and ran across the gentleman's question regarding GTE's
   internet services. 
   
   I'm trying to switch over to MCI from a local ISP, and I'm having some
   of the oddest connection problems. I use PAP currently with my local
   ISP, and MCI is supposed to use PAP/CHAP (one, the other, or both :P).
   I beleive i have everything setup properly, as I don't get any
   rejections from PAP/CHAP, but after a few seconds of modem activity
   with the server, MCI just hangs up. I did misspell something before,
   and got a PAP rejection, and I've got full debugging logs regarding
   the connection, but I can't make much sense of them. I know the server
   isn't asking for MS-CHAP (chap 80, vs chap 05). It looks like it dies
   during the configuration. I'm not sure. 
   
   Do you have any information regarding connecting to InternetMCI via
   Linux? MCI tech support is clueless, and I can't even get someone that
   knows how their own software works on the phone. 
   
   Any help would be highly appreciated, and I'd be more than glad to
   share my debugging logs if you think they will help. 
   
   Thanks again! 
   
   Russell Adams 
   
   My first impulse is to say "vote with your feet." Fire off a polite,
   assertive, note to their VP of Customer Service and go find a
   Linux/Unix friendly ISP with quality tech support (and maybe spend a
   little more in the process).
   
   My provider isn't the cheapest -- and isn't even the friendliest --
   but they understand Unix and they provide quality service (refusing to
   structure their rates to "compete" with an unreasonable "quality of
   service" -- i.e. I get few busy signals).
   
   That bit of non-technical advice aside I'd ask: What are your MTU and
   related parameters?
   
   You could send the logging output -- but it would probably be as
   incomprehensible to me as it is to you. I've never set up a PAP/CHAP
   system (yet). However I'll look at them and suggest some experiments.
   
   -- Jim
     _________________________________________________________________
   
  Enabling Automounter on a Linux Notebook
  
   From: Dennis Dai gqdai@intergate.bc.ca
   
   Hi, Jim 
   
   I think I need to ask you for help. My problem is: 
   
   Originally I have a 1.6G HD. Last month I bought a new one (3.2G) in
   order to accommodate linux and NT. I placed the swap partition in the
   very last part of the new harddisk (it seems that this is a bad idea,
   isn't it?) which is hdc8 and initialized it without problem. After a
   while, I made a new NTFS partition for NT which resides in front of
   the swap partition (I installed NT system on one of my original HD's
   partition which is hda7), then I moved some of my data on the new NTFS
   partition. But after I booted up to linux, I realized that the swap
   partition didn't initialized properly, so I issue a command like this:
mkswap /dev/hdc8

   And this was how I screwed up things. Actually the new NTFS partition
   became hdc8, and the original swap partition became hdc9. Now I can't
   access the new NTFS partition from NT! 
   
   Immediately after I issued that command, I realized that I made a big
   mistake so I issued a "free" command and it showed that the swap
   partition (which is my NTFS partition) was not used. 
   
   So I think I still have hope to retrieve the data on my NTFS
   partition. I know they are still there, just I can't get them out. 
   
   I posted this to linux newsgroups, and received some kind response
   that suggested me to use linux fdisk to change the partition type to
   NT one. But I did check that, it is still NTFS (actually HPFS under
   linux fdisk). Others suggested me to zero out the first 512 byte of
   that partition as part of the recovery, but since I am not quite
   familiar with that I didn't dare to do that. 
   
   So I hope you can get me out of the hole. Thanks in advance. 
   
   Well, I haven't done regular data recovery for a few years (since I
   left Symantec' Peter Norton Tech Support Department). It's not
   something that I can do via e-mail (or for free) -- and I don't know
   diddly about the internals of NTFS (or HPFS or ext2fs for that
   matter).
   
   You best bet, of course, is to have recent backups from which you can
   recover. I don't know why they were suggesting that you blast the boot
   record (the first 512 bytes of a partition is the "logical boot
   record" or "superblock" while the first 512 bytes of a drive is the
   "master boot record" or MBR). Perhaps they believe that NT will be
   able to recover from this. If I was to do anything with the LBR I'd go
   to a different machine, create a new NTFS partition that was
   indentical in size and configuration to the one you think you've
   damaged, and use a disk editor (or a Linux dd command) to cut and
   paste that from the other machine onto the allegedly damaged
   partition.
   
   Before doing much of that I'd suggest do a dump to tape of the entire
   raw device (using 'dd'). This may allow you to return to the current
   state of brokenness after you've made unsuccessful attempts at repair.
   
   I don't recommend these procedures (disk surgery) unless the data on
   that drive is very important to you (and otherwise unreproducable) or
   you really like playing with hex editors.
   
   If it's of considerable financial value to you -- I'd suggested making
   a dump tape, extracting the drive from the system and sending it to a
   data recovery specialist.
   
   -- Jim
     _________________________________________________________________
   
  X Locks Monitor
  
   From: Gord Urquhart urquhart@Newbridge.COM
   
   I have found when playing with my Xconfig I could get my monitor
   (MAG15) to go into power saving state (with a resulting black monitor)
   when I changed the pre and post sections of the horizontal scan line
   timings (I can't remember the proper names of these), to certain
   values. 
   
   gord u. 
   
   ... and? ...
   
   You can also cause a monitor to permanently damage itself if you play
   with those long (wrong) enough. This is well known and noted in the
   XFree86 configuration file.
   
   So, what's the point of this message? Or is it just a stray
   observation?
   
   -- Jim
     _________________________________________________________________
   
  Pop3d That Doesn't Use /etc/passwd
  
   From: Benjamin Peikes benp@npsa.com 
   
   Do you know if there is a pop3d that does not use /etc/passwd? I want
   to set up mail only accounts for some people but in.pop3d that I have
   uses /etc/passwd. I want to set up accounts that sendmail knows how to
   deliver for but I don't want to put these people in /etc/passwd
   because then I have to worry about all the other services on the
   machine. Have you heard of some daemon that will do this, or a set of
   packages that will do this type of seperate user management? Thanks. 
   
   Ben 
   
   Ultimately this issue of restricting specific classes of users to
   specific services on a system is goes way beyond the particular
   services you pick. PAM (the pluggable authentication modules) is
   supposed to solve this problem eventually. That is already included
   with recent versions of the RedHat distributions (and with recent
   Solaris releases). However it is still evolving -- so few of us have
   any idea how to "do it right." (A fact which leads to an
   understandable lack of confidence in recommending it).
   
   So, getting back to the original question:
   
   What POP daemon supports a user/password database that's distinct from
   the one used by other Unix services (/etc/passwd)?
   
   I've heard the rumor that this can be done in qpopper but I'd like to
   confirm that. So I go to Yahoo! and issue the "+qpopper +account"
   search and get:
   
   There is: http://www.hdshg.com/fixes/mail_patch/
   
   ... which is supposed to be a patch to qpopper to allow this. However
   I couldn't connect to and I couldn't find any mirror of it even after
   several hours of trying.
   
   I traversed a number of links searching on strings like "+pop3 +passwd
   +passwd +separate" and various permuations. This was the only firm
   reference I found.
   
   Another approach would be to create a custom chroot environment. This
   isn't as hard as it sounds. The hard part is making your binary
   statically linked or including the necessary libraries. The other
   thing you'll have to consider is whether you want the POP-only
   accounts to use their own "virtual mail host" (requires an IP alias or
   an additional interface) or whether you your smtpd to run in the same
   chroot "jail" -- then requiring any local account holders to also use
   POP (perhaps using the fetchmail client to the "localhost" target).
   
   Here are some of the links that have more information on mail and POP
   in general.
   
   Harker's sendmail References Page
   
   Mr. Harker gives seminars and classes in sendmail
   
   Free Servers from Eudora: Servers
   
   Qualcomm, publishers of Eudora, also are the source of qpopper.
   
   POP/IMAP FAQ
   
   Passwdd/Passwd -- An authentication Daemon/Client
   
   This isn't mail related specfically -- but relates to alternative
   authentication model -- a passwd daemon running on a privileged TCP
   port via inetd. It shows examples for supporting Eudora/APOP and using
   alternate passwd files. /pub/smtpd directory -- Similar to TIS FWTK
   smapd
   
   Running a simpler, perhaps unprivileged smtpd to toss incoming mail
   into the queue is considered to be a good idea -- for isolating
   sendmail (which is large, powerful, complex, and has a long history of
   compromises). http://www.qmail.org The qmail Page
   
   An alternative to running sendmail at all. I won't get into this
   debate -- I'm just including it in this list because I'll receive lots
   of unnecessary mail if I don't. MH Message Handler Home Page
   
   The Rand MH is a particular mail user agent -- actually a set of
   programs for working with mail from a shell command line. There are
   several packages that provide full screen interfaces to this --
   including an emacs mode/package, mh-e, which is what I use. Scripts
   and Patches for ISP's 4th UNIX SECURITY SYMPOSIUM -- Sendmail w/o
   Superuser How to Get There From Here -- Scaling e-mail to the
   enterprise Linux: Server-Linux FAQ
   
   I hope all of this helps.
   
   -- Jim
     _________________________________________________________________
   
  Configuration of Two Ethernet Cards
  
   From: Carlos Gonzalez Andrade cglez@cfe.gob.mx
   Date: Mon, 11 Aug 1997 23:40:16 -0700 
   
   Hi Jim. 
   
   I have a question about some problems i have while I was seting up 2
   ether cards. 
   
   first . the device eth1 is not recognized when I add the line append =
   ether=0,0,eth1 into the lilo.conf. 
   
   You should consider putting the I/O base address, the IRQ, and any DMA
   or memory address information into this append clause in place of
   those zero's.
   
   You can test these by entering them at the LILO prompt (interactively,
   during boot) before editing the /etc/lilo.conf file.
   
   second . What files are necesary to set up to configure two IP address
   for my machine and get runing my gateway? 
   
   I will apreciate your answer 
   
   This depends on which distribution you're using and how closely you
   want to stick to their configuration conventions. Minimally all you
   need is a script file (typically located under /etc/rc.d/ and invoked
   by the rc.local) with calls to the 'ifconfig,' and a 'route add'
   command or two. Under Red Hat's SysV init system you'd leave your rc.d
   files alone and edit some file under your
   /etc/sysconfig/network-scripts/ directory (ifcfg-eth0, and ifcfg-eth1
   if I recall correctly -- it should be obvious by browsing through
   those files).
   
   -- Jim
     _________________________________________________________________
   
  Attaching a Console to a PC
  
   To: Benjamin Peikes benp@npsa.com
   Date: Mon, 11 Aug 1997 23:14:37 -0700 
   
   Jim, 
   
   I'm not sure if you are the right person to ask but I figured you
   would be a good place to start. I have a handful of PC's that I need
   to be able to watch as they boot. What I would like to do is connect a
   dumb terminal(old laptop) to a rs-232 switch box and then be able to
   switch to any of the machines as I boot them. I was wondering if you
   knew any way to do this. Thanks. 
   
   Ben Peikes 
   
   It is possible to use a serial terminal as a console for Linux --
   given some patches. With some PC hardware you'll have to leave the
   video card in their -- though you don't need a monitor attached.
   
   Unfortunately I don't remember where I saw these patches. I'd so a
   search on "+Linux +serial +console" (using the Yahoo! convention of
   preceding "required" terms with "plus" signs).
   
   -- Jim
     _________________________________________________________________
   
                     Copyright © 1997, James T. Dennis
         Published in Issue 21 of the Linux Gazette September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
             CLUELESS at the Prompt: A new column for new users
                                      
                      by Mike List, troll@net-link.net
     _________________________________________________________________
   
                                  [INLINE]
                                      
    Welcome to installment 7 of Clueless at the Prompt: a new column for new
    users.
     _________________________________________________________________
   
   Well it's starting to happen.My learning curve is starting to settle
   down, and if you have been following this column, yours is too,
   although depending on what you want from Linux, you may have many more
   questions. At this point you probably are feeling more comfortable
   using the online resources like the comp.os.linux.??? newsgroups and
   some of the Linux pages that are hanging out there for you to glean
   info from.
   
   Some of my regular stops are:
     * Linux Users Support Team
     * Linuxnow.com
     * Walnut Creek ftp archive
     * Sunsite ftp archive
       
   If you use a browser the first time you visit the ftp sites you can
   get a good feel for the directory breakdown, but if you want to
   download large files ie. distributions, you should use the command
   line ftp, in my experience, it's faster.
   
   Speaking of the command line ftp program, here are a few tips that can
   make things go more quickly. You may already be familiar with some or
   all, but if not, just type ...
   
     ftp [ftp.cdrom.com] or whichever site you wish to visit. you will
   get a prompt to give a username, most commonly anonymous, followed by
   one for a password usually your e-mail address.
   
     If you have used a browser to check out these sites previously, you
   can cd to the desired directory.If not, cd pub usually is a good
   start.
   
     ls will show you whatis contained in that directory.If you are in a
   VC rather than an xterm, you can use theSHIFT+PageUp keys to scroll
   back, sinceyou will get a screenful or more of filenames that will
   just shoot by.This may or may not work in an xterm.
   
     If you want to download the files to a directory other than your
   current directory, lcd [directoryname] will direct the downloads to
   that location.
   
     hash will give you a display of# marks, one for each block rerieved,
   usually 1024 bytes.You can use this to check the progress of your
   download.
   
     bell will send an audible signal when your file is finished
   downloading.
   
     get [filename] will start your download,mget will retrieve
   everything in the current directory if you have an empty directory of
   the same name in your destination directory(the one you "cd'ed" to).
   You will be prompted for each file as the previous one finishes
   loading.
   
     when you finish downloading, type bye. That will close the
   connection.
     _________________________________________________________________
   
   Config, dot and .rc files
   
   There are many ways that your linux programs can be altered to your
   liking, or just to make it work the way it should. Last time I gave an
   example of how to customize FVWM, but it hardly scratched the surface
   of all the things that can be done to make your linux environment
   truly yours.
   
   If you type: ls -a, you'll see several files that start with ".".
   These are typically configurable files that among other things, create
   aliases for shell commands, set environment variables, geometry of X
   applications, and other similar functions.
   
   Some of these "dotfiles"have eluded my attempts to alter them in the
   ways I'd like, but others have been extremely compliant. Some of the
   no-gos (for me) include .bashrc and .bash.profile. I'm sure someone
   will e-mail me and tell me why my aliases don't work, even though I
   edited the file exactly as shown in the"Bible". Others like the
   aforementioned .fvwmrc have had extemely gratifying results.Maybe my
   colleagues at "The Answer Guy" and "The Weekend Mechanic" can shed
   alittle more light on the subject. In the meantime, backup your dot
   files before altering them, by cp'ing them to, say .foo.old to keep
   serious problems at bay, should your editing fail to yield the desired
   results.
   
   Some of the "dot files" you might want to take a look at for possible
   tailoring (depending on what you have installed)include your
   .bash.profile, your .bashrc, or .rc files for any shell you might use,
   .xinitrc, your window manager's .rc file, browser .rc and .bookmark
   files.
   
   If you have root privilege. there are many more you have access to but
   be careful - some files have their own ways of being altered for
   instance crontabs -e is the way to edit your crontab which has the
   capability of taking care of routine maintenance at off hours upatedb
   to create a database for the find and locate commands. Usually run in
   the wee hours of the morning, this could be configured to run at
   bootup or every 12 hours or at the end of a workday. This would assure
   that all of the current day's work would be easily located the next
   day.
   
   The /etc/ppp/ip-upand ip-down files can cause certain functions when a
   ppp connection is established. If you don't have one already, you can
   probably write one that will be noticed by the current software. The
   same goes for the .bashrc and .bash_profile, with the above caveat in
   mind.
   
   For the most part, the lines you need to enter or alter will be
   essentially the same as you would use at the command line, and
   sometimes it will be as easy as removing the # from the beginning of
   the line.
     _________________________________________________________________
   
   Don't use a .bat! 
   
   One 'dot file that you can't edit to your liking, but could be useful
   just the same is .bash_history. If you cat .bash_history |
   sort>[filename] then less filenameyou will get an idea of what
   commands are used most often. You can then use this information to
   create shell scripts or aliases in your .bashrc or .bash.profile or
   other shell.rc files and save a few keystrokes.
     _________________________________________________________________
   
   Keep those e-mails coming in, but just so you know, I don't run linux
   on a new pentium with all the bells and whistles and I don't know much
   about stuff I haven't used, so I might not be able to help you much
   with tape drives, CDroms, SCSI peripherals and the like. I'll do my
   best to point you in the right direction,but I use a 486/66 box with
   IDE drives and a floppy(3.5"), a vga monitor, a cirruslogic 5428
   videocard, internal modem, and an 8bit soundblaster card.I mention
   this, not to beg for new hardware (although...), but to give you some
   kind of idea what kind of hardware questions I might be of help with.
     _________________________________________________________________
   
   I invite questions, suggestions, reasonable criticism and just plain
   e-mail:
   
                             troll@net-link.net
                                      
                            See you next month!
     _________________________________________________________________
   
                        Copyright © 1997, Mike List
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
              A Non-Technical Look Inside the EXT2 File System
                                      
                  By Randy Appleton, randy@euclid.nmu.edu
     _________________________________________________________________
   
Introduction

   Everyone wants a fast computer. However, not everyone realizes that
   one of the most important factors of computer performance is the speed
   of the file system. Regardless of how fast your CPU is, if the file
   system is slow then the whole computer will also seem slow. Many
   people with very fast Pentium Pro's but slow disk drives and slower
   networked file systems rediscover this fact daily.
   
   Luckily, Linux has a very fast file system called the Extended File
   System Version 2 (EXT2). The EXT2 file system was created by Remy Card
   (card@masi.ibp.fr). This article will show you how the EXT2 file
   system is organized on disk and how it gets it's speed.
   
Disk Layout

  Goals
  
   There are several objectives when deciding how to lay data out upon a
   disk.
   
   First and foremost, the data structure should be recoverable. This
   means that if there is some error while writing data to the disk (like
   a silly user pulling the power cord) the entire file system is not
   lost. Although loosing the data currently being written is often
   acceptable, loosing all the data on the disk is not.
   
   Secondly, the data structure must allow for an efficent implementation
   of all needed operations. The hardest operation to implement is
   normally the hard link. When using a hard link, there are more than
   one directory entry (more than one file name) that points to the same
   file data. Accessing the data by any of the valid file names should
   produce the same data.
   
   Another hard operation involves deleting an open file. If some
   application has a file open for access, and a user deletes the file,
   the application should still be able to access the file's data. The
   data can be cleared off the disk only when the last application closes
   the file. This behavior is quite unlike DOS/Windows, where deleting a
   file means that applications who have already begun to access the file
   loose all further access. Applications that use this UNIX behavior
   concerning deleted files are more common than one might think, and
   changing it would break many applications.
   
   Thirdly, a disk layout should minimize seek times by clustering data
   on disk. A drive needs more time to read two pieces of data that are
   widely seperated on the disk than the same sized pieces near each
   other. A good disk layout can minimize disk seek time (and maximize
   performance) by clustering related data close together. For example,
   parts of the same file should be close together on disk, and also near
   the directory containing the file's name.
   
   Finally, the disk layout should conserve disk space. Consurving disk
   space was more important in the past, when hard drives were small and
   expensive. These days, consurving disk space is not so important.
   However, one should not waste disk space unnecessarily.
   
  Partitions
  
   Partitions are the first level of disk layout. Each disk must have one
   or more partitions. The operating system pretends each partition is a
   seperate logical disk, even though they may share the same phyical
   disk. The most common use of partitioning is allow more than one file
   system to exist on the same physical disk, each in its own partition.
   Each partition has its own device file in the /dev directory (e.g.
   /dev/hda1, /dev/hda2, etc.). Every EXT2 file system occupies one
   partition, and fills the whole partition.
   
  Groups
  
   The EXT2 file system is divided into groups, which are just sections
   of a partition. The division into groups is done when the file system
   is formatted, and cannot change without reformatting. Each group
   contains related data, and is the unit of clustering in the EXT2 file
   system. Each group contains a superblock, a group descriptor, a block
   bitmap, an inode bitmap, an inode table, and finally data blocks, all
   in that order.
   
  Superblock
  
   Some information about a file system belongs to the file system as a
   whole, and not to any particular file or group. This information
   includes the total number of blocks within the file system, the time
   it was last checked for errors, and so on. Such information is stored
   in the superblock.
   
   The first superblock is the most important one, since that is the one
   read when the file system is mounted. The information in the
   superblock is so important that the file system cannot even be mounted
   without it. If there were to be a disk error while updating the
   superblock, the entire file system would be ruined. Therefore, a copy
   of the superblock is kept in each group. If the first superblock
   becomes corrupted, the redundent copies can be used to fix the error
   by using the command e2fsck.
   
  Group Descriptors and Bitmaps
  
   The next block of each group is the group descriptor. The group
   descriptor stores information on each group. Within each group
   descriptor is a pointer to the table of inodes (more on inodes in a
   moment) and allocation bitmaps for inodes and data blocks.
   
   An allocation bitmap is simply a list of bits describing which blocks
   or inodes are in use. For example, data block number 123 is in use if
   bit number 123 in the data bitmap is set. Using the data and inode
   bitmaps, the file system can determine which blocks and inodes are in
   current use and which are available for future use.
   
  Inodes and Such
  
   Each file on disk is associated with exactly one inode. The inode
   stores important information about the file including the create and
   modify times, the permissions on the file, and the owner of the file.
   Also stored is the type of file (regular file, directory, device file
   like /dev/ttyS1, etc) and where the file is stored on disk.
   
   The data in the file is not stored in the inode itself. Instead, the
   inode points to the location of the data on disk. There are fifteen
   pointers to data blocks within each inode. However, this does not mean
   that a file can only be fifteen blocks long. Instead, a file can be
   millions of blocks long, thanks to the indirect way that data pointers
   point to data.
   
   The first thirteen pointers point directly to blocks containing file
   data. If the file is thirteen or fewer blocks long, then the file's
   data is pointed to directly by pointers within each inode, and can be
   accessed quickly. The fourteenth pointer is called the indirect
   pointer, and points to a block of pointers, each one of which points
   to data on the disk. The fifteenth pointer is called the doubly
   indirect pointer, and points at a block containing many pointers to
   blocks each of which points at data on the disk. Perhaps the picture
   below will make things clear.
   
                                  [INLINE]
   Figure showing the pointers between an inode and it's associated data.
                                      
   This scheme allows direct access to all the data of small files (files
   less than fourteen blocks long) and still allows for very large files
   with only a few extra accesses. As the table below shows, almost all
   files are actually quite small. Therefore, almost all files can be
   accessed quickly with this scheme.
   
    File Size (bytes) 0-768 769-1.5K 1.5K - 3K 3K - 6K 6K-12K 12K and up
                 Occurence (%) 38.3 19.8 14.2 9.4 7.1 10.1
                Cumulative (%) 38.3 58.1 72.3 81.7 89.8 99.9
                                      
               Table showing occurence of various file sizes.
                                      
   Inodes are stored in the inode table, which is at a location pointed
   to by the group descriptor within each group. The location and size of
   the inode table is set at format time, and cannot be changed without
   reformatting. This means that the maximum number of files in the file
   system is also fixed at format time. However, each time you format the
   file system you can set the maximum number of inodes with the -i
   option to mke2fs.
   
  Directorie>
  
   No one would like a file system where files were accessed by inode
   number. Instead, people want to give textual names to files.
   Directories associate these textual names with the inode numbers used
   internally by the file system. Most people don't realize that
   directories are just files where the data is in a special directory
   format. In fact, on some older UNIXs you could run editors on the
   directories, just to see what they looked like internally (imagine
   running vi /tmp).
   
   Each directory is a list of directory entries. Each directory entry
   associates one file name with one inode number, and consists of the
   inode number, the length of the file name, and the actual text of the
   file name.
   
   The root directory is always stored in inode number two, so that the
   file system code can find it at mount time. Subdirectories are
   implemented by storing the name of the subdirectory in the name field,
   and the inode number of the subdirectory in the inode field. Hard
   links are implemented by storing the same inode number with more than
   one file name. Accessing the file by either name results in the same
   inode number, and therefore the same data.
   
   The special directories "." and ".." are implemented by storing the
   names "." and ".." in the directory, and the inode number of the
   current and parent directories in the inode field. The only special
   treatment these two entries recieve is that they are automatically
   created when any new directory is made, and they cannot be deleted.
   
The File System in Action

   The easiest way to understand the EXT2 file system is to watch it in
   action.
   
  Accessing a file
  
   To explain the EXT2 file system in action, we will need two things: a
   variable that holds directories named DIR, and a path name to look up.
   Some path names have many components (e.g. /usr/X11/bin/Xrefresh) and
   others do not (e.g. /vmlinuz).
   
   Assume that some process wants to open a file. Each process will have
   associated with it a current working directory. All file names that do
   not start with "/" are resolved relative to this current working
   directory and DIR starts at the current working directory. File names
   that start with "/" are resolved relative to the root directory (see
   chroot for the one exception), and DIR starts at the root directory.
   
   Each directory name in the path to be resolved is looked up in DIR as
   it's turn comes. This lookup yields the inode number of the
   subdirectory we're interested in.
   
   Next the inode of the subdirectory is accessed . The permissions are
   checked, and if you have access permissions, then this new directory
   becomes DIR. Each subdirectory in the path is treated the same way,
   until only the last component of the path remains.
   
   When the last component of the pathname is reached, the variable
   DIR contains the directory that actually holds the file name we've
   been looking for. Looking in DIR tells us the inode number of the
   file. Accessing this final inode tells where the data for the file is
   stored. After checking permissions, you can access the data.
   
   How many disk accesses were needed to access the data you wanted? A
   reasonable maximum is two per subdirectory (one to look up the name,
   the other to find the inode) and then two more for the actual file
   name itself. This effort is only done at file open time. After a file
   has been opened, subsequent accesses can use the inode's data without
   looking it up again. Further, caching eliminates many of the accesses
   needed to look up a file (more later).
   
Put the starting directory in DIR.
Put the pathname in PATH.
While (PATH has one than one component)
    Take one component off PATH.
    Find that component in DIR yielding the INODE.
    If (permissions on INODE are not OK)
        Return ERROR
    Set DIR = INODE
End-While
Take the last component off PATH yielding FILENAME.
Find FILENAME in DIR yielding INODE.
If (permission on INODE are not OK)
     Return ERROR
Store INODE with the process for quick later lookup.
Return SUCCESS.

                      Pseudo-code for opening a file.
                                      
  Allocating New Data
  
   When a new file or directory is created, the EXT2 file system must
   decide where to store the data. If the disk is mostly empty, then data
   can be stored almost anywhere. However, performance is maximized if
   the data is clustered with other related data to minimize seek times.
   
   The EXT2 file system attempts to allocate each new directory in the
   group containing it's parent directory, on the theory that accesses to
   parent and children directories are likely to be closely related. The
   EXT2 file system also attempts to place files in the same group as
   their directory entries, because directory accesses often lead to file
   accesses. However, if the group is full, then the new file or new
   directory is placed in some other non-full group>
   
   The data blocks needed to store directories and files can found by
   looking in the data allocation bitmap. Any needed space in the inode
   table can be found by looking in the inode allocation bitmap.
   
Caching

   Like most file systems, the EXT2 system relies very heavily on
   caching. A cache is a part of RAM dedicated to holding file system
   data. The cache holds directory information, inode information, and
   actual file contents. Whenever an application (like a text editor or a
   compiler) tries to look up a file name or requests file data, the EXT2
   system first checks the cache. If the answer can be found in the
   cache, then the request can be answered very quickly indeed without
   using the disk.
   
   The cache is filled with data from old requests. Therefore, if you
   request data that you have never requested before, the data will not
   be in the cache, and must be retrieved from disk. Luckily, most of the
   time most people ask for data they have used before. These repeat
   requests are answered quickly from the cache, saving the disk drive
   much effort while providing the user quick access.
   
   Of course, each computer has a limited amount of RAM available. Most
   of that RAM is used for other things like running applications,
   leaving perhaps 10% to 30% of total RAM available for the cache. When
   the cache becomes full, the oldest unused data (least recently used
   data) is thrown out. Only recently used data remains in the cache.
   
   Since larger caches can hold more data, they also can satisfy a larger
   number of requests. The figure below shows a typical curve of the
   total cache size versus the percent of all requests that can be
   satisfied from the cache. As you can see, using more RAM for caching
   increase the number of requests answered from the cache, and therefore
   increase the apparent speed of the file system.
   
                                  [INLINE]
                 Figure #1: A typical curve of total cache
         size vs. the number of requests satisfied from the cache.
                                      
Conclusion

   It has been said that one should make things as simple as possible,
   but no simpler. The EXT2 file system is rather more complex than most
   people realize, but this complexity results in both the full set of
   UNIX operations working correctly, and good performance. The code is
   robust and well tested, and serves the Linux community well. We all
   owe a debt of thanks to M. Card.
   
Sources for More Information

   The data for the figures in this paper can all be found in my
   dissertation Improving File System Performance with Predictive
   Caching. See the URL  http://euclid.nmu.edu/~randy .
   
   An excellent paper with more technical detail can be found at
   http://step.polymtl.ca/~ldd/ext2fs/ext2fs_toc.html .
   
   Some performance data can be found at
   http://www.silkroad.com/linux-bm.html .
     _________________________________________________________________
   
                      Copyright © 1997, Randy Appleton
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
           Fvwm Configuration in Different Environments using cpp
                                      
                      By Gerd Bavendiek, bav@rw.sni.de
     _________________________________________________________________
   
 Do you use Linux at home ? In the office ? On a laptop ? Do you use fvwm 2.xx
                       or fvwm95 as your windowmanager ?
                                       
   If yes, you should read on.
   
   Perhaps you have read my article about Using a Laptop in Different
   Environments. There I described an easy way to setup a Linux laptop to
   boot into different network configurations. I mentioned that setting
   up a shell variable called PROFILE is useful not only for configuring
   the network but also the windowmanager.
   
Why should you do that ?

   Your windowmanager needs to be configured quite different when you are
   using it on a laptop with 600x420 pixel or on a 17"-monitor with
   1024x768 pixel. This is a rather basic difference - there may be
   others. Think of using your system in a network environment. There it
   will be handy to have a taskbar labeled appropiate to rlogin-sessions.
   After fiddling some time with patching different fvwm configuration
   files on different machines I found this to be a pain. A typical
   .fvwm95rc is about 900 lines. Keeping several of them in sync is not
   the thing I like.
   
Generating ~/.fvwm95rc using cpp

   My solution is simple: Use cpp, the C-preprocessor ! fvwm 2.xx as well
   as fvwm95 are configured by a central file. fvwm95 is derived from
   fvwm, so the basic idea applies to both. Let me show you the details
   using fvwm95. I keep my fvwm95 configuration in the file
   ~/.fvwm95rc-cpp.
   
   You can use the system default setup in
   /etc/X11/fvwm95/system.fvwm2rc95 as starting point. Look at this code
   fragment from my .xinitrc (For me, .xsession is linked to .xinitrc):

...
# I need the value of PROFILE for generating .fvwm95rc
# netenv contains an assignment like e.g. PROFILE=32
if [ -r /tmp/netenv ]; then
. /tmp/netenv
fi

# Now the actual .fvwm95rc is generated depending on the value of PROFILE
cpp -lang-c++ -D PROFILE=$PROFILE ~/.fvwm95rc-cpp ~/.fvwm95rc

exec fvwm95 # exec saves the extra memory for a no longer useful shell ...
...

   The shell variable PROFILE contains the information about the current
   environment. The file /tmp/netenv is set up by init when going to run
   level 2. I described this in the article mentioned above. Obviously
   you need cpp, which comes either as an extra package or as part of
   gcc. Yes, I know that there is a module FvwmCpp (which calls cpp) -
   but I never managed to get it work.
   
   One advantage of the old-fashioned style of configuration files is
   that you can put comments in. You really should do this ! All that
   hidden dot files in your home directory make up your personal
   environment (these files will never be touched by a system update).
   Having comments will make it easier to maintain this environment.
   
   system.fvwm95rc comes in shell style comment syntax (so does fvwm).
   You can't feed this into cpp. I didn't like traditional c-style
   comments in a configuration file, so I switched all these comment
   lines

# this is a useful comment


   into c++-style comments
// this is a useful comment


   (hail emacs !). Calling cpp with
-lang-c++


   tells cpp to preprocess c++-code. A hint for those, who are not
   familiar with cpp: cpp strips off the comment lines of the input file.
   You probably will get output with a lot of blank lines.
   
Examples how to use cpp-syntax

   Now let us have a look inside my .fvwm95rc-cpp. Of course, everything
   herein is strongly a matter of personal taste.
   
   I don't like to stress my eyes. So I hate small letters, I barely can
   read them in the evening of a long day ... So my desktop has 4x2
   pages. Each page is assigned to one application (or a few). I use
   <Alt><F1> to <F8> to switch quickly between pages. Using the fabulous
   fvwm95 mini icons my screen holds the FvwmTaskBar and on the right
   hand side a column holding some icons. This way I can maximize the
   application window.
   
   The screenshot should make it clear.
   
  Defining geometry
  
   One important application is xemacs for me. So I define a mini button
   in the FvwmButtons section like this:

*MiniButtons -   mini-edit.xpm        Exec  "Xemacs" /usr/bin/xemacs \
                                      -geometry EMACS_GEO &


   EMACS_GEO is to be substituted by cpp. I put all the #define in the
   beginning of my .fvwm95rc-cpp. Basically it reads like this

#if PROFILE == 30 || PROFILE == 31 || PROFILE == 32
#define EMACS_GEO 80x25+0+480
#else
#define EMACS_GEO 96x31+0+767
#endif


   Whenever I'm on my laptop, PROFILE equals 30, 31 oder 32 (at home, in
   the office, on customers site). The LCD-Display has 600x420 pixel. My
   other systems have 17" monitors and there I use 1024x768. The +0+480
   or +0+767 pops up the xemacs window on the leftmost page on the bottom
   row of my 4x2 desktop. But this is true only when being on the very
   first page while clicking the icon. I'm shure, this could be improved.
   
   With defining
Key F5          A       M       GotoPage 0 1


   I can conveniently switch to my xemacs window using without leaving
   the keyboard.
   
  Launching applications
  
   Being at home or in the office, I have usually some rlogin sessions to
   some well known machines. Being on a customers site I frequently have
   to work with high availability configurations mostly consisting of two
   machines. I call them always abba and bebe. See how this can be set up
   (shortened for clarity):

DestroyFunc "InitFunction"
#if PROFILE == 30
AddToFunc "InitFunction" \
  "I" Exec xsetroot -solid turquoise4 -cursor_name top_left_arrow &
+ "I" Exec xconsole -font 6x10 -geometry XCONSOLE_GEO -sb -file /dev/xconsole &
+ "I" Exec rxvt -geometry 94x28+0+0 -fn DEF_FONT -ls -sb -vb \
                          -title TERMWIN_ID1 -n TERMWIN_ID1 -cr Yellow3 &
+ "I" Exec rxvt -geometry TERMWIN_GEO2 -fn DEF_FONT -ls -sb  -vb \
                          -title TERMWIN_ID2 -n TERMWIN_ID2 -cr Red3 &
+ "I" Exec rxvt -geometry TERMWIN_GEO3 -fn DEF_FONT -ls -sb  -vb \
                          -title TERMWIN_ID3 -n TERMWIN_ID3 -cr Magenta3 &
+ "I" Module FvwmButtons MiniButtons
+ "I" Module FvwmTaskBar
+ "I" Module FvwmAuto 700
+ "I" Module FvwmPager 0 0
#elif PROFILE == 10
...
#else
AddToFunc "InitFunction" \
...
...
+ "I" Exec rxvt -geometry 94x28+0+0 -fn DEF_FONT -ls -sb -vb \
                          -title TERMWIN_ID1 -n home -cr Yellow3 &
+ "I" Exec rxvt -geometry TERMWIN_GEO2 -fn DEF_FONT -ls -sb  -vb \
                          -title TERMWIN_ID2 -n TERMWIN_ID2 -cr Red3 &
+ "I" Exec rxvt -geometry TERMWIN_GEO3 -fn DEF_FONT -ls -sb  -vb \
                          -title TERMWIN_ID3 -n TERMWIN_ID3 -cr Magenta3 &
+ "I" Exec rxvt -geometry TERMWIN_GEO4 -fn DEF_FONT -ls -sb  -vb \
                          -title TERMWIN_ID4 -n TERMWIN_ID4 -cr Green3 &
+ "I" Exec rxvt -geometry TERMWIN_GEO5 -fn DEF_FONT -ls -sb  -vb \
                          -title TERMWIN_ID5 -n TERMWIN_ID5 -cr Blue3 &
...
...
#endif

   The terminal geometry und identifiers are defined as follows:
   
#if PROFILE == 10
#define TERMWIN_ID1 bav@nana
#define TERMWIN_ID2 nana
#define TERMWIN_ID3 lulu
#elif PROFILE == 20
...
#elif PROFILE == 30
...#define TERMWIN_ID1 bav@lulu
#elif PROFILE == 31
...
#elif PROFILE == 32
#define TERMWIN_ID1 bav@lulu
#define TERMWIN_ID2 lulu
#define TERMWIN_ID3 abba
#define TERMWIN_ID4 bebe
#define TERMWIN_ID5 abba
#endif

Conclusion

   Screen geometry and network environment differ from one machine to
   another. Everyone, who wants to have one configuration file for his
   fvwm 2.xx or fvwm95 to reflect these differences, should consider to
   use cpp as shown.
   
   Perhaps you know, that xrdb(1) also can make use of cpp. So you can
   preprocess your ~/.Xdefaults achieving the discussed advantages.
   
   I hope you will find these ideas somehow useful !
   
   Kind regards
   
   Gerd
     _________________________________________________________________
   
   
    Gerd Bavendiek
     _________________________________________________________________
   
                      Copyright © 1997, Gerd Bavendiek
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
       Impressions reading Peter H. Salus `A Quarter Century of UNIX'
                                      
                    By Leif Erlingsson  <leif@lege.com>
     _________________________________________________________________
   
   I have been involved with Unix and the Internet since '88, and with
   Linux since '95, but it isn't until reading Peter H. Salus' `A Quarter
   Century of UNIX' during this summer vacation that I see where Linux
   fits in into the last 25 years of operating systems development.
   
   Unix came about as a revolt against cumbersome propriety operating
   systems shipped by the various hardware-vendors. In contrast, Unix was
   developed by a handful of people. An example of a "huge" software
   project in the development of Unix is `awk'--developed by three
   people.
   
   UNICS (original name) was developed at Bell Telephone Laboratories in
   the Summer 1969 - Fall 1970. Ken Thompson was the initiator and Dennis
   Ritchie and Rudd Canaday were active contributors.
   The intent was to create a pleasant computing environment for
   themselves. The hope was that others would like it also. The basic
   notion at the Labs (in Dennis Ritchie's words as quoted from the
   book),
       
        was and is to hire people who generate their own good ideas and
                carry them out....
                
   The Bell Telephone Laboratories staff (BTL) were supposed to discover
   or invent new things. There was always management encouragement.
   
   It turned out Unix was easy to use and understand when compared to the
   competition. It was extremely compact. It wasn't until much later that
   anything and everything the user wanted was supplied (like vi, emacs,
   X, ksh, csh,... :-)).
   
   The single most important factor behind Unix' popularity was that in
   the beginning the source code was practically free. Thus it was used
   in education and as a base for derivate systems. The universities
   loved it. Later, when AT&T realized that they had in Unix something of
   great value and tried to capitalize on that, universities were
   forbidden to use the source code in education. This motivated Andy
   Tanenbaum to write MINIX, from whence Linus Torvalds got his
   inspiration to write a kernel for his Intel 386, the kernel that later
   became Linux.
   
   Bell Telephone Laboratories (50/50 owned by AT&T and Western Electric
   Company) was, by the so called "consent decree" of Jan 24, 1956
   (entered into because of the Sherman Antitrust Act and a complaint
   filed by the Department of Justice in Jan 14, 1949), required to
   reveal what patents it held and supply information about them to
   competitors. Also, the terms of the decree required BTL to license to
   anyone at nominal fees. So we have this "consent decree" to thank for
   the phenomenal spread of Unix!
   
   BTL had the following support policy:
       
        no advertising
                no support
                no bug fixes
                payment in advance
                
   This forced the users to band together, which resulted in better and
   more responsive support than any vendor could have managed. Also, an
   "us" (users) against "them" (vendors) mentality formed, reinforced by
   actions taken by AT&T to stifle "the Unix problem".
   
   This is very important: Unix begat Internet!
   
   For a long time no one in business took Unix seriously. For AT&T it
   was just a legal problem. It was run on VAX'es, but it took the
   Digital Equipment Corporation about a decade to learn how to support a
   Unix system as opposed to a Virtual Machine system because of the NIH
   syndrome. (NIH = Not Invented Here.)
   
   Does it sound like Linux or does it [sound like Linux] ? :-)
   
   On 20 Nov 1974, the U.S. government filed a new antitrust action
   against AT&T, Western Electric, and Bell Telephone Labs. The
   settlement reached in 1984 dissolved Western Electric, formed the
   "Baby Bells" and reorganized AT&T Bell Laboratories into Bell
   Telephone Labs.
   
   AT&T was now permitted to enter the hardware and software computer
   business. AT&T sharply raised Unix license fees ...
   
   One reaction was Richard M. Stallman's Free Software Foundation with
   it's GNU (Gnu is Not Unix) project, that has given the world a wealth
   of free versions of Unix systems programs. Another is Keith Bostic's
   CSRG project to create a license free version of Unix. Today, all free
   Unix clones except Linux use the CSRG code, and all free Unix clones
   use the GNU code, Linux included.
   
   This is very important: Internet begat GNU and CSRG, and therefore the
   free Unixes, Linux included. And Unix begat Internet, so therefore,
   Unix begat Linux. Also, as we all know, Linux is continually developed
   on the Internet by a looseknit band of programmers from around the
   world, each doing their little piece -- truly users banded together!
   
   So where do Microsoft and others fit into this picture? DOS/Windows is
   just one of many systems sprung out of the fountain of Truth -- though
   there is much debate as to how much truth has rubbed off on them. :-)
   
   There is a huge cultural barrier between the Unix camp and the other
   guys. It took DEC a decade before the DEC Unix Engineering Group was
   formed, and when it was, it was located in a separate location from
   the rest of the company.
   
   Salus tells the story in the book:
   there was a lot of animosity towards Unix up and down the company at
   DEC. Armando Stettner relates how Dave Cutler, one of DEC's
   engineering elite, at one point got two Unix engineers, Armando
   Stettner himself and Bill Shannon, to drive down to his office 20
   minutes away to help him with, Armando thinks it was, some SRI package
   on top of VMS. They got there and Cutler was in his office. Armando
   and Bill sat down at a terminal, and it just didn't do what they
   expected it to do. Cutler asked them how it was, and Armando replied
   that it didn't work. To this Cutler said "Well, thank you very much"
   and they were dismissed. Cutler then called their Senior Group Manager
   and chewed him out and said Armando and Bill were sorry excuses for
   engineers and he never wanted to see them in Spitbrook (his office)
   again. Armando believes that Cutler's disdain has been reflected in
   his work ever since. Armando says:
       
        Cutler was doing yet another OS based on a new architecture
                called Prism, not Unix, during Digital's internal RISC
                wars. Initially, Cutler's OS wasn't portable, but was
                culturally compatible with VMS. There is a lot of stuff
                in NT that I think can be traced to Prism. [Cutler went
                to work for Microsoft around 1983.]
                
   To round this off I'd like to itemize a few general factors for the
   success of Unix:
       
        Simplicity
                
                Small projects
                
                No restrictions put on creativity
                
                Freedom
                
                Free source
                
                Fun
                
                Collect a lot of great ideas that are around plus some
                original ideas and put them together in a very
                interesting, powerful way.
                
                Users supporting themselves
                
                Internet
                
                Portability
                
                Universality
                
                Stability -- i.e., the antithesis of the continuous
                change needed to keep the DOS/Windows personal computer
                market alive. System programs don't need to change. Well
                designed OS's don't need fundamental changes. No need to
                do Windows 95 this year, Windows 97 the next and then NT.
                Just stick with what works!
                
                "Us against them" -- thanks AT&T, DEC and Microsoft!
                
   There must be a fundamental difference of thinking between the free
   software camp and the other guys:
   
   The first mind-set is to share in order to gain. The other mind-set is
   hoarding out of fear that something is going to be taken away. Out of
   the latter mind-set springs the correct business-types managing their
   various copy-protected products, while from the sharing win-win
   culture, where each person's efforts becomes a multiplier toward a
   common goal, springs an open and nonconformistic, somewhat anarchistic
   type of person. The two often do not like or understand each other.
   
   (This article is copyright Leif Erlingsson. As long as this copyright
   notice is preserved, and any cuts clearly marked as such, the author
   hereby gives his consent to any and everybody to use this text.)
   
   (The book `A Quarter Century of UNIX' is Copyright © 1994 by
   Addison-Wesley Publishing Company, Inc.)
     _________________________________________________________________
   
                     Copyright © 1997, Leif Erlingsson
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
             Installing Linux on an IBM ThinkPad 365XD Notebook
                                      
                  By Sam Trenholme, set@reality.samiam.org
     _________________________________________________________________
   
   My latest roadstop in the quest for the perfect affordable portable
   computer stops with the IBM ThinkPad 365XD notebook. Hawked from
   Egghead for only $1000, and with successful reports of sticking X on
   this thing form the 'net, I proceeded to install Linux on this beast.
   The install was one of the more difficult Linux installs I have had,
   with a number of problems:
   
First problem:

   *Booting directly in to the RedHat install from the CD-ROM, the
   install could not see the CD-ROM.
   
   The CD-ROM in a ThinkPad 365xd is a standard IDE CD-ROM. For unknown
   reasons this CD-ROM was invisible when I booted into the install
   directly from the CD-ROM. Making a RedHat install boot disk and
   booting from that resolved the concern. The CD-ROM was visible, and I
   was able to install normally.
   
Second problem 2:

   * RedHat crashed in the middle of the install.
   
   RedHat seems to do that sometimes, for very mysterious reasons. On the
   first install, RedHat crashed. I had to go back to square one and
   completely reinstalled. The second install of RedHat 4.2 went without
   incident, resulting in a functional RedHat system.
   
Third problem:

   * After installing LILO, the ThinkPad refuses to boot from the hard
   disk.
   
   After mutch futzing, I discovered that the BIOS refused to boot from
   the hard disk if it saw more than one primary partition. I configured
   fdisk thusly:
   
   I made one primary partition the Linux partition, then made the swap
   partition the extended partition. I did this as follows:
     * I deleted all pre-existing partitions
     * I added the main partition, making sure enough space was set aside
       for swap. I used 'n' to create the new partition, and 'p' to
       indicate that it was a primary partition.
     * I then added an extended partition, having the extended partition
       take up the rest of the hard disk--my swap space.
     * I then added a logical partition, which was the swap space.
     * I marked the primary partition as a Linux Native partition, and
       the extended partition as an extended partition.
     * I made the primary Linux partition bootable with the 'a' option.
     * Finally, I wrote the partition table to disk.
       
   My fdisk session went like this:
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-789): 1
Last cylinder or +size or +sizeM or +sizeK ([1]-789): 741

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (742-789): 742
Last cylinder or +size or +sizeM or +sizeK ([742]-789): 789

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (742-789): 742
Last cylinder or +size or +sizeM or +sizeK ([742]-789): 789

Command (m for help): t
Partition number (1-5): 1
Hex code (type L to list codes): 83

Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap)

Command (m for help): a
Partition number (1-5): 1

Command (m for help): p

Disk /dev/hda: 32 heads, 63 sectors, 789 cylinders
Units = cylinders of 2016 * 512 bytes

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/hda1   *        1        1      741   746896+  83  Linux native
/dev/hda2          742      742      789    48384    5  Extended
/dev/hda5          742      742      789    48352+  82  Linux swap

Command (m for help): w

   [It wrote the information to the hard disk, then exited.]
   
   When I installed LILO, I placed LILO on the boot sector of the first
   (bootable) partition (/dev/hda1) instead of the master boot record
   (/dev/hda).
   
Fourth Problem:

   * After installing X, as per the XF86 configurations on the Linux
   ThinkPad survey, I was unable to start X. X would just cause the
   screen to become blank.
   
   X has to be "Kicked in", so to speak, by hand. After X starts, hit
   Fn+F7 (the Fn and the F7 keys at te same time) to get the X display to
   function.
   
Fifth Problem:

   * After starting X, one can not exit X and return to a normal text
   display.
   
   One can not leave X after entering it on the ThinkPad. The best
   workaround this problem is to edit /etc/inittab to make the default
   runlevel 5. This enables a mode where you can log in and log out
   without leaving X, using a program known as xdm.
   
   In order to make the default runlevel 5, look for a line like this in
   /etc/inittab:
id:3:initdefault:

   Change the line to look like this:
id:5:initdefault:

   Note the number 5 instead of 3.
   
   You may also wish to disable most of the virtual terminals in runlevel
   5, since you won't be using them [1]. There are a series of lines that
   look like this in /etc/inittab:

1:12345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

   Change the lines to look like this:
1:12345:respawn:/sbin/mingetty tty1
2:234:respawn:/sbin/mingetty tty2
3:234:respawn:/sbin/mingetty tty3
4:234:respawn:/sbin/mingetty tty4
5:234:respawn:/sbin/mingetty tty5
6:234:respawn:/sbin/mingetty tty6

   Note that most of the above lines no longer have a '5' in them. For
   various reasons, it's a good idea to have an emergency virtual
   terminal. Linux does (or, at least, used to do) funny things without
   at least one virtual terminal.
   
Sixth problem:

   * I was unable to have the kernel see a parallel port zip drive
   
   The I/O base of the parallel port is at 0x3bc instead of 0x378. To
   have Linux see a parallel zip drive on the ThinkPad 365xd:
insmod ppa.o ppa_base=0x3bc

   instead of simply:
insmod ppa.o

   Note that the I/O base of the parallel port was determined with the
   MSD program on a MS-DOS boot disk.
   
Seventh problem:

   * After entering 'suspend mode' on the ThinkPad (Fn+F4), the system
   would crash when I tired to exit from suspend mode.
   
   The kernel needs to be recompiled with APM support on the ThinkPad
   365xd. To do this, make sure the kernel source is installed on your
   system.
   
   You can install the kernel source from the RedHat CD, as in the
   following example Linux session:

[root@localhost /]# mount /mnt/cdrom
[root@localhost /]# cd /mnt/cdrom/RedHat/RPMS/
[root@localhost RPMS]# rpm --install kernel-source-2.0.30-2.i386.rpm

   If you do not have a RedHat CD, do the procedure most appropriate for
   your RedHat system to install the above RPM package.
   
   I then went to the directory /usr/src/linux, ran 'make menuconfig' and
   went to 'Character Devices --->', then enabled 'Advanced Power
   Management BIOS support' without enabling any of the other features
   ('Ignore USER SUSPEND', etc.).
   
   I then made a kernel image with 'make zImage' (and waited a while,
   hitting the space bar every 5-10 minutes so the machine would not
   crash), and copied the kernel image (located in the directory
   '/usr/src/linux-2.0.30/arch/i386/boot' as the file 'zImage') over to
   /boot.
   
   I then edited my /etc/lilo.conf so that the boot line which looked
   like this: image=/boot/vmlinuz looked like this: image=/boot/zImage
   and re-ran Lilo thusly: /sbin/lilo
   
   ** Be very careful with changing Lilo. Doing things incrrectly can
   make it difficult to re-enter Linux**
   
   Once I did all this, I had a functional Linux system on my ThinkPad
   365xd, which I am currently using to type this in (on the streets of
   Santa Cruz, no less)
   
   Speaking of being on the streets, I find the DTSN display almost
   unreadable in direct sunlight, and only somewhat readable in the shade
   on a sunny day (fortunatly, the Pacific coast fog is strong tonight).
   I hear that TFT displays are a lot better in this regard. [1] The
   virtual terminals is something you can use to multitask in text mode
   with Linux. To change virtual terminals, simply hit alt and a function
   key between F1 and F6.
     _________________________________________________________________
   
                      Copyright © 1997, Sam Trenholme
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                            Adventures with PPP
                                      
                    By Larry Ayers, layers@marktwain.net
     _________________________________________________________________
   
                                Introduction
                                      
   When I first began using Linux a couple of years ago, one of my goals
   was to be able to go on-line. At that time I was constantly rebooting
   into OS/2 so I could use the internet and this OS schizophrenia was
   becoming tiresome.
   
   Eventually, after many chatscript iterations and minicom sessions I
   had a dependable PPP setup. I thought my PPP troubles were over; as
   time passed my command of the various pppd and chat options began to
   fade.
   
   This past month my local internet service provider sold its machines
   and signed up with a large provider in Atlanta. When the accounts were
   switched over suddenly I could no longer log in and life became a bit
   too interesting...
   
                           Log-In Fashions Change
                                      
   A couple of years ago an ISP was happy just to have a set of working
   log-in scripts which could be distributed to its Windows and Mac
   customers. At that time most computer users were either hobbyists or
   professionals, and could be counted on to know what to do with the
   script. As the internet surged in popularity more and more customers
   appeared without much knowledge of basic computer usage, and the
   help-desks and support personnel began to be swamped with requests for
   set-up help. Naturally, the tendency was to move towards simpler
   log-in set-ups, if possible without any script at all. As customer
   interest in text-mode shell accounts waned, a log-in could be
   accomplished with little more than the username and password. This (I
   was informed in an e-mail from my provider) was our new log-in
   sequence: just the username and password.
   
   This sounded simple enough; all I had to do was delete the expect-send
   sequence selection:  PPP from the chat-script and all would be well.
   Or so I thought: using this script led to a scrolling list of errors
   on the console I set up to display all daemon and error messages. It
   looked like the router I was attempting to connect to was first trying
   PAP authentication, failing, then trying CHAP authentification,
   failing that as well; the sequence would repeat until the router would
   hang up in disgust.
   
   Other variations of the chat-script I tried would result in a "serial
   line not 8-bit clean" message. I talked with the technician who had
   set up the local router and he claimed that neither PAP nor CHAP were
   in use; Win95 log-ins were working fine, so I was on my own.
   
   The next step was to try logging in with Minicom, just to see what the
   actual log-in screen looked like. I connected and found the expected
   Username: and Password: prompts. I logged in and a command prompt
   appeared, with no sign of the typical PPP garbage characters. What
   now? I typed help and a list of available commands scrolled by. I was
   logged in to the Cisco router, evidently, and before long I found that
   I could telnet anywhere I liked. I could run a systat command and see
   which other users were logged in. The command show hosts provided a
   list of hosts which I could connect to, and soon I was logged in at
   the main WWW server in Atlanta! I'd never been logged in at an
   UltraSparc server running Unix SysVR4 before, and it was great fun
   exploring the directory structure and running real VI for the first
   time. I could run pine (and I ended up with yet another e-mail
   address) and read news with the nn newsreader.
   
   This was all quite diverting, but didn't address the PPP problem. So
   soon I was back at the router's prompt. I tried typing ppp and the
   indicative garbage characters appeared. This looked encouraging, so I
   added this exchange to my chatscript and tried again. The pppd daemon
   was satisfied this time, and I had what looked like a real PPP
   session. Unfortunately, it turned out to be limited to the router and
   I could do nothing with the connection. Another dead-end!
   
                                Back to OS/2
                                      
   At first I couldn't even log in with OS/2 when I revived an old
   installation and tried to dial in. Deleting the entire log-in sequence
   in the dialer got me online again, but even with debugging turned on I
   still couldn't determine just when the username and password strings
   were being sent to the server.
   
   On-line once again, I was off to the newsgroups hoping to find advice.
   
   Eventually I came across a posting in comp.os.linux.networking which
   contained a couple of intriguing statements. The first intimated that
   Win95 by default makes use of PAP authentification, but the user isn't
   necessarily informed of the fact. Possibly the Netscape dialer which
   my ISP distributes was using PAP as well, I thought. The second
   statement recommended using the pppd option +ua /etc/ppp/pap-secrets.
   I had seen this option while reading the pppd /etc/ppp/options file,
   but the manual listed this option as being obsolete, so I'd never
   tried it.
   
   The posting's author recommended an unusual format for the pap-secrets
   file, unlike the format recommended in the documentation I'd been
   reading and unlike the sample included in my PPP installation: just a
   simple two-line file, the first line containing the username and the
   second displaying the password. No server or client names, just the
   two words.
   
                                  Success
                                      
   I was surprised and elated when this configuration worked the first
   time. I had the chat-script simply dial the number and wait for the
   CONNECT string. The server asked for PAP authentification and I was
   online without even dealing with the username and password prompts,
   which I suppose are only for the maintainers of the router.
   
   I'm writing this piece because I suspect that many other servers will
   probably be adopting similar streamlined login procedures, and the
   approach I've outlined here may prove useful in at least some of these
   cases. One thing to remember is that directing the pppd debugging
   messages to an unused virtual console is very helpful, most easily
   accomplished by inserting the line:
   
   *.*     /dev/tty8
   
   in your /etc/syslog.conf file.
     _________________________________________________________________
   
                       Copyright © 1997, Larry Ayers
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                                SVGATextMode
                                      
                    By Larry Ayers, layers@marktwain.net
                                      
                    Fit More Text On Your Console Screen
                                      
                                Introduction
                                      
   This summer a new version of SVGATextMode was released, and thinking
   that many Linux users might be unfamiliar with the package, I put
   together this review as an introduction to a versatile and useful
   console utility.
   
   Typically, Linux distributions use LILO as the boot loader, which
   refers to the file /etc/lilo.conf for instructions. One of the lines
   in the file is vga = , with either the number of a console video mode
   following the "=", or the word ask. If "ask" is specified, the Linux
   boot process is interrupted and you are asked which (EGA) video mode
   you prefer. An option (thankfully!) is also provided allowing the user
   to peruse a menu of available console video modes, which varies
   depending on the video chipset. With my generic S3 Virge card, these
   modes are offered:
     * 80x25
     * 80x50
     * 80x43
     * 80x28
     * 80x30
     * 80x34
     * 80x60
     * 132x25
     * 132x43
       
   It's nice to have a choice of video modes (which determine the screen
   font size) but these boot-time options just scratch the surface of
   what the newer video cards and monitors offer. SVGATextMode is a
   utility which borrows some of the techniques which the X-Window system
   uses to exploit the resources of your video system and applies them to
   the console screen.
   
                                How It Works
                                      
   SVGATextMode actually reprograms the registers of your video card,
   allowing many more modes than the preprogrammed modes available at
   boot-up. It borrows some of the techniques used by XFree86 in order to
   make available more console video modes. The modes provided by your
   video-card BIOS are EGA modes, and they run at a low refresh-rate and
   dot-clock compared to those used by X-windows.
   
   The program can be either started at boot-time from one of the
   init-files, or at any time from the console prompt. When it starts a
   configuration file (/etc/TextConfig) is parsed. The defaults are very
   conservative. The file needs to be read and edited before any real
   advantage can be obtained from the program. This is due to the vast
   differences in capability between various video cards and monitors. As
   in X configuration, the correct values for your monitor's horizontal
   and vertical refresh rates need to be entered in the TextConfig file.
   If you've successfully configured X you shouldn't have any problems
   with SVGATextMode.
   
                           Configuration and Use
                                      
   SVGATextMode is what I consider to be a "mature" package, in that it
   has been under development long enough to have received contributions
   and bugfixes from a worldwide community of users. Many video cards are
   supported, though I don't think quite as many as XFree86 supports.
   
   In the default /etc/TextConfig file many of the lines are
   high-resolution modes contributed by users. Once you have entered your
   video chipset and monitor timings into the file, the command
   SVGATextMode -n [mode] will let you know if your hardware can support
   the mode without actually starting the program. Once you've found some
   promising modes just eliminate the "-n" from the command and with any
   luck you'll have the new text mode visible on your console screen.
   Possibly the screen will be corrupted. Running the SVGAlib utility
   savetextmode before trying a new mode, then if corruption appears
   restoretextmode afterwards ought to allow recovery of your previous
   default text mode. It will take some experimentation, but the package
   is very well documented and is worth the trouble.
   
   There are some included modes with 160-character wide screens, which
   can be very useful while running an editor which allows two
   80-character pages to be displayed side-by-side. Emacs can do this,
   and there is a LISP package available called follow-mode which allows
   both pages to scroll relative to each other.
   
   SVGATextMode doesn't just allow more characters to be displayed on the
   screen. Even relatively low-resolution modes will look crisper and be
   easier to read due to the higher refresh rates typically used. The
   most dramatic advantages, naturally, are evident with newer, more
   powerful video-cards and large monitors, but even with my
   middle-of-the-road equipment the utility is well worth using.
   
                                  Caveats
                                      
   If you use Dosemu from the console there can be problems. I have to
   reset the text-mode to my old default 80x43 mode before starting
   Dosemu or I get unrecoverable corruption requiring a reboot. I haven't
   had any problems switching from a console session to X and back, but,
   just as with X-windows, performance varies depending upon the
   video-card and monitor involved. Read the documentation; it's very
   complete and a great help while getting started.
   
                                Availability
                                      
   The source package (version 1.6) can be retrieved from the Sunsite
   archive site or one of its mirrors, in this directory. A binary
   package for Redhat systems is available here, and a Debian binary can
   be downloaded from here.
     _________________________________________________________________
   
                       Copyright © 1997, Larry Ayers
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                         Yet Another Window Manager
                                      
                    By Larry Ayers, layers@marktwain.net
     _________________________________________________________________
   
                                Introduction
                                      
   Marco Macek, a Slovenian computer-science student, has been developing
   a quite powerful and configurable editor called FTE for the past
   couple of years. FTE is a multi-platform folding editor, available for
   Linux, OS/2, DOS, and Windows; I wrote a short review of an earlier
   beta in issue 7 of LG. Lately Marco has turned his hand to developing
   a new window-manager. Unlike some Linux projects, which are released
   to the FTP sites in the early stages of development, the Ice
   window-manager seems to have been under development as a non-public
   project throughout the early beta versions. It just showed up one day
   in the Sunsite incoming directory in a remarkably complete and usable
   form.
   
                          Differences and Features
                                      
   Lately window-managers seem to be proliferating, with offshoots and
   variants of fvwm predominating. Icewm is in large part inspired by the
   OS/2 Workplace Shell interface. Though OS/2 has been never gained the
   market acceptance its adherents have hoped for, the Workplace Shell is
   a remarkably advanced object-oriented GUI, and Macek has attempted to
   adapt some of its "look-and-feel" to the Linux environment. Another
   influence is the common Windows 95 interface, which does have some
   useful features worth emulating.
   
   Win95's bottom-of-the-screen icon bar , with its cascading menus and
   dynamic window indicators, has been nicely reproduced in Icewm. The
   equivalent of the "Start" menu (which functions much like Win95's) has
   a "Linux" label with a penguin icon.
   
   icewm bottom-bar
   
   The general appearance of the windows (borders, titlebars, et al) is
   very reminiscent of OS/2. Various types of "X" kill buttons are
   available, but the general appearance of the window-borders seems to
   be hard-coded; that is, not configurable. Here's a screenshot of a
   typical window:
   
   Icewm window
     _________________________________________________________________
   
   I liked the cascading mouse button menus, with a different menu shown
   for each mouse button. The Enlightenment window-manager has a similar
   feature. These menus are hierarchical and behave like their OS/2
   equivalents.
   
   ice menu
     _________________________________________________________________
   
   This window-manager really doesn't have such compellingly new features
   that many long-time Fvwm2 or AfterStep users would want to adopt it,
   but for new Linux users more familiar with Win95 or OS/2, the
   similarities might serve to ease the transition. It compiled easily on
   my 2.0.30 system, and it seemed to be stable and dependable.
   
   The source archive is available from the icewm home-page, as well as
   the sunsite FTP site. Icewm's home page also has Redhat RPM's of the
   source.
     _________________________________________________________________
   
                       Copyright © 1997, Larry Ayers
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
   
                   Remote Compilation Using SSH and Make
                                      
                      By John R. Daily, jdaily@bbn.com
     _________________________________________________________________
   
  Problem
  
   Occasionally I use my Linux machine at home to write code that I
   intend to compile on a remote machine.
   
   While maintaining open ftp and telnet connections to the remote
   machine to handle the transfer and compilation steps is a manageable
   solution, I decided to explore ssh and make to develop a more
   automated method.
   
   The benefits of my solution:
     * No need to remember which files have been modified.
     * Ability to use Emacs' compilation capabilities to move to errors
       in the source.
     * As mentioned above, no need to use ftp and telnet, and hence no
       benefit to keep an open dialup connection when not compiling.
     * Automate, automate, automate. Laziness is a virtue.
       
  Overview of Solution
  
   My first step was to set up ssh and related tools in order to allow
   secure copying of files to my remote system. While setting up a
   .rhosts file is a (barely) acceptable solution, my IP address and name
   is different each time I dial in, and it would be rather awkward to
   change the remote system's .rhosts file each time I dialed in.
   
   ssh allows me to use a much more secure form of authentication to copy
   files and execute remote commands.
   
   Once I had ssh behaving properly, I used Emacs' info facility to
   explore implicit rules in makefiles, and wrote a simple makefile to
   handle the file transfers and remote compilation.
   
   As an example of the intended effect, assume my remote machine is
   called "remote" (and my local machine "local"), and I've just modified
   a source file called daemon.c. I would like to execute the following
   commands in an automated fashion (note that scp is a secure copy
   command packaged with ssh, and that the -C option specifies
   compression, useful for dialup connections):

scp -C daemon.c jdaily@remote:~/source-directory
ssh -C remote "cd source-directory && make"

  Implementation
  
   First, I needed sshd running on the remote system to handle my secure
   connections. Fortunately, sshd was already running on the remote
   system in question, but according to the man pages, it can be run as
   any user, and is restricted to handling connections for that user
   (which should be quite sufficient for our needs).
   
   Then, I needed to install the ssh toolset on my local machine. Again,
   ideally these would be installed in a public binary directory such as
   /usr/local/bin, but any user can install them in his/her home
   directory.
   
   I also wanted a key which would allow me to authenticate myself
   between systems, and which would eliminate the need to type my
   password each time I tried to run one of the ssh commands. For this, I
   just ran ssh-keygen, and made sure to not give a pass phrase, so that
   none would be needed to use my private key to establish the
   connection.

[jdaily@local ~]$ ssh-keygen
Initializing random number generator...
Generating p:  ............++ (distance 186)
Generating q:  ......................................++ (distance 498)
Computing the keys...
Testing the keys...
Key generation complete.
Enter file in which to save the key (/home/jdaily/.ssh/identity): <CR>
Enter passphrase: <CR>
Enter the same passphrase again: <CR>
Your identification has been saved in /home/jdaily/.ssh/identity.
Your public key is:
1024 35 718535638573954[...] jdaily@local
Your public key has been saved in /home/jdaily/.ssh/identity.pub

   Once I had a public key, I used scp to copy it to the remote machine.
[jdaily@local ~]$ scp -C ~/.ssh/identity.pub jdaily@remote:~/.ssh/key
jdaily's password: <entered my remote password>

   Then I logged into the remote host and copied the key file into
   ~/.ssh/authorized_hosts. If that file already existed, I would have
   appended the key file.
   
   Following all this, I could run ssh and scp without needing either a
   password or a pass phrase to connect to remote.
   
   Now I needed a makefile to automate my system. Ideally, the files on
   the remote machine would be checked to see if they were older than the
   files on my local machine, and if so, they would be copied over. To
   simplify matters, I decided to keep a record of the "last transferred
   date" for each file by touching a corresponding file each time I
   copied a source file over.
   
   As an example, when I transferred a newer copy of daemon.c over, I
   touched daemon.ct in the same directory. Any transfer of a .h file
   would be marked by the creation of a file with a .ht suffix.
   
   After poking around the info file for make, I came up with the
   following makefile.

TRANSFER=scp
REXEC=ssh
SSHFLAGS=-C # Compress data
REMOTE=jdaily@remote:~/source-directory
FILES=debug.ht messages.ht client.ct daemon.ct queue.ct queue.ht

%.ht : %.h
        $(TRANSFER) $(SSHFLAGS) $< $(REMOTE)
        touch $@

%.ct : %.c
        $(TRANSFER) $(SSHFLAGS) $< $(REMOTE)
        touch $@

all-done: $(FILES)
        $(REXEC) $(SSHFLAGS) remote "cd source-directory && make"
        touch all-done

   This had one limitation in particular; I was unable to specify
   command-line arguments for make on the remote machine without writing
   them directly into the makefile on my local system. While this was
   fine for the current application, I decided to generalize it by
   creating a run-make shell script, which would handle the remote
   execution of make after calling make on the local system.
   
   Here is my run-make shell script:
#!/bin/sh

make
echo ssh -C remote \"cd source-directory \&\& make $*\"
ssh -C remote "cd source-directory && make $*"

   I then removed the line from my makefile which remotely ran make.
   
   Here's the output from a successful compilation sequence.
cd ~/source-directory/
./run-make
scp -C debug.h jdaily@remote:~/source-directory
touch debug.ht
scp -C messages.h jdaily@remote:~/source-directory
touch messages.ht
scp -C client.c jdaily@remote:~/source-directory
touch client.ct
scp -C daemon.c jdaily@remote:~/source-directory
touch daemon.ct
scp -C queue.c jdaily@remote:~/source-directory
touch queue.ct
scp -C queue.h jdaily@remote:~/source-directory
touch queue.ht
touch all-done
ssh -C remote "cd source-directory && make "
gcc -Wall -Wstrict-prototypes -Wmissing-prototypes -g -c queue.c
gcc -Wall -Wstrict-prototypes -Wmissing-prototypes -g -DPORT=3000 -o daemon dae
mon.c queue.o -lsocket -lthread
gcc -Wall -Wstrict-prototypes -Wmissing-prototypes -g -DPORT=3000 -o client cli
ent.c -lsocket

Compilation finished at Sat Aug  9 01:22:19

  Tools
  
   ssh is a secure replacement for such tools as rsh, rlogin, and rcp. It
   can be found at http://www.ssh.fi.
   
   make is a standard Unix utility. GNU's make comes with most, if not
   all, Linux distributions.
     _________________________________________________________________
   
                      Copyright © 1997, John R. Daily
         Published in Issue 21 of the Linux Gazette, September 1997
                                      
                  Spare Cycles Needed for Promoting Linux
                                      
                   By Bill Duncan, bduncan@teamlinux.org
     _________________________________________________________________
   
   Ever wish you could do more to promote Linux and yet you never seem to
   have enough time? Now for a few pennies worth of electricity per day
   you can put your Linux machine to work promoting Linux!
   
   There are a number of distributed computing projects in progress or
   being organized, and Linux Advocacy teams are one method available to
   us which can help raise the visibility of Linux. What I'd like to
   describe in this article is one such effort called the RSA Data
   Security Secret-Key Challenge.
   
   This article will describe what the project is; why we are doing this
   and how it might benefit Linux and how to get started. There is also a
   section on who is involved; other links for further information and
   when to get involved at the end.
     _________________________________________________________________
   
What?
     _________________________________________________________________
   
   The Secret-Key Challenge is a contest sponsored by RSA Data Security
   which is being used primarily to further research into the strength of
   encryption standards. The DES challenge was won back in June. RSA is
   offering a $10,000US prize to the winning team which breaks the
   RC5-32/12/7 challenge which uses a 56 bit key. The challenge has been
   running since January 28th, 1997.
   
   The status of the various challenges can be seen here. The method
   being used for cracking the code by the various groups is a brute
   force check of the entire 2^56 keyspace.
   
   To give you an idea of the magnitude of the problem, consider that a
   single fast Pentium Pro based system would take in excess of 4000
   years to run through the entire keyspace. A 200 Mhz Pentium would take
   about 9000 years.
     _________________________________________________________________
   
Why?
     _________________________________________________________________
   
  Promoting Linux
  
   Promoting Linux is the main reason we are participating in this
   effort. We would like to raise public awareness of Linux, and this
   seems like one of many good avenues for doing it. It is a relatively
   easy and fun way to get a large number of Linux users involved in a
   publicity effort.
   
   Linux is in one of those "chicken-and-egg" situations at the moment.
   We need to make more software companies aware that Linux is a market
   force to be recconned with. With more software, it will be easier to
   convince more users, which will convince more companies etc. A
   snowball effect is what we need to break off the plateau we're on.
   
   There are many operating system advocacy groups participating in the
   effort. One of the strongest ones at the moment is Apple. It seems
   like they've been putting all their available systems into the effort
   and are currently ranked number one in the Bovine effort. This is the
   one to beat! The other Linux advocacy group linux@linuxnet.org is in
   second place on Bovine, but they do not seem to have a presence in the
   Cyberian effort. The group we are involved with, rc5@teamlinux.org is
   moving up from behind very quickly on Bovine, and are consistantly in
   the Top 20 teams on Cyberian for the key rates.
   
   Naturally we hope that you'll consider the team which we are involved
   with, but both Linux teams have similar goals and reasons for being,
   and either team would be a good choice.
   
  Helping to Change Encryption Restrictions
  
   To prove that 56-bit encryption is insufficient. It is high time for
   the U.S. government to rethink the current encryption export policies
   and standards.
   
   Stronger encryption is readily available and the belief that
   "bad-guys" might restrict themselves to using encryption that could be
   tapped by the government does not make sense.
   
  Having Fun!
  
   It is fun to watch your system work on the project, see the results
   and get into mild competitions with other teams. Your system is
   probably idle most of the time and it is satisfying to know that all
   of the "idle-cycles" can now be put to productive use!
   
   Most groups and teams have some methods available for looking at the
   statistics. Check into these sites on a regular basis, and see how
   well your team is doing! The competitive aspect can spur growth as it
   motivates people to get other people involved. This is good!
     _________________________________________________________________
   
How?
     _________________________________________________________________
   
   There are three overall efforts working on the RSA RC5 Challenge that
   we know of. Each one has different client programs to run and
   different procedures to follow. They also each have their own pros and
   cons. Each overall effort is also divided up into "teams". We believe
   that only the first two groups have active Linux Advocacy groups, but
   we may be mistaken. (The third group had a team called Linux!, but did
   not have a web address or a way to contact them which we could see.)
     * The Bovine RC5 Cracking Effort Headquarters
     * The Cyberian RC5-56 Project CommCentre
     * Infinite Monkeys RC5 Coordinated Attack
       
   You will need to pick a team. Either of the Linux teams will make a
   good choice and both teams have instructions for setting up which you
   can read on their respective Websites. See the section below for more
   of a description on both teams.
   
   The team we are involved with, Team Linux, has members involved with
   both Bovine and Cyberian, so we will describe both here.
   
   We will also assume that you are using a Linux machine, although we
   (Team Linux) don't restrict you to using Linux. Our feeling on the
   matter is that the other machines on our team are "Linux
   Sympathasizers" or "Linux Wannabee" machines!  ;-)
   
   All groups work on the basis of keyservers handing out work for the
   distributed systems, or client systems (that's you and me) to work on.
   There is very little network traffic to do this. Basically the
   keyservers hand out a range of keys to work on. Your system then
   checks each key by brute force and contacts the keyserver again when
   it needs more work to do. The programs work at very low priority
   (nice-level) so that you shouldn't notice any change in interactive
   sessions, effectively only using "idle cycles". The client system also
   tells the server which range it has checked so that the numbers can
   show up in your team's statistics. (This is the fun part.)
   
   The following will not be an exhaustive description of either system
   but will give you a few pointers on setting up. For more information,
   see your team's Web pages. Hopefully, this get you started and show
   you how easy it is.
     _________________________________________________________________
   
  Bovine Clients
  
   The Bovine effort has a lot going for it. They are well organized;
   have fast client programs for a number of platforms; have checked a
   larger portion of the key space and will be giving away a larger
   portion of the winnings (should they win). They have stated that they
   will give $8000US of the winnings to Project Gutenberg which is a very
   worthwhile cause. They are keeping $1000US and will give $1000US to
   the winning team.
   
   Both Linux teams will be giving all the prize money away. The
   linux@linuxnet.org group will be donating the money to Linux
   International, while the Team Linux group is leaving it to members to
   vote on, and may well end up doing the same. Team Linux is also in
   discussions with several other companies about additional sponsorship
   for a worthy Linux cause. We will have an announcement about this
   soon.
   
   Both linux@linuxnet.org and the team we are involved with, Team Linux
   (with an email of crusader@mo.net) are represented in this group. You
   may pick either team if you choose to use the Bovine system.
   
   The first thing to do is to get a copy of the client program and
   unpack the archive into an empty directory. At the time of this
   writing, the latest version was v2 build 4 and the Linux archive
   contains:
   

-rwxrwxr-x bovine/rc5   292892 Aug  7 05:06 1997 rc5v2b4/rc5v2
-rw-rw-r-- bovine/rc5     2085 Aug  6 22:11 1997 rc5v2b4/README.TXT

   You'll notice that the files are containted in a subdirectory relative
   to where you unpack them. So if you unpack in your home directory you
   will create a subdirectory called rc5v2b4 containing the files. (I
   also create a symlink [symbolic link] here, to make typing easier.
   Pick a name which is easier to type such as bovine. You can then use
   this as an alias.)
   
ln  -s  rc5v2b4  bovine

   The Bovine system uses one program which both does the key checking
   and also maintains a cache of keys, contacting a keyserver when it
   needs more work, and checking in the finished blocks.
   
   Configuring the Bovine client involves running the client program with
   the -config option. You will then be presented with a menu, which
   should be similar to the one reproduced here:
   

CLIENT CONFIG MENU
------------------
1)  Email to report as [default:rc5@distributed.net] ==> rc5@distributed.net
2)  Blocks to Buffer [default:5] ==> 5
3)  Blocks to complete in run [default:0] ==> 0
4)  Hours to complete in a run [default:0] ==> 0
5)  Keys per timeslice - for Macs etc [default:65536] ==> 65536
6)  Level of niceness to run at [default:0] ==> 0
7)  File to log to [default:] ==>
8)  Network communication mode [default:1] ==> 1
14)  Optimize performance for CPU type [default:-1] ==> -1
0)  Quit and Save

   The important one to change is "1". This email address you add here
   determines which team your blocks will be counted for. This is case
   sensitive, and does not tolerate typos, so be careful when typing this
   in and double check.
   
   Press the "1" key, followed by the "Enter" key and you will be
   presented with the following prompt:
   

Email to report as (64 characters max) [rc5@distributed.net] -->

   If you decide to count your blocks for linux@linuxnet.org then enter
   it here.
   
   If you decide to work with Team Linux then you need to enter
   crusader@mo.net. (The reason we don't use rc5@teamlinux.org on Bovine
   is that we received our teamlinux.org domain after actually starting
   the effort. The Bovine group was unwilling to move our stats to the
   new email address so we had to keep the old one to maintain our block
   counts. The crusader@mo.net email address actually belongs to Eric P.
   Anderson, who started Team Linux.)
   
                                Fine Tuning
                                      
   If you are only connected to the net part time, you should consider
   buffering a larger number of blocks. Assuming that you connect once
   per day, you'll need to get at least a day's worth and maybe a bit
   more, for good measure. (The limit is 200 on the latest clients I
   think.) If you are connected to the 'Net full time, then you can leave
   this at the default setting.
   
   I also suggest that you define a log file, perhaps
   /var/tmp/bovine.log   might be a good choice. This is all you really
   need to define unless you have specific needs, such as getting around
   a firewall. (These subjects are beyond the scope of this article, and
   you should consult the Bovine Client Documentation for more help if
   you run into difficulties. They also maintain several mailing lists
   where you might find additional help.)
   
   At this point, save the setup by pressing the "0" key, and you should
   be ready to test it out. The configuration file which is saved is
   called rc5v2.ini, and is placed in the current directory.
   
   Test it out! Type the name of the program and watch it go! (We usually
   leave it running with a spare xterm or on one of the text consoles.
   One nice thing about the Bovine client is that it gives you feedback
   on how far through each block it is.)
     _________________________________________________________________
   
  Cyberian Clients
  
   Personally, we find the Cyberian Effort more satisfying, although it
   is not without its problems. They have been going through some
   difficulties on their server in the last week while one of the key
   developers was away in China. (This should be cleared up by the time
   you read this.) They also only have one server whereas Bovine have
   many, so Cyberian are currently more prone to having problems. Lastly,
   they have not been working as long as Bovine, so have not checked as
   much of the keyspace.
   
   On the positive side, Cyberian have far better stats which make them
   much more fun to be involved with. Currently, the Bovine stats are
   only updated once per day and do not give you access to your
   individual numbers. The Cyberian stats are updated every 10 minutes or
   so and gives you a list of all of the team members as well as your
   overall team statistics.
   
   This is a great boon for people getting involved as they can see
   themselves up on the board within minutes! Cyberian also has many more
   categories of numbers and graphs to delight the people involved.
   
   Lastly, the Bovine effort is offering $1000US to the winning team,
   while the Cyberian effort is offering $5000US. This would mean more
   money for a worthwhile Linux effort, should one of the Linux teams
   win. Note that the Bovine group is giving the bulk of the money to a
   worthwhile cause, it's just not a Linux cause.)
   
   At the time of this writing, we believe that the only Linux advocacy
   group here is Team Linux. The email address they are using here is:
   rc5@teamlinux.org.
   
   First, you need to download their client program. Pick the appropriate
   one for your architecture. We assume that most of us will be using the
   "Client v3.04 for Linux [X86]" although others are available.
   
   This tar archive will unpack in your current directory so you should
   make a directory for it: $HOME/cyberian, for example, then change to
   that directory.
   
   Unpacking with tar tvzf Linux-x86.bin304.tgz will give you the
   following files:
   
-rwxrwxr-x tic0/tic0     20315 Jul 25 15:08 1997 rc5client
-rwxrwxr-x tic0/tic0     18093 Jul 25 15:08 1997 sa_simple

   The Cyberian system uses these two programs: one (rc5client) which
   checks the keys and the other (sa_simple) which maintains the cache
   and contacts the server when necessary. Both programs will list the
   available options if you run the program with "-\?". (The backslash
   may be necessary to escape the question mark on some shells.)
   
   You will need to contact the server to load the initial cache of
   blocks at this point. For now, run
   
sa_simple  -1

   If everything works OK, you should see a message saying that the
   server has been contacted and that your cache has been loaded. If the
   program has difficulty contacting the server, you will see repeated
   messages to that effect. If this condition lasts more than ten minutes
   or so, then there may be a problem. See the Cyberian or Team Linux
   Websites for more details. It may be a networking issue, or it may be
   that their server is still having some problems.
   
   The Cyberian system does not use configuration files, nor does it
   create logfiles; so all options must be supplied on the command line.
   (We like to use logfiles to maintain a record of what was done and to
   see what it is doing occasionally.) You can automate this by creating
   a shell script such as the following:
   

#!/bin/sh
#
# Run the Cyberian client programs:
# (This version is for part-time connections, full-time connections don't
# use the -1 option on sa_simple, or the -q option on rc5client)
#

MY_EMAIL=yourname@yourdomain   # Change This!!!
TEAM="rc5@teamlinux.org"
LOW_WATER_MARK=500
HIGH_WATER_MARK=1000

export TEAM HIGH_WATER_MARK LOW_WATER_MARK MY_EMAIL

sa_simple  -1  -l $LOW_WATER_MARK  -h $HIGH_WATER_MARK > /var/tmp/sa_simple.log
 2>&1 &

rc5client  -t $TEAM -e $MY_EMAIL -N -q -n19            > /var/tmp/rc5client.log
 2>&1 &

   With a shell script such as this you can find out what is happening at
   any time by doing a
   "tail -f /var/tmp/rc5client.log" or
   "tail -f /var/tmp/sa_simple.log".
   (In fact, we just leave a few xterms running with a tiny font, so we
   can keep an eye on them while doing other things.)
   
   Assuming that everything is running OK, you can start seeing your own
   email address in your team's statistics in a very short period of
   time. After a few hours of processing, make a connection to the net
   again (if you are dialing in part time), and run sa_simple -1 by
   itself. After the server has acknowledged your blocks, you should be
   able to do a search and see your email address show up here in about
   15 minutes!
   
   Another nice feature which we like about Cyberian is the ability to
   see what is left in the cache. This is very useful for users with
   part-time connections. The following is a script we use to summarize
   what is in the cache. You can use this as is, or even modify it to
   give you estimates of the number of hours left. If you have trouble
   cutting and pasting from here, you can find it on the Team Linux site.
   

#!/bin/sh
#
# @(#) cache.sh - summarize rc5 cache information dump
# Author:  Bill Duncan, bduncan@teamlinux.org
#
# Note:  make sure rc5client is in your PATH.  I assume current directory.

PATH=$PATH:

rc5client -d |
awk '
  BEGIN {
    F = "%-6s %4d %s\n"
  }
  FNR == 1 { next }
  NF > 0 {
  time = $2
    $1 = $2 = ""
  s = sprintf("%6s~%s", time, $0)
    a[ s ]++
  }
  END {
    for (i in a) {
      split(i, b, "~")
      printf F, b[1], a[i], b[2]
      total += a[i]
      if (i ~ /COMPLETED/)
        done    += a[i]
      else
        notdone += a[i]
    }
  # sort these lines to the end
  printf "~\n"
  printf F, "~", done,    "  DONE"
  printf F, "~", notdone, "  NOT DONE"
  printf F, "~", total,   "  TOTAL IN CACHE"
  }'  |
sort  | sed 's/^~/ /'


   This script will give you a display such as the following:
   
122:59   27   COMPLETED REPORTING
125:47  101   COMPLETED REPORTING
137:15   93   COMPLETED
137:15  125   COMPLETED REPORTING
150:26    1   RESERVED
150:26    4

          5   NOT DONE
        346   DONE
        351   TOTAL IN CACHE

   This display tells us that we need to connect to the server soon as we
   only have 5 blocks to go before running out! The numbers down the left
   column are the number of hours and minutes left before that block
   expires. The middle column is the number of blocks with that specific
   expiry. The rest of the line is a status, with "RESERVED" being the
   block currently being worked on and no status means that the group has
   not been started yet.
     _________________________________________________________________
   
Stats, Numbers and Graphs
     _________________________________________________________________
   
   As we have mentioned elsewhere, the Cyberian group pay more attention
   to the statistics and graphs, which we tend to think are more fun for
   people.
   
   Both groups tend to pay alot of attention to the blocks already
   completed. This is like saying that someone has bought 10,000 losing
   lottery tickets vs. someone else who has only bought 10. The prize is
   not given to the group with the most losing tickets! Both teams have
   an equal chance of buying the next winning lottery ticket!!
   
   More important is the current rate at which the tickets are being
   bought, or in our case, the rate at which key blocks are being
   checked.
   
   If you compare teams on that basis, it gives a more realistic relative
   probability on which team will find the secret key and win the prize
   money.
   
   Having said all that, watching the numbers and the graphs, and
   comparing your team's numbers with other teams is all part of the fun.
   
   The Bovine stats recently had an overhaul but is still only updated
   once per day. For example: only team statistics are shown, without
   mentioning individual efforts.
   
   The Cyberian stats and their search facility are a joy to use. They
   provide almost instant feedback for anyone getting involved as you can
   usually find your entries within minutes of contacting the server. You
   can also see how your contribution has helped the overall team effort.
     _________________________________________________________________
   
Who?
     _________________________________________________________________
   
  So Where do I Sign Up?
  
   Why two teams? Why don't we just join up with the other team, and
   combine our numbers? We've been asked this probably the most since
   Eric Anderson started Team Linux.
   
   The reason is that we feel that "friendly" rivalry will benefit both
   teams and help get people excited about getting involved. The benefit
   to Linux will hopefully be greater participation and better
   visibility.
   
   Both teams have the same main goals in mind with promoting Linux the
   highest on the list. However, we both have different ways of going
   about this.
   
   The linux@linuxnet.org team has plenty going for it. It's been around
   a lot longer and has accumulated a much larger total number of blocks
   checked. They have openly stated that they will donate the entire
   $1000 to Linux International if they win. They seem to have two sets
   of Web pages and you can access the second set here.
   
   The Team Linux group have stated that they will donate all of any
   prize money or other revenue directly to a Linux group of the members'
   choosing. Any administrative costs will be paid for out of our own
   pocket. Since Team Linux is also involved in the Cyberian effort, the
   prize money may very well be $5000US for Team Linux, or $1000US if the
   key is found through the Bovine effort.
   
   Team Linux is also in discussion with several companies about up-ing
   the anti, possibly by having them match the prize money available, or
   perhaps some other method which does not rely on chance nearly as
   much. We should have an announcement on this soon.
   
   We would like to encourage you to get involved in either team and
   compete in the spirit of Linux, for the benefit of Linux. As long as
   the competition remains friendly, it will be healthy and help out.
     _________________________________________________________________
   
The Future of Distributed Computing
     _________________________________________________________________
   
   Getting tens of thousands of computers working on a common problem is
   an awesome technical accomplishment. It is made all the more
   interesting by the fact that the computers are spread out world-wide,
   some of them available full-time, some not, with different hardware
   and operating systems. Having them all owned by different people and
   organizations, each with their own agenda and motivations adds yet
   another dimension to the task.
   
   Some papers and sites on the topic of distributed systems and related
   subjects which we've found:
   
     * Condor is a project at University of Wisconsin-Madison which has
       been going on for about 10 years. They have published a number of
       interesting papers on what they call High Throughput Computing
       (HTC). They are the movers and shakers for the third group working
       on the RSA Challenge called Infinite Monkeys.
     * Yahoo have a whole section devoted to distributed computing. There
       is a good collection of material here, with many universities
       being represented.
     * The GREAT Internet Mersenne Prime Search is another way to use
       those spare cycles.
     * In Search Of The Optimal 20 & 21 Mark Golomb Rulers
     * SETI@home is an effort to use spare cycles in the Search for
       Extra-Terrestrial Intelligence (SETI). It looks like this might
       ramp up to be a very big thing by next Spring. They are looking to
       put hundreds of thousands of machines to work. Let's make sure
       they do a Linux client program!
     * As we all know, lots of cool research has come from the folks at
       Xerox PARC (Palo Alto Research Center), including probably the
       first windowing environment. It's not surprising to find that they
       have a number of papers on the subject. There is one which looks
       particularly interesting in a section called allocating time on
       idle computers: C. A. Waldspurger et al., Spawn: A Distributed
       Computational Economy, 1992. Unfortunately, it has been taken
       off-line. I seem to recall something like this published some
       years ago, possibly in Byte, although no reference could be found.
       While researching the Xerox PARC site, we came across a section
       called the Dynamics of Computation Area. You have to see this, if
       for no other reason, to see the graphic depicting many small
       distributed efforts overtaking one large effort!!
     _________________________________________________________________
   
When?
     _________________________________________________________________
   
     Do it now!!
     
     It's easy. You'll have plenty of help. And once you are set up, you
     can let your system do the rest!
     _________________________________________________________________
   
                       Copyright © 1997, Bill Duncan
         Published in Issue 21 of the Linux Gazette, September 1997
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
     _________________________________________________________________
   
                          Linux Gazette Back Page
                                      
           Copyright © 1997 Specialized Systems Consultants, Inc.
For information regarding copying and distribution of this material see the
                              Copying License.
                                      
    "Linux Gazette...making Linux just a little more fun!"
     _________________________________________________________________
     _________________________________________________________________
   
  Contents:
  
     * About This Month's Authors
     * Not Linux
     _________________________________________________________________
   
                         About This Month's Authors
     _________________________________________________________________
   
    Randy Appleton
    
   Randy Appleton is a new professor in the Math and Computer Science
   department of Northern Michigan University. He typically teaches the
   higher lever C.S. classes, especially the operating systems classes.
   He has two dogs, two cats and speaks a small amount of German. He
   likes to SCUBA dive and has his very own pilots license.
   
    Larry Ayers
    
   Larry Ayers lives on a small farm in northern Missouri, where he is
   currently engaged in building a timber-frame house for his family. He
   operates a portable band-saw mill, does general woodworking, plays the
   fiddle and searches for rare prairie plants, as well as growing
   shiitake mushrooms. He is also struggling with configuring a Usenet
   news server for his local ISP.
   
    Gerd Bavendiek
    
   Gerd has worked as a software engineer with various flavors of Unix
   since 1988. In 1994 he realized that using Linux could make his
   every-day work more convenient. Since that time he has used Linux and
   various GNU-software. He lives in Essen, Germany. In his spare time he
   builds model-steam engines using real hardware: lathe, milling-machine
   and a lot of hand tools.
   
    John Daily
    
   John Daily works for BBN (or is that GTE?) as a systems
   administrator/software engineer. He spends far too much time in front
   of computers, but when he's not, he prefers to be outside riding his
   new bicycle, or otherwise exploring New England.
   
    Jim Dennis
    
   Jim Dennis is the proprietor of Starshine Technical Services. His
   professional experience includes work in the technical support,
   quality assurance, and information services (MIS) departments of
   software companies like Quarterdeck, Symantec/ Peter Norton Group, and
   McAfee Associates -- as well as positions (field service rep) with
   smaller VAR's. He's been using Linux since version 0.99p10 and is an
   active participant on an ever-changing list of mailing lists and
   newsgroups. He's just started collaborating on the 2nd Edition for a
   book on Unix systems administration. Jim is an avid science fiction
   fan -- and was married at the World Science Fiction Convention in
   Anaheim.
   
    Bill Duncan
    
   Bill has worked with Unix systems since the early Version 7 days on
   PDP-11's. He worked with Xenix hroughout most of the eighties and has
   also worked with many other flavors of Unix over the years, but his
   operating system of choice is now Linux. When not working or fiddling
   with his four Linux systems at home (which is rare), he might have
   some time left over for his other hobbies: his dog (Daisy),
   photography and Amateur Radio. He can be reached at
   bduncan@BeachNet.org.
   
    John Fisk
    
   John Fisk is most noteworthy as the former editor of the Linux
   Gazette. After three years as a General Surgery resident and Research
   Fellow at the Vanderbilt University Medical Center, John decided to
   ":hang up the stethoscope":, and pursue a career in Medical
   Information Management. He's currently a full time student at the
   Middle Tennessee State University and hopes to complete a graduate
   degree in Computer Science before entering a Medical Informatics
   Fellowship. In his dwindling free time he and his wife Faith enjoy
   hiking and camping in Tennessee's beautiful Great Smoky Mountains. He
   has been an avid Linux fan, since his first Slackware 2.0.0
   installation a year and a half ago.
   
    Sam Trenholme
    
   Sam Trenholme has been using Linux since June 19, 1995. He sees Linux
   as a very powerful tool for communicating and maintaining connections
   with people. His goal is to eventually obtain a Master's degree in
   Computer Science.
     _________________________________________________________________
   
                                 Not Linux
     _________________________________________________________________
   
   Thanks to all our authors, not just the ones above, but also those who
   wrote giving us their tips and tricks and making suggestions. Thanks
   also to our new mirror sites.
   
   My assistant, Amy Kukuk, did all the work again this month. She's so
   good to me. Thank you, Amy.
   
   Our beautiful new logo was designed by our very own Graphics Muse,
   Michael J. Hammel. (He used The Gimp.) Thanks, Michael.
   
   Well, this is the last issue that Amy and I will be working on. We are
   turning over the editorship to Viki Navrotilova. Here's a bit about
   Viki:
   
   Viktorie Navratilova has been using Linux for the past 4 years, and
   has been active in both the Israeli and Chicago Linux Users' Groups.
   She started using Linux because of its network capabilities, and then
   stayed for the compilers. 
   
   I know Viki will have as much fun as we have and do a wonderful job.
   Show your support and send her lots of articles.
   
   LG will remain under the guardianship of Linux Journal and neither the
   web address or e-mail address will change. Articles from LG will
   continue to appear in LJ.
   
   Have fun! Bye-Bye!
     _________________________________________________________________
   
   Marjorie L. Richardson
   Editor, Linux Gazette gazette@ssc.com
     _________________________________________________________________
   
   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back 
     _________________________________________________________________
   
   Linux Gazette Issue 21, September 1997, http://www.ssc.com/lg/
   This page written and maintained by the Editor of Linux Gazette,
   gazette@ssc.com
