8862 lines
360 KiB
HTML
8862 lines
360 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
||
<HTML>
|
||
<HEAD>
|
||
<TITLE> Linux Gazette Index Page </TITLE>
|
||
<META NAME="robots" CONTENT="noindex, nofollow">
|
||
</HEAD>
|
||
|
||
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
|
||
ALINK="#FF0000" >
|
||
<center><H2><IMG SRC="../gx/newlogo.jpg"
|
||
ALT="Linux Gazette... making Linux just a little more fun!">
|
||
</H2>
|
||
|
||
<H5>Copyright © 1996-98 Specialized Systems Consultants, Inc.</H5>
|
||
</center>
|
||
|
||
<P> <HR> <P>
|
||
<!--==================================================================-->
|
||
<center>
|
||
<H1>Welcome to Linux Gazette!<img src="../gx/tm.gif" alt="(tm)"></H1>
|
||
</center>
|
||
<P> <HR> <P>
|
||
<!--==================================================================-->
|
||
<H1>Published by:</H1>
|
||
<center>
|
||
<H1><A HREF="http://www.ssc.com/lj/">
|
||
<img src="../gx/ljlogo.gif" alt="Linux Journal" border=0></A></H1>
|
||
</center>
|
||
<P><HR> <P>
|
||
<H1>Sponsored by:</H1>
|
||
<table>
|
||
<tr>
|
||
<td><H1><A HREF="http://www.infomagic.com/"><img ALIGN="bottom" HSPACE="70" src=../gx/infologo.gif alt="InfoMagic" border=0></A></H1></td>
|
||
<td>
|
||
<H1><A HREF="http://www.suse.com/"><img ALIGN="bottom" src=../gx/suse.gif alt="S.u.S.E." border=0></A></H1></td>
|
||
<td>
|
||
<H1><A HREF="http://www.redhat.com/"><img HSPACE="70" src=../gx/redhat.gif alt="Red Hat" border=0></A></H1></td>
|
||
</tr>
|
||
<tr>
|
||
<td><H1><A HREF="http://www.LinuxMall.com/"><img ALIGN="bottom" HSPACE="70"
|
||
src=../gx/linuxmall.gif alt="LinuxMall" border=0></A></H1></td>
|
||
<td><H1><A HREF="http://www.linuxresources.com/"><img ALIGN="bottom"
|
||
src=../gx/linux6.gif alt="Linux Resources" border=0></A></H1></td>
|
||
<td><H1><A HREF="/cgi-bin/redirect.pl"><img HSPACE="70"
|
||
src=../gx/mozilla.gif alt="Mozilla" border=0></A></H1></td>
|
||
</tr>
|
||
</table>
|
||
|
||
<P>
|
||
Our sponsors make financial contributions toward the costs of
|
||
publishing <I>Linux Gazette</I>. If you would like to become a sponsor
|
||
of <I>LG</I>, e-mail us at <A
|
||
HREF="mailto:sponsor@ssc.com">sponsor@ssc.com</A>.
|
||
|
||
<P>
|
||
<I>Linux Gazette</I> is a non-commercial, freely available publication and will
|
||
remain that way. Show your support by using the products of our sponsors
|
||
and publisher.
|
||
|
||
<P> <HR> <P>
|
||
|
||
<P> <HR> <P>
|
||
<!--=================================================================-->
|
||
<H1 align="center">Table of Contents <BR>June 1998 Issue #29</H1>
|
||
|
||
<P> <HR> <P>
|
||
<table><tr>
|
||
<td rowspan=4>
|
||
<UL>
|
||
<LI><A HREF="../index.html">The Front Page</A>
|
||
<LI><A HREF="./lg_mail29.html">The MailBag</A>
|
||
<ul>
|
||
<li><a HREF="./lg_mail29.html#help">Help Wanted</a>
|
||
<li><a HREF="./lg_mail29.html#gen">General Mail</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_tips29.html">More 2 Cent Tips</A>
|
||
<ul>
|
||
<li><a HREF="./lg_tips29.html#rosomakho">Linux Kernel 2.1.102 Error Patch</a>
|
||
<li><a HREF="./lg_tips29.html#ehliar">Tip for using Windows 95 Button in X</a>
|
||
<li><a HREF="./lg_tips29.html#bronson">Re: Usershell on Console</a>
|
||
<li><a HREF="./lg_tips29.html#hall">IBM LAN Adaper for Ethernet</a>
|
||
<li><a HREF="./lg_tips29.html#ballueder">Easy Access to Removable Media</a>
|
||
<li><a HREF="./lg_tips29.html#smith1">Re: bpp 16 question</a>
|
||
<li><a HREF="./lg_tips29.html#smith2">Re: Finite Elements Programs</a>
|
||
<li><a HREF="./lg_tips29.html#smith3">Re: How to Enable Swapping</a>
|
||
<li><a HREF="./lg_tips29.html#smith4">Re: Slackware</a>
|
||
<li><a HREF="./lg_tips29.html#mcanulty">Re: about::mozilla</a>
|
||
<li><a HREF="./lg_tips29.html#contents">Tips Contents for More Tips!</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_bytes29.html">News Bytes</A>
|
||
<ul>
|
||
<li><a HREF="./lg_bytes29.html#general">News in General</a>
|
||
<li><a HREF="./lg_bytes29.html#software">Software Announcements</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_answer29.html">The Answer Guy</A>, by James T. Dennis
|
||
<LI><A HREF="./hamilton.html">Building an Audio CD Player, Part 2</a>, by
|
||
Michel Hamilton
|
||
<LI><A HREF="./marsden.html">EMACSulation</a>, by Eric Marsden
|
||
<LI><A HREF="./prelz.html">The Importance of Adopting an In-House Linux
|
||
Expert</a>, by Carlo Prelz
|
||
<LI><A HREF="./nelson.html">Mastering Kernel Modules with Caldera</a>, by
|
||
David Nelson
|
||
<LI><A HREF="./coldiron.html">Replacing Windows NT Server with Linux</a>, by
|
||
Quinn P. Coldiron
|
||
<LI><A HREF="./kahn.html">Revisiting VIM</a>, by Andy Kahn
|
||
<LI><A HREF="./richardson.html">Sun Joins Linux International</a>, by
|
||
Marjorie Richardson
|
||
<LI><A HREF="./bryant.html">Tom's 2 Cent Tips</a>, by Tom Bryant
|
||
<LI><A HREF="./hughes.html">UniForum 1998</a>, by Phil Hughes
|
||
<LI><A HREF="./pate.html">Using rdist for Backups</a>, by John Pate
|
||
<LI><A HREF="./lg_backpage29.html">The Back Page</A>
|
||
<ul>
|
||
<li><a HREF="./lg_backpage29.html#authors">About This Month's Authors</a>
|
||
<li><a HREF="./lg_backpage29.html#notlinux">Not Linux</a>
|
||
</UL>
|
||
</UL>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align=center>
|
||
<A HREF="lg_answer29.html">
|
||
<img src="../gx/dennis/answerwiz-255.gif" border=0 alt="">
|
||
</a><P>
|
||
<A HREF="lg_answer29.html"><i>The Answer Guy</i></a>
|
||
</td>
|
||
</tr><tr>
|
||
<td align=center>
|
||
<!-- <A HREF="gm.html"> -->
|
||
<IMG SRC="../gx/hammel/banner-3.gif" border=0 alt="">
|
||
<P><font color="maroon"><I>The Graphics Muse Will Return</I></font>
|
||
<!-- </a> -->
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<P> <HR><P>
|
||
|
||
<!--=============================================================-->
|
||
<A HREF="./issue29.txt">TWDT 1 (text)</A><BR>
|
||
<A HREF="./issue29.html">TWDT 2 (HTML)</A><BR>
|
||
are files containing the entire issue: one in text format, one in HTML.
|
||
They are provided
|
||
strictly as a way to save the contents as one file for later printing in
|
||
the format of your choice;
|
||
there is no guarantee of working links in the HTML version.
|
||
|
||
<!--=============================================================-->
|
||
<P> <HR><P>
|
||
Got any <I>great</I> ideas for improvements? Send your
|
||
<A HREF="mailto:gazette@ssc.com">comments, criticisms, suggestions
|
||
and ideas.</A>
|
||
|
||
<P><hr><p>
|
||
This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A>
|
||
|
||
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
|
||
<HR>
|
||
<center>
|
||
<table width="100%" cellpadding=7><tr><td>
|
||
<H2><a NAME="mail"><IMG SRC="../gx/mailbox.gif" ALIGN=MIDDLE ALT=" ">
|
||
The Mailbag!</a> </H2>
|
||
Write the Gazette at <A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
|
||
</td><td>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_mail29.html#help">Help Wanted -- Article Ideas</a>
|
||
<li><a HREF="./lg_mail29.html#gen">General Mail</a>
|
||
</ul>
|
||
</td></tr></table>
|
||
</center>
|
||
|
||
<a name="help"></a>
|
||
<p><hr><p>
|
||
<!-- =================================================================== -->
|
||
<center><H3><font color="maroon">Help Wanted -- Article Ideas</font></H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Wed, 13 May 1998 13:39:17 -0700<BR>
|
||
From: Michael Vanecek, <A HREF="mailto:webmaster@mjv.com">
|
||
webmaster@mjv.com</A> <BR>
|
||
Subject: <B>Blender</B>
|
||
<P>
|
||
I'd be tickled pink if one of your writers/Linux gurus would take a peek
|
||
at the new 3D development package called Blender and write about it.
|
||
Info can be found at:
|
||
<P>
|
||
http://www.neogeo.nl/blender.html
|
||
<P>
|
||
It's still in beta, but appears to be a sharp product and will appeal to
|
||
us graphic artists looking for new tools for Linux.
|
||
<P>
|
||
Thanks, Mike
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Sun, 24 May 1998 16:35:41 -0600<BR>
|
||
From: Phil Reardon, <A HREF="mailto:pcr@pcrt.com">pcr@pcrt.com</A> <BR>
|
||
Subject: <B>Article Ideas</B>
|
||
<P>
|
||
I think a lot of people would be interested in an article on Linux
|
||
related posters, which would have good eye appeal and provide a resource
|
||
to the community for ordering these collectibles. Someone would have to
|
||
locate all of them first, however.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Sat, 02 May 1998 15:48:04 -0700<BR>
|
||
From: "Joseph Mugerwa", <A HREF="mailto:joe.jtm@mailcity.com">
|
||
joe.jtm@mailcity.com</A> <BR>
|
||
Subject: <B>Sound card with radio on it</B>
|
||
<P>
|
||
I am intending to install Red Hat 5.0 to my 486: PC and my question is that I have
|
||
a ISA sound card (SF16-FMI) with radio on it, it's 100% SB compatible,and has a IDE
|
||
connection on it and it's not PnP will it be able to work and in particular
|
||
the radio please help I enjoy listening to radio
|
||
<P>
|
||
Joseph
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Mon, 04 May 1998 21:08:35 -0700<BR>
|
||
From: slappy, <A HREF="mailto:slappy@pcisys.ne">
|
||
slappy@pcisys.ne</A> <BR>
|
||
Subject: <B>Best Linux Motherboard</B>
|
||
<P>
|
||
Hi. I recently bought a Tyan Turbo AT S1571 motherboard to run my Red
|
||
Hat Linux www server on. The keyboard freaks out when I attempt to
|
||
install Linux. No BIOS update is available. Do you have any
|
||
suggestions as to what motherboard/chip set combinations work well with
|
||
Linux? I have searched and found only generic information, I'm looking
|
||
for something a bit more specific. Intel, ABit, Asus, DFI,
|
||
SuperMicro??? I'm planning on using a 233MHz MMX Pentium.
|
||
<P>
|
||
Slappy (slappy@pcisys.net)
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Wed, 06 May 1998 12:49:23 +0800<BR>
|
||
From: Guan Yang, <A HREF="mailto:guan@wk.dk">guan@wk.dk</A> <BR>
|
||
Subject: <B>Permissions problem</B>
|
||
<P>
|
||
After I have tried the 'su' command, all permissions for user accounts
|
||
seem to be gone (Slackware 3.4). When it try to login with a normal user
|
||
account, if says that I don't have permission to execute /bin/bash. I
|
||
have checked, and bash is world readable and world executable.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Wed, 13 May 1998 12:46:47 +0200 (MEST)<BR>
|
||
From: Thomas Hotz, <A HREF="mailto:bombur@uni-koblenz.de">
|
||
bombur@uni-koblenz.de</A> <BR>
|
||
Subject: <B>Help wanted! - PS/2-Intellimouse</B>
|
||
<P>
|
||
I have just bought a Microsoft Intellimouse, because I thought it was a
|
||
good choice if you must use Windows and can use Linux.
|
||
The Mouse is connected to the PS/2-Mouseport.
|
||
Here is my problem: I want to use the wheel-button as the middle button in
|
||
X, but in xf86config I only have the choice between IntelliMouse or
|
||
PS/2Mouse, there is no combination of both.
|
||
PS/2Mouse will enable the mouse, but the wheelbutton is not recognized,
|
||
the other way the movements of the mouse are not correctly recognized,
|
||
e.g. I cant move the pointer through the middle of the screen. Anybody got a
|
||
solution for this?
|
||
<P>
|
||
Thomas Hotz
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Mon, 11 May 1998 18:32:20 +0000 (UTC)<BR>
|
||
From: Christopher Butler, <A HREF="mailto:chrisb@sandy.force9.co.uk">
|
||
chrisb@sandy.force9.co.uk</A> <BR>
|
||
Subject: <B>Printer</B>
|
||
<P>
|
||
I have here an Epson Stylus COLOR 400 printer, and I was wondering if
|
||
I can get one of these beasts to print graphics in Linux (it only does
|
||
text atm).
|
||
<P>
|
||
I've got Aladdin Ghostscript 3.33 (4/10/1995) currently installed, but
|
||
setting that up was a mystery to me.
|
||
<P>
|
||
Pointers to HOWTOs would also be welcomed :-)
|
||
<P>
|
||
Chris Butler
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Mon, 18 May 1998 12:12:16 -0400 (EDT)
|
||
From: Randy Shaver, <A HREF="mailto:randy@gconn.net">
|
||
randy@gconn.net</A> <BR>
|
||
Subject: <B>BJ-200e</B>
|
||
<P>
|
||
I am having a very difficult time setting up my Cannon BJ-200e, has
|
||
anyone been able to configure Linux correctly to print from this?
|
||
<P>
|
||
Randy Shaver
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Fri, 15 May 1998 17:42:00 +0000<BR>
|
||
From: Patrick Leung, <A HREF="mailto:wt.leung@student.unsw.edu.au">
|
||
wt.leung@student.unsw.edu.au</A> <BR>
|
||
Subject: <B>Compilation Error with Red Hat 5.0 on Cyrix CPU</B>
|
||
<P>
|
||
I'm using a Cyrix 6x86 P150+ Machine with 80MB RAM. Everything when I
|
||
compile stuff with the gcc compiler (2.7.2.3) that come with RH5.0, I
|
||
get the error message like "cc1 internal error,signal 11". I know this
|
||
is a bug with Cyrix CPU but does anyone know how to fix it? Please tell
|
||
me.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Thu, 21 May 1998 19:06:55 +0100<BR>
|
||
From: Andrew Crook, <A HREF="mailto:Andrew@andycrook.demon.co.uk">
|
||
Andrew@andycrook.demon.co.uk</A> <BR>
|
||
Subject: <B>X and list probs</B>
|
||
<P>
|
||
I have noticed a real problem with X eg that the fonts listing in Netscape and
|
||
MANY APPS the list goes off the screen and many can not be seen how can i
|
||
stop this problem?
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Wed, 27 May 1998 11:20:26 +0800<BR>
|
||
From: "Felix", <A HREF="mailto:felix@omen.com.au">felix@omen.com.au</A><BR>
|
||
Subject: <B>definitions</B>
|
||
<P>
|
||
Let me introduce myself, I am Felix. I am _totally_ new to not
|
||
just Linux but computers in general. I have had a computer for the last
|
||
....two years, and in all that time was restricted to the limitations
|
||
Windows puts on me. This is because , like many users, I started with
|
||
the program that came with my setup. Windows is _great_ for someone
|
||
who knows _nothing_ of computers. It is all point and click
|
||
accessible. But like anyone who uses a computer for a while, I have
|
||
come to realize that Windows is not the be all and end all of my
|
||
possibilities. Now I want more. Since I got on the Net, I have
|
||
realized this and found Linux. I am in the process of browsing Linux
|
||
for a grounding in the unfamiliar world of Linux. It is
|
||
................most enlightening.
|
||
<P>
|
||
One 'problem' I have encountered is strong, complete definitions
|
||
of terms. If I post a list of terms I have heard in the new groups and ask
|
||
for explanations, I get many replies { the Linux community is
|
||
amazingly tolerant of newbies, and help most unselfishly!} but the
|
||
common thread running through them is that each explanation is
|
||
slightly different to the next. While I realize that some of the
|
||
answers I get are subject specific, some definitions seem to vary from
|
||
application to application, even from distribution to distribution.
|
||
Again, I realize that each distribution may focus on different
|
||
capabilities of applications.
|
||
<P>
|
||
What I want to know is this: Is there a book, magazine, net site
|
||
or whatever that lists in dictionary form properties and definitions
|
||
of Linux?
|
||
<P>
|
||
Thank you, Felix
|
||
<blockquote> <I>
|
||
(Good books include <I>Linux in a Nutshell</I> from O'Reilly and <I>Linux
|
||
for Dummies Quick Reference</I> from IDG. While it is not specifically for
|
||
Linux, I find <I>UNIX: The Open System's Dictionary</I> from Resolution
|
||
Business press quite useful. --Editor)
|
||
</I> </blockquote>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Wed, 27 May 1998 01:42:02 +0900<BR>
|
||
From: Maximo Ramos, <A HREF="mailto:ramos@nuri.net">ramos@nuri.net</A> <BR>
|
||
Subject: <B>Deception about Linux</B>
|
||
<P>
|
||
I wonder why I find so often in many home pages about Linux that it will
|
||
run fine in a 386 with 8 MB RAM, JA!
|
||
Keep in mind that novice end users (like me) who are trying to escape
|
||
from Windows 95 by trying something else, confuse Linux with
|
||
the X Window System.
|
||
Did you try to run Linux and XFree86 in such a machine? Tell people
|
||
the truth!
|
||
Is anyone using X Windows in a 14 inch monitor? It's ugly!
|
||
Today I paid the bill to buy a 17 inch monitor, ouch!!!!
|
||
Again, tell people the truth when you talk about hardware requirements to
|
||
run Linux and X.
|
||
<P>
|
||
Of course, in some home pages they say that if you want to run the X
|
||
Window System you need a "little bit" more hardware, but what is
|
||
exactly "a little bit"? Come on!
|
||
<P>
|
||
Why am I writing this? Because I own a 486DX2 with 32MB of RAM, and I
|
||
said myself : Hey, if Linux runs fine in a 386 with 8 MB of RAM,
|
||
running Linux in my computer will feel like having a Pentium! But that
|
||
is not the true. X works good but more slowly than Windows 95,
|
||
even the Internet is slower, incredible!
|
||
<P>
|
||
So, I request one thing, tell the people (end users) on which hardware
|
||
Linux will run fast (with X Windows included); in my case, I have to buy
|
||
a new computer, at least a Pentium II 233 MHz. I thought MS Windows was the
|
||
only OS hungry resource.
|
||
<P>
|
||
Well, one more thing, any tips to improve the speed of my Internet
|
||
Connection?
|
||
<P>
|
||
What is the difference between having the PPP support as a module or
|
||
included in the kernel? Which is more recommendable?
|
||
<P>
|
||
Anyone has successful installed ICQ for JAVA? When I download some
|
||
libraries, which one should I choose? static or dynamic? How do I know
|
||
what is the correspondent to my system?
|
||
By the way, It is Red Hat Linux 5.0. My video card is Cirrus Logic
|
||
clgd5426 with 1 MB.
|
||
<P>
|
||
Talking about e-mails, I heard about sendmail and so on, but I use
|
||
Netscape for Linux to send and receive e-mails, Which one is
|
||
better? Is sendmail only for servers?
|
||
<P>
|
||
Please, do I have to buy a new computer anyway?
|
||
<P>
|
||
cheers, Desperado
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Thu, 14 May 1998 04:04:14 -0400 (EDT)<BR>
|
||
From: <A HREF="mailto:arunk@m-net.arbornet.org">
|
||
arunk@m-net.arbornet.org</A> <BR>
|
||
Subject: <B>Serial line overrun</B>
|
||
<P>
|
||
When I'm downloading on one virtual console and doing something else on
|
||
another (especially accessing the hard disk) I get the message
|
||
'cua1 1 input overrub(s). Why does this happen? What should I do to stop this?
|
||
Please help me. Thanks.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Sun, 31 May 1998 21:28:53 +0100<BR>
|
||
From: Martin Cannell<A HREF="mailto:martin@cannell.prestel.co.uk">
|
||
martin@cannell.prestel.co.uk</A> <BR>
|
||
Subject: <B>Linux</B>
|
||
<P>
|
||
Hi, a great magazine.
|
||
<P>
|
||
A bit advanced for me though. Do you know where to get an
|
||
idea about how to install Linux?
|
||
<blockquote> <I>
|
||
(Try the Linux Installation HOWTO by Eric Raymond:
|
||
<A HREF="http://www.ssc.com/linux/LDP/HOWTO/Installation-HOWTO.html">
|
||
http://www.ssc.com/linux/LDP/HOWTO/Installation-HOWTO.html</A>. In fact you
|
||
might want to search around the LDP (Linux Documentation Project) for other
|
||
things of interest to newbies. You might also want to check out some of the
|
||
earlier issues of <I>Linux Gazette</I> and our semi-regular column
|
||
"Clueless at the Prompt" by Mike List. --Editor)
|
||
</I> </blockquote>
|
||
|
||
|
||
<a name="gen"></a>
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
<center><H3><font color="maroon">General Mail</font></H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Thu, 30 Apr 1998 08:03:52 +0000<BR>
|
||
From: Chris Fischer, <A HREF="mailto:protek@brigadoon.com">
|
||
protek@brigadoon.com</A> <BR>
|
||
Subject: <B>BusLogic Support for Linux</B>
|
||
<P>
|
||
This is just a little FYI for anyone interested in the
|
||
web page for Linux BusLogic support.
|
||
<P>
|
||
http://www.dandelion.com/Linux/BusLogic.html
|
||
<P>
|
||
Chris
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Fri, 01 May 1998 09:14:06 +0000<BR>
|
||
From: Lars Hamren, <A HREF="mailto:hamren@sdu.se">
|
||
hamren@sdu.se</A> <BR>
|
||
Subject: <B>Web Speed</B>
|
||
<P>
|
||
Your home page just took me 45 seconds to load, mainly due to the nice
|
||
but far too large gifs. I think that the following holds:
|
||
<ul>
|
||
<li>A lot of Linux users are accessing the gazette via modem.
|
||
<li>The typical Linux user is not impressed by a fancy surface,
|
||
but would rather have fast loading pages.
|
||
</ul>
|
||
Lars
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Sun, 3 May 1998 12:02:54 -0400<BR>
|
||
From: "Tim Gray", <A HREF="mailto:timgray@lambdanet.com">
|
||
timgray@lambdanet.com</A> <BR>
|
||
Subject: <B>Article on home networking.</B>
|
||
<P>
|
||
There is one part of the home networking article I strongly disagree
|
||
with.
|
||
<P>
|
||
"The software and hardware for networking can be expensive."
|
||
<P>
|
||
10baseT network cards sell for about $14.00USD that work well with
|
||
Linux.. even less if you want the holy grail of a card with actual
|
||
jumpers on it! A hub - 8 port will cost you a whole $60.00USD Buy the
|
||
cheapest you can get your hands on... this will be plenty for a home
|
||
network.
|
||
<P>
|
||
Now the software...... it comes with your Linux distribution, and win95
|
||
has it built in.... So my network at home...
|
||
<P>
|
||
4 PC's Win95, 2 servers, 1 router, Full-time Internet connection......
|
||
Less than $300.00 total to network it, including a 1000' spool of
|
||
category 5 cable and a huge bag of connectors.
|
||
and the wall plates were 1.95 each (Cat 3 I don't need 100baseT
|
||
capability) Oh yes, one expensive part.. the connector crimper.... it
|
||
cost 29.95USD one weekend of running wire and a week of fighting with
|
||
windows and VOILA! home network!
|
||
<P>
|
||
Yes you can get more expensive stuff..... You can spend thousands on a
|
||
hub.. or even more on a switch (A glorified hub) especially if you want
|
||
that gleaming white box that says Cisco networking on it... but it wont
|
||
work any better than the 60 dollar blue thing that has Chinese writing
|
||
on it, not in a home environment. No networking your house is not
|
||
expensive, it's dirt cheap!
|
||
<P>
|
||
BTW, my servers and router are all Linux machines that were built from
|
||
"junk" computers that were given to me or found in a corporate garbage
|
||
dumpster!
|
||
<P>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Wed, 13 May 1998 17:43:04 +0200 (CEST)<BR>
|
||
From: Rob van der Putten, <A HREF="mailto:rob@sput.sput.dsl.nl">
|
||
rob@sput.sput.dsl.nl</A> <BR>
|
||
Subject: <B>Modeline for TV</B>
|
||
<P>
|
||
Though I have been using Linux for since 1.2.8, I still discover something
|
||
new every week or so.
|
||
Yesterday I discovered the online version of the <i>Linux Gazette</i> and was
|
||
pleasantly surprised to read the following:
|
||
<blockquote><font color="navy">
|
||
I have shamelessly stolen this from USENET, because I feel this excellent
|
||
information should appear within the Linux Gazette.
|
||
I hope the original author don't mind. :-)
|
||
From: Rob van der Putten
|
||
</font></blockquote>
|
||
I don't mind at all. I just wanted to say that I wrote a html page about
|
||
it:
|
||
http://www.sput.dsl.nl/~rob/tv-x.html
|
||
<P>
|
||
Regards, Rob
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Wed, 13 May 1998 02:05:22 +0800<BR>
|
||
From: "Kevin Ng", <A HREF="mailto:kng@HK.Super.NET">
|
||
kng@HK.Super.NET</A> <BR>
|
||
Subject: <B>Swap problem solved! Thanks...</B>
|
||
<P>
|
||
Dear Linux fans,<BR>
|
||
I'd like to say thanks to all who have responded and offered help to the
|
||
swap problem.
|
||
A number of you reminded me that I had to do a mkswap before I can enable
|
||
the swap space with swapon.And now my system is running smoothly, with
|
||
occasional swap.
|
||
Once again thanks to you all. Linux peer support is excellent.
|
||
<P>
|
||
Kevin
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Tue, 12 May 1998 00:37:34 -0500<BR>
|
||
From: Todd Myers, <A HREF="mailto:tmyers@autobahn.mb.ca">
|
||
tmyers@autobahn.mb.ca</A> <BR>
|
||
Subject: <B>good article</B>
|
||
<P>
|
||
I just read the article "Marketing Linux" by Jim Schweizer and
|
||
agree with his points on this subject. Being involved with
|
||
microcomputers for the last 12-14 years I've noticed that each
|
||
successful platform has at least one 'killer app' that launched
|
||
it onto people's desktops...VisiCalc -> AppleII, DTP -> Mac,
|
||
Office Suites -> Windows.
|
||
<P>
|
||
It appears that Linux has ,at present, 2 killer apps to use
|
||
for it's launch point...Apache and Samba. Since Linux is, at
|
||
present, better poised in a server role, these 2 apps are
|
||
beginning to gain Linux it's recognition. The only thing that
|
||
will keep Linux off the desktop is the lack of a standard GUI.
|
||
Though this will change as this is dissected and dealt with
|
||
with the amazing collaboration efforts that I have witnessed
|
||
with other Linux-related issues in the past 12 months.
|
||
<P>
|
||
Later, Todd
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Thu, 28 May 1998 18:40:48 +0100 (WET DST)<BR>
|
||
From: 40334022 Dani Pardo Portas, <A HREF="mailto:dp4022@speedy.udg.es">
|
||
dp4022@speedy.udg.es</A> <BR>
|
||
Subject: <B>Proprietary formats</B>
|
||
<P>
|
||
I just can't stop being fascinated with Issue 18, The Answer Guy where
|
||
the editor talks about proprietary formats. Even now, I often think about
|
||
the issue of word processors and proprietary formats (BTW, I've started
|
||
learning lout :).
|
||
<P>
|
||
And now that there is so much interesting talk about philosophy of
|
||
computers and programming, I'd just like to point everyone interested to
|
||
LG-issue 18:
|
||
<P>
|
||
http://www.linuxgazette.com/issue18/lg_answer18.html (users and
|
||
mounted disks)
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Mon, 04 May 1998 14:44:50 -0500<BR>
|
||
From: Clive Bittlestone, <A HREF="mailto:clyvb@asic.sc.ti.com">clyvb@asic.sc.ti.com</A><BR>
|
||
Subject: <B>Linux in EDA - hot news topic</B>
|
||
<P>
|
||
Just in case you had not already heard,
|
||
Linux vs NT is a hot item in my area of the CAE/CAD
|
||
industry. Integrated System Design magazine had a
|
||
strawman poll last month, and based on the
|
||
overwhelming response,is organizing a
|
||
public forum during DAC-week [a big industry
|
||
conference].
|
||
<P>
|
||
<A HREF="http://www.isdmag.com/linuxvsnt.html">
|
||
http://www.isdmag.com/linuxvsnt.html</A>
|
||
<P>
|
||
From what I can tell, NT is being touted as the
|
||
next OS on PC's [vs solaris/Ultrix/hp-os etc]
|
||
Some engineers don't like that and there is some
|
||
form of pushback.
|
||
<P>
|
||
There is quite a buzz amongst the Linux users
|
||
I work with. We hope this will encourage CAD-Vendors
|
||
to support Linux !!
|
||
<P>
|
||
These are my own opinions, and not
|
||
those of Texas Instruments.
|
||
<P>
|
||
Regards, Clive Bittlestone
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Sat, 09 May 1998 03:38:17 -0700<BR>
|
||
From: Jim Dennis, <A HREF="mailto:jimd@starshine.org">
|
||
jimd@starshine.org</A> <BR>
|
||
Subject: <B>Open Letter Re: Linux on Dell Hardware</B>
|
||
<P>
|
||
To: Mr. Michael Dell, CEO, Dell Computers
|
||
cc: T.R. Reid
|
||
Re: Linux on Dell Hardware
|
||
<P>
|
||
Dear Mr. Dell,
|
||
<P>
|
||
Please forward this to members of your marketing staff.
|
||
<P>
|
||
It is with great disappointment that I read comments by one
|
||
of your representatives, a Mr. T. R. Reid to the effect that
|
||
"none of Dell's customers" use Linux (*).
|
||
<P>
|
||
This is patently untrue. I have personally administered a number of
|
||
Linux servers that were running on Dell Dimension desktops. I have
|
||
also often recommended them to my clients, despite the fact that your
|
||
company offers no option to unbundle software from the system (software
|
||
which is utterly useless for my applications).
|
||
<P>
|
||
Obviously my advice was misguided. I clearly have failed in my
|
||
duty, as a consumer, to provide you with proper feedback --- and this
|
||
as resulted in a gross display of ignorance regarding the needs and
|
||
preferences of your customers (at least the ones I represent).
|
||
<P>
|
||
Forthwith I'm retracting all recommendation of your products from
|
||
all Starshine's customers where the intent is to use the system
|
||
under Linux. I maintain a list of smaller hardware companies
|
||
which do provide Linux, FreeBSD, and other alternatives to meet
|
||
the needs of their customers.
|
||
<P>
|
||
I'll be recommending VAResearch, PromoX, Telenet, SWT, Apache
|
||
Systems, Microway, and many others until you offer your customers
|
||
a choice in the software that's bundled with your systems. I
|
||
personally consider it a pity since your hardware has never required
|
||
any special tweaks or considerations to run with any distribution
|
||
of Linux or FreeBSD that I've ever installed on it.
|
||
<P>
|
||
This will be posted to a few Linux and FreeBSD venues as an open
|
||
letter so that you can be provided with *honest* feedback from
|
||
real customers. Hopefully with the co-operation from other
|
||
interested parties we can overcome this regrettable failure in
|
||
communication. You're comments have underscored the need for
|
||
consumers every where to make their requirements and preferences
|
||
known --- and we must no longer simply accept the "extra"
|
||
and unwanted components that our vendors foist on us.
|
||
<P>
|
||
It is time to just say "No!" to software that we'll simply be
|
||
replacing.
|
||
<P>
|
||
Thank you for your attention to this matter. My apologies for
|
||
not providing this feedback sooner.
|
||
<P>
|
||
(*) The precise quote was:
|
||
<P>
|
||
"I haven't been able to find any examples of customers
|
||
requesting Linux"
|
||
<P>
|
||
... and it can be read at:
|
||
<P>
|
||
http://www.zdnet.com/zdnn/content/inwo/0427/310649.html
|
||
<P>
|
||
--<BR>
|
||
Jim Dennis, consulting@starshine.org<BR>
|
||
Proprietor, Starshine Technical Services: http://www.starshine.org/
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in <i>Linux Gazette</i> Issue 29, June 1998</center>
|
||
<!--====================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
||
PAGE ]"></A>
|
||
<A HREF="./lg_tips29.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P>
|
||
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
||
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
|
||
<P> <HR> <P>
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
<P> <hr> <P>
|
||
|
||
<!-- QUICK TIPS SECTION ================================================== -->
|
||
<center>
|
||
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.gif">
|
||
More 2¢ Tips!</A></H1> <BR>
|
||
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">
|
||
gazette@ssc.com
|
||
</A></center>
|
||
|
||
<p><hr><p>
|
||
<a name="contents"></A>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_tips29.html#rosomakho">Linux Kernel 2.1.102 Error Patch</a>
|
||
<li><a HREF="./lg_tips29.html#ehliar">Tip for using Windows 95 Button in X</a>
|
||
<li><a HREF="./lg_tips29.html#bronson">Re: Usershell on Console</a>
|
||
<li><a HREF="./lg_tips29.html#hall">IBM LAN Adaper for Ethernet</a>
|
||
<li><a HREF="./lg_tips29.html#ballueder">Easy Access to Removable Media</a>
|
||
<li><a HREF="./lg_tips29.html#smith1">Re: bpp 16 question</a>
|
||
<li><a HREF="./lg_tips29.html#smith2">Re: Finite Elements Programs</a>
|
||
<li><a HREF="./lg_tips29.html#smith3">Re: How to Enable Swapping</a>
|
||
<li><a HREF="./lg_tips29.html#smith4">Re: Slackware</a>
|
||
<li><a HREF="./lg_tips29.html#mcanulty">Re: about::mozilla</a>
|
||
<li><a HREF="./lg_tips29.html#niemann">Re: Rebooting without logging in as
|
||
Root</a>
|
||
<li><a HREF="./lg_tips29.html#omegaman">Re: Running an ATAPI ZIP Drive</a>
|
||
<li><a HREF="./lg_tips29.html#rodrigo">Re: Enabling Swap Space</a>
|
||
<li><a HREF="./lg_tips29.html#hammel">Re: Problems using Menus in X</a>
|
||
<li><a HREF="./lg_tips29.html#tennent">Music Typesetters</a>
|
||
<li><a HREF="./lg_tips29.html#dossey">BASH hostname Completion</a>
|
||
<li><a HREF="./lg_tips29.html#mcnamara">Re: xdm and depth</a>
|
||
<li><a HREF="./lg_tips29.html#digulla">Re: Shutdown and root</a>
|
||
<li><a HREF="./lg_tips29.html#davis">Printing with Linux</a>
|
||
<li><a HREF="./lg_tips29.html#gilb1">Re: Finite Elements Programs</a>
|
||
<li><a HREF="./lg_tips29.html#gilb2">Re: Hot to Enable Swapping</a>
|
||
<li><a HREF="./lg_tips29.html#jacobsen">Cuckoo Clock</a>
|
||
</ul>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="rosomakho"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Linux kernel 2.1.102(3) error - patch!
|
||
</H3>
|
||
<P>
|
||
Date: Sat, 23 May 1998 16:20:07 +0000<BR>
|
||
From: Yaroslav Rosomakho, <A HREF="mailto:alons55@dialup.ptt.ru">
|
||
alons55@dialup.ptt.ru</A>
|
||
<P>
|
||
Hello. I have found that make menuconfig and lowlevel sound drivers
|
||
won't work in 2.1.102 & 2.1.103 (latest kernels). I have written a patch:<BR>
|
||
http://yaroslav.hypermart.net/linux
|
||
<P>
|
||
tell people about it!
|
||
<P>
|
||
Yaroslav Rosomakho.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="ehliar"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Tip for using Windows 95 buttons in X
|
||
</H3>
|
||
<P>
|
||
Date: Wed, 29 Apr 1998 20:18:00 +0200 (MET DST)<BR>
|
||
From: Andreas Ehliar, <A HREF="mailto:tamyrlin@futurniture.se">
|
||
tamyrlin@futurniture.se</A>
|
||
<P>
|
||
I am sure that I am not the only one using a keyboard with Windows 95
|
||
buttons. Most people I know tend to ignore them, since they are not very
|
||
useful in Windows 95, and even less so in Linux. But they are supported in
|
||
the Linux kernel. That is, they do generate key codes which applications
|
||
could use, if they only know what to look for.
|
||
<P>
|
||
So, how do I get X to use the offending buttons?
|
||
In the following example, I will show how I configured X and fvwm2 to
|
||
allow me to move a window by pressing the left Windows 95 button, and the
|
||
left mouse button anywhere in the window. I can also resize the window by
|
||
pressing the left Windows 95 button and the right mousebutton anywhere in
|
||
the window. This greatly simplifies things for me, since I don't have to
|
||
locate the titlebar, or a border of the window to move it. So, how did I
|
||
accomplish this?
|
||
First, I created a file named .Xmodmap in my home directory with the
|
||
following two lines:
|
||
<PRE>
|
||
keycode 115 = Hyper_L
|
||
add mod4 = Hyper_L
|
||
</PRE>
|
||
This will map the left Windows 95 button to Hyper_L, and map Hyper_L to
|
||
mod4.
|
||
<P>
|
||
I added the following line to .xsession to actually load the modified
|
||
keymap:
|
||
<PRE>
|
||
xmodmap $HOME/.Xmodmap
|
||
</PRE>
|
||
Note that .xsession is usually executed if you use xdm to log on. If this
|
||
is not the case, you need to find the relevant file on your computer
|
||
system. Some likely candidates are .xinitrc, or .Xclients, however, YMMV.
|
||
<P>
|
||
To actually use mod4 I modified my .fvwm2rc by adding the following lines:
|
||
<PRE>
|
||
# I have bound my left win95 button to mod4, and by holding down it
|
||
# I can move and resize my window without bothering to find a border or
|
||
# titlebar
|
||
Mouse 1 W 4 Move
|
||
Mouse 3 W 4 Resize
|
||
</PRE>
|
||
What these lines does is to specify that if you press the left mouse
|
||
button (1) in a window (W) while pressing mod4 (4) you will move the
|
||
window. (Move)
|
||
If you want to know more about these lines, you should study the fvwm2 man
|
||
page.
|
||
<P>
|
||
So, read in your .Xmodmap, restart fvwm2, and enjoy the added
|
||
functionality. Now all that is left is to replace that Windows logo with a
|
||
penguin :)
|
||
<P>
|
||
Final notes:
|
||
<P>
|
||
* This is only an example, you will probably need to modify some paths to
|
||
suit your system.
|
||
<P>
|
||
* It is also possible that you already have a button bound to mod4. In
|
||
that case, you should probably think twice before binding another button
|
||
to it.
|
||
<P>
|
||
* If you don't use fvwm2 as your window manager,you should read the
|
||
documentation that comes with your window manager to figure out how to
|
||
do the above mentioned configuration.
|
||
<P>
|
||
* If you want to bind the other two window 95 buttons, the scan codes for
|
||
them are 116 respectively 117. This sort of information is by the way
|
||
available using the xev program.
|
||
<P>
|
||
Andreas Ehliar
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="bronson"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: Help Wanted (usershell on console without logging in)
|
||
</H3>
|
||
<P>
|
||
Date: Thu, 30 Apr 1998 09:38:03 -0700<BR>
|
||
From: Rick Bronson, <A HREF="mailto:rick@efn.org">rick@efn.org</A>
|
||
<P>
|
||
I've read, with interest, the good ideas people have submitted about
|
||
setting up Linux to be more stand alone. I've worked on this issue on
|
||
and off for some time now and would like to share my ideas.
|
||
<P>
|
||
I've often thought that there needs to be a Linux distribution that
|
||
has an automatic startup as the default. One of the reasons that
|
||
MSDOS (as bad as it was) was popular was because it wasn't burdened
|
||
with "security" items like logging in. Most of us that use Linux at
|
||
home don't need to waist time logging in every day. If we had a
|
||
distribution of Linux that booted up into X we would have a lot more
|
||
users.
|
||
<P>
|
||
My goals are as follows (all done automatically from power up):
|
||
<P>
|
||
1. From power up, automatically login.
|
||
<P>
|
||
2. Bring up X Windows.
|
||
<P>
|
||
3. If I haven't been connected to my ISP (via PPP) in the last 4 hours
|
||
then connect.
|
||
<P>
|
||
3.1 Start up Netscape, get mail from my ISP (via cron), and check it
|
||
every minute.
|
||
<P>
|
||
3.2 If I haven't read USENET news today then fire up newsreader and
|
||
automatically to thru and apply kill files to all articles and leave
|
||
newsreader just showing what's left.
|
||
<P>
|
||
3.3 (I admit, this one is weird) Telnet into my local library and
|
||
check to see if I have overdue books.
|
||
<P>
|
||
For the purposes of this 2 cent tip, I'm going to cover #1 &
|
||
#2. (NOTE: replace every occurrence of "username" with your real login
|
||
name).
|
||
<P>
|
||
1. Add this to the bottom of your /etc/inittab (for Debian), unless
|
||
you have an rc.local file
|
||
<PRE>
|
||
rc:12345:wait:/etc/init.d/rc.local
|
||
</PRE>
|
||
1a (if you don't have an rc.local file) Make an /etc/init.d/rc.local
|
||
file with this in it:
|
||
<PRE>
|
||
#!/bin/bash
|
||
echo "Auto login of user username"
|
||
cd /home/username
|
||
su - username
|
||
</PRE>
|
||
Set permissions of rc.local to:
|
||
<PRE>
|
||
-rwxr-xr-x 1 root root 96 Jun 29 1997 rc.local
|
||
</PRE>
|
||
By doing:
|
||
<PRE>
|
||
chmod 755 rc.local
|
||
</PRE>
|
||
1b (if you have an rc.local file)
|
||
Add this to the bottom of your rc.local
|
||
<PRE>
|
||
echo "Auto login of user username"
|
||
cd /home/username
|
||
su - username
|
||
</PRE>
|
||
2. Add the following to the bottom of your ~/.bash_profile:
|
||
<PRE>
|
||
if [ "`tty`" = "/dev/console" -o "`tty`" = "/dev/tty0" ]
|
||
then
|
||
startx
|
||
fi
|
||
</PRE>
|
||
That's it! This has been tested under Slackware (a long time ago)
|
||
and under Debian, recently. Please give me any feedback.
|
||
<P>
|
||
Thanks, Rick Bronson
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="hall"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
IBM Lan Adapter for Ethernet
|
||
</H3>
|
||
<P>
|
||
Date: Fri, 01 May 1998 00:23:21 +0000<BR>
|
||
From: Brian Hall, <A HREF="mailto:brihall@pcisys.net">
|
||
brihall@pcisys.net</A>
|
||
<P>
|
||
I believe this is the same card I have. I have two on my home LAN, one
|
||
in my Linux box and the other in a Win95 box. In Linux, use the ne2000
|
||
compatible network driver, found under "Other ISA" network cards in the
|
||
kernel configuration. To configure the card itself, you will need to run
|
||
a DOS program. The setup program is contained in an archive called
|
||
"ETILAN.EXE".
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="ballueder"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Easy Access to Removable Media
|
||
</H3>
|
||
<P>
|
||
Date: Fri, 1 May 1998 10:30:52 +0100 (BST)<BR>
|
||
From: Karsten Ballueder, <A HREF="mailto:karsten@phy.hw.ac.uk">
|
||
karsten@phy.hw.ac.uk</A>
|
||
<P>
|
||
Here's a little tip that makes life much easier. I always found it
|
||
annoying to manually mount and unmount floppies, CD-ROMs or my ZIP
|
||
drive, so eventually I decided to use the amd automounter for that.
|
||
<p>
|
||
The configuration is somehow tricky, but once it's set up, it works
|
||
like a charm.
|
||
<p>
|
||
For amd to work, you need to create a mountmap <tt>/etc/amd.direct</tt>=
|
||
. Mine
|
||
looks like this:
|
||
<PRE>
|
||
zip type:=3Dprogram;fs:=3D"/.amd/myhost/zip";mount:=3D"/bin/mount mount=
|
||
-tvfat -o user,rw,conv=3Dbinary,nosuid,uid=3D502,gid=3D100,umask=3D0000=
|
||
,quiet
|
||
/dev/sda4 ${fs} ";unmount:=3D"/bin/umount umount ${fs}"
|
||
<br>
|
||
cdrom type:=3Dprogram;fs:=3D"/.amd/myhost/cdrom";mount:=3D"/bin/mount m=
|
||
ount
|
||
-tiso9660 -o user,ro,conv=3Dbinary,nosuid,uid=3D502,gid=3D100,umask=3D0=
|
||
000
|
||
/dev/cdrom ${fs} ";unmount:=3D"/bin/umount umount ${fs}"
|
||
<br>
|
||
A type:=3Dprogram;fs:=3D"/.amd/myhost/A";mount:=3D"/bin/mount mount -tv=
|
||
fat -o user,rw,conv=3Dbinary,nosuid,uid=3D502,gid=3D100,umask=3D0000,qu=
|
||
iet /dev/fd0 ${fs} ";unmount:=3D"/bin/umount umount ${fs}"
|
||
</PRE>
|
||
Where you will need to replace "myhost" with your machine's
|
||
hostname. Like this it will automount the ZIPdrive, a CD-ROM and the
|
||
first floppy in a set of directories created under <tt>/.amd</tt> .
|
||
<p>
|
||
To start amd, you will usually use something like a script
|
||
<tt>/sbin/init.d/amd</tt>, which should contain a line like:<br>
|
||
<tt>
|
||
/usr/sbin/amd -l syslog -c 30 -w 30 -x all -a /.amd -- /tmpmnt /etc/amd=
|
||
.direct &=20
|
||
</tt>
|
||
<p>
|
||
This will start amd and give it a 30 second timeout for unmounting
|
||
directories. You also need to create a directory called
|
||
<tt>/tmpmnt</tt> where you can access the devices. For easy access, I
|
||
have create symbolic links <tt>/zip</tt>, <tt>/A</tt> and
|
||
<tt>/cdrom</tt> pointing to <tt>/tmpmnt/zip</tt>, <tt>/tmpmnt/A</tt>
|
||
and <tt>/tmpmnt/cdrom</tt>.
|
||
<p>
|
||
Now, when you try to access any of these directories, amd will
|
||
automatically mount the device with the options specified in
|
||
<tt>/etc/amd.direct</tt>. Once you no longer access it, it will get
|
||
unmounted after 30 seconds.
|
||
<p>
|
||
Oh, if it doesn't unmount your device, you can use the<tt>fuser
|
||
/dir</tt> command to check which of your processes uses it.
|
||
<P>
|
||
Karsten Ballueder
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="smith1"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: bpp 16 Question
|
||
</H3>
|
||
<P>
|
||
Date: Sun, 3 May 1998 14:07:55 +0200 (MET DST)<BR>
|
||
From: Roland Smith, <A HREF="mailto:rsmit06@ibm.net">
|
||
rsmit06@ibm.net</A>
|
||
<P>
|
||
To: Denny@ele.kth.se<BR>
|
||
You asked in the Linux Gazette #28:
|
||
<blockquote> <font color="navy">
|
||
Hi, I'm tired of starting my X-session with 'startx -- -bpp 16' to get
|
||
16 biplanes instead of the default 8.
|
||
How do I get xdm to run with 16 bpp? If I use it now,
|
||
it starts X with 8bpp on my Red Hat 5 installation.
|
||
</font></blockquote>
|
||
Assuming you're using the XFree86 server:
|
||
<P>
|
||
Edit your XF86Config file.
|
||
<ul>
|
||
<li>Look for the "Screen" section, then the subsections marked "Display"
|
||
(you can have more then one).
|
||
<li>Make sure the display subsection which has a depth of 16 is listed
|
||
first.
|
||
</ul>
|
||
Hope this helps.
|
||
<P>
|
||
Roland
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="smith2"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: finite elements programs for Linux
|
||
</H3>
|
||
<P>
|
||
Date: Sun, 3 May 1998 14:07:55 +0200 (MET DST)<BR>
|
||
From: Roland Smith, <A HREF="mailto:rsmit06@ibm.net">
|
||
rsmit06@ibm.net</A>
|
||
<P>
|
||
To: berntsen@bkm.dtu.dk<BR>
|
||
In response to your query in the Linux Gazette #28:
|
||
<blockquote> <font color="navy">
|
||
I started talking to the ones buying it and my arguments stopped,
|
||
when they said that one reason for using NT was that they should
|
||
be running finite elements programs on them and that the frontier
|
||
for those programs was now on the Windows platform.
|
||
I don't know anything about that, so I am looking for info; should I
|
||
accept their arguments or is it that he just does not know what
|
||
can be gotten for Linux? Commercial Finite
|
||
Element Method (FEM) programs are also in the searchlight!
|
||
</font></blockquote>
|
||
FEM has traditionally a UNIX domain. Most FE programs run on commercial
|
||
unices. I only know of one free program for Linux: felt.
|
||
You can find it at http://www-cse.ucsd.edu/users/atkinson/FElt/felt.html
|
||
<P>
|
||
Hope this helps.
|
||
<P>
|
||
Roland
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="smith3"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: How to enable swapping
|
||
</H3>
|
||
<P>
|
||
Date: Sun, 3 May 1998 13:51:21 +0200 (MET DST)<BR>
|
||
From: Roland Smith, <A HREF="mailto:rsmit06@ibm.net">
|
||
rsmit06@ibm.net</A>
|
||
<P>
|
||
To: kng@HK.Super.NET<BR>
|
||
In the Linux Gazette you wrote:
|
||
<blockquote> <font color="navy">
|
||
My machine, which is a Pentium Pro with 64MB memory, reports no swap space
|
||
being used. In procinfo, it always report 0K swap space.
|
||
I did a fdisk on /dev/hda and verified that a 64MB partition
|
||
of type Linux swap (83) is actually there.
|
||
So why is the swap never being used ?
|
||
</font></blockquote>
|
||
Swapping needs to be started. This can be done with the `swapon'
|
||
command.
|
||
<P>
|
||
Normally there should be something like `/sbin/swapon -a' in the system
|
||
initialization scripts. On my Slackware system it is in /etc/rc.d/rc.S.
|
||
<P>
|
||
For this to work, you need to define the swap partition in /etc/fstab.
|
||
Something like (on my box):
|
||
<PRE>
|
||
/dev/hda7 swap swap defaults 1 2
|
||
</PRE>
|
||
Hope this helps.
|
||
<P>
|
||
Regards, Roland
|
||
|
||
Re: cd rom
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="smith4"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: Slackware
|
||
</H3>
|
||
<P>
|
||
Date: Sun, 3 May 1998 14:30:59 +0200 (MET DST)<BR>
|
||
From: Roland Smith, <A HREF="mailto:rsmit06@ibm.net">
|
||
rsmit06@ibm.net</A> <BR>
|
||
To: letromb@tin.it
|
||
<P>
|
||
In the Linux Gazette #28 you asked:
|
||
<blockquote> <font color="navy">
|
||
Hello.I have the Linux Slackware 2.0.30 Walnut Creek.I
|
||
installed it on a Pentium 200 MMX with a 24x CD-ROM.
|
||
During the installation I had to write "ramdisk hdd=cdrom" for
|
||
reading the CD-ROM, but after the installation Linux doesn't
|
||
see the CD-ROM. I have an atapi CD-ROM, and when I tried
|
||
to compile my kernel another time, I saw that atapi is the
|
||
default !!! So I don't understand where is the problem . What
|
||
can I do ?
|
||
</font> </blockquote>
|
||
To use your CD-ROM, you must "mount" it, i.e. add it to your
|
||
file-system.
|
||
<P>
|
||
You will have to make sure that the iso9660 filesystem is supported in
|
||
the kernel.
|
||
<P>
|
||
Mounting is most conveniently done by first adding an entry into your
|
||
/etc/fstab file like this:
|
||
<PRE>
|
||
/dev/hdb /mnt/cdrom iso9660 ro,user,noauto,unhide 1 2
|
||
</PRE>
|
||
(Assuming your CD-ROM player is /dev/hdb)
|
||
Create the directory /mnt/cdrom before mounting the CD!
|
||
Put a CD-ROM in the drive and issue the command `mount /mnt/cdrom' to
|
||
mount the CD.
|
||
<P>
|
||
You will have to unmount the CD (`umount /mnt/cdrom') before you can
|
||
open the drive!
|
||
<P>
|
||
Hope this helps.
|
||
<P>
|
||
Roland
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="mcanulty"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
May 2Cent Tips--about:mozilla
|
||
</H3>
|
||
<P>
|
||
Date: Wed, 6 May 1998 10:28:44 -0700 (PDT)<BR>
|
||
From: David Mc Anulty, <A HREF="mailto:davemc@connectnet.com">
|
||
davemc@connectnet.com</A>
|
||
<P>
|
||
The tip of going to about:mozilla is incorrect. You do not have to click
|
||
on Netscape's logo to get the new animation. The act of visiting
|
||
about:mozilla does this.
|
||
<P>
|
||
It lasts until Netscape is restarted. So if you like him, set
|
||
about:mozilla as your home page.
|
||
<P>
|
||
Dave
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="niemann"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: Rebooting without logging in as root, 2c tips
|
||
</H3>
|
||
<P>
|
||
Date: Wed, 06 May 1998 09:25:13 +0200<BR>
|
||
From: Hartmut Niemann, <A
|
||
HREF="mailto:niemann@cip.e-technik.uni-erlangen.de">
|
||
niemann@cip.e-technik.uni-erlangen.de</A>
|
||
<blockquote> <font color="navy">
|
||
An alternative I used once on a system that did *not* have
|
||
<ctrl-alt-del> enabled was to provide a special login that
|
||
*just* did a shutdown. There is such a line in my /etc/passwd
|
||
now that I didn't put there, so I guess it's from Red Hat
|
||
two years ago.
|
||
</font></blockquote>
|
||
I had this shutdown login too. Normally it needs rood rights,
|
||
i.e. UID 0. But then I found out that
|
||
su shutdown
|
||
does not execute the login shell, i.e. the shutdown script.
|
||
So everybody can become 'shutdown', which is basically 'root'
|
||
with a different startup shell. Bad if this 'shell' doesn't get
|
||
executed ...
|
||
<P>
|
||
For some time I have had 'shutdown' just SUID root, and now I'm
|
||
back to Ctrl-Alt-Del performing a shutdown -h. (And then press
|
||
Ctrl-Alt-Del again for a reboot.)
|
||
<P>
|
||
Hartmut.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="omegaman"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: Running an ATAPI ZIP drive
|
||
</H3>
|
||
<P>
|
||
Date: 05 May 1998 20:26:26 -0500<BR>
|
||
From: Omegaman, <A HREF="mailto:omegam@cmq.com">omegam@cmq.com</A>
|
||
<P>
|
||
Steve Beach gives some interesting remarks and good advice for setting
|
||
up an ATAPI ZIP drive. In it he says: First, the kernel:
|
||
<blockquote> <font="navy">
|
||
Do _not_ use the "IDE FLOPPY" option (officially the name is
|
||
CONFIG_BLK_DEV_IDEFLOPPY ). This will work perfectly for reading and
|
||
writing, but it will not work for ejecting.
|
||
</font></blockquote>
|
||
I recently bought a system with one of these units PRE-installed. I
|
||
purchased a copy of Debian 1.3.1 on CD and was surprised to find "IDE
|
||
Floppy" support compiled into the stock kernel. So, like Steve, I
|
||
added necessary entries to my /etc/fstab to mount my ZIPs and away I
|
||
went.
|
||
<P>
|
||
However, I do not have the problem he's had with ejecting my ZIP
|
||
disks. On the front of my drive is a status light that also functions
|
||
as the eject button. It works fine. I surmise that Steve's problem
|
||
is that he has no such button and requires a software-only eject
|
||
method.
|
||
<P>
|
||
One note of warning: I once ejected a standard floppy by pressing the
|
||
drive's eject button when it was mounted causing a system panic and
|
||
forced reboot. I don't know if the eject button on the ZIP is
|
||
disabled in the same way as the eject button on a CDROM when it is
|
||
mounted. I have no intention of finding out.
|
||
<P>
|
||
Omegaman
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="rodrigo"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: enabling swap space
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 05 May 1998 04:44:22 -0300<BR>
|
||
From: Diego Rodrigo, <A HREF="mailto:d.rodrigo@iname.com">
|
||
d.rodrigo@iname.com</A>
|
||
<P>
|
||
On issue # 28, Kevin Ng wrote :
|
||
<blockquote> <font="navy">
|
||
My machine, which is a Pentium Pro with 64MB memory, reports no swap space being used.
|
||
n procinfo, it always report 0K swap space.
|
||
I did a fdisk on /dev/hda and verified that a 64MB partition of type Linux swap (83) is
|
||
actually there.
|
||
So why is the swap never being used ?
|
||
</font></blockquote>
|
||
Tagging a partition with type 83 (Linux swap) is not enough. You kave to
|
||
prepare it for swap with mkswap (see manual page) . Type:
|
||
<PRE>
|
||
mkswap /dev/hdxx
|
||
</PRE>
|
||
where hdxx is your swap partition.
|
||
After that, you have to append a line in /etc/fstab saying this:
|
||
<PRE>
|
||
/dev/hdxx none swap
|
||
</PRE>
|
||
where /dev/hdxx is your swap partition, none is the mount point, and
|
||
swap is the type of file system.
|
||
<P>
|
||
With these changes, the next time you reboot, your swap space will be
|
||
added to your system.
|
||
The command that actually adds your swap space to the system is swapon
|
||
(see man page, section 8), which is called from an init script at boot
|
||
time.
|
||
OK, I agree, Linux shouldn't be rebooted, (only when recompiling the
|
||
kernel), so you can just type:
|
||
<PRE>
|
||
swapon -a
|
||
</PRE>
|
||
and you'll have your swap space.
|
||
<P>
|
||
Diego Rodrigo - ARGENTINA
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="hammel"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: problems using menus in X
|
||
</H3>
|
||
<P>
|
||
Date: Thu, 7 May 1998 11:45:01 -0500 (CDT)
|
||
From: Michael Hammel, <A HREF="mailto:mjhammel@graphics-muse.org">
|
||
mjhammel@graphics-muse.org</A>
|
||
<P>
|
||
To: eijck@iri.tudelft.nl<BR>
|
||
<blockquote> <font="navy">
|
||
I'm having a problem with my menus in X. I can access all menus (by mouse),
|
||
but the items of those menus which are WITHIN a "X-box" are not selectable,
|
||
somehow.
|
||
The menus I'm talking about are menus like the 'vt fonts', 'main options'
|
||
and 'vt options' in the Xterm. Or the 'file' and 'page' menu of
|
||
Ghostscript.
|
||
If anyone has a suggestion on why I can select the menu but not menu item,
|
||
please send me a mail. I'm using Debian 1.3.
|
||
</font></blockquote>
|
||
Check your NumLock key. It should probably be turned off for applications
|
||
written in strict Xlib or Athena widgets, which appears to be the case with
|
||
the applications you mention. Its not a strict rule, but many people had
|
||
problems with my XPostitPlus program, caused by the use of the number keypad
|
||
with applications like XCalc.
|
||
<P>
|
||
Michael J. Hammel, The Graphics Muse
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="tennent"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Music Typesetters
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 12:13:50 -0400 (EDT)<BR>
|
||
From: Robert Tennent, <A HREF="mailto:rdt@qucis.queensu.ca">
|
||
rdt@qucis.queensu.ca</A>
|
||
<P>
|
||
Although I appreciated Bob van der Poel's review of MUP in LG28,
|
||
there are some good free music notation systems that weren't even
|
||
mentioned. First, a very good site to check out is the Lilypond
|
||
home page at
|
||
<P>
|
||
http://www.cs.ruu.nl/people/hanwen/lilypond/out-www/index.html
|
||
<P>
|
||
This describes Lilypond (which is still under development) but
|
||
also has links to many other music packages.
|
||
<P>
|
||
One of these, musixtex, is IMHO the best free system
|
||
available. It certainly isn't beta, but it is being extended
|
||
and improved constantly. The input language is plain TeX,
|
||
but there are some good pre-processors available (PMX, MPP, M-Tx, SceX,
|
||
ABC2MTeX). The output quality is professional. Several arrangements
|
||
I've set using musixtex have been published directly from my postscript
|
||
files. Check out
|
||
<P>
|
||
http://www.gmd.de/Misc/Music
|
||
<P>
|
||
for links, downloads, documentation, examples, etc.
|
||
<P>
|
||
Bob Tennent
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="dossey"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
BASH hostname completion: comment on tip in May '98 issue
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 08:58:18 -0500<BR>
|
||
From: Justin Dossey, <A HREF="mailto:dossey@ou.edu">
|
||
dossey@ou.edu</A>
|
||
<P>
|
||
The script John Taylor sent had a nice idea to it, but I must admit I didn't
|
||
read it; Bash completes host names by a builtin function.
|
||
<P>
|
||
Just as you would use <tab> to complete a filename, you can use ESC, @ to
|
||
complete a hostname (if it is in /etc/hosts) and CTRL-X, @ to list all possible
|
||
hostname completions based on /etc/hosts.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="mcnamara"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: xdm and depth
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 11:32:26 +0100 (IST) <BR>
|
||
From: Caolan McNamara, <A HREF="mailto:Caolan.McNamara@ul.ie">
|
||
Caolan.McNamara@ul.ie</A>
|
||
<blockquote> <font="navy">
|
||
From: Denny <20>berg, Denny@ele.kth.se <BR>
|
||
Hi, I'm tired of starting my X-session with 'startx -- -bpp 16' to get 16
|
||
biplanes instead of the default 8. How do I get
|
||
xdm to run with 16 bpp? If I use it now, it starts X with 8bpp on my Red Hat 5
|
||
installation.
|
||
</font></blockquote>
|
||
under redhat in the file
|
||
/etc/X11/xdm/Xservers
|
||
<P>
|
||
there's a line
|
||
<PRE>
|
||
:0 local /usr/X11R6/bin/X
|
||
</PRE>
|
||
change this to
|
||
<PRE>
|
||
:0 local /usr/X11R6/bin/X -bpp 16D
|
||
</PRE>
|
||
and ta-da, thats it.
|
||
<P>
|
||
Caolan McNamara
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="digulla"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: Shutdown and Root
|
||
</H3>
|
||
<P>
|
||
Date: Mon, 11 May 1998 13:42:44 +0200<BR>
|
||
From: Aaron Digulla, <A HREF="mailto:digulla@wi-pc44.fh-konstanz.de">
|
||
digulla@wi-pc44.fh-konstanz.de</A>
|
||
<P>
|
||
Another note to the 2cents Tip "Re: Shutdown and Root":
|
||
<P>
|
||
I have a shutdown user, too, and this is what he looks like:
|
||
<P>
|
||
In /etc/passwd:
|
||
<PRE>
|
||
shutdown:x:6:0:shutdown:/home/shutdown:/bin/sh
|
||
</PRE>
|
||
You'll probably have to adjust the user-id (here: 6).
|
||
<P>
|
||
Then you create a home-dir which just contains this script as
|
||
.profile:
|
||
<PRE>
|
||
------------------------ .profile ---------------------------------------
|
||
#!/bin/sh
|
||
trap "" SIGKILL SIGINT SIGQUIT
|
||
|
||
PATH=/bin
|
||
|
||
# List all users which are still logged on
|
||
/usr/bin/finger
|
||
|
||
echo
|
||
echo "Really shut down (y/N) ?"
|
||
|
||
read answer
|
||
|
||
# Every answer except "y" is no
|
||
if [ "x$answer" != xy ]; then
|
||
answer=n
|
||
fi
|
||
|
||
if [ $answer = y ]; then
|
||
echo 'The system will now shut down. You can turn the power'
|
||
echo 'off when the message "System halted" appears'
|
||
/bin/sleep 5
|
||
./halt
|
||
else
|
||
echo 'Abgebrochen...'
|
||
/bin/sleep 1
|
||
fi
|
||
------------------------ .profile ---------------------------------------
|
||
</PRE>
|
||
Now just copy /sbin/halt to /home/shutdown/ and make it executable
|
||
for this user (chown shutdown halt and chmod 700 halt).
|
||
<P>
|
||
Aaron "Optimizer" Digulla
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="davis"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Printing with Linux
|
||
</H3>
|
||
<P>
|
||
Date: Sat, 09 May 1998 18:50:06 +1000<BR>
|
||
From: Mitch Davis, <A HREF="mailto:mjd@alphalink.com.au">
|
||
mjd@alphalink.com.au</A>
|
||
To: AFAIZ@cstp.umkc.edu
|
||
<blockquote> <font="navy">
|
||
I've just bought a HP DeskJet 722C printer, but I couldn't get it
|
||
to work. I asked around and everyone has answered that Linux
|
||
does not support it - is it a Windows-only printer?
|
||
If so, is it possible to write a driver for it? or does anyone know
|
||
of where I can get my hands on the driver (if it's already been
|
||
written, of course).
|
||
</font></blockquote>
|
||
In an effort to reduce the production cost of their low-end printers,
|
||
HP has removed as much of the electronics from the printer as possible,
|
||
and put the burden of turning commands into dots on the printer driver
|
||
in the computer. Somewhat euphuistically, this is called the Printing
|
||
Performance Architecture, a kind of less-is-more concept which I'm
|
||
sure is big in the HP marketing Dept.
|
||
<P>
|
||
All is not lost however. There's a guy who reverse-engineered the
|
||
protocol, and has written a driver. You can find his page here:
|
||
<P>
|
||
http://www.rpi.edu/~normat/technical/ppa/
|
||
<P>
|
||
(I have not tried it, nor have I corresponded with him).
|
||
<P>
|
||
I hope this helps you.
|
||
<P>
|
||
Mitch.<BR>
|
||
(I don't work for HP. Well Ok, I do, but further away from the
|
||
bit that makes printers than you'd ever believe. I speak as an
|
||
outsider)
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="gilb1"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
RE: finite elements programs for Linux
|
||
</H3>
|
||
<P>
|
||
Date: Fri, 22 May 1998 09:39:29 -0700<BR>
|
||
From: "James Gilb (p27451)", <A HREF="mailto:p27451@email.sps.mot.com">
|
||
p27451@email.sps.mot.com</A> <BR>
|
||
To: berntsen@bkm.dtu.dk
|
||
<blockquote> <font="navy">
|
||
At the department where I am sitting they are planning to buy a PC-bar, and they intend to put NT on the machines.
|
||
I would benefit from them putting Linux on them, since I could then use
|
||
them for simulations overnight. ...
|
||
I don't know anything about that, so I am looking for info; should I accept their arguments or is it
|
||
that he just does not know what can be gotten for Linux? Commercial Finite Element Method (FEM) programs are
|
||
also in the searchlight!
|
||
</font></blockquote>
|
||
There a some really neat FEM codes out there that are free or
|
||
semi-free. Check out the Scientific Applications for Linux (SAL) page,
|
||
sponsored by Kachina Tech at
|
||
http:// SAL.KachinaTech.COM/
|
||
<P>
|
||
Next, go to the INTERNET FINITE ELEMENT RESOURCES page at:
|
||
<P>
|
||
http://www.engr.usask.ca/~macphed/finite/fe_resources/
|
||
<P>
|
||
and check out the section on Public Domain FE Programs (I think FElt is
|
||
way cool). Also, there may be some commercial vendors that support
|
||
Linux as well, you should probably ask your vendors. I found Northwest
|
||
Numerics and Modeling on the above page which sells a product called
|
||
Zebulon on Linux. Also, some related software is also available on
|
||
Linux, e.g. PV-WAVE (graphics), MATLAB, Mathematica, Maple.
|
||
<P>
|
||
Finally, do a search of Linux and FEM software on your favorite search
|
||
engine. (linux + FEM + software gave me 1085 hits on www.hotbot.com).
|
||
<P>
|
||
As a postscript, the future of FEM doesn't depend on the OS it is used
|
||
on. The real work is done in numerical code that never touches the OS,
|
||
indeed an OS call in the middle of the deepest loops would cause a
|
||
severe slowdown of the program. Some of the interfaces that you use for
|
||
input, pre-processing and post-processing may be moving to NT, but there
|
||
are still substantial packages available on the big iron. In any event,
|
||
the current IA32 line from Intel is not a leader in double-precision
|
||
floating point work, the current crop of workstations will blow it away
|
||
in most floating point benchmarks. This is improving with the emphasis
|
||
on multi-media, but the new chips will be very expensive within the near
|
||
term (USD $2000-$4000 until at least 2000).
|
||
<P>
|
||
If you have any more questions, please email me.
|
||
<P>
|
||
James Gilb, p27451@email.mot.com
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="gilb2"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
RE: How to enable swapping
|
||
</H3>
|
||
<P>
|
||
Date: Thu, 21 May 1998 15:49:17 -0700<BR>
|
||
From: "James Gilb (p27451)", <A HREF="mailto:p27451@email.sps.mot.com">
|
||
p27451@email.sps.mot.com</A> <BR>
|
||
To: kng@HK.Super.NET, gazette@ssc.com
|
||
<blockquote> <font="navy">
|
||
My machine, which is a Pentium Pro with 64MB memory, reports no swap
|
||
space being
|
||
used. In procinfo, it always
|
||
report 0K swap space.
|
||
I did a fdisk on /dev/hda and verified that a 64MB partition of type
|
||
Linux swap (83)
|
||
is actually there.
|
||
So why is the swap never being used ?
|
||
</font></blockquote>
|
||
First, make sure the partition has been turned into a swap partition by
|
||
doing an mkswap on it. Then just do swapon /dev/hda? where ? is the
|
||
partition number of the swap partition. Now, if you put an entry for the
|
||
swap partition in /etc/fstab and run swapon -a in your boot scripts
|
||
(pretty early on), then swap will be automagically enabled whenever you
|
||
boot.
|
||
<P>
|
||
James Gilb
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="jacobsen"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Cuckoo Clock
|
||
</H3>
|
||
<P>
|
||
Date: Sun, 24 May 1998 23:48:02 +0200<BR>
|
||
From: Jjacobsen, <A HREF="mailto:jacobsen@biosys.net">
|
||
jacobsen@biosys.net</A>
|
||
<P>
|
||
My wife's grandpa has a pretty switzer-cuckoo-clock (kuckucksuhr..).
|
||
Well, I love to hear the little bird singing every hour.
|
||
That's why I wrote this little script...
|
||
<PRE>
|
||
#!/bin/sh
|
||
#cockoo.sh
|
||
time=`date +%I`
|
||
count=0
|
||
until [ "$count" -eq "$time" ]
|
||
do
|
||
play /usr/share/sounds/au/cuckoo.au
|
||
count=$[$count+1]
|
||
done
|
||
</PRE>
|
||
Then, I edited the crontab file using <tt>crontab -e</tt>:
|
||
<PRE>
|
||
00 * * * * /bin/cuckoo.sh
|
||
</PRE>
|
||
and well, it's really funny... Using my script and cron, your Linux box
|
||
will become a great switzer-kuckucks-uhr ;)
|
||
<P>
|
||
Joerg Jacobsen, Schweinfurt, Germany
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in <I>Linux Gazette</I> Issue 29, June 1998</center>
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A> <A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A> <A HREF="./lg_mail29.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<A HREF="./lg_bytes29.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
|
||
<P> <hr> <P>
|
||
<h5>This page maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
||
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
|
||
<P>
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
|
||
<HR>
|
||
<center>
|
||
<table cellpadding=7><tr><td>
|
||
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
|
||
</td><td>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_bytes29.html#general">News in General</a>
|
||
<li><a HREF="./lg_bytes29.html#software">Software Announcements</a>
|
||
</ul>
|
||
</td></tr></table>
|
||
</center>
|
||
|
||
<a name="general"></a>
|
||
<p><hr><p>
|
||
<!-- =================================================================== -->
|
||
<center><H3><font color="green">News in General</font></H3></center>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<center><IMG ALT=" " SRC="./gx/cover51.jpg"></center>
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
June <I>Linux Journal</I>
|
||
</H3>
|
||
<P>
|
||
The July issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
|
||
Journal</I></A> will be hitting the newsstands June 5.
|
||
The focus of this issue is Science and Engineering with
|
||
articles on using Linux at CERN, the NIST Neutron Lab and the British
|
||
Antarctic Society. Also, an introduction to Samba and a look at two
|
||
programming languages: Yorick and ICON. Check out the
|
||
<A HREF="http://www.linuxjournal.com/issue51/index.html">Table of Contents</A>.
|
||
To subscribe to <I>Linux Journal</I>, click <A
|
||
HREF="http://www.linuxjournal.com/ljsubsorder.html">here</A>.
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Corel & Open Source
|
||
</H3>
|
||
<P>
|
||
Corel and Corel Computer Corporation have announced their official
|
||
position on Linux and Open Source Software. At the Ottawa
|
||
Carleton Linux Users Group meeting, Corel announced that they will port
|
||
all of their commercial applications to Linux, including a $99 version
|
||
of Corel Word Perfect Suite 8. Corel Computer will open the source code
|
||
for the development of their NetWinder NC.
|
||
<P>
|
||
For more information: <BR>
|
||
<A HREF="http://www.corelcomputer.com/">http://www.corelcomputer.com/</A>
|
||
<BR>
|
||
<A HREF="http://www.corel.com/">http://www.corel.com/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linus Torvalds & Richard Stallman at the USENIX Conference, June 1998
|
||
</H3>
|
||
<P>
|
||
Date: Thu, 7 May 1998 10:53:17 -0700 (PDT)<BR>
|
||
Linus Torvalds, developer of Linux, and Richard Stallman, founder of the
|
||
GNU project, will participate in the USENIX Annual Technical Conference,
|
||
June 15-19, 1998, at the Marriott Hotel in New Orleans.
|
||
<P>
|
||
This year the conference includes a special track showcasing the latest
|
||
developments and interesting applications in FreeBSD, GNU, Linux, NetBSD,
|
||
OpenBSD, Samba, and more. FREENIX offers 28 talks, plus evening BoF
|
||
sessions. Share ideas and actual code with developers and avid users of
|
||
freely redistributable software.
|
||
<P>
|
||
Full program and on-line registration:<BR>
|
||
<A
|
||
HREF="http://www.usenix.org/events/no98/">http://www.usenix.org/events/no98/</A>
|
||
<P>
|
||
For more information:
|
||
Jackson Dodd, <A HREF="mailto:jackson@usenix.ORG">jackson@usenix.ORG</A><BR>
|
||
USENIX, the Advanced Computing Systems Association
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
O'Reilly's Perl Conference 2.0
|
||
</H3>
|
||
<P>
|
||
Date: Fri, 22 May 1998 09:47:48 -0700 (PDT)<BR>
|
||
O'Reilly & Associates is presenting the Perl Conference
|
||
2.0 from August 17-20, 1998 at The Fairmont Hotel in San Jose,
|
||
California. Perl Conference 2.0 features two days of intensive tutorial
|
||
sessions followed by a two-day conference led by key Perl developers.
|
||
Full program and registration information is at:
|
||
<P>
|
||
<A HREF="http://conference.perl.com/">http://conference.perl.com</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Ellen Elias, <A HREF="mailto:elias@ora.com">elias@ora.com</A> <BR>
|
||
O'Reilly & Associates
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux Penguins Stickers
|
||
</H3>
|
||
<P>
|
||
Date: Sat, 23 May 1998 01:06:25 +0300 (EEST)<BR>
|
||
Linux Penguin Sticker Movement announces printed Linux Penguin Stickers
|
||
<P>
|
||
In cooperation with the Linux Penguin Sticker movement
|
||
<A HREF="http://www.jyu.fi/~juhtolv/linux-sticker/">
|
||
http://www.jyu.fi/~juhtolv/linux-sticker/</A>
|
||
Linux Mall has agreed to make available professionally designed and
|
||
printed Penguin Stickers for all who do not wish to print their own.
|
||
<P>
|
||
For more information:<BR>
|
||
<A
|
||
HREF="http://www.LinuxMall.com/PP.html">http://www.LinuxMall.com/PP.html</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Announcement and Call for Papers, 7th International Python Conference
|
||
</H3>
|
||
<P>
|
||
Date: Thu, 28 May 1998 18:29:07 -0400 (EDT)<BR>
|
||
<P>
|
||
7th International Python Conference<BR>
|
||
South Shore Harbour Resort<BR>
|
||
Houston, Texas <BR>
|
||
November 10-13, 1998<BR>
|
||
<P>
|
||
For more information, visit the conference Web page at:
|
||
<P>
|
||
<A HREF="http://www.foretec.com/python/workshops/1998-11/">
|
||
http://www.foretec.com/python/workshops/1998-11/</A>
|
||
<PRE>
|
||
IMPORTANT DATES:
|
||
June 29: email intent to submit paper
|
||
July 27: deadline for papers and tutorials
|
||
Aug. 31: notification of acceptance for papers
|
||
Sep. 28: deadline for final versions of full papers
|
||
</PRE>
|
||
<P>
|
||
For more information about submitting a tutorial:
|
||
<A HREF="http://www.foretec.com/python/workshops/1998-11/cft.html">
|
||
http://www.foretec.com/python/workshops/1998-11/cft.html</A>
|
||
<P>
|
||
Jeremy Hylton, CNRI, <A
|
||
HREF="mailto:jeremy@cnri.reston.va.us">jeremy@cnri.reston.va.us</A><BR>
|
||
Program Chair, 7th International Python Conference
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux Links
|
||
</H3>
|
||
<P>
|
||
Project MUSCLE:
|
||
<A HREF="http://www.linuxnet.com/smartcard/index.html">
|
||
http://www.linuxnet.com/smartcard/index.html</A>
|
||
<P>
|
||
"Introduction to Linux" class:
|
||
<A HREF="http://www.learningtree.com/us/courses/330.htm#top">
|
||
http://www.learningtree.com/us/courses/330.htm#top</A>
|
||
<P>
|
||
Linux Applications: <A HREF="http://www.linuxapps.com/">
|
||
http://www.linuxapps.com/</A>
|
||
<P>
|
||
Linux Advocacy: <A HREF="http://www.netnomics.com/linux/">
|
||
http://www.netnomics.com/linux/</A>
|
||
<P>
|
||
New Linux Help Page: <A HREF="http://www.admin.burned.org/">
|
||
http://www.admin.burned.org/</A>
|
||
<P>
|
||
Linux Links: <A HREF="http://www.linuxlinks.com/">
|
||
http://www.linuxlinks.com/</A>
|
||
<P>
|
||
The Linux PenguinPlay Project:
|
||
<A
|
||
HREF="http://sunsite.auc.dk/penguinplay/">http://sunsite.auc.dk/penguinplay/</A>
|
||
<P>
|
||
ECLiPt Project:
|
||
<A HREF="http://eclipt.uni-klu.ac.at/">http://eclipt.uni-klu.ac.at/</A>
|
||
<P>
|
||
Linux Discussion Board:
|
||
<A HREF="http://paradigm.uor.edu/linux/wishlist/bulletinboard.html">
|
||
http://paradigm.uor.edu/linux/wishlist/bulletinboard.html</A>
|
||
<P>
|
||
Free Linux Support:
|
||
<A HREF="http://support.marko.net/">http://support.marko.net/</A>
|
||
<P>
|
||
Current ports of Linux OS:
|
||
<A HREF="http://www.ctv.es/USERS/xose/linux/linux_ports.html">
|
||
http://www.ctv.es/USERS/xose/linux/linux_ports.html</A>
|
||
<P>
|
||
Linux Books:
|
||
<A HREF="http://www.technologybooks.com/linux.htm">
|
||
http://www.technologybooks.com/linux.htm</A>
|
||
<P>
|
||
Linux on-line bookstore:
|
||
<A HREF="http://www.dragonfire.net/~garym/linux.html">
|
||
http://www.dragonfire.net/~garym/linux.html</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Project Independence: Linux for the Masses
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 08:16:43 GMT
|
||
<P>
|
||
A system accessible only to a minority will remain a minority OS.
|
||
Project Independence believes that this is not an acceptable fate for Linux.
|
||
Project Independence aims to make Linux accessible to people with
|
||
little computing experience.
|
||
<P>
|
||
A Call For Action:
|
||
<PRE>
|
||
* If you want to make Linux usable
|
||
* If you favour a pragmatic approach
|
||
* If you believe in the bazaar model
|
||
* If you are unhappy when you are unable to recommend Linux to
|
||
friends and relatives,
|
||
* If you want to act upon it
|
||
</PRE>
|
||
Go straight to:
|
||
<A
|
||
HREF="http://independence.dunadan.com/">http://independence.dunadan.com/</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Jean Francois Martinez, <A HREF="mailto:jfm2@club-internet.fr">
|
||
jfm2@club-internet.fr</A>
|
||
|
||
Linux Application Development Book
|
||
Date: Tue, 12 May 1998 08:27:42 GMT
|
||
<P>
|
||
New book available from <A HREF="http://linuxcentral.com">Linux Central</A>:
|
||
<I>Linux Application Development</I> By Michael K. Johnson and Erik W.
|
||
Troan from Addison Wesley Publishing.
|
||
<P>
|
||
Linux Application Development helps C programmers write applications
|
||
that run on Linux.
|
||
<P>
|
||
For more information:<BR>
|
||
<A HREF="mailto:sales@linuxcentral.com">sales@linuxcentral.com</A>
|
||
|
||
|
||
<a name="software"></a>
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
<center><H3><font color="green">Software Announcements</font></H3></center>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Stalker Software Announces CommuniGate Pro Server 2.0 Beta
|
||
</H3>
|
||
<P>
|
||
Date: May 15th, 1998<BR>
|
||
CommuniGate Pro 2.0 beta is the platform-independent Internet messaging server.
|
||
The new generation of the CommuniGate integrated messaging system
|
||
unifies the performance of multi-threaded operating systems, the
|
||
standards-compliance of the Internet applications, and
|
||
flexibility of the modular CommuniGate System, initially designed for MacOS.
|
||
<P>
|
||
The new version of the CommuniGate Pro is based on the Stalker Foundation
|
||
framework and can run under all major operating systems. The first released
|
||
versions can run on the Linux operating system among others.
|
||
<P>
|
||
The CommuniGate Pro server can be configured, controlled, and monitored from
|
||
any computer connected to the Internet using any Web browser application.
|
||
The administrators can monitor the Server status, create, update
|
||
and modify user accounts, delete and redirect messages in the queues,
|
||
update the communication modules settings, and configure the full-featured
|
||
CommuniGate Router.
|
||
<P>
|
||
SMTP component of the CommuniGate Pro server incorporates all the anti-
|
||
spamming features implemented in the other Stalker mail servers, including
|
||
centralized DNS-based blacklisting (RBL).
|
||
<P>
|
||
The CommuniGate Pro server is scheduled for the commercial release in
|
||
July'98.
|
||
The beta versions of the CommuniGate Pro Server are available now, free of
|
||
charge.
|
||
They can be downloaded either from the Stalker sites:
|
||
<P>
|
||
<A HREF="http://www.stalker.com/CommuniGatePro/">
|
||
http://www.stalker.com/CommuniGatePro/</A> <BR>
|
||
<A HREF="ftp://www.stalker.com//pub/CommuniGatePro/">
|
||
ftp://www.stalker.com//pub/CommuniGatePro/</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Ali Liptrot, <A HREF="mailto:ali@stalker.com">ali@stalker.com</A>,
|
||
<A HREF="http://www.stalker.com/">http://www.stalker.com/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
LPEvol, A Java Application
|
||
</H3>
|
||
<P>
|
||
Date: Wed, 20 May 1998 14:25:25 +0200
|
||
This is a first (beta) release of LPEvol, a Java application which allows
|
||
you to
|
||
interactiveley breed LSystems objects and view the results graphically.
|
||
LSystems are (recursive) mathematical models that can be used to describe
|
||
growth patters modelling the shapes we see around us every day, like trees,
|
||
flowers and many others. LPEvol is an application which uses LParser and
|
||
PovRay to generate and draw these LSystems. You as the user then have the
|
||
choice to select the LSystems you like and then breed them (doing a
|
||
crossover,
|
||
using theGenetic Algortihm) to produce a next generation (the children )
|
||
which
|
||
will have been derived from the formulas ( genes ) describing the parents.
|
||
<P>
|
||
LPEvol requires:
|
||
<PRE>
|
||
- JDK 1.1.x
|
||
- lparser (default works; a modified lparser.c is shipped with LPEvol)
|
||
- PovRay 3
|
||
- cjpeg
|
||
- see the README file for other (hardware/memory) requirements.
|
||
</PRE>
|
||
LPEvol 0.50 is available from:<BR>
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/science/biology/">
|
||
ftp://sunsite.unc.edu/pub/Linux/science/biology/</A>
|
||
<A HREF="http://www.peoplesoft.com/peoplepages/g/robert_gasch/src/src.htm">
|
||
http://www.peoplesoft.com/peoplepages/g/robert_gasch/src/src.htm</A>
|
||
For more information: <BR>
|
||
Robert Gasch, <A
|
||
HREF="mailto:Robert_Gasch@peoplesoft.com">Robert_Gasch@peoplesoft.com</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
RED HAT LINUX 5.1
|
||
</H3>
|
||
<P>
|
||
Date: May 26, 1998 <BR>
|
||
Red Hat Software, Inc.
|
||
announced the June 1 release of Red Hat Linux 5.1, a powerful update
|
||
that includes enhanced installation features, as well as system
|
||
configuring, web caching, window management features and an added value
|
||
CD of applications for Linux.
|
||
<P>
|
||
For more information:<BR>
|
||
<A HREF="http://www.redhat.com/">http://www.redhat.com/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Webmin version 0.51 - WWW-based configuration software
|
||
</H3>
|
||
<P>
|
||
Date: Mon, 4 May 1998 07:50:19 GMT<BR>
|
||
Webmin version 0.51 is now available for download from
|
||
<P>
|
||
<A HREF="http://www.webmin.com/webmin/">http://www.webmin.com/webmin/</A>
|
||
<P>
|
||
This version allows the simple, browser-based configuration of
|
||
Unix services such as
|
||
<PRE>
|
||
- Apache (version 1.1, 1.2 and 1.3)
|
||
- Samba
|
||
- Crontab
|
||
- NFS exports
|
||
- BIND
|
||
- Inetd
|
||
- SYSV init scripts
|
||
- Local/remote mounts and /etc/fstab
|
||
- Users and groups
|
||
- Disk partitions
|
||
- Running processes
|
||
- Disk quotas
|
||
- Software packages
|
||
- PPP accounts
|
||
</PRE>
|
||
Webmin runs on Solaris 2.5 & 2.6, Redhat Linux 4 & 5, Slackware
|
||
Linux 3, Debian 1.3 and SUSE 5.1.
|
||
<P>
|
||
For more information: <BR>
|
||
Jamie Cameron, <A HREF="mailto:jcameron@webmin.com">jcameron@webmin.com</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
banal 0.05 (bookkeeping software) released
|
||
</H3>
|
||
<P>
|
||
Date: Thu, 7 May 1998 12:50:51 GMT<BR>
|
||
TITLE INFORMATION: BANAL 0.05 - or BANAL's Absolutely Not A Ledger
|
||
AUTHOR INFORMATION: Matthew Rice - Matthew.Rice@ftlsol.com
|
||
AFFILIATION INFORMATION: FTL Solutions Inc.
|
||
DATE INFORMATION: May 1998
|
||
<P>
|
||
BANAL is a bookkeeping system that allows you to track invoices,
|
||
clients, projects, TODOs, bank accounts and expenses. BANAL is a
|
||
client/server application so you can keep one set of books one your
|
||
system while allowing everyone access.
|
||
<P>
|
||
If you want to obtain BANAL and try it out, ftp to:
|
||
ftp://sunsite.unc.edu/pub/Linux/apps/financial/accounting.
|
||
<P>
|
||
and look for a file banal-X.YY.tar.gz, with
|
||
X.YY being a version number (0.00 is of course the first).
|
||
Unpack it in a "sources" directory and start reading the document
|
||
in the "doc" subdirectory.
|
||
<P>
|
||
FTL Solutions Inc. holds the copyright (I am doing it under
|
||
their time), however, it is very unrestricted (read: do what you
|
||
want but don't think of suing them). There is a more detailed
|
||
COPYRIGHT file included with the distribution.
|
||
<P>
|
||
For more information: <BR>
|
||
Matthew Rice <A HREF="mailto:Matthew.Rice@ftlsol.com">Matthew.Rice@ftlsol.com</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
satlas-0.95 (solar atlas) released
|
||
</H3>
|
||
<P>
|
||
Date: Mon, 4 May 1998 07:17:18 GMT<BR>
|
||
I am announcing a first public release of satlas!
|
||
<P>
|
||
Satlas is an electronic atlas of the solar sprectrum and targeted
|
||
primaraly for astronomers who do a lot of spectral analysis work.
|
||
It is based on Gtk+ and MySQL. MySQL is used to store, manage and
|
||
provide a quick access to the data, while Gtk+ is provides GUI.
|
||
<P>
|
||
http://www.physics.unc.edu/~serge/satlas/
|
||
<P>
|
||
Satlas is distributed under GNU Public License.
|
||
<P>
|
||
For more information: <BR>
|
||
Sergei Naumov, <A HREF="mailto:serge@astro.unc.edu">serge@astro.unc.edu</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
ECLiPt Mirror 2.0b1 (former SimpleMirror)
|
||
</H3>
|
||
<P>
|
||
Date: Mon, 4 May 1998 07:34:37 GMT<BR>
|
||
I've just released a new version of ECLiPt-Mirror (it's original name
|
||
has been SimpleMirror). The new release includes
|
||
<PRE>
|
||
- - HTML-Logs, including the possibilty to directly download from this
|
||
page
|
||
- - automatic creating of index-files as an overview over all mirrors
|
||
- - download just the most recent version of some files (e.g. the linux
|
||
kernel)
|
||
- - bug fixes :-)
|
||
- - new bugs :-(
|
||
</PRE>
|
||
Have a look at http://eclipt.uni-klu.ac.at (and then the mirror section)
|
||
for a example usage. You can download it from the same page (under the
|
||
projects section).
|
||
<P>
|
||
For more information: <BR>
|
||
Martin Preishuber, <A HREF="mailto:Martin.Preishuber@stuco.uni-klu.ac.at">
|
||
Martin.Preishuber@stuco.uni-klu.ac.at</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Whisper 0.1 - Internet Telephone Application
|
||
</H3>
|
||
<P>
|
||
Date: Thu, 7 May 1998 12:32:21 GMT<BR>
|
||
<P>
|
||
I announce the availability of Whisper -- Internet Phone.
|
||
You can use it to talk to other people on the Internet.
|
||
It uses gsm compression and should be suitable for low
|
||
speed networks (19.200 bps and up)
|
||
<P>
|
||
I uploaded the sources to /incoming/Linux on sunsite. Hopefully they
|
||
will appear in /pub/Linux/apps/sound/talk. Sources (and a binary version)
|
||
are also available at:
|
||
<P>
|
||
http://www.itp.uni-hannover.de/~roeden/whisper.html
|
||
<P>
|
||
Copying-policy: GPL
|
||
<P>
|
||
For more information: <BR>
|
||
Claus Roedenbeck, <A HREF="mailto:roeden@itp.uni-hannover.de">
|
||
roeden@itp.uni-hannover.de</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
JCam 0.3 - Java-based software for Digital Cameras
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 08:05:54 GMT<BR>
|
||
JCam - a single software program for (almost) all OSes and
|
||
(almost) all Digital Still Cameras ...
|
||
<P>
|
||
Release 0.3 of JCam, available from http://www.jcam.com introduces
|
||
support for cameras from Fuji and Olympus ... this adds to existing
|
||
support for cameras from Epsom, Casio, Kodak ... and a neater user
|
||
interface with "LEDs" ... ;-)
|
||
<P>
|
||
For more details about supported cameras, etc, please E-Mail to
|
||
info@jcam.com or visit the Web Page at "www.jcam.com" ...
|
||
For more information: <BR>
|
||
<A HREF="mailto:info@jcam.com">info@jcam.com</A>, <A
|
||
HREF="http://www.jcam.com/">http://www.jcam.com/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
gax 1.0 - galaxy DB utility for astronomy
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 08:14:06 GMT<BR>
|
||
Announcing the first release of Gax, a program for amateur astronomy.
|
||
<P>
|
||
Gax can create searchable databases of galaxy information that can then
|
||
be searched based on user selectable ranges for fields in the database.
|
||
<P>
|
||
The information contained in or derived from the database includes:
|
||
<PRE>
|
||
RA
|
||
Declination
|
||
Major/Minor Diameter
|
||
Position Angle
|
||
Magnitude
|
||
Surface Brightness
|
||
Constellation
|
||
Uranometria 2000 Map number
|
||
Local Transit Time
|
||
</PRE>
|
||
Report formatting is also under complete user control providing the
|
||
ability to tailor the report output to your specific needs.
|
||
<P>
|
||
Temporarily at: <A HREF="http://sunsite.unc.edu/pub/Linux/Incoming/">
|
||
http://sunsite.unc.edu/pub/Linux/Incoming/</A>
|
||
<P>
|
||
Permanite site: <A
|
||
HREF="http://sunsite.unc.edu/pub/Linux/science/astronomy/">
|
||
http://sunsite.unc.edu/pub/Linux/science/astronomy/</A>
|
||
<P>
|
||
Files: 1664Kb gax-1.0.tar.gz, 1Kb gax.lsm
|
||
<P>
|
||
Copying-policy: GPL
|
||
<P>
|
||
For more information: <BR>
|
||
Mark Anderson, <A HREF="mailto:manders1@csc.com">manders1@csc.com</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
SampLin, new scientific data acquisition software
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 08:15:10 GMT<BR>
|
||
Few days ago I released first public version of scientific data
|
||
acquisition software 'SampLin' which can be found at
|
||
<A HREF="http://www.troja.mff.cuni.cz/~kvasnica/samplin.html">
|
||
http://www.troja.mff.cuni.cz/~kvasnica/samplin.html</A>.
|
||
<P>
|
||
Currently is implemented support for serial, gpib devices and
|
||
arbitrary labcards with drivers, basic-like script language and
|
||
simple plot widget. Software supports data acquisition
|
||
over TCP/IP network via RPC protocol from remote servers.
|
||
Requirements: X11R6, Qt, KDE libs, GPIB lib
|
||
<P>
|
||
*** I'M LOOKING FOR NEW PROGRAMMERS TO CONTINUE THIS PROJECT ***
|
||
<P>
|
||
For more information: <BR>
|
||
Samuel Kvasnica, <A HREF="mailto:kvasnica@iaee.tuwien.ac.at">
|
||
kvasnica@iaee.tuwien.ac.at</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
SCNN3.3 cellular neural network simulator
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 12 May 1998 08:33:00 GMT<BR>
|
||
The new version of our simulation system for cellular neural networks
|
||
(CNN) is now available from our home page<BR>
|
||
<A HREF="http://apx00.physik.uni-frankfurt.de/e_ag_rt/cnn/SCNN/">
|
||
http://apx00.physik.uni-frankfurt.de/e_ag_rt/cnn/SCNN/</A>
|
||
<P>
|
||
It is a zero price product, available for Intel x86 (Linux), IBM RS 6000
|
||
(AIX4), SGI Indigo (Irix 6.2), HP (HP Unix) and DEC Alpha (Ultrix). It is
|
||
planned to add versions for other Unix operating systems on request.
|
||
For more information take a look at our homepage.
|
||
<P>
|
||
For more information: <BR>
|
||
SCNN Team,
|
||
Roland Kunz, <A HREF="mailto:kunz@apx12.physik.uni-frankfurt.de">
|
||
kunz@apx12.physik.uni-frankfurt.de</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Sox 12.14 - Universal Sound Processing Tool
|
||
</H3>
|
||
<P>
|
||
Date: Fri, 15 May 1998 07:40:31 GMT<BR>
|
||
The latest patchlevel of Sox is now available. Sox is intended to be
|
||
the Swiss Army knife of sound processing tools. Its allows a user to
|
||
convert sounds files between any supported format including CD Audio,
|
||
.au, .voc, .wav and several others. Latest versions also include
|
||
support for playing the sound file to either Linux's /dev/dsp or a Sun
|
||
/dev/audio.
|
||
<P>
|
||
It can be downloaded from the following sites:
|
||
<P>
|
||
<A HREF="http://home.sprynet.com/sprynet/cbagwell/projects.html">
|
||
http://home.sprynet.com/sprynet/cbagwell/projects.html</A> <BR>
|
||
<A
|
||
HREF="http://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-12.14.tar.gz">
|
||
http://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-12.14.tar.gz</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Chris Bagwell, <A HREF="mailto:cbagwell@fujitsu-fnc.com">
|
||
cbagwell@fujitsu-fnc.com</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux Point Of Sale
|
||
</H3>
|
||
<P>
|
||
Date: Mon, 18 May 1998 11:16:14 GMT<BR>
|
||
LinuxPOS Version 1.0 Released for Beta Testing
|
||
<P>
|
||
Linux Canada Inc. wishes to announce that the beta version of
|
||
LinuxPOS 1.0 is now available for evaluation. LinuxPOS is an exciting
|
||
new point of sale application written in Tcl/Tk. If you require the
|
||
power,stability and connectivity of Linux, the graphical user
|
||
interface inherent in Tck/Tk, a dynamite point of sale application and
|
||
full source code for peace of mind and/or personal customizations ---
|
||
then LinuxPOS is for you.
|
||
<P>
|
||
For more information: <BR>
|
||
Philip Tonellier, <A
|
||
HREF="mailto:phil@linuxcanada.com">phil@linuxcanada.com</A>,
|
||
<A HREF="http://www.linuxcanada.com/">http://www.linuxcanada.com/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
SHAREWARE: QuoteGrabber-1.0 Real-time stock quotes.
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 26 May 1998 12:47:06 GMT<BR>
|
||
The QuoteGrabber, 1.0.0 is a universal stock market client.
|
||
<P>
|
||
A stock market tracker and portfolio manager written in Java and
|
||
developed under Linux, the QuoteGrabber provides real-time and delayed
|
||
quotes, news and charts. Fully customizable, it is a versatile tool:
|
||
<PRE>
|
||
- - trading: real-time quotes for www.datek.com clients and registered
|
||
users;
|
||
- - charting: intra-day, 3 month, 1 year, 2 years, 5 years;
|
||
- - news: breaking company news as they arrive;
|
||
- - portfolio management: enter all transactions, track portfolio
|
||
performance;
|
||
- - alerts: based on a combination of four criteria;
|
||
- - international stocks: US, Canada, France, UK, Germany, Italy (delayed
|
||
15-20 minutes);
|
||
</PRE>
|
||
The QuoteGrabber is distributed as 30-day trial shareware with a
|
||
personal license price of $25.
|
||
<P>
|
||
For more information: <BR>
|
||
Louis-David Mitterrand, <A
|
||
HREF="mailto:mito@aparima.com">mito@aparima.com</A>,
|
||
<A HREF="http://www.aparima.com/quote/">http://www.aparima.com/quote/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Fortify now on Linux_glibc2: 128-bit Netscape crypto
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 26 May 1998 13:01:39 GMT<BR>
|
||
Sydney, Australia. (23 May, 1998). By popular demand, Fortify for Netscape
|
||
has now been extended to support the Linux_glibc2 editions of the
|
||
Netscape web browsers (Communicator and Navigator v4.05).
|
||
<P>
|
||
This functionality is available immediately, as part of the
|
||
Fortify-1.2.3-unix distribution. You can download this from the
|
||
Fortify web site, at <A
|
||
HREF="http://www.fortify.net/">http://www.fortify.net/</A>
|
||
<P>
|
||
In a second addition to the Fortify service, the Fortify-announce
|
||
mailing list is now on-line, and open to anyone who wishes to
|
||
receive news and announcements via e-mail regarding the Fortify project.
|
||
You can subscribe to the mailing list here:
|
||
<A HREF="http://www.fortify.net/feedback.html">
|
||
http://www.fortify.net/feedback.html</A>
|
||
<P>
|
||
Farrell McKay, <A HREF="mailto:fbm@jolt.mpx.com.au">fbm@jolt.mpx.com.au</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Organic molecule drawing program
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 26 May 1998 13:30:46 GMT<BR>
|
||
I have written a program to draw organic molecules
|
||
easily under X. You can store the picture as bitmapfile.
|
||
It is compiled with the Athena Widget Set and is also
|
||
compartible to UNIX.
|
||
<P>
|
||
You can download the sourcecode at:
|
||
<P>
|
||
<A HREF="http://www.uni-ulm.de/~s_tvolk/chemtool.html">
|
||
http://www.uni-ulm.de/~s_tvolk/chemtool.html</A>
|
||
<P>
|
||
copyright is GPL
|
||
<P>
|
||
For more information: <BR>
|
||
Thomas Volk, <A
|
||
HREF="mailto:thomas.volk@student.uni-ulm.de">thomas.volk@student.uni-ulm.de</A>,
|
||
<A
|
||
HREF="http://www.uni-ulm.de/~s_tvolk/">http://www.uni-ulm.de/~s_tvolk/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Toshiba Linux Utilities
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 26 May 1998 13:43:46 GMT<BR>
|
||
The Toshiba Linux Utilities are a series of three programs that I have
|
||
written to replace Toshiba supplied MS-DOS or Microsoft Windows programs
|
||
for controlling Toshiba laptops, with Linux versions. Full details and
|
||
source code can be found at
|
||
<P>
|
||
<A HREF="http://www2.prestel.co.uk/hex/toshiba.html">
|
||
http://www2.prestel.co.uk/hex/toshiba.html</A>
|
||
<P>
|
||
FAN:
|
||
A update to my fan program that uses a completely new version of turning
|
||
the fan on/off. If you have tried a 1.x version of the program and it
|
||
did not work on your laptop try this version. This version is known to
|
||
work on the new Satellite Pro models (440x, 460x, 480x), and may work
|
||
on others that the previous version did not. I am particularly keen to
|
||
hear from owners of Tecra's.
|
||
<P>
|
||
SVPW:
|
||
A direct replacement for the svpw.exe program found on the Companion
|
||
diskette, for the setting/removal of supervisor passwords, and changing
|
||
whether setup can be run in user mode. Known to work on a Satellite Pro
|
||
400x, 430x, and 440x. I am keen to know if it works on other models.
|
||
<P>
|
||
To anyone reading this, svpw does not, and cannot be made to remove
|
||
passwords unless you already know the password. This is not a limitation
|
||
impossed by me. I don't know how to *crack* the passwords on Toshiba
|
||
laptops and have no interest in doing so. I will not answer any emails
|
||
relating to this.
|
||
<P>
|
||
HOTKEY:
|
||
This is not exactly a replacement for a Toshiba program, but provides
|
||
the same functionality as MaxTime(tm) does under Microsoft Windows, under
|
||
X11 when the power-up or battery save mode is changed with the Fn+F2,
|
||
Fn+F3 key combinations. Namely a small window pops up in the centre of
|
||
the screen with some icons to let you know what you are doing. It is
|
||
know to work on a Satellite Pro 400x, 430x, Portage 610x, and Tecra 740x
|
||
<P>
|
||
For more information: <BR>
|
||
Jonathan A. Buzzard, <A
|
||
HREF="mailto:jab@hex.prestel.co.uk">jab@hex.prestel.co.uk </A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
GNU Midnight Commander 4.1.35 file manager
|
||
</H3>
|
||
<P>
|
||
Date: Tue, 26 May 1998 14:11:12 GMT<BR>
|
||
The Midnight Commander team has just released version 4.1.35 of the
|
||
GNU Midnight Commander. For more information on the Midnight
|
||
Commander, please consult <BR>
|
||
<A HREF="http://www.gnome.org/mc/">http://www.gnome.org/mc</A>
|
||
<P>
|
||
This program is available now in:
|
||
<P>
|
||
<A HREF="ftp://ftp.nuclecu.unam.mx/linux/local/mc-4.1.35.tar.gz">
|
||
ftp://ftp.nuclecu.unam.mx/linux/local/mc-4.1.35.tar.gz</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Miguel de Icaza, <A
|
||
HREF="mailto:miguel@nuclecu.unam.mx">miguel@nuclecu.unam.mx</A>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in <i>Linux Gazette</i> Issue 29, June 1998</center>
|
||
<P> <HR> <P>
|
||
<!-- =================================================================== -->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
||
PAGE ]"></A>
|
||
<A HREF="./lg_tips29.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<A HREF="./lg_answer29.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
|
||
<P><HR><P>
|
||
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
||
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
|
||
<P>
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
<P> <hr> <P>
|
||
|
||
<!-- =============================================================== -->
|
||
<center>
|
||
<H1><A NAME="answer">
|
||
<img src="../gx/dennis/qbubble.gif" alt="(?)" border="0" align="middle">
|
||
<font color="#B03060">The Answer Guy</font>
|
||
<img src="../gx/dennis/bbubble.gif" alt="(!)" border="0" align="middle">
|
||
</A></H1> <BR>
|
||
<H4>By James T. Dennis,
|
||
<a href="mailto:linux-questions-only@ssc.com">linux-questions-only@ssc.com</a><BR>
|
||
Starshine Technical Services,
|
||
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A> </H4>
|
||
</center>
|
||
|
||
<p><hr><p>
|
||
<H3>Contents:</H3>
|
||
|
||
<p><strong><A HREF="#tag_greeting"><img
|
||
src="../gx/dennis/bbub.gif" height="28" width="50" alt="(!)"
|
||
hspace="10" border="0">Greetings from Jim Dennis</a></strong></p>
|
||
|
||
<dL>
|
||
<!-- index_text begins -->
|
||
<dt><A HREF="tag_versions.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"><STRONG>Version-a-go-go
|
||
and the Tragedy of being "Left Behind"</STRONG></A>
|
||
<dt><A HREF="tag_lilo.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"><STRONG>Removing Lilo
|
||
from a multi-boot machine</STRONG></A>
|
||
<dt><A HREF="tag_virtdom.html"><img
|
||
src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)"
|
||
hspace="10" border="0"></a>Question on sendmail... --or--
|
||
<dd><A HREF="tag_virtdom.html"><STRONG>'<tt>sendmail</tt>' <tt>FEATURE</tt>
|
||
creatures for virtual domain and generic re-write tables</STRONG></A>
|
||
<dt><A HREF="tag_kernel.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"><STRONG>Kernel
|
||
crashes</STRONG></A>
|
||
<dt><A HREF="tag_winmodem.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>Winmodems --or--
|
||
<dd><A HREF="tag_winmodem.html"><STRONG>More on 'WinModems': How to "lose"
|
||
Gracefully</STRONG></A> - Just say No!
|
||
<dt><A HREF="tag_basicmail.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>Mail on a LAN Linux
|
||
to NT --or--
|
||
<dd><A HREF="tag_basicmail.html"><STRONG>Basic e-mail Setup for
|
||
Linux?</STRONG></A>
|
||
<dt><A HREF="tag_betterbak.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"><STRONG>Remote Tape
|
||
Backups</STRONG></A>
|
||
<dt><A HREF="tag_shadow.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"
|
||
><STRONG><tt>adduser</tt></STRONG></A>
|
||
<dt><A HREF="tag_dell.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"><STRONG>Letter to Dell
|
||
- Linux on Dell Hardware</STRONG></A>
|
||
<dt><A HREF="tag_dumbterm.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>Hello --or--
|
||
<dd><A HREF="tag_dumbterm.html"><STRONG>Connecting a Dumb Terminal to your
|
||
Linux System</STRONG></A>
|
||
<dt><A HREF="tag_whylinux.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"
|
||
><STRONG>Why Linux?</STRONG></A>
|
||
<dt><A HREF="tag_redhat.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"
|
||
><STRONG>Redhat telnet</STRONG></A>
|
||
<dt><A HREF="tag_netcard.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"
|
||
><STRONG>Network Cards</STRONG></A>
|
||
<dt><A HREF="tag_macrovir.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>A little note about
|
||
"good times" or emailed viruses --or--
|
||
<dd><A HREF="tag_macrovir.html"><STRONG>"Good Times"
|
||
are Spread to the "Great Unwashed"</STRONG></A>
|
||
<dt><A HREF="tag_newlook.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>The Answer Guy --or--
|
||
<dd><A HREF="tag_newlook.html"><STRONG>Regarding the Column's
|
||
New Look</STRONG></A>
|
||
<dt><A HREF="tag_tacacs.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>TACACS+ client for
|
||
Linux --or--
|
||
<dd><A HREF="tag_tacacs.html"><STRONG>TACACS and RADIUS Authentication
|
||
Models for Linux and/or PAM</STRONG></A>
|
||
<dt><A HREF="tag_sendmail.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>Sendmail jam --or--
|
||
<dd><A HREF="tag_sendmail.html"><STRONG>'<tt>sendmail</tt>' Log Jams and
|
||
Capacity Problems</STRONG></A>:
|
||
running extra '<tt>sendmail -q</tt>' processes
|
||
<dt><A HREF="tag_dialdppp.html"><img
|
||
src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)"
|
||
hspace="10" border="0"></a>PPP connection and diald --or--
|
||
<dd><A HREF="tag_dialdppp.html"><STRONG>Co-ordinating diald and Manual
|
||
PPP</STRONG></A>
|
||
<dt><A HREF="tag_ppp233.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"><STRONG>getting
|
||
ppp-2.3.3 to work</STRONG></A>
|
||
<dt><A HREF="tag_msmail.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>Mail access --or--
|
||
<dd><A HREF="tag_msmail.html"><STRONG>Getting at MS-Mail from within
|
||
Linux</STRONG></A>: The Myriad Ways to Co-exist with MS Windows
|
||
<dt><A HREF="tag_procmail.html"><img src="../gx/dennis/qbub.gif" height="28"
|
||
width="50" alt="(?)" hspace="10" border="0"></a>Program for
|
||
Mailer Daemons --or--
|
||
<dd><A HREF="tag_procmail.html"><STRONG>Automated Handling for MAILER-DAEMON
|
||
Messages</STRONG></A>: Read The Sources, Luke.
|
||
<!-- index_text ends -->
|
||
</dL>
|
||
<!-- *** -->
|
||
<a name="tag_greeting"><p><hr><p></a>
|
||
<h2>Linux Gazette: The Answer Guy for June, 1998</h2>
|
||
|
||
<p>
|
||
The theme for this month seems to be "vendor support for Linux." From
|
||
the responses to my open letter to Dell, through the common problems
|
||
with "winmodems" and "winprinters" and even to the impossible dream of
|
||
running MS Windows applications and accessing Microsoft proprietary
|
||
formats from native Linux applications --- we continue to fight uphill
|
||
battles with so many vendors.
|
||
|
||
<br><br>
|
||
This isn't new in the broader Unix world. Readers of
|
||
<em><a href="http://www.linuxjournal.com/issue12/rquarter.html">
|
||
A Quarter Century of Unix</a></em> by Peter H. Salus should recognize
|
||
this as a as an attitude that has dominated hardware vendors for almost
|
||
thirty years. They've been prdicting the "death" of Unix (and the "death of
|
||
the Internet) almost since from the beginning.
|
||
|
||
<br><br>
|
||
There is some hope on the horizon. As some of you may have heard or
|
||
read <a href="http://www.corelcomputer.com">Corel Computer</a>
|
||
(the hardware division of the famous software
|
||
company) is basing it's NC (network computer) on a Strong-ARM version of
|
||
Linux. Within a week or two after that Corel Software announced their
|
||
intention of porting the rest of the applications suite to Linux (their
|
||
WordPerfect 7 and 8 have been available in Linux versions for some
|
||
time).
|
||
|
||
<br><br>
|
||
A little further afield it appears that
|
||
<a href="http://www.apple.com">Apple Inc</a> is starthing to make
|
||
some sense with their future OS strategy --- by "thinking different",
|
||
or "outside of the box" in a manner of speaking. Specifically they've
|
||
apparently decided to skip the planned version of Rhapsody with its
|
||
"blue" and "yellow" boxes that separated the MacOS and the
|
||
Mach/NeXTStep (Unix) personalities. Apparently buried in their
|
||
announcement for
|
||
<a href="http://developer.apple.com/macosx/">MacOS X</a> ("ten") is the i
|
||
rumor that your "NeXT"
|
||
(Rhapsody) native applications will co-exist on the same desktop
|
||
with yor MacOS programs --- and that the MacOS API's will be seamlessly
|
||
supported with all the multi-threaded support that the Mach microkernel
|
||
can provide. Of course you have to hear that as rumors, or read
|
||
between the lines with a considerable background in the Macintosh
|
||
architecture since it is not apparent from their own press releases,
|
||
or from the <a href="http://www.mercurycenter.com/business/top/080332.htm"
|
||
>San Jose Mercury News</a> articles on the subject. The
|
||
<a href="http://www.examiner.com/daily/0511apple.html"
|
||
>San Francisco Examiner</a> sings a similarly hollow tune.
|
||
However, I'm not alone in my opinion as we see in
|
||
<a href="http://mackido.netgate.net/Opinion/RhapsodyDead.html"
|
||
>David K. Every's article</a>.
|
||
|
||
<br><br>
|
||
I suspect he knows <strong>way</strong> more than I do on the subject.
|
||
|
||
<br><br>
|
||
Oddly the <a href="http://www.macosrumors.com/">MacOS Rumors</a> web site
|
||
seems to have no mention MacOS X on their site.
|
||
|
||
<br><br>
|
||
What does this have to do with Linux? Well, I can only continue to
|
||
speculate that <a href="http://www.mklinux.apple.com/">mkLinux</a>
|
||
binaries will eventually run under MacOS X (Rhapsody). I can also still hope
|
||
that, with the progress in the G3's, and the plans for the G4
|
||
generations of the PowerPC platform, and hopefully the continued
|
||
availability development of the DEC (Compaq) Alpha processor, we'll see
|
||
some real choices and competition in the market place. Linux is the
|
||
one OS that crosses all of these (and Sun
|
||
<a href="http://www.geog.ubc.ca/s_linux/faq.html">SPARC</a>'s and
|
||
<a href="http://www.linux.sgi.com/">SGI</a> MIPS and others).
|
||
Some form of Unix is available on just about every platform, whether or not
|
||
it supports Linux.
|
||
|
||
<br><br>
|
||
As we look beyond the world of PC clones we see that there is some
|
||
vendor support. There is some hope that Microsoft's legacy will be
|
||
the separation of hardware vendors from their "control" hegemony.
|
||
Before Microsoft it was the norm for computer manufacturers to almost
|
||
completely control the availability of software for their platforms
|
||
--- Unix has undermined that control for over two decades. The popular
|
||
backlash from Microsoft's own unique form of control --- over the
|
||
collective Wintel platform --- may finally completely sever the
|
||
puppet's strings. The trickles of vendor support that you're seeing now
|
||
is largely a survival strategy. So not only will these vendors give up
|
||
the efforts to control their customer's range of software choices,
|
||
they'll be glad they did it, considering the alternative.
|
||
</p>
|
||
<hr width="10%" align="left">
|
||
<p><em><a href="mailto:jimd@starshine.org">Jim Dennis</a></em></p>
|
||
|
||
<!--================================================================-->
|
||
<P> <hr> <P>
|
||
<H5 align="center"><a href="http://www.linuxgazette.com/copying.html"
|
||
>Copyright ©</a> 1998, James T. Dennis <BR>
|
||
Published in <I>Linux Gazette</I> Issue 29 June 1998</H5>
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif"
|
||
ALT="[ Table Of Contents ]"></A>
|
||
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
|
||
ALT="[ Front Page ]"></A>
|
||
<A HREF="lg_bytes29.html"><IMG SRC="../gx/back2.gif"
|
||
ALT="[ Back ]"></A>
|
||
<A HREF="./hamilton.html"><IMG SRC="../gx/fwd.gif"
|
||
ALT="[ Next ]"></A>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<h1><font color="maroon">GUI building using the Java 1.1 AWT</font></h1>
|
||
<h2><font color="maroon">Java Linux Audio CD Player--Part 2</font></h2>
|
||
<H4>By <a href="mailto:michael@actrix.gen.nz">Michael Hamilton</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./hamilton.html#player">The Player Class</a>
|
||
<li><a HREF="./hamilton.html#form">The Form Panel</a>
|
||
<li><a HREF="./hamilton.html#menu">The Menu Bar</a>
|
||
<li><a HREF="./hamilton.html#awt">AWT Adapters</a>
|
||
<li><a HREF="./hamilton.html#main">The Main Button Control</a>
|
||
<li><a HREF="./hamilton.html#cd">The CD Player Status Display</a>
|
||
<li><a HREF="./hamilton.html#smart">The SmartDrive and the Monitor Thread</a>
|
||
<li><a HREF="./hamilton.html#program">The Program Window</a>
|
||
<li><a HREF="./hamilton.html#sum">Summary</a>
|
||
<li><a HREF="./hamilton.html#res">Resources</a>
|
||
</ul>
|
||
|
||
<p><hr><p>
|
||
In my previous article I described a simple CD player that can be
|
||
extended to create a GUI player such as Jcd, a freeware player I've
|
||
made available on the Web, see http://www.actrix.gen.nz/users/michael/giveaways.html
|
||
<p>
|
||
In this article I will describe how to extend the Drive object so that
|
||
it can carry out programmed play (play a list of tracks) and shuffle
|
||
play (play every track once in a random order).
|
||
The structure of the new player is described by the class diagram in
|
||
the following figure. Rather than starting
|
||
with the low level components, I thought it would be more interesting
|
||
to start with a description of the GUI interface. For the moment just
|
||
assume that there is a new SmartDrive version of Drive that includes
|
||
all the old functionality, plus monitoring of the Drive state and the
|
||
ability to accept and modify a list of tracks to be played. I'll
|
||
introduce the use of the new functionality as we proceed.
|
||
<P>
|
||
<img src="./gx/hamilton/class.gif">
|
||
<p>
|
||
In my previous article I described a Java class, called ``Drive'', that
|
||
provides the following CD player functionality:
|
||
<pre>
|
||
Drive Object:
|
||
Informational methods:
|
||
currentTrack, currentIndex, numberOfTracks,
|
||
currentAddress,
|
||
cdEndAddress, trackAddress, trackLength
|
||
|
||
Control methods:
|
||
play, stop, pause, resume, eject, setVolume
|
||
</pre>
|
||
In this article I will describe how to extend the Drive object so that
|
||
it can carry out programmed play (play a list of tracks) and shuffle
|
||
play (play every track once in a random order). But rather than start
|
||
with the low level components, I thought it would be more interesting
|
||
to start with a description of the GUI interface. For the moment just
|
||
assume that there is a new SmartDrive version of Drive that includes
|
||
all the old functionality, plus monitoring of the Drive state and the
|
||
ability to accept and modify a list of tracks to be played. I'll
|
||
introduce the use of the new functionality as we proceed.
|
||
<p>
|
||
Since writing my previous article, the Java Development Kit 1.1 has
|
||
been ported to Linux. This code in this article will use features of
|
||
the AWT from JDK 1.1. The article was originally written using the
|
||
JDK 1.0.1, and the original JDK 1.0.1 code is included in the tar
|
||
available at SSC's Linux Journal ftp site.
|
||
<P> <HR> <P>
|
||
<a name="player"></A>
|
||
<h3>The Player Class</h3>
|
||
<p> <HR> <P>
|
||
The new CD player I'm going to describe is called Player and is run
|
||
from the command line by entering:
|
||
<pre>
|
||
setenv SBPCD 1 # if you have an old SoundBlaster connected drive
|
||
java Jcd.Player
|
||
</pre>
|
||
Running the application creates the GUI interface in <A HREF="#fig1">Figure
|
||
1</A> and <A HREF="#fig2">Figure 2</A>.
|
||
<p>
|
||
The source code for the Player class is presented in
|
||
<A HREF="./hamilton/Player.java">Listing 1</A>.
|
||
The
|
||
Player class has a static <b>main()</b> method on line 30, which is where
|
||
program execution will begin. On line 32 the main() method creates an
|
||
instance of the player class:
|
||
<pre>
|
||
Player player = new Player();
|
||
</pre>
|
||
On lines 38 to 43, the Player's class constructor sets up the
|
||
SmartDrive object that communicates with the CD player. The name of
|
||
the device to open (/dev/cdrom) and the location of the native module
|
||
(Jcd_Drive.so) is hard coded into the Player's constructor. The native
|
||
module implements the kernel interface to the CDROM drive. In a real
|
||
production version of the system, these parameters would be read from
|
||
a configuration file or deduced by interrogating the operating
|
||
environment.
|
||
<p>
|
||
As previously stated SmartDrive is an extended version of the hardware
|
||
interface class described in my first article--it has been enhanced
|
||
to support programmed play, and to provide notification events
|
||
concerning the CD players status. On line 56, the Player's
|
||
constructor starts the SmartDrive's monitor. The monitor will begin
|
||
delivering CD player events to any object that has registered for them.
|
||
<p>
|
||
<a name="fig1"></A>
|
||
<center><img src="./gx/hamilton/hamfig1.gif"></center>
|
||
<center><H4>Figure 1. GUI Components</H4> </center>
|
||
I'll now go back over Player and look at some of the code involved in
|
||
the GUI. On lines 45 to 54 of
|
||
<A HREF="./hamilton/Player.java">Listing 1</A>.
|
||
the Player's constructor
|
||
creates the GUI components seen in Figure 1: a menu-bar; a display
|
||
area for track info; and a control area of push-button CD player
|
||
controls.
|
||
<p><HR> <P>
|
||
<a name="form"></A>
|
||
<h3>The Form Panel</h3>
|
||
<p><HR> <P>
|
||
The AWT GUI toolkit provides components such as text-labels,
|
||
text-entry fields, menus, and buttons. Components are placed into
|
||
containers to build windows and pabels. The AWT's top level component
|
||
container is the Frame class. A Frame constructs a separate
|
||
free-standing window. Like other GUI toolkits, the AWT provides the
|
||
programmer with sub-container classes that can be used to control
|
||
component placement by subdividing a window into smaller areas. The
|
||
AWT's major sub-container is the Panel class. The AWT provides
|
||
further control over placement by allowing the programmer to configure
|
||
a Frame or Panel's layout policy. For example, the standard AWT
|
||
FlowLayout just places components left to right, top to bottom. A
|
||
Frame or Panel's layout can be assigned from the layouts provided by
|
||
the AWT or you can write your own.
|
||
<p>
|
||
On line 10 of <A HREF="./hamilton/Player.java">Listing 1</A>, the Player class is declared to extend the
|
||
Form class. The source code for Form is presented in <A
|
||
HREF="./hamilton/Form.java">Listing 2</A>. Form
|
||
is a class I've created that extends the normal top level AWT Frame
|
||
class. Player is a Form, a Form is a Frame, a Frame creates a
|
||
free-standing window, so Player creates a free-standing window. The
|
||
Form class uses the AWT GridBagLayout manager. The GridBagLayout
|
||
manager is the AWT's most flexible layout manager. It has a wide
|
||
variety of options for the spacing, and placement of objects with a
|
||
Frame or Panel. GridBagLayout's flexibility makes it complex to deal
|
||
with. Form simplifies dealing with the GridBagLayout by providing an
|
||
addCenter() method. On lines 23 to 32 of
|
||
<A HREF="./hamilton/Form.java">Listing 2</A>, the addCenter()
|
||
method controls placement by placing the object at the next available
|
||
row and making it consume the entire row:
|
||
<pre>
|
||
c.gridx = 0;
|
||
...
|
||
c.gridwidth = GridBagConstraints.REMAINDER;
|
||
</pre>
|
||
It sets fill to NONE. It sets the inset space around the component to
|
||
1. The end effect is that the Form sub-class will place objects top to
|
||
button, one object per row, each consuming the space it needs plus
|
||
a little surrounding space.
|
||
<p><HR> <P>
|
||
<a name="menu"></A>
|
||
<h3>The Menu Bar</h3>
|
||
<p><HR> <P>
|
||
Returning to the Player class. On lines 46 and 47 of <A
|
||
HREF="./hamilton/Player.java">Listing 1</A>,
|
||
the Player's constructor sets up the windows menu bar:
|
||
<pre>
|
||
setMenuBar(new MenuBar());
|
||
getMenuBar().add(createFileMenu());
|
||
</pre>
|
||
The actual drop-down menu is created by the <b>createFileMenu()</b> method on
|
||
Lines 70 to 78 of <A HREF="./hamilton/Player.java">Listing 1</A>.
|
||
It creates the player's file-menu, and
|
||
adds individual menu items to it. Lines 76 and 77 of createFileMenu()
|
||
setup the event handling for the menu:
|
||
<pre>
|
||
fileProgramItem.addActionListener(this);
|
||
fileExitItem.addActionListener(this);
|
||
</pre>
|
||
These two lines set up the Player object (this) to handle the
|
||
ActionEvents from the file-menu's fileProgramItem and fileExitItem.
|
||
These events are generated when the user selects a menu item. In
|
||
order to be able to handle these events the Player class must
|
||
implement the ActionListener interface--it is declared as such on
|
||
<A HREF="./hamilton/Player.java">Listing 1</A> line 10:
|
||
<pre>
|
||
public class Player extends Form implements ActionListener
|
||
</pre>
|
||
What's going on here? Player inherits from--``extends''--Form, but
|
||
what does ``implements ActionLister'' mean? Player can only inherit
|
||
data and method definitions from a single parent--Java doesn't
|
||
support multiple inheritance--an object can only ``extend'' one parent
|
||
class. However, to provide some of the functionality of multiple
|
||
inheritance, Java provides the ``implements/interface'' mechanism. In
|
||
other languages multiple inheritance has to deal with the issue of
|
||
what to do when a class inherits two more implementations of the same
|
||
data-structure or method from two different parents. For example, say
|
||
both parents have an add() method, which one should be used in the
|
||
sub-class? Java's limited multiple inheritance mechanism, the
|
||
``interface'', doesn't support the inheritance of implementation.
|
||
Except for class-wide constants, interface definitions must be
|
||
completely abstract. An interface definition, such as ActionListener,
|
||
cannot provide an implementation of any of the methods it declares.
|
||
Any class wishing to ``implement'' an interface must provide its own
|
||
code to implement all the methods in the interface. A class can
|
||
implement any number of interfaces--a class could implement both
|
||
ActionListener and MouseListener and handle both kinds of events. By
|
||
not providing an implementation, interfaces leave conflict resolution
|
||
in the hands of the programmer designing the implementation.
|
||
<p>
|
||
Listener interfaces such as ActionListener, MouseListener, and others,
|
||
were newly introduced in JDK 1.1. The new JDK 1.1 AWT Event model
|
||
uses the Java interface mechanism to provide a more flexible event
|
||
handling mechanism that the earlier version of the JDK. There are
|
||
separate interfaces for different kinds of events such as the mouse or
|
||
the keyboard. Multiple objects can register for the same events and
|
||
they will all receive them.
|
||
<p>
|
||
In order to implement the ActionListener interface, the Player class
|
||
has to have an actionPerformed() method--the method is defined on on
|
||
Lines 59 to 68. The Player will be passed menu events via a call to
|
||
the actionPerformed() method. The actionPerformed() method checks
|
||
which component was the source of the event and invokes an appropriate
|
||
code fragment: at lines 62 to 65, the Player's actionPerformed method
|
||
checks if the source of the event was the fileProgramItem--if it was,
|
||
and there isn't an existing program showing, a new one is created. At
|
||
line 66, if the source of the event was fileExitItem the program is
|
||
terminated.
|
||
<p> <HR> <P>
|
||
<a name="awt"></A>
|
||
<h3>AWT Adapters</h3>
|
||
<p> <HR> <P>
|
||
In some cases the interface necessary to handle an AWT event is quite
|
||
complex. To save the programmer the work of having to completely
|
||
define all of an AWT event interface, the AWT includes pre-written
|
||
Adapter classes that provide default implementations for the more
|
||
complex event interfaces. For example the MouseListener interface has
|
||
a corresponding MouseAdapter class that provides a default
|
||
implementation. These pre-canned AWT Adapter classes can be
|
||
sub-classed to selectively override any of their methods.
|
||
<p>
|
||
The Player class makes use of an Adapter class to handle close
|
||
requests from the window manager. Close requests are usually the
|
||
result of the user double clicking the close button on window's title
|
||
bar. On line 52 of <A HREF="./hamilton/Player.java">Listing 1</A>, the Player registers a WindowListener:
|
||
<pre>
|
||
addWindowListener(new DoClose());
|
||
</pre>
|
||
The WindowListener interface has several methods and I only want to
|
||
override one of them--the windowClosing() method. Unfortunately the
|
||
Player class can't inherit from the default WindowAdaptor class
|
||
because the Player class already inherits from the Form class. The
|
||
solution I've applied in this case is to use another new feature of
|
||
the JDK 1.1. JDK 1.1 adds Inner Classes to the Java language--this
|
||
means I can declare a class within a class:
|
||
<pre>
|
||
public class Player extends Form implements ActionListener {
|
||
...
|
||
addWindowListener(new DoClose());
|
||
...
|
||
private class DoClose extends WindowAdapter {
|
||
public void windowClosing(WindowEvent e) {
|
||
System.exit(0);
|
||
}
|
||
}
|
||
...
|
||
}
|
||
</pre>
|
||
The Player uses addWindowListener() to register a new instance of its
|
||
own inner DoClose class. Because DoClose is an Inner Class of
|
||
Player it has access to Player's data and methods and can therefore be
|
||
more closely integrated into Player than a separately declared class.
|
||
In other languages it's quite common to solve situations such as this
|
||
by passing pointers to methods, functions, or code-fragments--but in
|
||
Java only objects can be passed, so Inner Classes were provided as one
|
||
solution.
|
||
<p> <HR> <P>
|
||
<a name="main"></A>
|
||
<h3>The Main Button Controls</h3>
|
||
<p> <HR> <P>
|
||
Turning now to the remainder of the Player GUI interface: the Controls
|
||
and Display classes. I'll describe the Controls class first because
|
||
it's the simplest. Controls is a panel of buttons which you can see
|
||
on the bottom of <A HREF="#fig1">Figure 1</A>. <A HREF="./hamilton/Controls.java">Listing 3</A>
|
||
shows the source code for the
|
||
Controls class. Since it is intended to be a sub-panel of Player it
|
||
inherits from Panel:
|
||
<pre>
|
||
class Controls extends Panel implements ActionListener
|
||
</pre>
|
||
The Controls class also needs to take action when the buttons are
|
||
pressed, so it also implements the ActionLister interface.
|
||
<p>
|
||
Lines 17 to 22 of <A HREF="./hamilton/Controls.java">Listing 3</A> declares the set of buttons. The button
|
||
declarations also specify how to initialize the buttons when a
|
||
Controls object is created. On lines 26 to 32, the Controls
|
||
constructor adds each of the buttons to the Panel. The simple
|
||
GridLayout manager, not to be confused with the more complex
|
||
GridBagLayout manager, is used to control component placement within
|
||
the Panel. GridLayout places components left to right, top to bottom,
|
||
in equal sized cells in the grid specified:
|
||
<pre>
|
||
setLayout(new GridLayout(1, 6, 2, 2));
|
||
</pre>
|
||
In this case the grid is 1 row by 6 columns--a column for each
|
||
button. The last two arguments specify a horizontal and vertical gap
|
||
between grid cells of 2.
|
||
<p>
|
||
The <b>Controls add()</b> method, on lines 31 to 34, overrides the add()
|
||
method inherited from the Panel super-class. Add() behavour has been
|
||
modified to set the Controls object as the ActionListener for each
|
||
button:
|
||
<pre>
|
||
private void add(Button b) {
|
||
b.addActionListener(this);
|
||
super.add(b); // Now call super class add() method.
|
||
}
|
||
</pre>
|
||
The Controls actionPerformed() method, lines 36 to 49, reponds to
|
||
button press events by invoking corresponding CdPlayer methods.
|
||
<p><HR> <P>
|
||
<a name="cd"></A>
|
||
<h3>The CD Player Status Display</h3>
|
||
<p><HR> <P>
|
||
The final part of the interface shown in <A HREF="#fig1">Figure 1</A>
|
||
is the Display
|
||
panel, the source code for which can be seen in <A
|
||
HREF="./hamilton/Display.java">Listing 4</A>. The
|
||
Display panel consists of three text fields to display the CD track,
|
||
the CD index, and the CD track time remaining--trackField,
|
||
indexField, and timeField. They're declared on lines 13 to 15 of
|
||
<A HREF="./hamilton/Display.java">Listing 4</A> and will be initialized as new TextFields a Display object
|
||
is created (which only ever happens once in this application).
|
||
<p>
|
||
The Display() constructor method is on line 20 of <A
|
||
HREF="./hamilton/Display.java">Listing 4</A>. Lines 22
|
||
to 29 setup the basic components involved in the display. The Panel
|
||
is assigned the FlowLayout manager which means that calls to the add()
|
||
method will place the three text fields in a left to right layout
|
||
butted up to each other with a small amount of separation top and
|
||
bottom. And on Lines 23 and 24 I've made the indexField and timeField
|
||
read-only so the user can't alter their values:
|
||
<pre>
|
||
indexField.setEditable(false);
|
||
timeField.setEditable(false);
|
||
</pre>
|
||
The trackField is left editable so that the user can enter the number
|
||
of a track to start playing from. In order to handle the trackField's
|
||
mouse focus events and keyboard events, we have to register a couple
|
||
of event Listeners:
|
||
<pre>
|
||
trackField.addFocusListener(new TrackFocusLost());
|
||
trackField.addKeyListener(new TrackKeyPress());
|
||
</pre>
|
||
Both of the Listeners are quite complex, so rather that write our own
|
||
complete implementations, two default Adapter classes are sub-classed
|
||
to handle the task on lines 53 to 74--more about them later.
|
||
<p>
|
||
On line 34 we register Display() as an Observer of the cdPlayer:
|
||
<pre>
|
||
cdPlayer.monitor.addObserver(this);
|
||
</pre>
|
||
The status of the CD player is actually kept track of by a Monitor
|
||
object--the cdPlayer.monitor object. The monitor runs in its own
|
||
thread (a thread can be thought of as a light weight sub-process that
|
||
has shared access to the data of the main task). The need to monitor
|
||
events and notify other objects is a common programming problem. Java
|
||
provides the Observable Class, and its companion Observer Interface,
|
||
as a standard basis for addressing this kind of problem. The monitor
|
||
object is a sub-class of a Observable class. The Observable class
|
||
provides the code necessary to manage the Observer/Observable
|
||
relationship. The monitor class will be described in more detail
|
||
later. Display is declared to implement Observer, which means it must
|
||
define an update() method. The update() method will be called when an
|
||
Observable event takes place. Display's update() method is defined on
|
||
lines 37 to 51, it is passed the Observable object that caused the
|
||
event and an extra argument (which isn't used in this application).
|
||
<p>
|
||
Normally the trackField is updated once a second when the monitor
|
||
broadcasts a status update to its Observers. The user can also alter
|
||
the value of the trackField by entering a new track which will force
|
||
the player to skip to it immediately. To prevent the one second
|
||
update from clobbering the users input, the update() method is careful
|
||
not to update the trackField text unless the track really has changed:
|
||
<pre>
|
||
if (prevText.compareTo(newTrackText) != 0) {
|
||
trackField.setText(newTrackText);
|
||
prevText = newTrackText;
|
||
}
|
||
</pre>
|
||
Lines 53 to 75 of <A HREF="./hamilton/Display.java">Listing 4</A> define two inner classes to handle user
|
||
input into the trackField. TrackFocusLost restores the correct track
|
||
number when ever the user changes focus out of the trackField.
|
||
The inner class TrackKeyPress checks every key pressed in the
|
||
trackField for the enter key. If enter is pressed, an attempt is made
|
||
to parse the text entered into an integer value, if this succeeds the
|
||
cdPlayer is instructed to immediately start playing at this track.
|
||
<p> <HR> <P>
|
||
<a name="smart"></A>
|
||
<h3>The SmartDrive and the Monitor Thread</h3>
|
||
<p> <HR> <P>
|
||
Before we go on to describe how to write a GUI for programmed track
|
||
play and shuffle play, we really have to understand more of the new
|
||
SmartDrive class that extends the Drive class from my first article.
|
||
SmartDrive.java can be seen in <A HREF="./hamilton/SmartDrive.java">Listing
|
||
5</A>. SmartDrive is a sub-class
|
||
of the original Drive class. SmartDrive mainly adds new methods to
|
||
provide for playing a list of tracks.
|
||
<p>
|
||
In order to store the playlist of tracks, a new class called TrackList
|
||
is defined at lines 175 to 243. TrackList is a sub-class of the JDK
|
||
Vector class. A Vector is is a JDK implementation of a list-like
|
||
structure. A Vector can only store java Objects. I would like to
|
||
store int-type track numbers, but the int-type isn't a Java Object,
|
||
it's a primitive data-type and primitive data types aren't first-class
|
||
objects. To get around this problem the JDK provides a class wrapper
|
||
for each kind of primitive data type. In this case I have to use the
|
||
Integer wrapper class to contain each track number. When ever a track
|
||
is added to a TrackList, the code actually stores a corresponding
|
||
Integer object:
|
||
<pre>
|
||
addTrack(int t) { addElement(new Integer(t)); }
|
||
</pre>
|
||
TrackList provides methods to test the state of the list, to advance
|
||
along the list, and to reset the list. Because Vectors store generic
|
||
Objects, TrackList also has to do a fair bit of casting. For example,
|
||
elementAt() returns an Object that has to be cast to an Integer before
|
||
I can use it:
|
||
<pre>
|
||
Integer elem = (Integer) (elementAt(position)); // Cast Object to Integer
|
||
</pre>
|
||
The methods within TrackList have been declared as synchronized.
|
||
This prevents multiple threads from simultaneously trying to access
|
||
the same TrackList object. For example, we don't want the GUI to
|
||
attempt to clear the track list at the same time as the cdPlayer
|
||
attempts to advance to the next track in the track list. By declaring
|
||
the methods as synchronized we ensures that requests are handled one
|
||
at a time--waiting calls will block until the object is available.
|
||
<p>
|
||
In order to implement programmed play, the SmartDrive class includes
|
||
an instance of TrackList, called tracksToPlay. SmartDrive methods
|
||
such as next() and prev(), on lines 53 to 83, either just play tracks
|
||
in the normal numerical sequence, or in the order returned by
|
||
the tracksToPlay nextTrack(), prevTrack() methods.
|
||
<p>
|
||
Anytime the player gets to the end of track SmartDrive has to refer to
|
||
tracksToPlay and issue a new play() call to play the next track in the
|
||
program. In order to do this it sets up an instanse of the Monitor object
|
||
mentioned earlier.
|
||
<p>
|
||
2b:The code for the Monitor class is in <A
|
||
HREF="./hamilton/Monitor.java">Listing 6</A>. As described earlier
|
||
the monitor object is a sub-class of a Observable class, a JDK class
|
||
that provides much of the code necessary to manage Observer/Observable
|
||
relationship. The Monitor class runs in a separate thread that
|
||
interrogates the hardware player and passes on its status every second.
|
||
<p>
|
||
The monitor is started by calling the monitor's start() method--in
|
||
this case the call to start() is made in the main() method in
|
||
<A HREF="./hamilton/Player.java">Listing 1</A>. The Monitor's start()
|
||
method, lines 57 to 65 of <A HREF="./hamilton/Monitor.java">Listing 6</A>,
|
||
creates a new thread and starts it running:
|
||
<pre>
|
||
if (updateThread == null) {
|
||
System.out.println("Starting thread");
|
||
updateThread = new Thread(this);
|
||
updateThread.start();
|
||
}
|
||
</pre>
|
||
The Thread constructor expects to be passed an object that implements
|
||
the Runnable interface, in this case the Monitor is its own Runnable,
|
||
so it passes itself (``this''). To implement the Runnable interface,
|
||
Monitor has to define a run() method. The run() method provides the
|
||
code that will be executed in a new thread. When the
|
||
updateThread.start() method is called the new execution thread will be
|
||
created. The new thread will then call the the monitor's, run()
|
||
method. The run() method loops forever collecting status from the
|
||
cdPlayer, passing it on, and then sleeping one second. The update is
|
||
carried out in a synchronized statement:
|
||
<pre>
|
||
synchronized (cdPlayer) {
|
||
updateCdInfo();
|
||
setChanged(); // Force notifyObservers() to do its thing.
|
||
notifyObservers();
|
||
}
|
||
</pre>
|
||
The synchronized statement will obtain a lock on the cdPlayer before
|
||
it updates its info and notifies each observer. This ensures that all
|
||
Observers get the same consistent picture. The monitor uses the
|
||
setChanged() method, inherited from Observable, to indicate that the
|
||
Observers need to be informed. It then calls the notifyObservers()
|
||
method, also inherited from Observers, which passes the update event
|
||
on to all Observers who have previous registered with the monitor.
|
||
<p>
|
||
The bulk of the Monitor class on lines 72 to 127 implements the
|
||
updateCDInfo() method that collects info from the Drive/SmartDrive
|
||
object. It caches the CD info to save having to bother the Linux
|
||
kernel with repeated requests for constant information such as the
|
||
length of the tracks on the current CD. The Drive interface was
|
||
extensively covered in my first article, so won't go into the
|
||
the details of the calls to the cdPlayer again here.
|
||
<p>
|
||
Although the monitor provides the main means for conveying status
|
||
information, the SmartDrives's update() method, lines 118 to 148 of
|
||
<A HREF="./hamilton/SmartDrive.java">Listing 5</A>, has to switch into more precise mode to handle the
|
||
transition from one track to the next. The normal one second update
|
||
from the monitor is insufficient to control precise switching between
|
||
tracks so the update() method does it's own frequent polling when ever
|
||
the end of track is near:
|
||
<pre>
|
||
if (monitor.currentAddress >= tend - 210) { // Near end of
|
||
track?
|
||
// Poll frequently so we don't miss the event.
|
||
while (currentAddress()
|
||
&& monitor.status == Drive.STATUS_PLAY
|
||
&& currentAddress() != 0) {
|
||
try { Thread.sleep(100); } // Sleep 100 msec's.
|
||
catch (InterruptedException e) { }
|
||
}
|
||
</pre>
|
||
This ensures that the listener doesn't hear small sound bites of the
|
||
next track.
|
||
<p> <HR> <P>
|
||
<a name="program"></A>
|
||
<h3>The Program Window</h3>
|
||
<p> <HR> <P>
|
||
<a name="fig2"></A>
|
||
<center><img src="./gx/hamilton/hamfig2.gif"></center>
|
||
<center><H4>Figure 2. Program Window</H4> </center>
|
||
<P>
|
||
Now we can address the final GUI component--the Program class that
|
||
creates the Program window. The Program window can be seen in
|
||
Figure 2. The source code for the program class can be seen in
|
||
<A HREF="./hamilton/Program.java">Listing 7</A>.
|
||
The Program class lays out its sub-panels by using the same
|
||
Form object described earlier. The Program constructor, lines 40 to
|
||
87, assembles three sub-panels:
|
||
<pre>
|
||
+ programListing - a text field;
|
||
+ trackPanel - a grid of track buttons;
|
||
+ and buttonPanel - a row of control buttons.
|
||
</pre>
|
||
The program class isn't really any more complex than the rest of the
|
||
GUI except that it features quite extensive use of Inner Classes and
|
||
Anonymous Classes newly introduced in Java 1.1. Most of the following
|
||
description will concentrate on these two new language features.
|
||
<p>
|
||
Lines 53 to 70 setup the buttonPanel and the actions to take when each
|
||
control button is pressed. The Program() constructor uses the Program's
|
||
own addButton() method to add the control buttons to the buttonPanel.
|
||
AddButton() expects to passed the panel; the button; and an object to
|
||
handle the associated button press action:
|
||
<pre>
|
||
void addButton(Panel panel, Button button, DoAction action)
|
||
{
|
||
panel.add(button);
|
||
button.addActionListener(action);
|
||
}
|
||
</pre>
|
||
The action parameter, is declared to be from the DoAction class.
|
||
DoAction is declared at the top of the Program class as an Inner
|
||
class--a class contained within the Program class:
|
||
<pre>
|
||
class Program extends Form implements Observer {
|
||
private abstract class DoAction implements ActionListener {
|
||
public void actionPerformed(ActionEvent event) {
|
||
this.invoke();
|
||
}
|
||
abstract void invoke();
|
||
}
|
||
</pre>
|
||
The DoAction class is abstract because it has no implementation for the
|
||
invoke() method. The implementation of invoke() is provided
|
||
individually for each button by new sub-classes of DoAction.
|
||
These new sub-classes are created inside the Program() constructor on lines
|
||
54 to 78--each addButton() call creates a new DoAction sub-class:
|
||
<pre>
|
||
addButton(buttonPanel,
|
||
editButton,
|
||
new DoAction() { void invoke() { setEditMode(); } });
|
||
</pre>
|
||
In each of these calls to addButton, the last paramter is an Anonymous
|
||
sub-class of DoAction. Like Inner Classes, Anonymous Classes were
|
||
added to Java to give programmers the means for implementing objects
|
||
like ActionListeners without the programmer having to creating
|
||
zillions of free standing mini classes. The new verb, normally used
|
||
to create a new object, is used here to create a new class:
|
||
<pre>
|
||
new DoAction() { void invoke() { setEditMode(); } }
|
||
</pre>
|
||
This code creates a new anonymous, i.e., unnamed, sub-class of DoAction.
|
||
The body of the class, in the curly-braces, provides an implementation
|
||
of the invoke() method specific to the editButton. In the same manner
|
||
6 other anonymous classes are created to handle each control button.
|
||
<p>
|
||
Another anonymous class is used to handle the close-request for the
|
||
Program window on lines 71 to 79. Rather than fully declare a single
|
||
class to handle the request, I've used an anonymous sub-class of the
|
||
AWT WindowAdapter class:
|
||
<pre>
|
||
new WindowAdapter() {
|
||
public void windowClosing(WindowEvent e) {
|
||
dismiss(); // call dismiss(0) for the outer class.
|
||
}
|
||
}
|
||
</pre>
|
||
Again ``new'' is creating a new class. In this case a sub-class of
|
||
WindoAdapter is created with an override for the windowClosing()
|
||
method.
|
||
<p>
|
||
Because these anonymous classes are inner classes of Program, they
|
||
have access to its data and methods. For example, windowClosing() in
|
||
the previous example calls dismiss()--dismiss() is a method of the
|
||
Program class.
|
||
<p>
|
||
The suggested use for Anonymous classes is for small fragments of
|
||
code only. Larger code fragments are more tidily expressed as
|
||
named inner classes.
|
||
<p>
|
||
The updateTrackPanel() method, on lines 171 to 194, contains a tricky
|
||
use of inner classes. Here inner classes are used to carry extra
|
||
information around. When the Program window is created the
|
||
updateTrackPanel() method is called to set up the track-number
|
||
buttons. The method is also called whenever the number of buttons has
|
||
to be altered due to a change in CD.
|
||
<p>
|
||
When the user presses a track-number button, the button event handler
|
||
has to know which button was pressed. updateTrackPanel() achieves
|
||
this by sub-classing the DoAction class:
|
||
<pre>
|
||
for (int i = prev_n; i
|
||
class TrackAction extends DoAction {
|
||
int track;
|
||
public TrackAction(int i) { track = i; }
|
||
void invoke() { pickTrack(track); }
|
||
}
|
||
addButton(trackPanel,
|
||
new Button(Integer.toString(i + 1)),
|
||
new TrackAction(i + 1));
|
||
}
|
||
</pre>
|
||
Each TrackAction objects is initialised with the track number it is
|
||
associated with.
|
||
<p>
|
||
The rest of the code in the Program class deals with the mechanics of
|
||
programmed mode play. This includes switching the mode of the track
|
||
panel between add (a track), del (a track), and play (immediately play
|
||
a track). The new java feature introduced by this code is the use of
|
||
the JDK Random class to select tracks at random on lines 152 to 169.
|
||
<p> <HR> <P>
|
||
<a name="sum"></A>
|
||
<h3>Summary</h3>
|
||
<p> <HR> <P>
|
||
This concludes my description of how the CD player works. I started
|
||
this whole exercise to try out as much Java as possible, both in terms
|
||
of the compilers and tools, and in terms of the language and JDK
|
||
libraries. I've found that the langauge, libraries, and compilers are
|
||
stable enough to for me to write non trivial programs, the fully coded
|
||
Jcd clocks in at 3600 lines of Java and 450 lines of C. The compilers
|
||
work but are slow. The JDK libraries are quite functional and offer
|
||
far more standard facilities than originally provided with C or C++.
|
||
C integration is easily accomplished. Programming in a garbage
|
||
collected environment is a real boost to productivity. Xemacs provided
|
||
me with a really good Java editing environment.
|
||
|
||
<P> <HR> <P>
|
||
<a name="res"></A>
|
||
<h3>Resources</h3>
|
||
<p><HR> <P>
|
||
See previous article in <I>Linux Gazette</I> issue 28 for detailed references.
|
||
<p>
|
||
<A HREF="./hamilton/Jcd-2-listings.tar.gz">Tar file</A> containing all
|
||
listings in this article
|
||
<p>
|
||
<A HREF="http://www.actrix.gen.nz/users/michael/">My home page</A>
|
||
containing more infomation on Jcd.
|
||
<P>
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/sound/cdrom/">Jcd</A> is
|
||
available on Sunsite.
|
||
<p>
|
||
<A HREF="http://www.blackdown.org/java-linux.html">
|
||
The Linux Java page</A>--a good starting point.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Michael Hamilton <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./lg_answer29.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./marsden.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
|
||
<center>
|
||
<H1><font color="maroon">EMACSulation</font></H1>
|
||
<h4>by <a href="mailto:emarsden@mail.dotcom.fr">Eric Marsden</a>
|
||
</h4>
|
||
</center>
|
||
|
||
|
||
<blockquote><small>
|
||
|
||
This column is devoted to making the best use of Emacs, text editor
|
||
extraordinaire. Each issue I plan to present an Emacs extension
|
||
which can improve your productivity, make the sun shine more brightly
|
||
and the grass greener.
|
||
|
||
</small></blockquote>
|
||
|
||
<p><HR> <P>
|
||
|
||
<h1>Emacs as a server</h1>
|
||
|
||
<p> Many people meet Emacs as the default program launched by Elm to edit
|
||
an email message. Starting up Emacs in this way is a bit of a pain,
|
||
because of the delay and memory use, but also because the fresh Emacs
|
||
doesn't share buffers and a kill ring (storage for cut/copied text)
|
||
with other invocations. Rather than starting up a new Emacs for each
|
||
letter, you can set the environment variable <tt>EDITOR</tt> to
|
||
<tt>emacsclient</tt>.
|
||
|
||
<p> The Emacs server mechanism allows one Emacs process to service editing
|
||
requests from other applications. To enable it you need to add a line
|
||
like <tt>(server-start)</tt> in <tt>~/.emacs</tt>. When you say
|
||
<tt>emacsclient filename</tt>, the program searches for an Emacs
|
||
process (launching one if necessary) and sends it a message asking it
|
||
to edit <tt>filename</tt>. The caller process (the shell for example)
|
||
is blocked while the file is being edited. When you're finished type
|
||
<tt>C-x #</tt> and the client will be unblocked.
|
||
|
||
|
||
<h2>Gnuserv</h2>
|
||
|
||
<p> Gnuserv is a more sophisticated remote invocation mechanism for Emacs,
|
||
written by <a href="http://hplbwww.hpl.hp.com/people/ange/">Andy
|
||
Norman</a> (also the author of <a
|
||
href="http://www.linuxgazette.com/issue26/marsden.html">ange-ftp</a>).
|
||
It allows arbitrary Emacs Lisp commands to be sent to an Emacs process
|
||
running either on the local machine or on another machine on the
|
||
network.
|
||
|
||
<ol>
|
||
<li> If you're using XEmacs everything is already set up; you will only
|
||
need to add a <tt>(gnuserv-start)</tt> to your <tt>~/.emacs</tt>.
|
||
|
||
<li> Obtain the gnuserv-2.1alpha RPM from Red Hat contrib, or <a
|
||
href="http://cgi.debian.org/www-master/debian.org/Packages/unstable/editors/gnuserv.html">
|
||
the .deb</a> for Debian Hamm and skip to 6 ;
|
||
|
||
<li> Download the <a
|
||
href="http://hplbwww.hpl.hp.com/people/ange/gnuserv/">source</a> ;
|
||
|
||
<li> Edit <tt>config.h</tt> (I suggest using <tt>#define
|
||
DONT_USE_LITOUT</tt>) and <tt>gnuserv.h</tt>, where you choose the
|
||
communication method (the default is Internet domain <a
|
||
href="http://www.lowtek.com/sockets/">sockets</a>, which is necessary
|
||
if you want to be able to do the remote stuff) ;
|
||
|
||
<li> Put the file <tt>gnuserv.el</tt> somewhere in Emacs' load path. Let's
|
||
assume you have an <tt>~/elisp/</tt> directory where you put your
|
||
favorite Emacs Lisp extensions; an alternative is to copy gnuserv.el
|
||
to a site-wide Emacs Lisp directory such as
|
||
<tt>/usr/lib/emacs/site-lisp</tt> (type <tt>C-h v load-path</tt> in
|
||
Emacs to see a list of possiblities) ;
|
||
|
||
<li> Add something like this to your <tt>~/.emacs</tt> :
|
||
|
||
<pre>
|
||
(setq load-path (cons (expand-file-name "~/elisp") load-path))
|
||
(autoload 'gnuserv-start "gnuserv" "Better Emacs server support")
|
||
(setq gnuserv-frame (current-frame))
|
||
(gnuserv-start)
|
||
</pre>
|
||
|
||
<p> The second line tells Emacs that the function <tt>gnuserv-start</tt> is
|
||
defined in a file called gnuserv.el, which Emacs will load on demand.
|
||
The third line inhibits the default behaviour of opeing a new frame for
|
||
each new file edited (leave this out if you prefer). The last line
|
||
fires up the server.
|
||
|
||
</ol>
|
||
|
||
|
||
<p> To check that everything is working, type
|
||
|
||
<pre><tt>
|
||
~$ gnuclient <filename>
|
||
</tt></pre>
|
||
|
||
<p> which asks Emacs to open <tt><filename></tt>, just like
|
||
emacsclient. If this doesn't work (with a message like ``Refused
|
||
connection'' or ``Broken pipe''), skip down to the <a
|
||
href="#security">Security section</a>. You can also send off an
|
||
arbitrary bit of Emacs Lisp :
|
||
|
||
<pre>
|
||
~$ gnudoit '(message "Hi there, %s!" (user-full-name))'
|
||
|
||
</pre>
|
||
|
||
|
||
<h2>Applications</h2>
|
||
|
||
<p> Now you can do all sorts of silly things. You could get two Emacsen on
|
||
networked machines to play ping pong, echoing messages back and forth.
|
||
You could use Emacs as a CGI script server, profiting from its powerful
|
||
library without incurring the overhead of launching an interpreter for
|
||
each script (a little like the <a
|
||
href="http://www.FastCGI.com/">FastCGI</a> mechanism). For example,
|
||
let's hack together an external interface to Emacs' builtin
|
||
psychologist :
|
||
|
||
|
||
<pre>
|
||
(defun eliza-start ()
|
||
"Fire up the doctor."
|
||
(interactive)
|
||
(doctor)
|
||
;; We only have to type return once under this interface.
|
||
(re-search-backward " twice" nil t)
|
||
(replace-match "")
|
||
(goto-char (point-max))
|
||
(buffer-substring (point-min) (point-max)))
|
||
|
||
(defun eliza-continue (str)
|
||
"Send a string to the doctor and return her response."
|
||
(interactive)
|
||
(switch-to-buffer "*doctor*")
|
||
(insert "\n" str "\n")
|
||
(doctor-read-print)
|
||
(save-excursion
|
||
(re-search-backward "\n\n\\(\\(.+\n?\\)+\\)\n\n")
|
||
(match-string 1)))
|
||
|
||
(defun eliza-cleanup ()
|
||
"Pay the bill and leave."
|
||
(interactive)
|
||
(let ((buf (get-buffer "*doctor*")))
|
||
(if buf (kill-buffer buf))))
|
||
</pre>
|
||
|
||
<p> This can be used from the command line (for CGI use you'd have to
|
||
think about the trickier question of concurrent accesses) with a script
|
||
such as
|
||
|
||
<pre>
|
||
#! /bin/sh
|
||
|
||
gnudoit '(eliza-start)'
|
||
while read line
|
||
do
|
||
gnudoit "(eliza-continue \"$line\")"
|
||
done
|
||
gnudoit '(eliza-cleanup)'
|
||
</pre>
|
||
|
||
<p> You might even find constructive uses for the gnuserv technology, like
|
||
starting <a href="http://www.Gnus.org/">Gnus</a> (an Emacs news/email
|
||
client) and ange-ftp transfers from a ``network Emacs'', so that your
|
||
primary Emacs isn't affected by networking delays. You could also
|
||
communicate with Emacs from a crontab, telling it to fetch some web
|
||
pages with Emacs/w3, or send someone an email. You could use
|
||
Netscape's third party <a
|
||
href="http://developer.netscape.com/software/sdks/index.html?content=mailnews.html">
|
||
email/news API</a> to invoke Emacs instead of the builtin mail and news
|
||
clients. It might also be useful for sending commands to Emacs from a
|
||
<a href="http://www.plig.org/xwinman/">window manager</a> menu.
|
||
|
||
|
||
<h2>Security considerations<a name="security"></A></h2>
|
||
|
||
<p> More and more Linux distributions use good <a
|
||
href="http://ciac.llnl.gov/ciac/documents/ciac2316.html">X security</a>
|
||
as set up out of the box. You will notice for example that when you su
|
||
to root on a modern system, you will no longer be able to launch X
|
||
clients, because the X server is protected by an <a
|
||
href="http://www.xs4all.nl/~zweije/xauth.html">xauth</a> cookie.
|
||
|
||
<p> While allowing access to your X display is bad enough (someone could
|
||
capture all your keystrokes, for example), giving remote access to your
|
||
Emacs process is much more worrying, since Emacs can execute arbitrary
|
||
commands under your id, delete files, send insulting email to the
|
||
President of the United States, etc.
|
||
|
||
<p> Since release 2.1, gnuserv is able to use MIT-MAGIC-COOKIE-1
|
||
authentication for remote requests. This protocol uses the contents of
|
||
your <tt>~/.Xauthority</tt> file, as described in the xauth(1) man page.
|
||
Gnuserv requires a cookie for display number 999, which you can create
|
||
as follows (blade is the name of the machine) :
|
||
|
||
<pre>
|
||
~$ xauth add blade:999 . `cat /etc/passwd | md5sum`
|
||
~$ xauth list
|
||
blade/unix:0 MIT-MAGIC-COOKIE-1 bc1d627babdbabe9d1f288d2b57c348f
|
||
blade:999 MIT-MAGIC-COOKIE-1 d89570b20925d401c05a79be67159cae
|
||
</pre>
|
||
|
||
<p> (<tt>`cat /etc/passwd | md5sum`</tt> is just a convenient way of
|
||
generating a cookie; on most Linux systems you will be able to use the
|
||
<a
|
||
href="http://hegel.ittc.ukans.edu/topics/linux/man-pages/man1/mcookie.1.html">mcookie</a>
|
||
command, or you can bake a cookie by hand). Now you should be able to
|
||
use gnuclient/gnudoit on the local machine. The next step is to
|
||
transfer the cookie to each remote machine from which you plan to
|
||
access Emacs, with a command such as :
|
||
|
||
<pre>
|
||
~$ xauth extract - blade:999 | rsh remotehost.edu xauth merge -
|
||
</pre>
|
||
|
||
<p> If you don't run X you will have to fall back to a host-based access
|
||
control system : the environment variable <tt>GNU_SECURE</tt> is
|
||
assumed to point to a file which contains a list of machines which are
|
||
authorized to open connections to your Emacs process. Finally, if your
|
||
machine isn't networked, you've probably already skipped to the next
|
||
section.
|
||
|
||
|
||
<h2>How does it work?</h2>
|
||
|
||
<p> Your command takes a fairly convoluted route to reach Emacs. There are
|
||
four parties involved in a transaction : the ``client'', or
|
||
program which wants a service from Emacs (Elm for example), the
|
||
gnuclient program (which runs on the requesting machine), the gnuserv
|
||
process (which runs on the machine running Emacs), and of course the
|
||
Emacs process itself. They communicate as indicated by the following
|
||
diagram :
|
||
|
||
<p> <img src="./gx/marsden/gnuserv-arch.gif" alt="Communication diagram (3 kB)">
|
||
|
||
<p> The fragile aspect of the system is that if the gnuserv program dies
|
||
for some reason, everything grinds to a halt. An alternative
|
||
communication method which would involve fewer working parts could be
|
||
inspired from the Netscape remote invocation protocol. The gnuclient
|
||
capabilities would be added directly to Emacs, and a gnudoit request
|
||
would look something like
|
||
|
||
<pre>
|
||
emacs -remote -lisp '(message "Hi")'
|
||
</pre>
|
||
|
||
<p> The new Emacs process would search for an existing Emacs process to
|
||
which it could dispatch the request, or service it directly. The
|
||
disadvantage is that each request would be slower, since an Emacs needs
|
||
to be forked each time. The image is most often in the disk cache, so
|
||
this wouldn't be catastrophically slow (it works OK with Mozilla, which
|
||
is <a
|
||
href="http://x5.dejanews.com/getdoc.xp?AN=202452924&CONTEXT=896094230.406519988&hitnum=1">far
|
||
bigger</a> than Emacs).
|
||
|
||
|
||
<h2>Next time ...</h2>
|
||
|
||
<p> I've received a fair bit of email asking how to customize various
|
||
aspects of Emacs, so I'll try to scratch the surface of this vast topic
|
||
next month, and discuss the Customize package. Don't hesitate to
|
||
contact me at <tt><emarsden@mail.dotcom.fr></tt> with comments,
|
||
corrections or suggestions (what's <em>your</em> favorite
|
||
couldn't-do-without Emacs extension package?). <code>C-u 1000 M-x
|
||
hail-emacs</code> !
|
||
|
||
<p> <b>PS</b> : Emacs isn't in any way limited to Linux, since
|
||
implementations exist for many other operating systems (and some
|
||
systems which only halfway operate). However, as one of the leading
|
||
bits of free software, one of the most powerful, complex and
|
||
customizable, I feel it has its place in the <i>Linux Gazette</i>.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Eric Marsden <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./hamilton.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./prelz.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<h1><font color="maroon">The Importance of Adopting an In-House Linux Expert</font></h1>
|
||
<H4>By <a href="mailto:fluido@fluido.markdata.pt">Carlo Prelz</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
Changes, even huge changes, are difficult to evaluate when you happen
|
||
to live close to whatever is undergoing the change, be it a child,
|
||
global politics, or the world of people who make a living with their
|
||
knowledge of information technology (IT) matters.
|
||
<p>
|
||
In our world, as the most common computer-dependent tasks get
|
||
standardized and as more and more raw computing power can be tapped
|
||
by more people, the figure of the white-clad ``computer priest'' is
|
||
about to vanish. But what is the world getting in exchange?
|
||
<p>
|
||
How is the young manager of a new company going to build its IT
|
||
infrastructure? No, he most likely won't phone IBM. Instead, he will order a bunch
|
||
of PCs, equipped with a various assortment of
|
||
Microsoft software. Other Microsoft software will follow, because
|
||
that's what <i>everybody</i> does.
|
||
<p>
|
||
Through a brief, fractal period, we have moved from one monopoly to
|
||
another, with the added disadvantage that people who blindly accept the new easy solution end up with
|
||
less-than-solid material. This material is much harder to
|
||
adapt to local needs. In the past, companies who could afford a high
|
||
level of informatization hire with a
|
||
handful of COBOL or RPGII programmers who could customize the software that needed
|
||
to be adapted.
|
||
<p>
|
||
Today, a manager will most probably be equipped with a
|
||
NT server, a Microsoft Office suite on Windows 95 for each desk, an
|
||
Ethernet network, and an assistance contract with some specialized
|
||
firm (who has to deal with dozens of other companies). He may organize
|
||
things so that his people have some limited sort of Internet
|
||
access. All standard, on a path that is being walked on by a huge mass
|
||
of people all around the globe.
|
||
<p>
|
||
As the path gets dug deeper and deeper, it gets harder to choose a
|
||
different one. This has to do with gravity: the deeper the path and
|
||
the steeper its sides, the harder the person, company or organization
|
||
has to <i>want</i> to choose a personal way to its own IT goals.
|
||
<p>
|
||
But why would a reasonable IT manager want to get out of the
|
||
mainstream? The keyword is <b>customization</b>.
|
||
<p>
|
||
Yes, you can program in Windows. But when it gets to having an
|
||
``intimate'' relationship with what actually happens, Windows leaves you
|
||
in the cold. You may find books, but unless you have uncommonly strong
|
||
links with the Microsoft engineering circles, you have no way to be
|
||
confident in the fact that whatever OS feature you are using won't
|
||
disappear without a trace in the next release. Which you will have to
|
||
use because everybody will be using it at a certain time. You end up
|
||
being <i>dependent</i> on the next brilliant idea they come up with at
|
||
Redmond, WA.
|
||
<p>
|
||
This strategy is evident. Human beings' laziness is again tapped, at
|
||
the benefit of a company that found itself at the right space-time
|
||
coordinates, and has been as un-principled as needed.
|
||
<p>
|
||
But if our young manager were to dedicate a moment of thought to how
|
||
to solve his IT problems, what are his choices?
|
||
<ul>
|
||
<li> If he has enough resources, he can go the mainframe way. The road
|
||
is still open and fast becoming an elitist choice.
|
||
<li> If his connections with IBM are vital, or for a series of
|
||
(constantly diminishing) other reasons, he may go the OS/2 way.
|
||
<li> He may be romantic and like Macintoshes. There are concrete
|
||
rewards in these choices, although these give the impression of
|
||
diminishing, too.
|
||
<li> He may instead choose the proprietary UNIX way--yes, the
|
||
overpriced one.
|
||
<li> If he has a curious attitude, chances are that he has already met
|
||
Linux, and that he has seen Linux mentioned at an increasing rate
|
||
during the past months. Thanks to the Net, there is no scarcity of
|
||
information open to whomever decides to look around a bit.
|
||
<li> He may also decide to either write or pay somebody to write an
|
||
operating system from scratch. This seems somewhat improbable.
|
||
</ul>
|
||
Let me know if I missed some important options. But of all the above,
|
||
the one that promises to bear more fruit is the Linux way. So, how to
|
||
give it a try? The best solution for a manager who would like his
|
||
computers do what is needed without learning the way himself, is to
|
||
engage the services of one or more Linux aficionados.
|
||
<P> <HR> <P>
|
||
<h3>The Linux Aficionado</h3>
|
||
<P> <HR> <P>
|
||
Linux has been growing like a big, healthy forest plant. Each branch
|
||
has been contributed by someone like us, who decided to spend a bit of
|
||
their free time to make the tree look and live better. Not ``for free'':
|
||
we humans always do things for a reward; it happens that money is not
|
||
the only (nor the best) reward. The impulse behind the Free Software
|
||
movement has been and still is to demonstrate to ourselves and to the
|
||
world that we worked well, that we brilliantly solved a problem. That
|
||
we created a handy tool, that was not there before. That is, that the
|
||
world is now a little bit nicer now than before we started developing
|
||
our ideas.
|
||
<p>
|
||
Of course, programmers need to survive, too. Here is what the Richard
|
||
Stallman has to say about the topic (excerpt from the GNU Manifesto):
|
||
<blockquote>
|
||
``Won't programmers starve?''
|
||
</blockquote> <p><blockquote>
|
||
I could answer that nobody is forced to be a programmer. Most of us
|
||
cannot manage to get any money for standing on the street and making
|
||
faces. But we are not, as a result, condemned to spend our lives
|
||
standing on the street making faces, and starving. We do something
|
||
else.
|
||
</blockquote> <p><blockquote>
|
||
But that is the wrong answer because it accepts the questioner's
|
||
implicit assumption: that without ownership of software, programmers
|
||
cannot possibly be paid a cent. Supposedly it is all or nothing.
|
||
</blockquote> <p><blockquote>
|
||
The real reason programmers will not starve is that it will still be
|
||
possible for them to get paid for programming; just not paid as much as
|
||
now.
|
||
</blockquote> <p><blockquote>
|
||
Restricting copying is not the only basis for business in software.
|
||
It is the most common basis because it brings in the most money. If it
|
||
were prohibited, or rejected by the customer, software business would
|
||
move to other bases of organization which are now used less often.
|
||
There are always numerous ways to organize any kind of business.
|
||
</blockquote> <p><blockquote>
|
||
Probably programming will not be as lucrative on the new basis as it
|
||
is now. But that is not an argument against the change. It is not
|
||
considered an injustice that sales clerks make the salaries that they
|
||
now do. If programmers made the same, that would not be an injustice
|
||
either. (In practice they would still make considerably more than
|
||
that.)
|
||
</blockquote> <p>
|
||
The above was written back in 1985, when programmers were still earning
|
||
big money; 12 years later, our market and contracting power has
|
||
diminished a lot. Gone are the days when a programmer could be the
|
||
best paid man in the company thanks to writing huge bits of database
|
||
access/data entry pieces of software that differed very little from
|
||
their brothers.
|
||
<p>
|
||
When the need arises for an application that is somehow different,
|
||
there is no other way than to call an actual programmer. Here are a
|
||
few characteristics that make a Linux aficionado an ideal choice for
|
||
such a special need:
|
||
<ul>
|
||
<li> Passion. Something better than money as the reason for what we do.
|
||
<li> Love for quality. Learning from previous experience, and being
|
||
able to judge and better our work.
|
||
<li> Ability to solve problems. If a problem exists, we like see it
|
||
solved in the best possible way, and we generally find a way.
|
||
<li> Loyalty. If we are given recognition, an interesting place to
|
||
work in, interesting things to do and a reasonable wage, we may oppose
|
||
more than normal resistance to the lure of head hunters.
|
||
</ul>
|
||
I may like to add a couple of counter-indications:
|
||
<ul>
|
||
<li> Lack of particular enthusiasm for wearing ties or adopting
|
||
uniforms (or respecting poorly justified liberticide rules).
|
||
<li> The wish to understand what one is doing renders less than
|
||
desirable a sort of job where you must focus on a tiny fraction of the
|
||
whole thing, knowing nothing about the complete picture.
|
||
</ul>
|
||
<P> <HR> <P>
|
||
<h3>No Need for Another Windows95</h3>
|
||
<P> <HR> <P>
|
||
There are recurring, well-financed efforts to create a new
|
||
good-for-everybody operating system on the robust structure of
|
||
Linux. These efforts are justified by the hope of snatching even a
|
||
small percentage of the huge market held by Microsoft.
|
||
A very small percentage of a very large sum may promise
|
||
reasonable earnings to those who follow this path.
|
||
<p>
|
||
Regardless of how things look like now, the omnipresent PC that
|
||
we see today has a limited time to live.
|
||
<p>
|
||
A very big slice of the PCs that are currently in use in the world are
|
||
used for standard operations: keeping one's correspondence, making
|
||
spreadsheet calculations, maintaining one's agenda, playing games and
|
||
looking around the Internet. How many PCs do you
|
||
know are being used with software that has been written especially for
|
||
them? The logical direction, one that much effort has been spent to
|
||
hamper, is that of including everything that a secretary, a
|
||
non-IT-oriented office worker or a common home user will ever need in
|
||
an idiot-proof box.
|
||
<p>
|
||
This tendency has at last emerged in the shape of network
|
||
computers. No matter which way is selected, the result of adopting an NC
|
||
is that, from the prospective of the user, there will simply be a
|
||
couple of plugs to insert into the respective sockets, and the user
|
||
will be ready to work or play. No need to reinstall Windows95 for the
|
||
nth time because the maintainer can't divine a better way to recover
|
||
from the cryptic error messages.
|
||
<p>
|
||
Along this way, comes the demise of shrink-wrap software.
|
||
If the server is the only place where a separate
|
||
operating system needs to be installed, it will be much harder for
|
||
Microsoft to maintain their stronghold on the computer market. NT has
|
||
very little advantage compared to the many UNIX options in the field. In
|
||
particular, it is not significantly easier to manage than UNIX by a
|
||
knowledgeable person. And if or when the networked world
|
||
becomes so easy to manage that a bunch of software <i>wizards</i> can
|
||
do the job, the next step will be NSes (Network Servers, I think I'll
|
||
patent the name...). Again, something that spells bad to a
|
||
software-only company that is programmed to EARN.
|
||
<p>
|
||
Isn't it futile to try to be the new Microsoft? As if it really
|
||
mattered much to have so much money that you will not have the
|
||
material possibility to spend it all in your lifetime.
|
||
<P> <HR> <P>
|
||
<h3>Meet the Ideal Entrepreneur</h3>
|
||
<P> <HR> <P>
|
||
So, what is there that is not futile? Doing something nice, that makes
|
||
the world a bit better. I said that before.
|
||
<p>
|
||
A human being has an idea. Some say they float around, and visit you
|
||
when you become receptive enough. She finds all the resources that are
|
||
needed to turn this idea into a practical product. After some time,
|
||
other people can exchange some of their own wealth to take advantage
|
||
of the idea of our entrepreneur.
|
||
<p>
|
||
Or the idea can be imported within a sufficiently fertile existing
|
||
corporation, one that will recognize the value of the idea and give
|
||
our human being enough space and resources to reach her goal.
|
||
<p>
|
||
Or the idea deals with bettering an established way of doing some
|
||
task.
|
||
<p>
|
||
What kind of enterprise can you think of, that won't benefit from the
|
||
use of IT? Most of the times, she will have to look for computer
|
||
assistance. It is to all the entrepreneurs who are
|
||
facing the problem of which way to informatize their pet project that
|
||
I would like to speak.
|
||
<p>
|
||
Linux may well be the best choice for you. But for Linux to adapt well
|
||
to <i>your</i> world, you will want to adopt one or more Linux
|
||
aficionados. You will want to secure the continuing services of a
|
||
person who deeply knows and appreciates the tools he works with. Who
|
||
can craft your personal solution. Who can maintain the operating
|
||
system that your solution works on abreast of the latest technical
|
||
progress.
|
||
<p>
|
||
Linux cannot be eternal. Nothing is. But it has reached a solid,
|
||
mature stage NOW. Especially, it is the ideal tool for tapping into
|
||
the networked world. Now is the time not to be lazy and to profit from
|
||
this situation. And keeping a Linux aficionado happy and well-fed now
|
||
might also imply finding yourself in a more elevated position in the
|
||
post-Microsoft world, tomorrow.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Carlo Prelz <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./marsden.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./nelson.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<h1><font color="maroon">Mastering Kernel Modules with Caldera</font></h1>
|
||
<H4>By <a href="mailto:nelson@er.doe.gov">David Nelson</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
You shouldn't have to read this article. The concept of Linux kernel
|
||
modules is fairly simple. Unfortunately, information needed to compile,
|
||
install and use modules is scattered over several HOWTOs, READMEs,
|
||
and man pages. Plus, the files which need to be modified are in several
|
||
obscure directories.
|
||
<p>
|
||
I finally wrote this cookbook approach to get myself, and you, started.
|
||
Once you are up and running with modules, you can dig into the details
|
||
later. I tested this material on an X86 processor running Caldera Open
|
||
Linux 1.1, which is close to Red Hat 4.2. You mileage with other
|
||
processors and distributions may vary.
|
||
<p>
|
||
Why use modules? Modules let you compile a small, fast kernel, then
|
||
install and remove device drivers on demand. Without modules the Linux
|
||
kernel could bloat to resemble a certain commercial OS.
|
||
<p>
|
||
First, I recommend that you compile a base kernel
|
||
that includes all essential capabilities for your system without
|
||
modules. I know this sounds like we are going backwards, but you don't
|
||
want to lose the ability to boot up because you messed up your modules.
|
||
The README in usr/src/linux is your guide, but basically you execute
|
||
the command:
|
||
<pre>
|
||
make mrproper; make xconfig
|
||
</pre>
|
||
(or <tt>menuconfig</tt> or <tt>config</tt>) to include
|
||
all needed capabilities, then run:
|
||
<pre>
|
||
make dep; make clean; make zImage
|
||
</pre>
|
||
Save your kernel configuration to a file named kernelconf.base, in case you need to
|
||
recompile. The xconfig menu prompts you to save and load configuration
|
||
files. If you use menuconfig or config, the current configuration is in
|
||
the file /usr/src/linux/.config; copy that file to kernelconf.base. If you
|
||
configured too big a kernel, final compilation will fail. If this
|
||
happens, execute <tt>make bzImage</tt> instead of zImage.
|
||
Your compiled
|
||
kernel will be in the directory /usr/src/linux/arch/i386/boot.
|
||
<p>
|
||
You might have made a mistake in compiling your base kernel, so don't
|
||
throw away your old one. If you are running LILO, rename your new
|
||
kernel to zImage.base and copy it to the location of your current kernel,
|
||
usually / or /boot. Add a section to /etc/lilo.conf that lets you
|
||
select either your default or base kernel on boot up. My lilo.conf
|
||
is shown here minus some comment lines:
|
||
<pre>
|
||
# general section
|
||
boot = /dev/hda3
|
||
install = /boot/boot.b
|
||
message = /boot/message
|
||
prompt
|
||
timeout = 50
|
||
|
||
# default entry
|
||
image = /bzImage
|
||
label = linux
|
||
root = /dev/hda3
|
||
read-only
|
||
|
||
# base kernel
|
||
image = /zImage.base
|
||
label = base
|
||
root = /dev/hda3
|
||
read-only
|
||
</pre>
|
||
The important addition to lilo.conf is the last section
|
||
(<tt>#base kernel</tt>) which tells LILO about your new kernel.
|
||
Also, be sure lilo.conf
|
||
has <tt>prompt</tt> and <tt>timeout</tt> lines. Now execute
|
||
<tt>lilo</tt> and then reboot.
|
||
LILO will pause giving the prompt <tt>boot:</tt>. If you hit TAB, you will be
|
||
given the choices <tt>linux</tt> and <tt>base</tt>. Enter
|
||
<tt>base</tt>, and your new kernel will
|
||
boot. You may get complaining messages about bad module dependencies,
|
||
but if your base kernel is complete that shouldn't bother you. If
|
||
something goes wrong, reboot and enter <tt>linux</tt> (or just wait the
|
||
timeout interval) and your old kernel will boot. Make sure you have a
|
||
working base kernel before proceeding. With this approach you
|
||
never burn your bridges (or kernel) behind you.
|
||
<p>
|
||
If you don't use LILO, make a boot floppy for your base kernel. To do
|
||
this, insert a floppy and execute <tt>make zdisk</tt>, instead of zImage.
|
||
<p>
|
||
You are now ready to compile a kernel with modules tailored to your
|
||
system. Execute the same commands as above, but when you execute xconfig or
|
||
menuconfig pick some features to compile as modules. I suggest
|
||
you experiment first by picking nice-to-have, but not-necessary,
|
||
modules to add to zImage.base. Good choices might be printer support or
|
||
floppy support (unless you are booting from the floppy). Save your
|
||
configuration as kernelconf.mod in case you need to go back. Also,
|
||
write down which modules you are compiling. To know exactly which
|
||
modules are compiled, I suggest you move or delete your old modules (if
|
||
any). The Caldera release includes a lot of modules. They are in
|
||
/lib/modules/2.0.29. I moved my old ones into subdirectories rather
|
||
than deleting them in case I needed to back up. If you are working
|
||
with a different release of the kernel, instead of subdirectory 2.0.29
|
||
you will have a subdirectory corresponding to your release number.
|
||
<p>
|
||
After executing <tt>make zImage</tt>, run:
|
||
<pre>
|
||
make modules; make modules_install
|
||
</pre>
|
||
As before, move (using <b>cd</b>) to the directory containing zImage,
|
||
rename it zImage.mod and
|
||
move it to the directory where LILO will look for it. Put a new section at
|
||
the bottom of lilo.conf to let you boot this kernel with the label
|
||
<tt>modules</tt>. If you don't use LILO, make another zDisk.
|
||
<p>
|
||
Now, execute
|
||
<tt>depmod -aq</tt>. This creates /lib/modules/2.0.29/modules.dep, needed by
|
||
module utilities. Next, execute the following:
|
||
<pre>
|
||
modprobe -c | grep -v '^path' > /etc/conf.modules
|
||
</pre>
|
||
This command sets up another file needed by the module utilities.
|
||
<p>
|
||
Now reboot, choosing label <tt>modules</tt> at the boot prompt.
|
||
Next, move to the
|
||
/etc/modules/2.0.29 directory. It should contain a file with a very long name
|
||
like the following:
|
||
<pre>
|
||
#1 Tue Feb 11 20:36:48 MET 1997.default
|
||
</pre>
|
||
This file is read at boot time by /etc/rc.d/rc.modules. It contains a
|
||
list of the default modules loaded when the kernel boots. You
|
||
need to change both the name and the contents. Fixing the name is the hard
|
||
part. In directory /etc/modules/2.0.29 execute the commands:
|
||
<pre>
|
||
FILE=i`uname -v`.default
|
||
cp "#1 Tue"* "$FILE"
|
||
</pre>
|
||
This magic creates a file with the name that rc.modules will look for
|
||
on bootup. The name is based on the time when the kernel was compiled.
|
||
If you recompile the kernel, you must repeat the magic.
|
||
<p>
|
||
Edit this file to contain just the modules you want loaded at bootup.
|
||
For example, it might contain the lines
|
||
<pre>
|
||
floppy
|
||
lp
|
||
</pre>
|
||
which would load the floppy and printer modules, assuming you compiled
|
||
them as modules. To get your editor to accept this file, you may need to put
|
||
quotes around the name.
|
||
<p>
|
||
To load a module manually, execute
|
||
<tt>insmod 'modname'</tt>. To remove it execute
|
||
<tt>rmmod 'modname'</tt>. To tell which
|
||
modules are currently loaded, execute <tt>lsmod</tt>.
|
||
<p>
|
||
The best toy is <b>kerneld</b>; it automatically loads and unloads modules as
|
||
needed. Assume you have compiled the floppy driver as a module. Check
|
||
whether it is loaded by executing lsmod. If it is, remove it by
|
||
executing <tt>rmmod floppy</tt>. Then execute
|
||
<tt>kerneld</tt>.
|
||
Now execute <tt>mount /mnt/floppy</tt>
|
||
(or whatever mounts your floppy). Magically, kerneld
|
||
installs the floppy module when needed. It will also uninstall modules
|
||
which haven't been used for a while, keeping your kernel lean and mean.
|
||
<p>
|
||
You now know enough to experiment with modules without crashing your
|
||
kernel on bootup. Read the Module mini-HOWTO, the kerneld mini-HOWTO, and
|
||
the man pages for the utilities to become a real expert. Happy
|
||
moduling!
|
||
|
||
<p><HR> <P>
|
||
<h3>Resources</h3>
|
||
<p><HR> <P>
|
||
<A HREF="http://www.linuxresources.com/LDP/HOWTO/mini/Modules.html">
|
||
Module mini-HOWTO</A>
|
||
<p>
|
||
<A HREF="http://www.linuxresources.com/LDP/HOWTO/mini/Kerneld.html">
|
||
kerneld mini-HOWTO</A>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, David Nelson <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./prelz.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./coldiron.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
|
||
<P><B><FONT SIZE=+4>Replacing Windows NT Server with Linux</FONT></B>
|
||
<BR>Copyright (c) 1997 Quinn P. Coldiron
|
||
<BR>qcoldiro@unlinfo.unl.edu
|
||
<BR><BR><BR><B><FONT SIZE=+2>Table of Contents</FONT></B>
|
||
|
||
<P><B><A HREF="#Introduction">Introduction</A></B>
|
||
|
||
<P><B>Section 1--<A HREF="#Outlining Our Situation">Outlining Our Situation</A></B>
|
||
|
||
<P><B>Section 2-- Why we chose RedHat Linux</B>
|
||
<UL>
|
||
<LI>
|
||
<A HREF="#Linux Features">Linux Features</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Reliability">Reliability</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Cross platform">Cross platform</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Compatibility with Existing Applications">Compatibility</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Speed">Speed</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Speed">Inexpensive</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Low hardware requirements">Low hardware requirements</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Ease of administration">Ease of administration</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Simple upgrade path">Simple upgrade path</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Remote control and administration">Remote control and administration</A></LI>
|
||
</UL>
|
||
<B>Section 3--Under the Hood</B>
|
||
<UL>
|
||
<LI>
|
||
<A HREF="#Under the Hood">Setting up the server</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Linux installation">Linux
|
||
installation</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Samba Installation/Setup">Samba
|
||
installation/setup</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Netatalk Installation/Setup">Netatalk
|
||
installation/setup</A></LI>
|
||
|
||
<LI>
|
||
Installing The Cats Pajamas (Getting a DOS network application to run on
|
||
Linux)</LI>
|
||
|
||
<LI>
|
||
<A HREF="#Installing Cats on the Server">Installing
|
||
Cats on the Server</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Configuring your Windows clients">Configuring
|
||
your Windows clients</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Configuring the DOS emulator to run Cats">Configuring
|
||
the DOS emulator to run Cats</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Installing a RAID">Installing a RAID</A></LI>
|
||
|
||
<LI>
|
||
Daily administration</LI>
|
||
|
||
<LI>
|
||
<A HREF="#System backups">System backups</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Scheduling events">Scheduling
|
||
events</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="#Replacing your Desktop OS with Linux">Replacing your Desktop
|
||
OS with Linux</A></LI>
|
||
</UL>
|
||
<B>Appendix A--<A HREF="http://www.redhat.com/support/docs/rhl/manual/manual/">RedHat
|
||
5.0 Installation Guide</A></B>
|
||
|
||
<P><B>Appendix B--<A HREF="http://samba.anu.edu/samba/">Samba</A></B>
|
||
<UL>
|
||
<LI>
|
||
<A HREF="http://samba.anu.edu.au/cifs/docs/what-is-smb.html">Just What
|
||
is SMB?</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="http://samba.anu.edu.au/samba/docs/faq/sambafaq.html">Samba FAQ</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="http://samba.anu.edu.au/samba/docs/smb_serv/html/smb_se.html">Samba
|
||
HOW-TO</A></LI>
|
||
</UL>
|
||
<B>Appendix C--<A HREF="http://www.suse.com/~dosemu/doc-0.67/README.html">DOSEMU
|
||
Manual</A></B>
|
||
<BR>
|
||
|
||
<P>
|
||
<HR ALIGN=LEFT>
|
||
<BR><A NAME="Introduction"></A><B><FONT SIZE=+2>Introduction</FONT></B>
|
||
|
||
<P>Network Operating Systems (NOS) have many features and capabilities
|
||
that allow the Information Systems departments of most organizations to
|
||
better server your organization and help streamline work flow. Each NOS
|
||
has different features and a excels in different areas. Traditionally,
|
||
Novell Netware has been viewed as the best file/printer server, Unix was
|
||
viewed as the premiere application and database server and recently, Windows
|
||
NT has come in as a good choice for the smaller networks as a file/printer
|
||
server or application server. The market has become very aggressive with
|
||
each of these platforms branching out into each others market area. Microsoft
|
||
has expanded NT into the midrange server market once dominated by Novell
|
||
and is trying to get into the high end market which was once filled by
|
||
Unix venders such as Sun, Hewlett Packard and Silicone Graphics.
|
||
|
||
<P>I inherited an aging Novell Netware 3.11 server when I began my career
|
||
at the University of Nebraska Press that was on an under powered Pentium
|
||
90 and had older disk drives that were failing. I also wanted to expand
|
||
into other areas, so I knew this was going to be my first project. When
|
||
I began looking at my options to replace our aging Novell Netware server,
|
||
I of course turned first to the just released Windows NT Server 4.0. The
|
||
marketing materials, magazines and television advertisements all told me
|
||
that this was the one thing that would solve all my problems. The operating
|
||
system promised to be easier to setup and maintain than the Netware product
|
||
it was replacing and it could easily handle the 55 users on my network.
|
||
Fourteen months later, we are running Linux as our server.
|
||
|
||
<P>Linux is a completely free reimplementation of the POSIX specification,
|
||
with SYSV and BSD extensions (which means it looks like Unix, but does
|
||
not come from the same source code base), which is available in both source
|
||
code and binary form. Its copyright is owned by Linus Torvalds <torvalds@transmeta.com>
|
||
and other contributors, and is freely redistributable under the terms of
|
||
the GNU General Public License (GPL). A copy of the GPL is included with
|
||
the Linux source; you can also get a copy from ftp://prep.ai.mit.edu/pub/gnu/COPYING.
|
||
|
||
<P>Linux is not public domain, nor is it `shareware'. It is `free' software,
|
||
commonly called freeware, and you may give away or sell copies, but you
|
||
must include the source code or make it available in the same way as any
|
||
binaries you give or sell. If you distribute any modifications, you are
|
||
legally bound to distribute the source for those modifications. See the
|
||
GNU General Public License for details.
|
||
|
||
<P>Linux is still free as of version 2.0, and will continue to be free.
|
||
Because of the nature of the GPL to which Linux is subject, it would be
|
||
illegal for it to be made not free. Note carefully: the `free' part involves
|
||
access to the source code rather than money; it is perfectly legal to charge
|
||
money for distributing Linux, so long as you also distribute the source
|
||
code. This is a generalization; if you want the fine points, read the GPL.
|
||
|
||
<P>Linux runs on 386/486/Pentium machines with ISA, EISA, PCI and VLB busses.
|
||
MCA (IBM's proprietary bus) is not well-supported in 2.0.x and earlier
|
||
versions, but support has been added to the current development tree, 2.1.x.
|
||
If you are interested, see http://glycerine.itsmm.uni.edu/mca
|
||
|
||
<P>There is a port to multiple Motorola 680x0 platforms (currently running
|
||
on some Amigas, Ataris, and VME machines), which now works quite well.
|
||
It requires a 68020 with an MMU, a 68030, 68040, or a 68060, and also requires
|
||
an FPU. Networking and X now work. See news:comp.os.linux.m68k
|
||
|
||
<P>Linux runs well on DEC's Alpha CPU, currently supporting the "Jensen",
|
||
"NoName", "Cabriolet", "Universal Desktop Box" (better known as the Multia),
|
||
and many other platforms. For more information, see http://www.azstarnet.com/~axplinux/FAQ.html
|
||
|
||
<P>Linux runs well on Sun SPARCs; most sun4c and sun4m machines now run
|
||
Linux, with support for sun4 and sun4u in active development. Red Hat Linux
|
||
is (as of this writing) the only Linux distribution available for SPARCs;
|
||
see http://www.redhat.com/support/docs/rhl-sparc/
|
||
|
||
<P>Linux is being actively ported to the PowerPC architecture, including
|
||
PowerMac (Nubus and PCI), Motorola, IBM, and Be machines. See http://www.cs.nmt.edu/~linuxppc/
|
||
and http://www.linuxppc.org/
|
||
|
||
<P>Ports to other machines, including MIPS and ARM, are under way and showing
|
||
various amounts of progress. Don't hold your breath, but if you are interested
|
||
and able to contribute, you may well find other developers who wish to
|
||
work with you.
|
||
|
||
<P>Linux is no longer considered to be in beta testing, as version 1.0
|
||
was released on March 14, 1994. There are still bugs in the system, and
|
||
new bugs will creep up and be fixed as time goes on. Because Linux follows
|
||
the ``open development model'', all new versions will be released to the
|
||
public, whether or not they are considered ``production quality''. However,
|
||
in order to help people tell whether they are getting a stable version
|
||
or not, the following scheme has been implemented: Versions 1.x.y, where
|
||
x is an even number, are stable versions, and only bug fixes will be applied
|
||
as y is incremented. So from version 1.2.2 to 1.2.3, there were only bug
|
||
fixes, and no new features. Versions 1.x.y, where x is an odd number, are
|
||
beta-quality releases for developers only, and may be unstable and may
|
||
crash, and are having new features added to them all the time. From time
|
||
to time, as the current development kernel stabilizes, it will be frozen
|
||
as the new ``stable'' kernel, and development will continue on a new development
|
||
version of the kernel.
|
||
|
||
<P>The current stable version is 2.0.31 (this will continue to change as
|
||
new device drivers get added and bugs fixed), and development has also
|
||
started on the experimental 2.1.x kernels. If 2.0.x is too new for you,
|
||
you may want to stick with 1.2.13 for the time being. However, the latest
|
||
releases of 2.0 have proved quite stable. Do note that in order to upgrade
|
||
from 1.2 to 2.0, you need to upgrade some utilities as well; you may wish
|
||
to upgrade to the latest version of your Linux distribution in order to
|
||
obtain those utilities. The Linux kernel source code also contains a file,
|
||
Documentation/Changes, which explains these changes and more.
|
||
|
||
<P>Most versions of Linux, beta or not, are quite stable, and you can keep
|
||
using those if they do what you need and you don't want to be on the bleeding
|
||
edge. One site had a computer running version 0.97p1 (dating from the summer
|
||
of 1992) for over 136 days without an error or crash. (It would have been
|
||
longer if the backhoe operator hadn't mistaken a main power transformer
|
||
for a dumpster...) Others have posted uptimes in excess of a year. One
|
||
site still had a computer running Linux 0.99p15s over 600 days at last
|
||
report.
|
||
|
||
<P>One thing to be aware of is that Linux is developed using an open and
|
||
distributed model, instead of a closed and centralized model like much
|
||
other software. This means that the current development version is always
|
||
public (with up to a week or two of delay) so that anybody can use it.
|
||
The result is that whenever a version with new functionality is released,
|
||
it almost always contains bugs, but it also results in a very rapid development
|
||
so that the bugs are found and corrected quickly, often in hours, as many
|
||
people work to fix them.
|
||
|
||
<P>In contrast, the closed and centralized model means that there is only
|
||
one person or team working on the project, and they only release software
|
||
that they think is working well. Often this leads to long intervals between
|
||
releases, long waiting for bug fixes, and slower development. The latest
|
||
release of such software to the public is sometimes of higher quality,
|
||
but the development speed is generally much slower.
|
||
|
||
<P>As of October 24, 1997, the current stable version of Linux is 2.0.31,
|
||
and the latest development version is 2.1.59.
|
||
|
||
<P>I will begin this report by covering the areas that we were concerned
|
||
about and giving reasons that were chose options that we went with. I will
|
||
not get very technical in this fist section, but will cover in detail how
|
||
we implemented each part of the system and give examples of the configuration
|
||
files in section two.
|
||
<DIV ALIGN=right>
|
||
<HR ALIGN=RIGHT></DIV>
|
||
|
||
<DIV ALIGN=right><FONT SIZE=+4>Section 1</FONT></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="Outlining Our Situation"></A><FONT SIZE=+4>Outlining
|
||
Our Situation</FONT></DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Our Situation</FONT></B></DIV>
|
||
When I became the Information Systems Department manager for the University
|
||
of Nebraska Press I inherited a very tired and aging Novell Netware 3.1
|
||
server that was handling all the network serving duties for approximately
|
||
fifty users. This is not a large network and our needs are not out of the
|
||
ordinary, but this machine was due for replacement. Novell was on version
|
||
4.x, NT 4.0 had just come out and this machine was only a Pentium 90 with
|
||
data drives that were noisier than Nebraska's memorial stadium.
|
||
|
||
<P>It was time to begin the search for replacements and I had the same
|
||
issues to deal with that my predecessors had, plus some new ones. The main
|
||
issue was compatibility with our order fulfillment and inventory system
|
||
called The Cat's Pajamas. This system was originally developed on the Data
|
||
General line of mini and mainframe computers using its interpreted language.
|
||
The system was ported to PC servers (mainly Novell Netware) when a company
|
||
called Subject Wills ported the interpreter to the PC platform. It has
|
||
a character based user interface, stores all its data in flat indexed text
|
||
files and is pretty fast and stable on the Novell platform. Our new requirements
|
||
were for remote access for our warehouse, and if possible, access for the
|
||
five Macs that we have, but spend as little money as possible.
|
||
|
||
<P>I was not very interested in upgrading our current Netware license,
|
||
since at this time Novell was playing the CEO of the Month game which had
|
||
caused me to lose much of my confidence in the company. The next logical
|
||
choice was Microsoft Windows NT. I called Cats and asked if the application
|
||
would run on NT and they told me that they had a few installations and
|
||
things seemed to be running fine, but I would need a different version
|
||
of the DBC interpreter, which they uploaded for me. I proceeded to copy
|
||
the entire system and database to the NT server and logged on from my Windows
|
||
95 PC. I had to rewrite the batch file that Cats uses to start because
|
||
they were using Netware network commands, but I was able to get them changed
|
||
and get a session up.
|
||
|
||
<P>At this point I thought this looked very good, so I ordered the production
|
||
server. The server was a dual CPU Pentium 150 with built in Adaptec 2940UW
|
||
SCSI controller and 256MB of RAM. I thought this would be perfect to act
|
||
as the CATS server, file server and printer server for 50 people, especially
|
||
since Netware was doing this on a Pentium 90 with 64 MB of RAM. I got the
|
||
server a few weeks later, installed NT 4.0 and Cats. After I got Cats installed
|
||
I had our business department and Customer Service department try running
|
||
some large and CPU intensive reports on it and things seemed to run great,
|
||
so we pushed it into service. At this same time I was setting up a RedHat
|
||
Linux 4.1 machine on a Pentium 100 with 32 MB of RAM. I had used RedHat
|
||
Linux in my previous position with great luck as a web server and StreamWorks
|
||
audio/video server so I wanted to see if it could fit in here, but I didn't
|
||
know where or how.
|
||
|
||
<P>Life after moving Cats to NT was a nightmare. The system was crashing
|
||
two to three times a day with no reason that I could find. I was on the
|
||
phone with Microsoft and Cats constantly, but nobody could figure it out.
|
||
Microsoft had me apply Service Packs one through three and a few HotFixes,
|
||
which helped, but it still was crashing at least twice a week with the
|
||
infamous "Blue Screen of Death". After many weeks and about $1500.00 in
|
||
phone support from Microsoft, the technical support rep told me that I
|
||
should find a better software package than The Cat's Pajamas. This is was
|
||
not the solution I was looking for, since this is the package that a sizeable
|
||
percentage of presses our size nationwide are running, so I was forced
|
||
to bring the old Novell server back into production until I could figure
|
||
something out.
|
||
|
||
<P>By this time I had upgraded the RedHat Linux machine to version 4.2,
|
||
but it still wasn't doing much, so I added two IDE 1.6 GB hard drives,
|
||
installed SAMBA and copied CATS over to this computer to play a little.
|
||
I was able to connect from my Windows 95 computer and run Cats without
|
||
any modifications to the batch file I had created for the NT server. I
|
||
had the Business manager and Customer Service manager try the reports again
|
||
and everything seemed fine, but I still had my doubts, so I just kept the
|
||
system up for myself and the IS department to test until a later date.
|
||
|
||
<P>The Netware server was still holding on and doing its job until I got
|
||
a call one Thursday night at about 9:00 from our Customer Service manager.
|
||
He had been running the reindexing program to prepare for the month-end
|
||
closing that was to start Friday, but the server had crashed. I worked
|
||
on it until about 12:30 am and finally got it working, but the whole thing
|
||
died again Friday morning at about 6:30 and again at 7:00, so I knew we
|
||
were in trouble. The only option left was to replace the server now and
|
||
the only thing I had was the Linux server, so I restored Cats off our Windows
|
||
NT tape backup machine to the Linux server and changed the login scripts
|
||
to connect the users to this server for the Cats drives. Within one hour,
|
||
we were back in operation.
|
||
|
||
<P>After completing the morning duties, we normally run a complete Cats
|
||
backup before we continue with closing which usually would take two hours
|
||
to complete on the Netware server. The Linux machine was able to do the
|
||
entire backup in 45 minutes, cutting a little over an hour off our closing
|
||
time. This increase in speed came from a decrease in hardware because the
|
||
Linux server was running only 32 MB in RAM and IDE hard drives where the
|
||
Netware server had 64 MB in RAM and SCSI drives. The speed increase has
|
||
been noticed in daily work also. I get almost daily remarks that the system
|
||
seems to be running faster and more reliable.
|
||
|
||
<P>We have recently upgraded the CPU to a 200Mhz Pentium and have upgraded
|
||
the Memory to 64 MB to handle the newest plans of making this server replace
|
||
our Windows NT file/printer server, which still crashes about twice a month
|
||
for no reason, even after an additional $1,500 in tech support with Microsoft.
|
||
This single computer running RedHat Linux will replace both our Novell
|
||
Netware 3.11 server and our Windows NT 4.0 server, while decreasing total
|
||
hardware requirements. With the recent advances from the Samba team in
|
||
supporting the NT domain structure and the December 1997 release of RedHat
|
||
5.0, I expect to have a very efficient and inexpensive server for our Windows
|
||
95, Windows NT and Macintosh clients.
|
||
<DIV ALIGN=right>
|
||
<HR ALIGN=RIGHT></DIV>
|
||
|
||
<DIV ALIGN=right><FONT SIZE=+4>Section 2</FONT></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="Why We Chose RedHat Linux"></A><FONT SIZE=+4>Why
|
||
We Chose RedHat Linux</FONT></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="Linux Features"></A><B><FONT SIZE=+2>Linux Features</FONT></B></DIV>
|
||
Linux is a very feature rich operating system. Many of its features are
|
||
not found on its commercial competitor Windows NT due to the fact that
|
||
Unix has been in constant development since it was invented in the early
|
||
1970's. Even though Linux has only been around since the early 90's, it
|
||
benefits from the rich archives of Unix applications and utilities because
|
||
of its POSIX compliance. Linux is unique in that the kernel does not use
|
||
any code from previous Unix implementations, but can still tap into the
|
||
libraries of BSD and System V distributions. I feel the strongest feature
|
||
of Linux is the Internet itself and the many technical users that are responsible
|
||
for the development of the many drivers and ports to other hardware platforms.
|
||
Many Intel platform bug fixes are release for Linux before they are release
|
||
in other ``mainstream'' operating systems mainly due to the fact the users
|
||
are also the developers.
|
||
<UL>
|
||
<LI>
|
||
· multitasking: several programs running at once.</LI>
|
||
|
||
<LI>
|
||
· multi-user: several users on the same machine at once (and no
|
||
two-user licenses!)..</LI>
|
||
|
||
<LI>
|
||
· multiplatform: runs on many different CPUs, not just Intel.</LI>
|
||
|
||
<LI>
|
||
· multiprocessor: SMP support is available on the Intel and SPARC
|
||
platforms (with work currently in progress on other platforms), and Linux
|
||
is used in several loosely-coupled MP applications, including Beowulf systems
|
||
(see http://cesdis.gsfc.nasa.gov/linux-web/beowulf/beowulf.html) and the
|
||
Fujitsu AP1000+ SPARC-based supercomputer.</LI>
|
||
|
||
<LI>
|
||
· runs in protected mode on the 386.</LI>
|
||
|
||
<LI>
|
||
· has memory protection between processes, so that one program can't
|
||
bring the whole system down.</LI>
|
||
|
||
<LI>
|
||
· demand loads executables: Linux only reads from disk those parts
|
||
of a program that are actually used.</LI>
|
||
|
||
<LI>
|
||
· shared copy-on-write pages among executables. This means that
|
||
multiple process can use the same memory to run in. When one tries to write
|
||
to that memory, that page (4KB piece of memory) is copied somewhere else.
|
||
Copy-on-write has two benefits: increasing speed and decreasing memory
|
||
use.</LI>
|
||
|
||
<LI>
|
||
· virtual memory using paging (not swapping whole processes) to
|
||
disk: to a separate partition or a file in the filesystem, or both, with
|
||
the possibility of adding more swapping areas during runtime (yes, they're
|
||
still called swapping areas). A total of 16 of these 128 MB swapping areas
|
||
can be used at once, for a theoretical total of 2 GB of usable swap space.
|
||
It is simple to increase this if necessary, by changing a few lines of
|
||
source code.</LI>
|
||
|
||
<LI>
|
||
· a unified memory pool for user programs and disk cache, so that
|
||
all free memory can be used for caching, and the cache can be reduced when
|
||
running large programs.</LI>
|
||
|
||
<LI>
|
||
· dynamically linked shared libraries (DLL's), and static libraries
|
||
too, of course.</LI>
|
||
|
||
<LI>
|
||
· does core dumps for post-mortem analysis, allowing the use of
|
||
a debugger on a program not only while it is running but also after it
|
||
has crashed.</LI>
|
||
|
||
<LI>
|
||
· mostly compatible with POSIX, System V, and BSD at the source
|
||
level.</LI>
|
||
|
||
<LI>
|
||
· through an iBCS2-compliant emulation module, mostly compatible
|
||
with SCO, SVR3, and SVR4 at the binary level.</LI>
|
||
|
||
<LI>
|
||
· all source code is available, including the whole kernel and all
|
||
drivers, the development tools and all user programs; also, all of it is
|
||
freely distributable. Plenty of commercial programs are being provided
|
||
for Linux without source, but everything that has been free, including
|
||
the entire base operating system, is still free.</LI>
|
||
|
||
<LI>
|
||
· POSIX job control.</LI>
|
||
|
||
<LI>
|
||
· pseudoterminals (pty's).</LI>
|
||
|
||
<LI>
|
||
· 387-emulation in the kernel so that programs don't need to do
|
||
their own math emulation. Every computer running Linux appears to have
|
||
a math coprocessor. Of course, if your computer already contains an FPU,
|
||
it will be used instead of the emulation, and you can even compile your
|
||
own kernel with math emulation removed, for a small memory gain.</LI>
|
||
|
||
<LI>
|
||
· support for many national or customized keyboards, and it is fairly
|
||
easy to add new ones dynamically.</LI>
|
||
|
||
<LI>
|
||
· multiple virtual consoles: several independent login sessions
|
||
through the console, you switch by pressing a hot-key combination (not
|
||
dependent on video hardware). These are dynamically a located; you can
|
||
use up to 64.</LI>
|
||
|
||
<LI>
|
||
· Supports several common filesystems, including minix, Xenix, and
|
||
all the common system V file systems, and has an advanced filesystem of
|
||
its own, which offers filesystems of up to 4 TB, and names up to 255 characters
|
||
long.</LI>
|
||
|
||
<LI>
|
||
· transparent access to MS-DOS partitions (or OS/2 FAT partitions)
|
||
via a special filesystem: you don't need any special commands to use the
|
||
MS-DOS partition, it looks just like a normal Unix filesystem (except for
|
||
funny restrictions on filenames, permissions, and so on). MS-DOS 6 co pressed
|
||
partitions do not work at this time without a patch (dmsdosfs). VFAT (WNT,
|
||
Windows 95) support is available in Linux 2.0 ·special filesystem
|
||
called UMSDOS which allows Linux to be installed on a DOS filesystem.</LI>
|
||
|
||
<LI>
|
||
· read-only HPFS-2 support for OS/2 2.1</LI>
|
||
|
||
<LI>
|
||
· HFS (Macintosh) file system support is available separately as
|
||
a module.</LI>
|
||
|
||
<LI>
|
||
· CD-ROM filesystem which reads all standard formats of CD-ROMs.</LI>
|
||
|
||
<LI>
|
||
· TCP/IP networking, including ftp, telnet, NFS, etc.</LI>
|
||
|
||
<LI>
|
||
· AppleTalk server</LI>
|
||
|
||
<LI>
|
||
· Netware client and server</LI>
|
||
|
||
<LI>
|
||
· Lan Manager (SMB) client and server</LI>
|
||
|
||
<LI>
|
||
· Many networking protocols: the base protocols available in the
|
||
latest development kernels include TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP
|
||
(AppleTalk), NetBEUI, Netrom, and others. Stable ne work protocols included
|
||
in the stable kernels currently include TCP, IPv4, IPX, DDP, and AX.25.</LI>
|
||
</UL>
|
||
|
||
<DIV ALIGN=right><A NAME="Reliability"></A><B><FONT SIZE=+2>Reliability</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>The system has to be available 365 days a year.</I></DIV>
|
||
The Linux server has proven to be as reliable as any other server operating
|
||
system I have ever used, and more reliable than most. My past experience
|
||
includes managing Novell Netware, Windows NT 3.51 and 4.0 and Irix (Silicon
|
||
Graphics) servers. I must say that Novell has always been a steady performer,
|
||
but I have always felt that it was more complex than it needed to be. The
|
||
Silicon Graphics machines were always rock solid, but they should be when
|
||
you pay more than $20,000 for a single server.
|
||
|
||
<P>My Linux server was initially setup in January 1997 as a test platform
|
||
to see if it could handle being a production server. At this time I had
|
||
installed a copy of The Cat's Pajamas, Apache, StreamWorks (audio/video
|
||
server) and Samba. Using Samba, I was able to connect the Information Systems
|
||
Department to this server so we could run Cats and test the audio/video
|
||
server. A typical day of testing the system would include reindexing and
|
||
reformatting Cats while serving multiple 100 megabyte video files and acting
|
||
as a file server. The Linux machine was able to handle all of this while
|
||
running on only 32 megabytes of RAM and using a Pentium 100 CPU.
|
||
|
||
<P>From January 1997 to July 1997, we experienced only three shutdowns
|
||
of this server, two of which were caused by power failures in the building
|
||
and the third time was due to stupidity on the administrator's part. This
|
||
reliability was a key factor in our judgment to use Linux as our server
|
||
platform.
|
||
|
||
<P>The installation of NT was simple, and it was easy to get the system
|
||
connected to all the printers, but it proved to be unreliable. We were
|
||
experiencing crashes every day, even after installing service packs one
|
||
and two. I then installed a hot fix to service pack two which was to fix
|
||
errors in the Macintosh services which helped. I was down to crashing just
|
||
one to two times a month. I also tried to run Cats off this system, which
|
||
was a complete disaster since we could not get more than five users at
|
||
a time in Cats, and reports would take forever to run.
|
||
<DIV ALIGN=right><A NAME="Cross platform"></A><B><FONT SIZE=+2>Cross platform</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>The new server must be able to serve the Mac users
|
||
as well as the Windows clients.</I></DIV>
|
||
The server must be able to allow connections from Windows and Macintosh
|
||
clients. All major server operating system allow for this, including Linux.
|
||
To server Windows clients, Linux uses a package called Samba. Samba is
|
||
server software for computers running under Unix or another Unix-like operating
|
||
systems with standard TCP/IP available. Samba, as it stands right now,
|
||
depends on Unix file structure, permissions, system calls and services.
|
||
It provides file and printer services for clients using some variants of
|
||
SMB (Server Message Block) protocol. SMB is a "native" networking protocol
|
||
used by MS-DOS based (in a very broad sense, including derivatives) clients.
|
||
They include those from IBM, ICL, Microsoft and even one particular Novell
|
||
product. In particular clients are distributed with `Windows for Workgroups',
|
||
`Windows 95', 'Windows NT', 'OS/2 Warp and others.
|
||
|
||
<P>Some of Samba's server cousins include DEC Pathworks, Microsoft LAN
|
||
Manager/X, OS/2 Lan Manager, IBM LAN Server, Syntax Server and Windows
|
||
NT Server. Some clients such as Windows 95/Workgroups or Warp Connect can
|
||
also act as low volume servers with limited management facilities.
|
||
|
||
<P>SMB is becoming very popular, mainly owing to these factors:
|
||
<UL>
|
||
<LI>
|
||
· Windows 95 has dial-up access to PPP servers with an included
|
||
service, and this service allows one to "browse" to public shares on the
|
||
Internet.</LI>
|
||
|
||
<LI>
|
||
· Samba is "free" and this is a lot less expensive than Novell!
|
||
(friendlier too!)</LI>
|
||
|
||
<LI>
|
||
· With Samba, Unix servers, well connected to a global network,
|
||
can speak in a "native" protocol of clients. It is much simpler to maintain
|
||
one more protocol on a capable server than teach new tricks to multiple
|
||
clients which were never meant to do something else.</LI>
|
||
|
||
<LI>
|
||
· There is an established, well tested way of doing SMB over TCP/IP
|
||
described in publicly available RFC 1001 and RFC 1002 documents. This means
|
||
that SMB has a head start when it comes to Internet integration.</LI>
|
||
</UL>
|
||
|
||
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH="667" HEIGHT="177" >
|
||
<TR>
|
||
<TD WIDTH="50%" HEIGHT="170"> <IMG SRC="./gx/coldiron/netatalk.gif" NATURALSIZEFLAG="0" HEIGHT=125 WIDTH=384 ALIGN=BOTTOM></TD>
|
||
|
||
<TD WIDTH="50%"> On the Macintosh side, Netatalk provides the connectivity
|
||
services. Netatalk is a Unix implementation of the AppleTalk Protocol Suite,
|
||
originally for BSD-derived systems. It includes support for routing AppleTalk,
|
||
serving Unix and AFS file systems over AFP (AppleShare), serving Unix printers
|
||
and accessing AppleTalk printers over PAP. A number of other minor printing
|
||
and debugging utilities are also included.</TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<DIV ALIGN=right><A NAME="Compatibility with Existing Applications"></A></DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Compatibility with Existing Applications</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>This server would have to be compatible with The Cat's
|
||
Pajamas</I></DIV>
|
||
When we tried to move to Windows NT, we were given a migration guideline
|
||
from The Cats Pajama's to follow. The instructions were simple and the
|
||
entire migration took little time, but performance was terrible. We needed
|
||
a system that could handle serving the system to the network and help maintain
|
||
the integrity of the Cats data files. I have been told that Unix heavily
|
||
caches file I/O activity (more so than Windows NT or Novell Netware), so
|
||
this added to my hopes that Linux would be a strong server platform for
|
||
Cats, which is a file I/O intensive application.
|
||
|
||
<P>My hopes were verified when we formally flipped the switch on the Linux
|
||
server and turned off the Novell server. Cats ran smoothly and gracefully
|
||
scaled up to the normal daily user level without any slowdowns or misfortunes.
|
||
The Novell Netware server would normally experience periods when the system
|
||
would slow down severely, and then speed back up to normal levels after
|
||
5 to 10 minutes. During these slowdowns, Cat's would become virtually useless,
|
||
and sometimes users would be booted out of Cat's totally.
|
||
|
||
<P>Another key area that I needed to be compatible with was the world Wide
|
||
Web. I needed to be able to get CGI programs that were already tested and
|
||
in use without having to develop them all myself. I also wanted to be able
|
||
to get help easily and cheaply on setting up the web server and fixing
|
||
it when it breaks. Linux uses Apache, the most widely used web server in
|
||
the world. I can easily get support from mailing lists , news groups and
|
||
Internet BBS's.
|
||
<BR><A HREF="http://www.netcraft.com/survey/">(http://www.netcraft.com/survey/)</A>
|
||
<DIV ALIGN=right><A NAME="Speed"></A><B><FONT SIZE=+2>Speed</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>After installing the Windows NT server, many users
|
||
complained about slows access times for the network drives.</I></DIV>
|
||
My users equate network drive access speed with network quality. They were
|
||
very pleased with the speed of saving and opening files when they were
|
||
on the Novell Netware server, but expressed disappointment in the speed
|
||
of saving and opening files when we switch to the Windows NT server. One
|
||
way that I have very unscientifically measured the speed of the Linux server
|
||
was when we were using a Windows NT 4.0 machine to backup the Cats files
|
||
off the Linux machine. This operation took 45 minutes while the exact same
|
||
operation on the Novell server would take at least an hour longer. Currently
|
||
I am backing up CATS by creating a gzipped tar file directly on the Linux
|
||
server and it takes a little less than 45 minutes. Below is part of the
|
||
output from the df command that shows the drive I have Cats on. This shows
|
||
the current size of our Cats installation so you can get an idea of how
|
||
much information is backed up in 45 minutes.
|
||
|
||
<P>Filesystem 1024-blocks Used Available Capacity Mounted on
|
||
|
||
<P><FONT FACE="Courier New,Courier">/dev/hdc1 2417493 1584580 707923 69%
|
||
/usr/local/samba-sys</FONT>
|
||
<DIV ALIGN=right><A NAME="Inexpensive"></A><B><FONT SIZE=+2>Inexpensive</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>I could not afford to go through another costly installation
|
||
</I>.</DIV>
|
||
During the twelve months of running Windows NT 4.0 server, I have spent
|
||
more than $3,000 in technical support with Microsoft to remedy various
|
||
problems, including the frequent crashes and problems running Cats. The
|
||
fix for the crashes was always ``Install the latest service pack or hot
|
||
fix and call us back tomorrow.'' The fix for Cats was ``Get rid of The
|
||
Cat's Pajamas and find a better system which was more Windows compatible
|
||
to replace it.'' I wish I would have documented that support call with
|
||
Microsoft so I had the name of the tech rep.
|
||
|
||
<P>Technical support is no the only area of expense involved with Windows
|
||
NT. The table below shows typical applications and the cost for each platform.
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 WIDTH="438" BGCOLOR="#CCCCCC" NOSAVE >
|
||
<TR VALIGN=TOP NOSAVE>
|
||
<TD ALIGN=CENTER WIDTH="19%" BGCOLOR="#000000" NOSAVE><B><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Service</FONT></FONT></B></TD>
|
||
|
||
<TD ALIGN=CENTER WIDTH="26%" BGCOLOR="#000000" NOSAVE><B><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Microsoft</FONT></FONT></B></TD>
|
||
|
||
<TD ALIGN=CENTER WIDTH="16%" BGCOLOR="#000000" NOSAVE><B><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Cost</FONT></FONT></B></TD>
|
||
|
||
<TD ALIGN=CENTER WIDTH="26%" BGCOLOR="#000000" NOSAVE><B><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Linux</FONT></FONT></B></TD>
|
||
|
||
<TD ALIGN=CENTER WIDTH="13%" BGCOLOR="#000000" NOSAVE><B><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Cost</FONT></FONT></B></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Operating
|
||
System</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%" NOSAVE><FONT SIZE=-2>Windows NT Server 4.0</FONT></TD>
|
||
|
||
<TD ALIGN=RIGHT WIDTH="16%"><FONT SIZE=-2>$2,950.00</FONT></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Linux RedHat 5.0 (CD)</FONT></TD>
|
||
|
||
<TD ALIGN=RIGHT WIDTH="13%"><FONT SIZE=-2>$49.00</FONT></TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Web
|
||
Server</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Internet Information Server</FONT></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Apache</FONT></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>E-Mail</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Exchange 5.0 Enterprise</FONT></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$6,400.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Sendmail,UW IMAP,POP-3</FONT></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Telnet
|
||
server</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>SLNet (4 user licensee)</FONT></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$300.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Included free unlimited licensee</FONT></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>FTP
|
||
server</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%" NOSAVE><FONT SIZE=-2>Included with IIS</FONT></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%" NOSAVE><FONT SIZE=-2>Included</FONT></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Relational
|
||
Database</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%" NOSAVE><FONT SIZE=-2>SQL Server 6.5</FONT></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$10,650.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Just Logic SQL</FONT></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$219.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Proxy
|
||
Server</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Microsoft Proxy Server</FONT></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$995.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Squid Object Cache</FONT></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Backup
|
||
Software</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>Included</FONT></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>BRU, included</FONT></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$0.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Total
|
||
Cost</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$20,995.00</FONT></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><FONT SIZE=-2>$268.00</FONT></DIV>
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE></TD>
|
||
|
||
<TD WIDTH="26%"></TD>
|
||
|
||
<TD WIDTH="16%"></TD>
|
||
|
||
<TD WIDTH="26%"></TD>
|
||
|
||
<TD WIDTH="13%"></TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Number
|
||
of Users</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>100</FONT></TD>
|
||
|
||
<TD WIDTH="16%"></TD>
|
||
|
||
<TD WIDTH="26%"><FONT SIZE=-2>100</FONT></TD>
|
||
|
||
<TD WIDTH="13%"></TD>
|
||
</TR>
|
||
|
||
<TR ALIGN=RIGHT VALIGN=TOP NOSAVE>
|
||
<TD WIDTH="19%" BGCOLOR="#000000" NOSAVE><FONT COLOR="#FFFFFF"><FONT SIZE=-2>Cost
|
||
per seat</FONT></FONT></TD>
|
||
|
||
<TD WIDTH="26%"></TD>
|
||
|
||
<TD WIDTH="16%">
|
||
<DIV ALIGN=right><B><FONT SIZE=-2>$212.95</FONT></B></DIV>
|
||
</TD>
|
||
|
||
<TD WIDTH="26%"></TD>
|
||
|
||
<TD WIDTH="13%">
|
||
<DIV ALIGN=right><B><FONT SIZE=-2>$2.68</FONT></B></DIV>
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<DIV ALIGN=right><A NAME="Low hardware requirements"></A></DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Low hardware requirements</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>I did not want to build the next Cray just to serve
|
||
55 users.</I></DIV>
|
||
As at most University Press's, our operating budget is relatively small,
|
||
especially when compared to commercial business and some other campus departments.
|
||
This financial restriction did not allow me to purchase a server hardware
|
||
platform that I would have like to have for the NT server, but the system
|
||
was not low-end either.
|
||
|
||
<P><FONT SIZE=-1>Our Windows NT 4.0 server:</FONT>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 WIDTH="225" >
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="33%"><B><FONT SIZE=-1>OS</FONT></B></TD>
|
||
|
||
<TD WIDTH="67%"><FONT SIZE=-1>Windows NT Server 4.0 (SP3)</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="33%"><B><FONT SIZE=-1>CPU</FONT></B></TD>
|
||
|
||
<TD WIDTH="67%"><FONT SIZE=-1>2 x Pentium 150</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="33%"><B><FONT SIZE=-1>RAM</FONT></B></TD>
|
||
|
||
<TD WIDTH="67%"><FONT SIZE=-1>256 Megabytes</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="33%"><B><FONT SIZE=-1>SCSI</FONT></B></TD>
|
||
|
||
<TD WIDTH="67%"><FONT SIZE=-1>Adaptec 2940</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="33%"></TD>
|
||
|
||
<TD WIDTH="67%"><FONT SIZE=-1>-All data drives are SCSI</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="33%"></TD>
|
||
|
||
<TD WIDTH="67%"><FONT SIZE=-1>-Boot drive is IDE</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="33%"><B><FONT SIZE=-1>Ethernet</FONT></B></TD>
|
||
|
||
<TD WIDTH="67%"><FONT SIZE=-1>NE2000 clone</FONT></TD>
|
||
</TR>
|
||
</TABLE>
|
||
<FONT SIZE=-1>Our RedHat Linux 4.2 server:</FONT>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 WIDTH="227" >
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="34%"><B><FONT SIZE=-1>OS</FONT></B></TD>
|
||
|
||
<TD WIDTH="66%"><FONT SIZE=-1>RedHat 4.2</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="34%"><B><FONT SIZE=-1>CPU</FONT></B></TD>
|
||
|
||
<TD WIDTH="66%"><FONT SIZE=-1>Single Pentium 200</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="34%"><B><FONT SIZE=-1>RAM</FONT></B></TD>
|
||
|
||
<TD WIDTH="66%"><FONT SIZE=-1>64 megabytes</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="34%"><B><FONT SIZE=-1>SCSI</FONT></B></TD>
|
||
|
||
<TD WIDTH="66%"><FONT SIZE=-1>DPT SmartCache IV</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="34%"></TD>
|
||
|
||
<TD WIDTH="66%"><FONT SIZE=-1>-RAID Station 3 (RAID 5)</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="34%"></TD>
|
||
|
||
<TD WIDTH="66%"><FONT SIZE=-1>-Boot drive is IDE</FONT></TD>
|
||
</TR>
|
||
|
||
<TR VALIGN=TOP>
|
||
<TD ALIGN=RIGHT WIDTH="34%"><B><FONT SIZE=-1>Ethernet</FONT></B></TD>
|
||
|
||
<TD WIDTH="66%"><FONT SIZE=-1>NE2000 clone</FONT></TD>
|
||
</TR>
|
||
</TABLE>
|
||
<I><FONT SIZE=-1>The RAID which is listed on the Linux server was not purchased
|
||
strictly for the Linux server, but was purchased to be placed on whatever
|
||
server we decided to put into production.</FONT></I>
|
||
<DIV ALIGN=right><A NAME="Ease of administration"></A><B><FONT SIZE=+2>Ease
|
||
of administration</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>For myself and staff</I> .</DIV>
|
||
|
||
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH="450" >
|
||
<TR>
|
||
<TD WIDTH="41%"><IMG SRC="./gx/coldiron/control1.gif" NATURALSIZEFLAG="3" HEIGHT=392 WIDTH=157 ALIGN=BOTTOM></TD>
|
||
|
||
<TD WIDTH="59%">Unix usually gets the standard rap of being difficult to
|
||
manage and requiring a steep learning curve. While many of the tools that
|
||
will be used to manage the system are still command line based, a growing
|
||
number are graphical and comparable to Windows in ease of use. This is
|
||
especially true with the RedHat distribution, which includes a graphical
|
||
control panel which allows the administrator to change system setting without
|
||
working through the many text files which store this information. The control
|
||
panels I use the most are the ones which setup the printers, file system,
|
||
users and packages. If you use the included RedHat Package manager to install
|
||
new applications, they are listed in the package manager, which allows
|
||
you to graphically see what applications are installed on your system and
|
||
remove them if wanted, much like the uninstall option on Microsoft Windows.
|
||
|
||
<P><IMG SRC="./gx/coldiron/control2.gif" NATURALSIZEFLAG="3" HEIGHT=338 WIDTH=492 ALIGN=BOTTOM></TD>
|
||
</TR>
|
||
</TABLE>
|
||
<IMG SRC="./gx/coldiron/control3.gif" NATURALSIZEFLAG="3" HEIGHT=265 WIDTH=494 ALIGN=BOTTOM>
|
||
<DIV ALIGN=right><A NAME="Simple upgrade path"></A><B><FONT SIZE=+2>Simple
|
||
upgrade path</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><I>I don't want to start over each time a new version
|
||
comes out.</I></DIV>
|
||
RedHat Linux provides a very simple upgrade system in its installation
|
||
set. The upgrade is actually better than the Microsoft Windows NT upgrade
|
||
path, since you do not have to uninstall the previous version first.
|
||
|
||
<P>While it is not required that you uninstall the previous version of
|
||
Windows NT before installing the current release (4.0), it is recommended.
|
||
This can be a very intensive installation, since you would need to setup
|
||
all the user accounts again, along with reinstalling any software and automated
|
||
systems and scripts.
|
||
|
||
<P>When I upgraded from RedHat 4.1 to 4.2, the installation when smoothly
|
||
whiteout any problems. While this was not a major revision step, RedHat
|
||
has assured me that the soon to be released version 5.0 will offer a smooth
|
||
transition from 4.2.
|
||
|
||
<P><FONT SIZE=-1>From the RedHat Linux manual:</FONT>
|
||
<BR>
|
||
<CENTER><TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="50%" NOSAVE >
|
||
<TR NOSAVE>
|
||
<TD NOSAVE><FONT SIZE=-2>1.5 Upgrading from a Prior Version</FONT>
|
||
|
||
<P><FONT SIZE=-2>The installation process for Red Hat Linux 4.2 includes
|
||
the ability to upgrade from prior versions of Red Hat Linux (2.0, 2.1,
|
||
3.0.3, 4.0, and 4.1) which are based on RPM technology. Upgrading your
|
||
system installs the modular 2.0.x kernel as well as updated versions of
|
||
the packages which are installed on your machine. The upgrade process preserves
|
||
existing configuration files using a .rpmsave extension (e.g., sendmail.cf.rpmsave)
|
||
and leaves a log telling what actions it took in /tmp/upgradelog. As software
|
||
evolves, configuration file formats can change, so you should carefully
|
||
compare your original configuration files to the new files before integrating
|
||
your changes.</FONT>
|
||
|
||
<P><FONT SIZE=-2>To upgrade a Red Hat Linux system, you must use a boot
|
||
floppy (and possibly a supplemental floppy), just as if you were performing
|
||
a full install. After selecting the medium to install from (and setting
|
||
up networking information if it's required), the installation procedure
|
||
prompts you to either Install or Upgrade; select Upgrade. This upgrade
|
||
procedure is the functional equivalent of running the upgrade script in
|
||
prior versions of Red Hat Linux.</FONT>
|
||
<CENTER><IMG SRC="./gx/coldiron/upgrade-install.gif" NATURALSIZEFLAG="0" HEIGHT=214 WIDTH=319 ALIGN=BOTTOM></CENTER>
|
||
|
||
|
||
<P><FONT SIZE=-2>Please note that some upgraded packages may ``depend''
|
||
on other packages which may not be installed on your system. The upgrade
|
||
procedure takes care of these dependencies, but it may need to install
|
||
additional packages in order to satisfy them.</FONT> </TD>
|
||
</TR>
|
||
</TABLE></CENTER>
|
||
|
||
<BR>
|
||
<DIV ALIGN=right><A NAME="Remote control and administration"></A></DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Remote control and administration</FONT></B></DIV>
|
||
One of the most attractive features of Linux (or Unix in general) is the
|
||
ability to truly remotely control the server. Since Linux comes with a
|
||
telnet server built in, you can use virtually any computer, regardless
|
||
of operating system to telnet into the computer to do all administrative
|
||
tasks. To remotely administer a Windows NT server, you must purchase a
|
||
separate application to allow remote control. The most popular program
|
||
for this is PCAnywhere by Symantec. This approach can become costly because
|
||
you must purchase a copy for the server to act as the host, and a copy
|
||
for each computer that needs to remotely control the server. How many remote
|
||
computers need to control the server? This depends on each installation,
|
||
but I have found that it save me a lot of running by having the ability
|
||
to control the server from every PC on my network, and from home.
|
||
|
||
<P>Telnet is text only, so this will be a drawback for many, but luckily
|
||
for us, Linux supports X Windows. X Windows can be used locally on the
|
||
server's console, like Windows NT, but can also be run remotely from any
|
||
computer that can run an X client. These remote terminals can by other
|
||
computers running Linux, or any other flavor of Unix and many X clients
|
||
can be downloaded or purchased for Windows, Windows NT and Macintosh computers.
|
||
Running X terminals does require more bandwidth, so I prefer just telneting
|
||
into the server.
|
||
|
||
<P>Another nice feature is the ability to display results of various system
|
||
utilities in a web page. One of the things our Customer Service manager
|
||
likes to know is which users have which files open and locked while using
|
||
Cats. I wrote a simple Perl script to run the smbstatus program and print
|
||
the results as a web page.
|
||
|
||
<P>The output web page:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR NOSAVE>
|
||
<TD NOSAVE><B><FONT FACE="Courier New,Courier">Snapshot of users for: Fri
|
||
Dec 5 </FONT> </B>
|
||
|
||
<P><B><FONT FACE="Courier New,Courier">11:41:18 CST 1997 </FONT> </B>
|
||
|
||
<P><FONT FACE="Courier New,Courier">This page shows currently logged on
|
||
users and locked files for the UNPLINUX server. </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">Right-click this page and select REFRESH
|
||
or RELOAD to force an update </FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier">Samba version 1.9.17p1 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">Service uid gid pid machine </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">---------------------------------------------- </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">cdrom root root 11697 enterprise (129.93.31.35)
|
||
Thu Dec 4 16:35:23 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">quinn root root 11697 enterprise (129.93.31.35)
|
||
Thu Dec 4 16:35:23 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">M-DATA cbrumm cbrumm 11435 ds9 (129.93.31.14)
|
||
Thu Dec 4 16:08:16 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">programs root root 11697 enterprise
|
||
(129.93.31.35) Thu Dec 4 16:35:23 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">L-NE cbrumm cbrumm 11435 ds9 (129.93.31.14)
|
||
Thu Dec 4 16:08:29 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">N-DBC cbrumm cbrumm 11435 ds9 (129.93.31.14)
|
||
Thu Dec 4 16:08:29 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">O-WORK cbrumm cbrumm 11435 ds9 (129.93.31.14)
|
||
Thu Dec 4 16:08:29 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">P-HIST cbrumm cbrumm 11435 ds9 (129.93.31.14)
|
||
Thu Dec 4 16:08:29 1997 </FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier"><snip> </FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier">Locked files: </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">Pid DenyMode R/W Name </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">------------------------------ </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">19818 DENY_NONE RDWR fileauth.txt
|
||
Fri Dec 5 11:41:14 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">21212 DENY_NONE RDWR fileauth.txt
|
||
Fri Dec 5 11:40:28 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">20590 DENY_NONE RDWR fileauth.txt
|
||
Fri Dec 5 11:38:56 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">21384 DENY_NONE RDWR fileauth.txt
|
||
Fri Dec 5 11:06:15 1997 </FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier"><snip> </FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier">19818 DENY_NONE RDWR filebac2.isi Fri
|
||
Dec 5 11:02:36 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">20590 DENY_NONE RDWR filebac2.isi
|
||
Fri Dec 5 10:14:44 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">19818 DENY_NONE RDWR fileauth.isi
|
||
Fri Dec 5 11:41:14 1997 </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">21212 DENY_NONE RDWR fileauth.isi
|
||
Fri Dec 5 11:40:28 1997 </FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier">Share mode memory usage (bytes): </FONT>
|
||
<BR><FONT FACE="Courier New,Courier">92584(90%) free + 7728(7%) used +
|
||
2088(2%) overhead = 102400(100%) total </FONT></TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<BR>
|
||
<BR>The script that generates the above page:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD><FONT FACE="Courier New,Courier">#!/usr/bin/perl</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># ******************************************************</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># * *</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># * Author: Quinn P. Coldiron *</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># * Date: 12-1-97 *</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># * Program: This program shows current
|
||
users of the *</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># * Samba server. *</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># * *</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># ******************************************************</FONT>
|
||
<BR><FONT FACE="Courier New,Courier"># Use cgi-lib CGI library for PERL.</FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier">require "/home/httpd/cgi-bin/cgi-lib.pl";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">$date = `date`;</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">$users = `./smbstatus`;</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">#Get the data from the form.</FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier">&ReadParse;</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print &PrintHeader;</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "<HTML>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "<HEAD>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "<TITLE>Logged In Samba Users</TITLE>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "</HEAD>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "<BODY BGCOLOR= #D4D4D4>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "<H1>Snapshot of users for:
|
||
$date</H1>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "This page shows currently logged
|
||
on users and locked files for the UNPLINUX server.<br>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "Right-click this page and select
|
||
REFRESH or RELOAD to force an update<br>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "<PRE>$users</PRE>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "</BODY>\n";</FONT>
|
||
<BR><FONT FACE="Courier New,Courier">print "</HTML>\n";</FONT> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
|
||
<P>Windows NT provides a graphical program to show a chart us system performance,
|
||
but it is recommended that you do not run it on the server that you want
|
||
to monitor, because the monitor program itself takes too much of the system
|
||
resources, and thus skews the data. Linux provides a system monitoring
|
||
tool called TOP that is character based so it can be run on the server.
|
||
Since it is character based, you can telnet into the server and run it
|
||
from anywhere, getting an accurate picture of how the server is running.
|
||
|
||
<P><FONT SIZE=-1>Sample output of TOP:</FONT>
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD><FONT FACE="Courier New,Courier"><FONT SIZE=-2>11:55am up 1 day, 15:02,
|
||
3 users, load average: 0.08, 0.04, 0.00</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>83 processes: 82 sleeping,
|
||
1 running, 0 zombie, 0 stopped</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>CPU states: 2.7% user,
|
||
4.2% system, 5.9% nice, 93.7% idle</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>Mem: 63204K av, 62336K
|
||
used, 868K free, 38384K shrd, 5536K buff</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>Swap: 114908K av, 368K
|
||
used, 114540K free 29496K cached</FONT></FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier"><FONT SIZE=-2>PID USER PRI NI SIZE
|
||
RSS SHARE STAT LIB %CPU %MEM TIME COMMAND</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>22390 root 10 0 540
|
||
540 400 R 0 2.8 0.8 0:00 top</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>22388 cats 3 0 848 848
|
||
516 S 0 1.5 1.3 0:00 login</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>22391 cats 10 0 660
|
||
660 524 S 0 0.7 1.0 0:00 bash</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>6058 root 1 0 3568 3568
|
||
1396 S 0 0.5 5.6 1:25 tkdesksh</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>22283 root 0 0 552 552
|
||
424 S 0 0.3 0.8 0:00 in.telnetd</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>22387 root 1 0 552 552
|
||
424 S 0 0.3 0.8 0:00 in.telnetd</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>21212 quinn 0 0 1084
|
||
1084 660 S 0 0.1 1.7 0:02 smbd</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>20921 root 1 0 588 536
|
||
356 S 0 0.1 0.8 0:08 SWserver</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>1 root 0 0 312 312 244
|
||
S 0 0.0 0.4 0:02 init</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>2 root 0 0 0 0 0 SW
|
||
0 0.0 0.0 0:01 kflushd</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>3 root -12 -12 0 0 0
|
||
SW< 0 0.0 0.0 0:00 kswapd</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>19509 root 0 0 1092
|
||
1092 652 S 0 0.0 1.7 0:18 smbd</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>331 root 0 0 812 812
|
||
480 S 0 0.0 1.2 0:00 login</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>21 root 0 0 280 280
|
||
216 S 0 0.0 0.4 0:00 kerneld</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>240 root 0 0 336 316
|
||
280 S 0 0.0 0.4 0:00 gpm</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>128 root 0 0 368 360
|
||
276 S 0 0.0 0.5 0:00 syslogd</FONT></FONT>
|
||
<BR><FONT FACE="Courier New,Courier"><FONT SIZE=-2>137 root 0 0 496 488
|
||
268 S 0 0.0 0.7 0:00 klogd</FONT></FONT> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<BR>
|
||
<DIV ALIGN=right>
|
||
<HR ALIGN=RIGHT></DIV>
|
||
|
||
<DIV ALIGN=right><FONT SIZE=+4>Section 3</FONT><A NAME="Under the Hood"></A></DIV>
|
||
|
||
<DIV ALIGN=right><FONT SIZE=+4>Under the Hood</FONT></DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Setting up the server</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="Linux installation"></A><B><I><FONT SIZE=+1>Linux
|
||
installation</FONT></I></B></DIV>
|
||
The actual installation of an operating system is often used as a judgement
|
||
on how good the system is. Just as with meeting people, you can never change
|
||
the first impression. I have found that setting up a RedHat Linux server
|
||
is as easy or even easier than setting up a Windows NT server. The setup
|
||
includes two floppies have everything needed to get the system to the point
|
||
that it can recognize the media (CDROM, FTP site, other server, etc.) that
|
||
the installation files are on. Windows NT supplies three floppies for this
|
||
purpose, but only supports CDROM installation. I have found that installing
|
||
RedHat Linux on a laptop can even be easier, since it can detect the PCMCIA
|
||
slots at installation time, while NT cannot. The most important factor
|
||
is to be familiar with the hardware you have installed in your machine,
|
||
including:
|
||
<UL>
|
||
<LI>
|
||
· hard drive(s): number and size; if you have more than one, it's
|
||
helpful to know which one is first, second, etc.</LI>
|
||
|
||
<LI>
|
||
· memory: amount of RAM.</LI>
|
||
|
||
<LI>
|
||
· CD-ROM: its interface type (IDE, SCSI, or other interface), and,
|
||
for non-IDE, non-SCSI CD-ROMs, the make and model number.</LI>
|
||
|
||
<LI>
|
||
· SCSI adapter: make and model number.</LI>
|
||
|
||
<LI>
|
||
· network card: make and model number.</LI>
|
||
|
||
<LI>
|
||
· mouse: type (serial, PS/2, or bus mouse), protocol (Logitech,
|
||
Microsoft, MouseMan, etc.), and number of buttons; also, for serial mice,
|
||
the com port it is connected to.</LI>
|
||
|
||
<LI>
|
||
· If you will be connected to a network, be sure you know your IP
|
||
address, netmask, gateway IP address, name server IP addresses, domain
|
||
name, and hostname. If you don't know these values, ask your network administrator.</LI>
|
||
|
||
<LI>
|
||
Also, if you will be installing the X Window System, you should be familiar
|
||
with the following:</LI>
|
||
|
||
<LI>
|
||
· your video card: make and model number or video chipset, amount
|
||
of video RAM.</LI>
|
||
|
||
<LI>
|
||
· your monitor: make and model number, allowable range of horizontal
|
||
and vertical refresh rates.</LI>
|
||
</UL>
|
||
You can install or upgrade Red Hat Linux/Intel via any of several basic
|
||
methods. Depending on the method you use, you need either one or two formatted
|
||
high-density (1.44 MB) 3.5-inch diskettes.
|
||
|
||
<P>Installing from CD-ROM or via NFS requires only a boot diskette. Installing
|
||
from a hard drive, via FTP, from an SMB volume, or from a PCMCIA device
|
||
(including PCMCIA-based CD-ROMs) requires both a boot diskette and a supplemental
|
||
diskette. Section 2.3.1 below explains how to create boot and supplemental
|
||
diskettes.
|
||
|
||
<P>CD-ROM
|
||
|
||
<P>If you have a Red Hat Linux CD and a boot diskette you will need a supported
|
||
CD-ROM drive and either a 3.5 inch floppy drive or an operational installation
|
||
of MS-DOS on your machine in order to run the installation utility. If
|
||
a boot diskette did not accompany your CD, you will need access to a computer
|
||
running either Linux or MS-DOS to create a boot diskette from the CD.
|
||
|
||
<P>NFS
|
||
|
||
<P>If you wish to install over a network, you will need to mount the Red
|
||
Hat Linux CD-ROM on a machine that supports ISO-9660 file systems with
|
||
Rock Ridge extensions. The machine must also support NFS. Export the CD-ROM
|
||
file system via NFS. You will need to have name services configured, or
|
||
know the NFS server's IP address, and the path to the exported CD-ROM.
|
||
|
||
<P>FTP
|
||
|
||
<P>For an FTP install, you must have a boot disk and supplemental disk.
|
||
You will need to have a valid name server configured or the IP address
|
||
of the FTP server you will be using. You will also need the path to the
|
||
root of the Red Hat Linux directory on the FTP site.
|
||
|
||
<P>SMB Shared Volume
|
||
|
||
<P>If you wish to install from an SMB shared volume, you will need to mount
|
||
the Red Hat Linux CD-ROM on a Microsoft Windows NT or Windows 95 server
|
||
that supports shared volumes. You will need to have name services configured,
|
||
or know the server's IP address; you will also need the name of the shared
|
||
volume containing the Red Hat Linux CD-ROM and the account number and password
|
||
to use to access the volume.
|
||
|
||
<P>Hard Drive
|
||
|
||
<P>To install Red Hat Linux from a hard drive you will need the same boot
|
||
and supplemental disks used by the FTP install. You must first create a
|
||
RedHat directory at the top level of your directory tree. Everything you
|
||
will install should be placed in that directory. First copy the base subdirectory,
|
||
then copy the packages you want to install to another subdirectory called
|
||
RPMS. You can use available space on an existing DOS partition or a Linux
|
||
partition that is not required in the install procedure (for example, a
|
||
partition that would be used for data storage on the installed system).
|
||
|
||
<P>If you are using a DOS filesystem, you may not be able to use the full
|
||
Linux filenames for the RPM packages. The installation process does not
|
||
care what the filenames look like, but it is a good idea that you keep
|
||
track of them so you will know what you are installing.
|
||
|
||
<P>PCMCIA
|
||
|
||
<P>If your CD-ROM, Ethernet card, or local hard disk is connected to a
|
||
PCMCIA adapter, you must install with PCMCIA support. You need a supported
|
||
PCMCIA controller and a supported PCMCIA SCSI adapter or Ethernet card.
|
||
Installing via PCMCIA requires the use of a supplemental diskette.
|
||
|
||
<P>Please See Appendix A for The Official RedHat Installation Guide.
|
||
<DIV ALIGN=right><A NAME="Samba Installation/Setup"></A></DIV>
|
||
|
||
<DIV ALIGN=right><B><I><FONT SIZE=+2>Samba Installation/Setup</FONT></I></B></DIV>
|
||
Installing the Samba RPM is the easiest way to install, as you only need
|
||
to download the file and type rpm -I <I>filename</I> and it is installed.
|
||
Setting up Samba is simple, as you just edit a text file to tell it what
|
||
directories are going to be shared to the Windows clients. The text file's
|
||
name is smb.conf and is located in the /etc. directory if you installed
|
||
Samba using RPM. If you downloaded the .tar archive and installed Samba
|
||
using the default installation, you will find the smb.conf file in /usr/local/samba/lib/.
|
||
|
||
<P>An advantage to installing Samba using RPM is that it is easier. A disadvantage
|
||
is that the versions are not as current, but they are usually more stable
|
||
and reliable. I choose to go directly to the Samba web pages and download
|
||
the most current non-beta release.
|
||
|
||
<P>The picture on the left is the Network Neighborhood window on my NT
|
||
workstation and is currently showing everything that I have access to on
|
||
my Linux server.
|
||
|
||
<P>If you installed Samba using RPM, it will automatically be started on
|
||
system startup, but I had to manually add it to my rc.local script to have
|
||
it start on bootup because I did not install from the RPM. I chose to install
|
||
from the tarballs available at the official Samba site, so I could always
|
||
have a current installation. To start the server manually, I just issue
|
||
these commands:
|
||
|
||
<P><FONT FACE="Courier New,Courier">/usr/local/samba/bin/smbd -D</FONT>
|
||
|
||
<P><FONT FACE="Courier New,Courier">/usr/local/samba/bin/nmbd -D</FONT>
|
||
|
||
<P>Extensive has been accomplished that allows Samba to act more like an
|
||
NT server, including making a Linux server a Primary Domain Controller
|
||
and more features are currently being added. I have listed the steps that
|
||
I took in making my Linux server the Primary Domain Controller (PDC) for
|
||
our network.
|
||
|
||
<P>1. Set up the server.
|
||
<BR> a. Create the smb.conf file.
|
||
<BR> b. Create the netlogon directory.
|
||
I put mine in /home.
|
||
<BR> c. Restart Samba.
|
||
|
||
<P>2. Setup the Windows 95 clients. (We set our up for roaming profiles.)
|
||
<B>Do not reboot until step 3!</B>
|
||
<BR> a. Control Panel
|
||
<BR>
|
||
1. Click Passwords, then Profiles and choose these settings:
|
||
<BR>
|
||
a. Users can customize their settings.
|
||
<BR>
|
||
b. Include desktop items.
|
||
<BR>
|
||
c. Include start menu.
|
||
<BR>
|
||
2. In the Control Panel, select Network.
|
||
<BR>
|
||
a. Under Identification, set your WORKGROUP name.
|
||
<BR>
|
||
b. Access control = USER-LEVEL.
|
||
<BR>
|
||
c. Obtain the list from YOUR SERVER NAME.
|
||
<BR>
|
||
d. Under Client Configuration
|
||
<BR>
|
||
1. Select CLIENT FOR MICROSOFT NETWORKS.
|
||
<BR>
|
||
2. Under that client's properties.
|
||
<BR>
|
||
a. Log onto Windows NT domain.
|
||
<BR>
|
||
b. Enter your WORKGROUP name.
|
||
<BR>
|
||
c. Select LOG ON AND RESTORE CONNECTIONS.
|
||
<BR>
|
||
e. Set primary network logon to CLIENT FOR MICROSOFT NETWORKS.
|
||
<BR> b. Set up the user profiles.
|
||
<BR>
|
||
1. Install the Policy Editor from the Windows 95 CD.
|
||
<BR>
|
||
2. Create a new profile called config.pol and save it into the NETLOGON
|
||
share on the Linux server. Make sure you add all the users on your server!
|
||
This step only has to be
|
||
<BR>
|
||
done once, not on each client.
|
||
<BR>
|
||
3. Using the Policy Editor, select Open registry from the File menu and
|
||
select the options you want.
|
||
<BR>
|
||
4. Save it as config.pol and copy into the netlogon share on the Linux
|
||
server. Set its permissions as 755.
|
||
|
||
<P>3. Reboot the Windows 95 computer(s) and logon.
|
||
|
||
<P>4. Possible problems.
|
||
<BR> 1. Windows95 OSR2 seems to send
|
||
the passwords as uppercase, so try changing the passwords on the Linux
|
||
server to uppercase.
|
||
<BR> 2. I had problems making my Linux
|
||
server the WINS server, so you have some choices to fix this:
|
||
<BR>
|
||
a. If you do have another NT server, make it the WINS server and point
|
||
all the clients to it.
|
||
<BR>
|
||
b. Disable WINS on each client and edit the c:\windows\Lmhosts.sam file
|
||
and add the server and workstations to this file. Save the file as Lmhosts,<cr>
|
||
NOT Lmhosts.sam This file can be appended to from a server, but
|
||
<BR>
|
||
I haven't tried doing it from Linux/Samba. The entries look like this:
|
||
<TT>xxx.xxx.xxx.xxx computername</TT>
|
||
<BR>
|
||
c. Disable WINS. At this time, we are running our Win95 clients with WINS
|
||
disabled, but we do have a DNS server.
|
||
|
||
<P>My Samba configuration (smb.conf) file looks like this:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>; *******************************************************************
|
||
<BR>; *
|
||
<BR>; * Samba config file for UNPLINUX
|
||
<BR>; * Quinn P. Coldiron
|
||
<BR>; *
|
||
<BR><TT>; *******************************************************************</TT>
|
||
<BR><TT>[global]</TT>
|
||
<BR><TT>workgroup = UNP</TT>
|
||
<BR><TT>comment = Unplinux Server</TT>
|
||
<BR><TT>volume = RedHat5</TT>
|
||
<BR><TT>lock directory = /var/lock/samba</TT>
|
||
<BR><TT>locking = yes</TT>
|
||
<BR><TT>strict locking = no</TT>
|
||
<BR><TT>share modes = yes</TT>
|
||
<BR><TT>security = user</TT>
|
||
<BR><TT>os level = 65</TT>
|
||
<BR><TT>domain master = yes</TT>
|
||
<BR><TT>local master = yes</TT>
|
||
<BR><TT>prefered master = yes</TT>
|
||
<BR><TT>domain logons = yes</TT>
|
||
<BR><TT>wins support = yes</TT>
|
||
<BR><TT>;logon script = %m.bat ; per workstation (machine)</TT>
|
||
<BR><TT>;logon script = logon.bat</TT>
|
||
<BR><TT>logon script = %U.bat</TT>
|
||
<BR><TT>preserve case = yes</TT>
|
||
<BR><TT>short case preserve = yes</TT>
|
||
<BR><TT>case sensitive = no</TT>
|
||
<BR><TT>; printing = BSD or SYSV or AIX, etc..</TT>
|
||
<BR><TT>printing = bsd</TT>
|
||
<BR><TT>printcap name = /etc/printcap</TT>
|
||
<BR><TT>load printers = yes</TT>
|
||
<BR><TT>print command = /usr/bin/lpr -r -P %p %s</TT>
|
||
<BR><TT>[netlogon]</TT>
|
||
<BR><TT>comment = Samba Network Logon Service</TT>
|
||
<BR><TT>path = /home/netlogon</TT>
|
||
<BR><TT>case sensitive = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>locking = no</TT>
|
||
<BR><TT>read only = yes</TT>
|
||
<BR><TT>browseable = yes ; say NO if you want to hide the NETLOGON share</TT>
|
||
<BR><TT>;admin users = @wheel</TT>
|
||
<BR><TT>create mode = 0755</TT>
|
||
|
||
<P><TT>; ###############################################################################</TT>
|
||
<BR><TT>; # #</TT>
|
||
<BR><TT>; # Printers #</TT>
|
||
<BR><TT>; # #</TT>
|
||
<BR><TT>; ###############################################################################</TT>
|
||
<BR><TT>; I couldn't get the generic printers section to work, so I commented
|
||
it out</TT>
|
||
<BR><TT>; and explicitly declared the printers.</TT>
|
||
<BR><TT>;[printers]</TT>
|
||
<BR><TT>; comment = All Printers</TT>
|
||
<BR><TT>; path = /var/spool/samba-print</TT>
|
||
<BR><TT>; browseable = yes</TT>
|
||
<BR><TT>; printable = yes</TT>
|
||
<BR><TT>; Set public = yes to allow user 'guest account' to print</TT>
|
||
<BR><TT>; public = no</TT>
|
||
<BR><TT>; writable = no</TT>
|
||
<BR><TT>; create mode = 0700</TT>
|
||
|
||
<P><TT>[Technology]</TT>
|
||
<BR><TT>comment = Technology Printer</TT>
|
||
<BR><TT>path = /var/spool/samba-print</TT>
|
||
<BR><TT>print = Technology</TT>
|
||
<BR><TT>browseable = yes</TT>
|
||
<BR><TT>printable = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>[Marketing2]</TT>
|
||
<BR><TT>comment = Technology Printer</TT>
|
||
<BR><TT>path = /var/spool/samba-print</TT>
|
||
<BR><TT>print = Marketing2</TT>
|
||
<BR><TT>browseable = yes</TT>
|
||
<BR><TT>printable = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>[Marketing1]</TT>
|
||
<BR><TT>comment = Technology Printer</TT>
|
||
<BR><TT>path = /var/spool/samba-print</TT>
|
||
<BR><TT>print = Marketing1</TT>
|
||
<BR><TT>browseable = yes</TT>
|
||
<BR><TT>printable = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>[CustServ]</TT>
|
||
<BR><TT>comment = Technology Printer</TT>
|
||
<BR><TT>path = /var/spool/samba-print</TT>
|
||
<BR><TT>print = CustServ</TT>
|
||
<BR><TT>browseable = yes</TT>
|
||
<BR><TT>printable = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>[CanonColor]</TT>
|
||
<BR><TT>comment = Color Laser Printer</TT>
|
||
<BR><TT>path = /var/spool/samba-print</TT>
|
||
<BR><TT>print = CanonColor</TT>
|
||
<BR><TT>browseable = yes</TT>
|
||
<BR><TT>printable = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>; ###############################################################################</TT>
|
||
<BR><TT>; # #</TT>
|
||
<BR><TT>; # Shared Volumes #</TT>
|
||
<BR><TT>; # #</TT>
|
||
<BR><TT>; ###############################################################################</TT>
|
||
|
||
<P><TT>[homes]</TT>
|
||
<BR><TT>comment = Home Directories</TT>
|
||
<BR><TT>browseable = no</TT>
|
||
<BR><TT>writable = yes</TT>
|
||
<BR><TT>read only = no</TT>
|
||
<BR><TT>preserve case = yes</TT>
|
||
<BR><TT>short preserve case = yes</TT>
|
||
<BR><TT>;create mode = 0777</TT>
|
||
|
||
<P><TT>[userdata]</TT>
|
||
<BR><TT>comment = All userdata that you are allowed to see.</TT>
|
||
<BR><TT>path = /home</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>;Full control for your stuff, full in you group, nothing for other</TT>
|
||
<BR><TT>;people's stuff.</TT>
|
||
<BR><TT>create mode = 0770</TT>
|
||
|
||
<P><TT>[sys]</TT>
|
||
<BR><TT>comment = System drive. Various Press utilities.</TT>
|
||
<BR><TT>path = /usr/local/samba-sys/</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>[programs]</TT>
|
||
<BR><TT>comment = Program drive. Installation sets and programs.</TT>
|
||
<BR><TT>path = /usr/local/samba-programs</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>[ulrich]</TT>
|
||
<BR><TT>comment = Ulrich's PLUS.</TT>
|
||
<BR><TT>path = /usr/local/samba-programs/ulrich</TT>
|
||
<BR><TT>create mode = 555</TT>
|
||
|
||
<P><TT>[cdrom]</TT>
|
||
<BR><TT>comment = Internal IDE cdrom. For temporary usage.</TT>
|
||
<BR><TT>path = /mnt/cdrom</TT>
|
||
|
||
<P><TT>[dictionary]</TT>
|
||
<BR><TT>comment = Random House Dictionary.</TT>
|
||
<BR><TT>path = /mnt/scd1</TT>
|
||
|
||
<P><TT>[bip]</TT>
|
||
<BR><TT>comment = Bowker Books In Print CDROM</TT>
|
||
<BR><TT>path = /mnt/scd0</TT>
|
||
|
||
<P><TT>[msoffice]</TT>
|
||
<BR><TT>comment = Microsoft Office Bookshelf Reference.</TT>
|
||
<BR><TT>path = /mnt/scd3</TT>
|
||
|
||
<P><TT>[encarta]</TT>
|
||
<BR><TT>comment = Microsoft Encarta</TT>
|
||
<BR><TT>path = /mnt/scd2</TT>
|
||
|
||
<P><TT>[press]</TT>
|
||
<BR><TT>comment = Press share. Marketing maps this to U:</TT>
|
||
<BR><TT>path = /home/press</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>create mode = 0777</TT>
|
||
|
||
<P><TT>[CATS-VOL]</TT>
|
||
<BR><TT>comment = Entire Cats volume for backup</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[L-NE]</TT>
|
||
<BR><TT>comment = Cat's root. Map as L.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[M-DATA]</TT>
|
||
<BR><TT>comment = Cat's data drive. Map as M.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/data</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[N-DBC]</TT>
|
||
<BR><TT>comment = Cat's program drive. Map as N.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/dbc</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[O-WORK]</TT>
|
||
<BR><TT>comment = Cat's work drive. Map as O.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/work</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[P-HIST]</TT>
|
||
<BR><TT>comment = Cat's history drive. Map as P.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/hist</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
<BR> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
My actual logon.bat batch file is here:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD><TT>REM *******************************************************</TT>
|
||
<BR><TT>REM * *</TT>
|
||
<BR><TT>REM * University of Nebraska Press network logon script. *</TT>
|
||
<BR><TT>REM * *</TT>
|
||
<BR><TT>REM * Last modified : 10-16-97 *</TT>
|
||
<BR><TT>REM * By: Quinn *</TT>
|
||
<BR><TT>REM * *</TT>
|
||
<BR><TT>REM * The drive letter scheme is leftover from the past *</TT>
|
||
<BR><TT>REM * network administrator and the Novell Netware 3.1 *</TT>
|
||
<BR><TT>REM * server he had. *</TT>
|
||
<BR><TT>REM *******************************************************</TT>
|
||
<BR><TT>REM User's home drives</TT>
|
||
<BR><TT>net use e: \\unplinux\homes</TT>
|
||
<BR><TT>REM General network drives</TT>
|
||
<BR><TT>net use f: \\intrepid\sys</TT>
|
||
<BR><TT>net use g: \\intrepid\userdata</TT>
|
||
<BR><TT>net use h: \\intrepid\dictionary</TT>
|
||
<BR><TT>net use i: \\intrepid\bip</TT>
|
||
<BR><TT>net use j: \\intrepid\programs</TT>
|
||
<BR><TT>net use s: \\unplinux\ulrich</TT>
|
||
<BR><TT>REM CATS drives</TT>
|
||
<BR><TT>net use l: \\unplinux\l-ne</TT>
|
||
<BR><TT>net use m: \\unplinux\m-data</TT>
|
||
<BR><TT>net use n: \\unplinux\n-dbc</TT>
|
||
<BR><TT>net use o: \\unplinux\o-work</TT>
|
||
<BR><TT>net use p: \\unplinux\p-hist</TT>
|
||
<BR><TT>REM Temp entry for Robotronics</TT>
|
||
<BR><TT>REM The old system had robo on the T:\ drive but</TT>
|
||
<BR><TT>REM all new installations will run robo from the j:\ drive.</TT>
|
||
<BR><TT>net use t: \\unplinux\programs</TT> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<BR>
|
||
<DIV ALIGN=right><A NAME="Netatalk Installation/Setup"></A><B><I><FONT SIZE=+2>Netatalk
|
||
Installation/Setup</FONT></I></B></DIV>
|
||
Netatalk offers the same installation options as Samba, so you can choose
|
||
either the RPM, or .tar archives. I would choose the RPM here, as they
|
||
are the same versions as the .tar files and make life easier during installation.
|
||
I really don't have mush to say about this installation, since it was very
|
||
simple and straight forward. After installing the package, I just edited
|
||
the AppleVolumes.system file and started the daemon. Below is a very simple
|
||
AppleVolumes.system file that will give the Mac users their home directory
|
||
and a few other volumes that might have stuff they need.
|
||
<BR>
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD><TT>#</TT>
|
||
<BR><TT># This file is read before (after if -u is specified) the user's</TT>
|
||
<BR><TT># AppleVolume file. Add extension mappings and volumes here.</TT>
|
||
<BR><TT>#</TT>
|
||
<BR><TT>/usr/local/samba-sys Sys (F drive)</TT>
|
||
<BR><TT>/home Userdata (G drive)</TT>
|
||
<BR><TT>/usr/local/samba-programs Programs (J drive)</TT>
|
||
<BR><TT># default translation -- note that CR <-> LF translation is
|
||
done on all</TT>
|
||
<BR><TT># files of type TEXT. The first line turns off translation for
|
||
files of</TT>
|
||
<BR><TT># unknown type, the second turns this translation on.</TT>
|
||
<BR><TT>. BINA UNIX</TT>
|
||
<BR><TT># . TEXT UNIX</TT>
|
||
<BR><TT># sounds</TT>
|
||
<BR><TT>.mod STrk STrk</TT>
|
||
<BR><TT>.mid Midi ttxt</TT>
|
||
<BR><TT>.aiff AIFF SNdm</TT>
|
||
<BR><TT>.wav WAVE SNdm</TT>
|
||
<BR><TT>.au ULAW SNdm</TT>
|
||
<BR><TT># video</TT>
|
||
<BR><TT>.moov MooV mMPG</TT>
|
||
<BR><TT>.mov MooV mMPG</TT>
|
||
<BR><TT>.mpg MPEG mMPG</TT>
|
||
<BR><TT>.mpeg MPEG mMPG</TT>
|
||
<BR><TT># formatted text</TT>
|
||
<BR><TT>.html TEXT MOS!</TT>
|
||
<BR><TT>.rtf TEXT MSWD</TT>
|
||
<BR><TT>.doc WDBN MSWD</TT>
|
||
<BR><TT># compressed archives</TT>
|
||
<BR><TT>.bin BINA MB2P</TT>
|
||
<BR><TT>.zip ZIP ZIP</TT>
|
||
<BR><TT>.tar TARF TAR!</TT>
|
||
<BR><TT>.gz Gzip Gzip</TT>
|
||
<BR><TT>.Z ZIVM LZIV</TT>
|
||
<BR><TT>.sea ???? SITx</TT>
|
||
<BR><TT>.cpt PACT CPCT</TT>
|
||
<BR><TT>.sit SIT! SIT!</TT>
|
||
<BR><TT>.hqx TEXT SITx</TT>
|
||
<BR><TT># graphics</TT>
|
||
<BR><TT>.tiff TIFF JVWR</TT>
|
||
<BR><TT>.tif TIFF JVWR</TT>
|
||
<BR><TT>.bmp BMPp JVWR</TT>
|
||
<BR><TT>.pct PICT ttxt</TT>
|
||
<BR><TT>.pict PICT ttxt</TT>
|
||
<BR><TT>.jpeg JPEG JVWR</TT>
|
||
<BR><TT>.jpg JPEG JVWR</TT>
|
||
<BR><TT>.gif GIFf JVWR</TT> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
The other file that you need to edit with NetaTalk is papd.conf. This file
|
||
hold the printer information.
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD><TT># Attributes are:</TT>
|
||
<BR><TT>#</TT>
|
||
<BR><TT># Name Type Default Description</TT>
|
||
<BR><TT># pd str ".ppd" Pathname to ppd file.</TT>
|
||
<BR><TT># pr str "lp" LPD printer name.</TT>
|
||
<BR><TT># op str "operator" Operator name, for LPD spooling.</TT>
|
||
<BR><TT>#</TT>
|
||
<BR><TT># Some examples:</TT>
|
||
<BR><TT>#</TT>
|
||
<BR><TT># On many systems (notably not Solaris), no papd.conf is required,</TT>
|
||
<BR><TT># since papd shares the same defaults as lpd.</TT>
|
||
<BR><TT>#</TT>
|
||
<BR><TT># A simple example:</TT>
|
||
<BR><TT>#</TT>
|
||
<BR><TT># terminator:\</TT>
|
||
<BR><TT># :pr=lp:op=wes:\</TT>
|
||
<BR><TT># :pd=/usr/share/lib/ppd/HPLJ_4M.PPD:</TT>
|
||
<BR><TT>#</TT>
|
||
<BR><TT># Note also that papd.conf can list several printers.</TT> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<BR>
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Installing The Cats Pajamas</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="Installing Cats on the Server"></A><B><I><FONT SIZE=+2>Installing
|
||
Cats on the Server</FONT></I></B></DIV>
|
||
Installing Cats on a Linux server can be as simple as copying all the files
|
||
and directories from the old server to the Linux server's shared volume
|
||
for Cats. The way that I set up out server was to install another drive
|
||
in the Linux server to hold the Cats installation. I chose an IDE drive
|
||
mainly because I didn't have a SCSI card in the server, didn't have an
|
||
extra one handy and I was under an extreme time crunch to get Cats back
|
||
online. My intentions were to eventually replace the IDE drive with a SCSI
|
||
drive over Christmas break, but the performance has been more than satisfactory,
|
||
so we are going to leave the setup alone. I mount this drive as /usr/local/samba-cats
|
||
and have the permissions set open to the world by running the command chmod
|
||
777 /usr/local/samba-cats -R. This is a security risk, but Cats has told
|
||
me that the files must be world writeable and readable for Cats to work
|
||
properly. I also have the Samba configuration file set up with a mask of
|
||
0777, which will make sure that all files written will be readable by all
|
||
the users.
|
||
|
||
<P>The specific portion of the smb.conf file for Cats is listed here:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD><TT>[CATS-VOL]</TT>
|
||
<BR><TT>comment = Entire Cats volume for backup</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[L-NE]</TT>
|
||
<BR><TT>comment = Cat's root. Map as L.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[M-DATA]</TT>
|
||
<BR><TT>comment = Cat's data drive. Map as M.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/data</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[N-DBC]</TT>
|
||
<BR><TT>comment = Cat's program drive. Map as N.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/dbc</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[O-WORK]</TT>
|
||
<BR><TT>comment = Cat's work drive. Map as O.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/work</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT>
|
||
|
||
<P><TT>[P-HIST]</TT>
|
||
<BR><TT>comment = Cat's history drive. Map as P.</TT>
|
||
<BR><TT>path = /usr/local/samba-cats/ne/hist</TT>
|
||
<BR><TT>writeable = yes</TT>
|
||
<BR><TT>printable = no</TT>
|
||
<BR><TT>guest ok = yes</TT>
|
||
<BR><TT>public = yes</TT>
|
||
<BR><TT>create mask = 0777</TT> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
At the time of this writing, we were still running Cats 2.3, so the major
|
||
directories were as follows:
|
||
<BR>
|
||
<TABLE BORDER=5 CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="24%" HEIGHT="170" BGCOLOR="#000099" NOSAVE >
|
||
<TR NOSAVE>
|
||
<TD NOSAVE><FONT COLOR="#FFFFFF"><B><TT>ne----+</TT></B> </FONT>
|
||
<BR><FONT COLOR="#FFFFFF"><B><TT> |---> data</TT></B> </FONT>
|
||
<BR><FONT COLOR="#FFFFFF"><B><TT> |---> dbc</TT></B> </FONT>
|
||
<BR><FONT COLOR="#FFFFFF"><B><TT> |---> work</TT></B> </FONT>
|
||
<BR><B><TT><FONT COLOR="#FFFFFF"> |---> hist</FONT></TT></B></TD>
|
||
</TR>
|
||
</TABLE>
|
||
While we are currently able to get all of our system onto a 2.5 gigabyte
|
||
hard drive, I can see a day when we will have a large enough history that
|
||
we will need more space. We could just get a larger hard drive, but an
|
||
easier upgrade would be to just add another drive and mount it into the
|
||
directory tree. We could actually run four drives for Cats by mounting
|
||
a different drive into the ne directory for each subdirectory. By doing
|
||
this, data would be running on a drive, dbc would be a drive, work would
|
||
be a drive and hist would be a drive. In theory, the performance would
|
||
increase, since drive access to data would not slow down history searches,
|
||
or read/writes to the work drive.
|
||
|
||
<P>I have written a CGI Perl script to make it simple for our Business
|
||
Department and Customer service department to lock Cats during month-end
|
||
closing and reindexing procedures. The script asks for a password, and
|
||
then replaces the standard batch files to start Cats with another batch
|
||
file that says Cats is locked for closing or maintenance. When they are
|
||
finished, they can unlock Cats by running the unlock CGI script. The scripts
|
||
are listed here:
|
||
|
||
<P>Lock Cats:
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>#!/usr/bin/perl
|
||
<BR># ******************************************************
|
||
<BR># * *
|
||
<BR># * Author: Quinn P. Coldiron *
|
||
<BR># * Date: 11-24-97 *
|
||
<BR># * Program: This locks Cats *
|
||
<BR># * *
|
||
<BR># ******************************************************
|
||
<BR># Use cgi-lib CGI library for PERL.
|
||
<BR>require "/home/httpd/cgi-bin/cgi-lib.pl";
|
||
<BR>#Get the data from the form.
|
||
<BR>&ReadParse;
|
||
<BR>print &PrintHeader;
|
||
<BR>print "<HTML>\n";
|
||
<BR>print "<HEAD>\n";
|
||
<BR>print "<TITLE>Finished</TITLE>\n";
|
||
<BR>print "</HEAD>\n";
|
||
<BR>print "<BODY BGCOLOR= #b7b7b7>\n";
|
||
<BR>if ( $in{password} =~ "PASSWORD") {
|
||
<BR>print "<P><B>Finished.</B></P>\n";
|
||
<BR>print "<P>Batch files written and CATS is <B>locked</B>.</P>\n";
|
||
<BR>print "<BR>You may access CATS by going to the M: drive and typing
|
||
secret.bat\n";
|
||
<BR>print "This should only be used for Month-end closing, reindexing and
|
||
system repairs.\n";
|
||
<BR>print "<BR><BR>Quinn.\n";
|
||
<BR>system ("cp /home/httpd/cgi-bin/cats/lock/*.bat /usr/local/samba-cats/ne/data/");
|
||
<BR>system ("chmod 777 /usr/local/samba-cats/ne/data/*");
|
||
<BR>} else {
|
||
<BR>print "Wrong password\n";
|
||
<BR>}
|
||
<BR>print "</BODY>\n";
|
||
<BR>print "</HTML>\n"; </TD>
|
||
</TR>
|
||
</TABLE>
|
||
Unlock Cats:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>#!/usr/bin/perl
|
||
<BR># ******************************************************
|
||
<BR># * *
|
||
<BR># * Author: Quinn P. Coldiron *
|
||
<BR># * Date: 11-24-97 *
|
||
<BR># * Program: This program copies that cats#.bat files *
|
||
<BR># * to the correct location. *
|
||
<BR># ******************************************************
|
||
<BR># Use cgi-lib CGI library for PERL.
|
||
<BR>require "/home/httpd/cgi-bin/cgi-lib.pl";
|
||
<BR>#Get the data from the form.
|
||
<BR>&ReadParse;
|
||
<BR>print &PrintHeader;
|
||
<BR>print "<HTML>\n";
|
||
<BR>print "<HEAD>\n";
|
||
<BR>print "<TITLE>Finished</TITLE>\n";
|
||
<BR>print "</HEAD>\n";
|
||
<BR>print "<BODY BGCOLOR= #b7b7b7>\n";
|
||
<BR>if ( $in{password} =~ "PASSWORD") {
|
||
<BR>print "<P><B>Finished.</B></P>\n";
|
||
<BR>print "<P>Batch files written and CATS is unlocked.</P>\n";
|
||
<BR>print "<BR><BR>Quinn.\n";
|
||
<BR>system ("cp /home/httpd/cgi-bin/cats/unlock/*.bat /usr/local/samba-cats/ne/data/");
|
||
<BR>system ("chmod 777 /usr/local/samba-cats/ne/data/*");
|
||
<BR>} else {
|
||
<BR>print "Wrong password!\n";
|
||
<BR>}
|
||
<BR>print "</BODY>\n";
|
||
<BR>print "</HTML>\n";
|
||
<BR> </TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<DIV ALIGN=right><A NAME="Configuring your Windows clients"></A><B><I><FONT SIZE=+2>Configuring
|
||
your Windows clients</FONT></I></B></DIV>
|
||
I have setup our Cats installation to share each required cats directory
|
||
as a hard mounted drive letter. The specific portion of the login script
|
||
that mounts cats is listed here:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="30%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>REM CATS drives
|
||
<BR>net use l: \\unplinux\l-ne
|
||
<BR>net use m: \\unplinux\m-data
|
||
<BR>net use n: \\unplinux\n-dbc
|
||
<BR>net use o: \\unplinux\o-work
|
||
<BR>net use p: \\unplinux\p-hist </TD>
|
||
</TR>
|
||
</TABLE>
|
||
My cats batch file is here:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="40%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>PATH=C:\;C:\WINNT;C:\WINDOWS;L:\;M:\;N:\;O:\;P:\
|
||
<BR>SET DBC_FILEPATH=L:\;M:\;N:\;O:\;P:\
|
||
<BR>Set DBC_PREP=M:
|
||
<BR>Set DBC_FILES=140
|
||
<BR>Set DBC_PGMSIZE=65024
|
||
<BR>Set DBC_CMDLINE=OLD
|
||
<BR>SET DBC_XKEYS=ON
|
||
<BR>Set DBC_COMPAT=DOS
|
||
<BR>Set DBC_PORT=24
|
||
<BR>SET DBC_DBCPATH=N:\
|
||
<BR>M:
|
||
<BR>DBC.EXE </TD>
|
||
</TR>
|
||
</TABLE>
|
||
I have also followed the suggestions on the Cats web site http://www.tcpj.com
|
||
for specific settings for Windows 95. I have found that all of these do
|
||
help in getting Cats to run better.
|
||
<DIV ALIGN=right><A NAME="Configuring the DOS emulator to run Cats"></A><B><I><FONT SIZE=+2>Configuring
|
||
the DOS emulator to run Cats</FONT></I></B></DIV>
|
||
Linux has a very interesting program called DOSEMU which creates a ``DOS
|
||
box'' that can run many DOS applications, including MS-DOS, PC-DOS, DR
|
||
DOS, Open DOS, Windows for Workgroups 3.11, the Novell Netware client and
|
||
many more. I had problems at first getting DOSEMU to run programs on the
|
||
redirected drives unless I called them by the full name (go.bat instead
|
||
of go) but tracked this down to the version of DOS that I was using. I
|
||
was using Novell DOS 7.0 but switched to MS-DOS 6.22 on the advice of Hans
|
||
Lermen (one of the DOSEMU developers) and this fixed the problem. He said
|
||
that this has been reported many times and it seems to be a bug in the
|
||
command.com code that many versions of non Microsoft DOS use.
|
||
|
||
<P>DOSEMU uses an image file of a hard disk to emulate a DOS hard drive
|
||
so you do not need to have a DOS partition. Using the /var/lib/dosemu/setup-hdimage
|
||
program will step you through making a basic hdimage file. The only required
|
||
item is a bootable DOS 6.22 floppy disk with whatever DOS tools you think
|
||
you might need. I included EDIT.COM and QBASIC.EXE. After running through
|
||
the setup-hdimage program, start the emulator with xdos or dos, depending
|
||
on if you are in X-Windows or not. The default setup gives you the Linux
|
||
hard drive as DOS drive D:\. To copy the programs I wanted off the floppy
|
||
to the hdimage file, I opened another xterm window and mounted the floppy
|
||
to /mnt/floppy, then switched back to DOSEMU, changed to D:\mnt\floppy
|
||
and copied EDIT.COM and QBASIC.EXE to C:\. I could now run the MS-DOS editor
|
||
to edit the config.sys and autoexec.bat files. If I wanted, I could also
|
||
write a quick QBASIC program.
|
||
|
||
<P>DOSEMU gives you a utility called LREDIR which redirects Linux directories
|
||
to DOS drive letters. Below is the AUTOEXEC.BAT that I use with DOSEMU
|
||
to give me the drive letters for Cats and for Robotronics.
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="50%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>@echo off
|
||
<BR>path=c:\;l:\;m:\;n:\;o:\;p:\
|
||
<BR>prompt $p$g
|
||
<BR>rem set temp=c:\temp
|
||
<BR>lredir l: linux\fs\usr\local\samba-cats\ne
|
||
<BR>lredir m: linux\fs\usr\local\samba-cats\ne\data
|
||
<BR>lredir n: linux\fs\usr\local\samba-cats\ne\dbc
|
||
<BR>lredir o: linux\fs\usr\local\samba-cats\ne\work
|
||
<BR>lredir p: linux\fs\usr\local\samba-cats\ne\hist
|
||
<BR>lredir t: linux\fs\usr\local\samba-sys\programs\nesb
|
||
<BR>c:
|
||
<BR>menu.bat </TD>
|
||
</TR>
|
||
</TABLE>
|
||
This autoexec.bat file loads the redirected drives and displays a menu
|
||
which allows the user to select the DOS application they want to run (CATS
|
||
and Robotronics). I have set the dos emulator as the shell, so that as
|
||
soon as the Mac users or remote users telnet into the Linux server the
|
||
DOS emulator is started and they get the main menu. When they exit the
|
||
DOS emulator, they are disconnected from the server.
|
||
<DIV ALIGN=right><A NAME="Installing a RAID"></A><B><FONT SIZE=+2>Installing
|
||
a RAID</FONT></B></DIV>
|
||
<A HREF="http://www.dpt.com/"><IMG SRC="./gx/coldiron/RAID.JPG" BORDER=0 NATURALSIZEFLAG="3" HEIGHT=157 WIDTH=150 ALIGN=BOTTOM></A>The
|
||
RAID that we chose to purchase was a kit that contained a SCSI RAID controller
|
||
and subsystem storage cabinet from Distributed Processing Technology.
|
||
|
||
<P>The SCSI card is a PCI card with a caching module added to it. The cache
|
||
module has four SIMM slots on it and will accept any standard 32 pin SIMM
|
||
up to 16 meg each for a total of 64 megabytes of cache. The card comes
|
||
with a four meg module already installed, and that is what we currently
|
||
are using.
|
||
|
||
<P>The storage subsystem requires you to supply your own drives and comes
|
||
in two style. One supports narrow SCSI drives and the other supports wide
|
||
drives. We are using the narrow drive cabinet, mainly because I already
|
||
had three drives that I wanted to use. Installing the drives can be tricky,
|
||
as the data cable is not color coded and I could not tell what wire was
|
||
for pin one. The first time around I had the drives installed backwards,
|
||
but nothing was hurt. I called the tech support line and they were very
|
||
helpful in getting the problem fixed.
|
||
|
||
<P>After installing the card in the server, the next step is to configure
|
||
the RAID with the RAD level of choice. We chose to run RAID level 5. While
|
||
Linux does have built in drivers for the DPT controller card, DPT does
|
||
not offer Linux utilities to configure the unit. What I did was temporarily
|
||
plug a 200 meg IDE hard drive into the server to boot from and ran the
|
||
DOS configuration utilities which are graphical and easy to follow. Using
|
||
the mouse, I selected the three drives that I wanted to include in my RAID,
|
||
then selected the RAID level I wanted, saved the configuration and shutdown
|
||
the computer. I then unplugged the IDE DOS drive and reconnected the IDE
|
||
Linux boot drive.
|
||
|
||
<P>I kind of cheated when I installed the driver for the SCSI card by rerunning
|
||
the Linux setup program. I had other things that needed fixing, so I thought
|
||
this would be the best way. I could have just added the daemon by using
|
||
the tools in the control panel as well or by typing<TT> insmod eata-dma
|
||
</TT>at the command prompt and the driver would be loaded and I could see
|
||
the report that the system now recognizes my SCSI card and RAID. During
|
||
the installation, select YES when asked if you have a SCSI card and select
|
||
correct driver (EATA-DMA) for the card you have. When you are finished
|
||
and reboot the computer, you will see the RAID initialize and report the
|
||
settings you configured under DOS, then the kernel recognizing the card.
|
||
|
||
<P>Now, you need to create a partition and format the drive. To make a
|
||
partition, use the fdisk command and follow the menu to make a Linux primary
|
||
partition. Formatting the RAID is as easy as formatting any other drive.
|
||
Remember that the system sees your RAID as a single, large disk. To format
|
||
it in Linux, issue the mkefs2 /dev/sda1, or whatever SCSI drive it is.
|
||
To actually use the disk after formatting, you need to mount it someplace.
|
||
I wanted to use this disk for the home directories of our users, so I mounted
|
||
it as /home/raid. But, whenever I added a user, they were still being added
|
||
to /home and not on the RAID, so I edited the /usr/sbin/adduser script
|
||
(which is just a Perl script) and changed the home directory location to
|
||
/home/raid. Now, whenever I add a user, they are added to the RAID.
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Daily administration</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="System backups"></A><B><I><FONT SIZE=+2>System
|
||
backups</FONT></I></B></DIV>
|
||
I have a SCSI Hewlett Packard SureStore 6000 4mm DAT drive that I am setting
|
||
up for backup duties for our Linux server. Currently, I am backing up all
|
||
data through Samba to our Windows NT server using
|
||
|
||
<P>another SureStore 6000 tape drive and Cheyenne Arcserve software. I
|
||
have also been known to make a quick backup to the RAID using tar. Tar
|
||
is a simple utility that has been around Unix almost as long as Unix has
|
||
been around.
|
||
|
||
<P>To make a tar backup, just issue the following command:
|
||
|
||
<P>tar cvf archivename.tar /directory-to-archive
|
||
|
||
<P>This will create a tar file named archive.tar of the contents of the
|
||
directory directory-to-archive. While this works fine, the resulting file
|
||
might be very large because we did not apply any compression. By
|
||
|
||
<P>modifying the command to look like this:
|
||
|
||
<P>tar cvzf archivename.tar.gz /directory-to-archive
|
||
|
||
<P>We compress the tar file with gzip after the file is made. At a later
|
||
date, we might want to view what is in the tar file, so we can issue the
|
||
tar tvf archivename.tar.gz to list the files in the archive.
|
||
|
||
<P>While backing up to disk is OK for a temporary thing, you should always
|
||
backup to tape for critical data. Linux supports two types of tape drives.
|
||
The first is the style that connects to the floppy drive
|
||
|
||
<P>controller, like the Colorado drives and Iomega Ditto. The other style
|
||
connect to a SCSI controller. Floppy tape drives have the device names
|
||
of /dev/ft0, dev/ft1 and so on. SCSI drives are /dev/st0, /dev/st1 and
|
||
so on. These devices are "rewinding" devices which rewind the tape when
|
||
the operation is completed. IF you are archiving more than one session
|
||
to the tape, then use the non-rewinding devices /dev/nft0, /dev/nrft1,
|
||
/dev/nst0, /dev/nst1 and so on.
|
||
|
||
<P>After writing the archive to tape, you can use the mt (magnetic tape)
|
||
command to rewind, retention and find sessions on tape. The table below
|
||
shows the commands.
|
||
|
||
<P>mt /dev/nft0 rewind
|
||
|
||
<P>mt /dev/nft0 retention
|
||
|
||
<P>mt /dev/nft0 fsf 1 skips the current session to find the next session
|
||
on tape.
|
||
|
||
<P>To use the mt command, you must use the non-rewinding devices.
|
||
|
||
<P>Using tar to make backups has its good points and its bad points. On
|
||
the bad side, neither tar or gzip are fault-tolerant. Compressing tar files
|
||
with gzip will greatly reduce the amount of space on the backup
|
||
|
||
<P>media, but if even one block of the archive gets corrupted, which can
|
||
happen on tapes, the entire file can be useless. Usually, you will be able
|
||
to retrieve all data up to that point, though. A better solution is to
|
||
use a "real" backup system such as BRU (Backup and Restore Utility) that
|
||
comes with a purchased version of RedHat Linux 5.0. Backup systems usually
|
||
compress each file individually, so that if the media is damaged, you will
|
||
not usually lose the entire archive.
|
||
|
||
<P>BRU has both a command prompt interface and a graphical X-Windows interface
|
||
and is included with RedHat 5.0. BRU offers automated backup scheduling
|
||
and scripting, so it is very easy to setup a simple but effective and reliable
|
||
backup system. I find the system as easy to maintain as ArcServe on Windows
|
||
NT.
|
||
<DIV ALIGN=right><A NAME="Scheduling events"></A><B><I><FONT SIZE=+2>Scheduling
|
||
events</FONT></I></B></DIV>
|
||
Linux has a very easy to use scheduler program called cron that will run
|
||
commands, scripts or programs at the scheduled times. To edit the list
|
||
of events, issue the crontab -e command. This will start the default editor
|
||
(usually vi, but I changed mine to joe). When you exit the editor, cron
|
||
will install the new config file you just edited and schedule all the jobs.
|
||
You can view the schedule by issuing the crontab -l command:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="75%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>SHELL=/bin/bash
|
||
<BR>PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||
<BR>MAILTO=root
|
||
<BR># Run any at jobs every minute
|
||
<BR># * * * * * root [ -x /usr/sbin/atrun ] && /usr/sbin/atrun
|
||
<BR># run-parts
|
||
<BR># 01 * * * * root run-parts /etc/cron.hourly
|
||
<BR># 02 1 * * * root run-parts /etc/cron.daily
|
||
<BR># 02 2 * * 0 root run-parts /etc/cron.weekly
|
||
<BR># 02 3 1 * * root run-parts /etc/cron.monthly
|
||
<BR># Remove /tmp, /var/tmp files not accessed in 10 days (240 hours)
|
||
<BR># 41 02 * * * root /usr/sbin/tmpwatch 240 /tmp /var/tmp
|
||
<BR># Remove formatted man pages not accessed in 10 days
|
||
<BR># 39 02 * * * root /usr/sbin/tmpwatch 240 /var/catman/cat?
|
||
<BR>#############################################################
|
||
<BR># WWW logs. I run 2 so I can compare results.
|
||
<BR>#############################################################
|
||
<BR># Run web one web log utility 0 0-23 * * * /usr/bin/log
|
||
<BR>02 1 * * * /usr/bin/log
|
||
<BR># Run the other web log utility 0 0-23 * * * /usr/local/mkstats/mkstats.pl
|
||
-c mkstats.config
|
||
<BR>02 1 * * * /usr/local/mkstats/mkstats.pl -c mkstats.config
|
||
<BR>#############################################################
|
||
<BR>#############################################################
|
||
<BR># Live stream management
|
||
<BR>#############################################################
|
||
<BR># Create xdm file for live stream for Sports Nightly (5:45 pm)
|
||
<BR>45 17 * * 1,2,3,4,5 livestream-on
|
||
<BR># Kill xdm file for live stream for Sports Nightly (8:10 pm)
|
||
<BR>10 20 * * 1,2,3,4,5 livestream-off
|
||
<BR># Create xdm file for live stream for Saturday games (7:00 am)
|
||
<BR>0 7 * * 6 livestream-on
|
||
<BR># Kill xdm file for live stream for Saturday games (10:00 pm)
|
||
<BR>0 22 * * 6 livestream-off
|
||
<BR># Check the 3.0 server to see if it is running and not dead! (every
|
||
minute)
|
||
<BR>1-59 * * * * /usr/local/streamworks-3.0/checkSWserver
|
||
<BR>##############################################################
|
||
<BR># Check to see if network volumes are mounted (at 10:00 p.m.).
|
||
<BR># These need to be mounted since this machine performs the
|
||
<BR># backup at 11:55.
|
||
<BR>0 22 * * 1,2,3,4,5 checkmounts
|
||
<BR># copy BIP from Intrepid to exeter (WWW)
|
||
<BR>0 23 * * 1,2,3,4,5 /usr/local/bin/mvbip
|
||
<BR># backup userdata from intrepid
|
||
<BR>55 23 * * 1,2,3,4,5 bu-userdata
|
||
<BR># backup CATS
|
||
<BR>55 23 * * 1,2,3,4,5 bu-cats
|
||
<BR># backup Marketing
|
||
<BR>0 3 * * 1,2,3,4,5 bu-marketing
|
||
<BR># mail orders to quinn
|
||
<BR>0 8 * * 1,2,3,4,5 /usr/local/bin/mailunporders.pl </TD>
|
||
</TR>
|
||
</TABLE>
|
||
Each entry has a specific configuration to follow. If you want the command
|
||
to run every day at 1:00 AM, specify the minute as 0 and the hour as 1.
|
||
The other three fields should be asterisks, which means ``every day and
|
||
month at the given time.
|
||
|
||
<P>You might notice the entry
|
||
|
||
<P># Check to see if network volumes are mounted (at 10:00 p.m.).
|
||
<BR># These need to be mounted since this machine performs the
|
||
<BR># backup at 11:55.
|
||
<BR>0 22 * * 1,2,3,4,5 checkmounts
|
||
|
||
<P>This calls a script I wrote to check that the NT server is mounted so
|
||
I can backup all data on it. I mount the server using the smbmount command
|
||
which allows a Linux machine to mount shares from a Windows machine. This
|
||
script just verifies that a certain file or directory is actually at the
|
||
mount point. I use these ``reference'' files for checking purposes, so
|
||
they are read-only, so they can't be accidentally deleted by users. The
|
||
script is listed here:
|
||
<BR>
|
||
<TABLE BORDER CELLSPACING=2 CELLPADDING=0 COLS=1 WIDTH="50%" BGCOLOR="#D4D4D4" NOSAVE >
|
||
<TR>
|
||
<TD>#!/bin/sh
|
||
<BR># Cronjob to remount network drives if they are not mounted.
|
||
<BR># Author: Quinn P. Coldiron
|
||
<BR>if [ -z "`ls /mnt/exeter | grep InetPub | grep -v grep`" ]
|
||
<BR>then
|
||
<BR>umount /mnt/exeter
|
||
<BR>/mnt/mountexeter
|
||
<BR>echo "Exeter remounted `date`"
|
||
<BR>fi
|
||
<BR>if [ -z "`ls /mnt/intrepid-f | grep BLINE | grep -v grep`" ]
|
||
<BR>then
|
||
<BR>umount /mnt/intrepid-f
|
||
<BR>/mnt/mountintrepid-f
|
||
<BR>echo "Intrepid F remounted `date`"
|
||
<BR>fi
|
||
<BR>if [ -z "`ls /mnt/intrepid-g | grep QC | grep -v grep`" ]
|
||
<BR>then
|
||
<BR>umount /mnt/intrepid-g
|
||
<BR>/mnt/mountintrepid-g
|
||
<BR>echo "Intrepid G remounted `date`"
|
||
<BR>fi
|
||
<BR>if [ -z "`ls /mnt/intrepid-mrktdept | grep KK | grep -v grep`" ]
|
||
<BR>then
|
||
<BR>umount /mnt/mountintrepid-mrkt
|
||
<BR>/mnt/mountintrepid-mrktdept
|
||
<BR>echo "Marketing remounted `date`"
|
||
<BR>fi
|
||
<BR>echo "All network volumes mounted." </TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<BR>
|
||
<DIV ALIGN=right><A NAME="Replacing your Desktop OS with Linux"></A><B><FONT SIZE=+2>Replacing
|
||
your Desktop OS with Linux</FONT></B></DIV>
|
||
Places to go:
|
||
<UL>
|
||
<LI>
|
||
<A HREF="http://www.redhat.com/">RedHat</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="http://www.kde.org/">K Desktop</A></LI>
|
||
|
||
<LI>
|
||
<A HREF="http://www.info.polymtl.ca/ada2/coyote/www/linux_desktops.html">Amazing
|
||
Linux Desktops</A></LI>
|
||
</UL>
|
||
I have wanted to make Linux my desktop operating system for a long time,
|
||
but I couldn't because I needed to be able to run the following applications:
|
||
Microsoft Word, WordPerfect, Microsoft Excel, Microsoft Access, our internal
|
||
mail system (Pegasus), Microsoft Access and Microsoft Visual Basic. I have
|
||
recently narrowed the list of required applications that do not have a
|
||
Linux counterpart down to Access and Visual Basic, which we will analyze
|
||
later.
|
||
|
||
<P>I have found that, for the most part, I can replace Microsoft Office
|
||
with Applixware. Applixware is an office suite for Linux (an many other
|
||
Unix platforms) that can read and write Word and Excel files, which allows
|
||
me to share documents with the rest of the press. While I still cannot
|
||
read Access databases, I am working out a solution for that which we will
|
||
discuss later.
|
||
|
||
<P><B>Applix Words</B>
|
||
<UL>
|
||
<LI>
|
||
· Live links to Applixware or third-party applications</LI>
|
||
|
||
<LI>
|
||
· Mail-enabled compound document technology</LI>
|
||
|
||
<LI>
|
||
· Landscape, portrait and merge printing</LI>
|
||
|
||
<LI>
|
||
· Multiple undo and redo</LI>
|
||
|
||
<LI>
|
||
· Hypertext with optional HTML output</LI>
|
||
|
||
<LI>
|
||
· Forms editor</LI>
|
||
|
||
<LI>
|
||
· International dictionaries, thesauri and spell checkers</LI>
|
||
|
||
<LI>
|
||
· Conditional text and cross-referencing; find and replace</LI>
|
||
|
||
<LI>
|
||
· Embedded equations and calculation support</LI>
|
||
|
||
<LI>
|
||
· Multiple typefaces, type styles and sizes</LI>
|
||
|
||
<LI>
|
||
· Highly graphical user interface</LI>
|
||
|
||
<LI>
|
||
· Tables and frames; borders and shading</LI>
|
||
|
||
<LI>
|
||
· Multimedia support including audio and video</LI>
|
||
</UL>
|
||
<B>Applix Spreadsheets</B>
|
||
<UL>
|
||
<LI>
|
||
· Live links to other Applixware and external applications</LI>
|
||
|
||
<LI>
|
||
· Calculation-based attributes</LI>
|
||
|
||
<LI>
|
||
· 3D spreadsheets and charts</LI>
|
||
|
||
<LI>
|
||
· Integration of external functions</LI>
|
||
|
||
<LI>
|
||
· Built-in string, financial, mathematical, and statistical functions</LI>
|
||
|
||
<LI>
|
||
· Goal seeking</LI>
|
||
|
||
<LI>
|
||
· Multiple named views</LI>
|
||
|
||
<LI>
|
||
· Dynamic inter-spreadsheet links</LI>
|
||
|
||
<LI>
|
||
· Live graphs and charts</LI>
|
||
|
||
<LI>
|
||
· Editable graph styles</LI>
|
||
|
||
<LI>
|
||
· Print preview</LI>
|
||
|
||
<LI>
|
||
· Borders and shading</LI>
|
||
|
||
<LI>
|
||
· Drag-and-drop moving of cells</LI>
|
||
|
||
<LI>
|
||
· Projection tables</LI>
|
||
|
||
<LI>
|
||
· Relative and absolute cell references</LI>
|
||
|
||
<LI>
|
||
· Built-in database functions</LI>
|
||
|
||
<LI>
|
||
· Built-in shared library, RPC, and shell command mechanisms</LI>
|
||
|
||
<LI>
|
||
· True minimal recalculation</LI>
|
||
</UL>
|
||
<B>Applix Presentation Graphics</B>
|
||
<UL>
|
||
<LI>
|
||
· Feature-rich palette, fill patterns & drawing tools</LI>
|
||
|
||
<LI>
|
||
· Horizontal and vertical shearing</LI>
|
||
|
||
<LI>
|
||
· User-definable fill patterns, brush styles and shapes</LI>
|
||
|
||
<LI>
|
||
· Unlimited color support and point sizes</LI>
|
||
|
||
<LI>
|
||
· Rotating and scaling options</LI>
|
||
|
||
<LI>
|
||
· Drop shadows</LI>
|
||
|
||
<LI>
|
||
· Text wrapping</LI>
|
||
|
||
<LI>
|
||
· Image digitizing</LI>
|
||
|
||
<LI>
|
||
· Pixel editing</LI>
|
||
|
||
<LI>
|
||
· Managed layers and animation</LI>
|
||
</UL>
|
||
<B>Applix Mail</B>
|
||
<UL>
|
||
<LI>
|
||
· Fully mail-enables all Applixware products</LI>
|
||
|
||
<LI>
|
||
· Personal and global user lists, distribution lists and aliases</LI>
|
||
|
||
<LI>
|
||
· Sorting, filing and querying on incoming messages</LI>
|
||
|
||
<LI>
|
||
· Automatic conversion of messages/documents to recipient's preferences</LI>
|
||
|
||
<LI>
|
||
· UNIX sendmail transport and MIME compliant</LI>
|
||
|
||
<LI>
|
||
· Shared folders</LI>
|
||
</UL>
|
||
<B>Applix HTML Author</B>
|
||
<UL>
|
||
<LI>
|
||
· Availability of a wide range of basic and advanced HTML concepts</LI>
|
||
|
||
<LI>
|
||
· More than 25 standard HTML styles for headlines, subheads, lists
|
||
and text</LI>
|
||
|
||
<LI>
|
||
· Auto-conversion of Applix Words styles to standard HTML styles</LI>
|
||
|
||
<LI>
|
||
· Auto-conversion of Applix Graphics and Applix Presents to GIF,
|
||
including linked or embedded graphics</LI>
|
||
|
||
<LI>
|
||
· Auto-conversion or creation of tables</LI>
|
||
|
||
<LI>
|
||
· Full control over background color, text and hyperlink colors</LI>
|
||
|
||
<LI>
|
||
· Auto-bulleting and auto-listing functions</LI>
|
||
|
||
<LI>
|
||
· Dialog boxes and pull-down menus for all attributes and activities</LI>
|
||
|
||
<LI>
|
||
· Straightforward linking and editing of existing GIF files</LI>
|
||
</UL>
|
||
<B>The Extension Language Facility (ELF) and Macros</B>
|
||
<UL>
|
||
<LI>
|
||
· Robust interpretive programming language</LI>
|
||
|
||
<LI>
|
||
· TCP/IP socket interface and remote procedure calls (RPCs)</LI>
|
||
|
||
<LI>
|
||
· Interactive debugger, compiler/interpreter</LI>
|
||
|
||
<LI>
|
||
· Arithmetic, string and Boolean operators</LI>
|
||
|
||
<LI>
|
||
· Over 2500 built-in macros. Time-saving features for all users</LI>
|
||
|
||
<LI>
|
||
· User-definable menu bars, dialog boxes and keybindings, menu-bar
|
||
editor across all Applixware products</LI>
|
||
|
||
<LI>
|
||
· Keystroke and mousepick recorder</LI>
|
||
|
||
<LI>
|
||
· Live linking and launching of external applications from Applix
|
||
Words,</LI>
|
||
|
||
<LI>
|
||
· Spreadsheets, Presents, and Mail.</LI>
|
||
|
||
<LI>
|
||
· User-definable ExpressLine icons for automating tasks</LI>
|
||
|
||
<LI>
|
||
· Incremental zoom</LI>
|
||
</UL>
|
||
<B>Changes from Previous Version</B>
|
||
|
||
<P>This new version features advanced HTML authoring tools for adding pages
|
||
to your website simply and directly. It also has dramatically improved
|
||
filter technology enabling you, for example, to import and work on Word
|
||
or WordPerfect files and export back in those formats. If you want the
|
||
``real thing'', Corel has version 7.0 of Word Perfect available for Linux.
|
||
|
||
<P>The graphical user interface for Linux (and Unix in general) is X Windows.
|
||
A typical X Windows setup is shown below. This system is running the Common
|
||
Desktop Environment (CDE) window manager. X Windows is divided into two
|
||
subsystems consisting of a server and a client and you are free to change
|
||
either of these as your want. The main reason for changing an X server
|
||
is to gain better speed and better support for your video cards and monitors.
|
||
The main reason for changing window managers is to get the look and feel
|
||
you desire. You can not change the server or window manager under any of
|
||
the Windows products, because Microsoft has decided the look and feel you
|
||
get. The closest they get is the Plus! pack and its themes.
|
||
|
||
<P>Another possibility , which will save money and breath life into your
|
||
old 486's is to install Linux on them and use them as a NC (Network Computer).
|
||
Linux's GUI is X, so it is perfect for an X terminal (with either another
|
||
Linux machine as the server, or any other Unix system) and you can run
|
||
Insignia Solutions Inc.'s Keoke client under Java in order to turn your
|
||
Linux workstation into a thin client that runs Windows (virtual NT) applications.
|
||
|
||
<P>As a rule, Linux performs radically better than Windows 3.1 given the
|
||
same amount of RAM. Linux can run complete with a graphical desktop on
|
||
a 386 with 4MB of RAM, if you're patient. Add Netscape Navigator, and you
|
||
can get away with a 486 and 8MB of RAM. Consider 16MB of RAM a performance
|
||
sweet spot, especially if you use Communicator. Linux also has unimposing
|
||
disk space requirements. The bare-bones Caldera graphical client uses about
|
||
68MB of disk space. You'll want to install a few more packages than that
|
||
(Netscape, Java, and perhaps a friendlier window manager than the default
|
||
Fvwm), and you'll need at least a 32MB swap partition. When you consider
|
||
all the factors, a 200MB disk is plenty for most desktops.
|
||
<DIV ALIGN=right> </DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Appendix A</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="RedHat 5.0 Installation Guide"></A><B><FONT SIZE=+2>RedHat
|
||
5.0 Installation Guide</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Appendix B</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="Samba"></A><B><FONT SIZE=+2>Samba</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><B><FONT SIZE=+2>Appendix C</FONT></B></DIV>
|
||
|
||
<DIV ALIGN=right><A NAME="DOSEMU Manual"></A><B><FONT SIZE=+2>DOSEMU Manual</FONT></B></DIV>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Quinn P. Coldiron <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./nelson.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./kahn.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<CENTER>
|
||
<H1>
|
||
<FONT FACE="Arial,Helvetica">Revisiting VIM</FONT></H1></CENTER>
|
||
|
||
<CENTER><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>
|
||
by <a href="mailto:kahn@zk3.dec.com">Andy Kahn</a></FONT></FONT></CENTER>
|
||
|
||
<CENTER><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>April 29th, 1998</FONT></FONT></CENTER>
|
||
<HR>
|
||
|
||
<CENTER><FONT FACE="Arial,Helvetica"> </FONT></CENTER>
|
||
<FONT FACE="Arial,Helvetica">Vim stands for "VI Improved", and certainly,
|
||
it a very much improved version of the old text editor, vi. It's been a
|
||
while since the gazette had an article on vim (over a year to be exact!),
|
||
and a lot has changed since then, including a major version release. I
|
||
decided to cover some of the new features (as well as some older features)
|
||
that I find extremely useful in vim, but not in vi.</FONT>
|
||
<BR>
|
||
<H3>
|
||
<FONT FACE="Arial,Helvetica">Features</FONT></H3>
|
||
<FONT FACE="Arial,Helvetica">First of all, let me just run down some of
|
||
the big features of the latest version of vim:</FONT>
|
||
<BLOCKQUOTE>
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">Syntax highlighting</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">Win32 GUI version</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">BeOS version, including GUI</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">MacOS GUI version</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">VMS version</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">Built-in scripting language</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">Perl and Python support</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">Unlimited undo</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">Multiple windows</FONT></LI>
|
||
|
||
<LI>
|
||
<FONT FACE="Arial,Helvetica">...and a ton of other good stuff</FONT></LI>
|
||
</BLOCKQUOTE>
|
||
|
||
<H3>
|
||
<FONT FACE="Arial,Helvetica">Syntax highlighting</FONT></H3>
|
||
<FONT FACE="Arial,Helvetica">Personally, I found the syntax highlighting
|
||
to be one of the most useful features of vim. Syntax highlighting (or coloring,
|
||
as some may call it), colors text according to their attributes. For editing
|
||
code, this allows you to have different colors for commented text, keywords,
|
||
numbers, etc. You may not think much of it, but believe me, after staring
|
||
at code for long periods of time, all the text on the screen starts looking
|
||
pretty much the same. It certainly helps to have some color differentiate
|
||
between actual code, and comments in the code! A picture is worth a thousand
|
||
words, so here's a screen shot of my vim setup editing main.c from the
|
||
vim source:</FONT><BR>
|
||
<BR>
|
||
<CENTER><IMG SRC="./gx/kahn/vim_syntax_highlighting1.gif" ></CENTER>
|
||
|
||
|
||
<P><FONT FACE="Arial,Helvetica">You may notice the curious string on the
|
||
very first line of the file: "</FONT><TT>vi:set ts=8 sts=4 sw=4:</TT><FONT FACE="Arial,Helvetica">"
|
||
This is just a little formatting shortcut. If you write code that other
|
||
people may look at and/or edit, if they also use vim, then the code will
|
||
be properly indented as you intended it to be! This is just like the magic
|
||
strings people use in emacs: "</FONT><TT>-*- Mode: C++; tab-width: 4; indent-tabs-mode:
|
||
nil; c-basic-offset: 4 -*-</TT><FONT FACE="Arial,Helvetica">" to make indentation
|
||
look consistent.</FONT><br>
|
||
<H3>
|
||
<FONT FACE="Arial,Helvetica">Gui versions</FONT></H3>
|
||
<FONT FACE="Arial,Helvetica">As for all the wonderful GUI versions of vim,
|
||
here's a screenshot I found at <A HREF="http://polder.ubc.kun.nl/~rhialto/be/vim-5.0s-screen1.gif">http://polder.ubc.kun.nl/~rhialto/be/vim-5.0s-screen1.gif</A>
|
||
showing off the BeOS version:</FONT> <BR>
|
||
<BR>
|
||
<CENTER><IMG SRC="./gx/kahn/vim-5.0s-screen1.gif" ></CENTER>
|
||
|
||
|
||
<P><FONT FACE="Arial,Helvetica">Here is a BIG screenshot of the Unix version
|
||
of vim with four different looks (vim in an xterm, vim using Athena, vim
|
||
using Athena with Xaw3d, and vim using Motif (for Linux users, Vim also
|
||
works with Lesstif)). Click on the image for the full size version:</FONT> <BR>
|
||
<BR>
|
||
<CENTER><A HREF="./gx/kahn/vim_big.gif"><IMG SRC="./gx/kahn/vim_big-small.gif" ></A></CENTER><br>
|
||
|
||
<CENTER><FONT FACE="Arial,Helvetica"></FONT></CENTER>
|
||
<FONT FACE="Arial,Helvetica">There are plenty more screenshots <A HREF="http://www.vim.org/pics.html">here</A>.</FONT><br>
|
||
<H3>
|
||
<FONT FACE="Arial,Helvetica">Built-in Scripting</FONT></H3>
|
||
<FONT FACE="Arial,Helvetica">The built-in scripting language is a small
|
||
language (as opposed to Perl and Python) that let's you do some simple
|
||
things in your vim startup file (.exrc or rather, .vimrc). For example,
|
||
the simplest thing to do is to check for a version or feature:</FONT> <PRE>
|
||
<TT> if version >= 500
|
||
" Switch on syntax highlighting.
|
||
syntax on
|
||
|
||
if has("cscope")
|
||
set csexec=/usr/local/bin/cscope
|
||
set csto=0
|
||
set csta=1
|
||
set csverb=0
|
||
cs add cscope.out
|
||
set csverb=1
|
||
else
|
||
map ^] g^]
|
||
endif
|
||
endif
|
||
</TT></PRE><br>
|
||
|
||
<H3>
|
||
<FONT FACE="Arial,Helvetica">Visual Text Selecting</FONT></H3>
|
||
<FONT FACE="Arial,Helvetica">A feature which is present even in the previous
|
||
version of vim that I use frequently is its "Visual" capability. By hitting
|
||
"v" when in command mode, you can highly lines and words and then perform
|
||
just about any normal vim operation on the selected text! This includes,
|
||
deleting, copying, pasting, running more ":ex" commands, and my favorite,
|
||
reindenting. For example, let's say I highlighted the following code:</FONT> <BR>
|
||
<BR>
|
||
<CENTER><IMG SRC="./gx/kahn/vim_visual1.gif" ></CENTER>
|
||
|
||
|
||
<P><FONT FACE="Arial,Helvetica">If I hit ">" (that's the greater-than sign,
|
||
or Shift-.), the result will look like this:</FONT> <BR>
|
||
<BR>
|
||
<CENTER><IMG SRC="./gx/kahn/vim_visual2.gif" ></CENTER>
|
||
|
||
|
||
<P><FONT FACE="Arial,Helvetica">Or if I were to hit "<" (the less-than
|
||
sign, or Shift-,), I get this result:</FONT> <BR>
|
||
<BR>
|
||
<CENTER><IMG SRC="./gx/kahn/vim_visual3.gif" ></CENTER>
|
||
|
||
|
||
<P><FONT FACE="Arial,Helvetica">If I really wanted to, I could highlight
|
||
the entire function, and run then run it through the "indent" program:</FONT> <BR>
|
||
<BR>
|
||
<CENTER><FONT FACE="Arial,Helvetica">Before:<p><IMG SRC="./gx/kahn/vim_visual4.gif" ALIGN=CENTER></A> <p>
|
||
After:<p></FONT><IMG SRC="./gx/kahn/vim_visual5.gif" ALIGN=ABSCENTER></CENTER>
|
||
|
||
<CENTER> </CENTER><br>
|
||
|
||
<H3>
|
||
<FONT FACE="Arial,Helvetica">C and C++ tags</FONT></H3>
|
||
<FONT FACE="Arial,Helvetica">Another feature programmers will find handy
|
||
is vim's ability to deal with multiple tags. Vim comes with "Exhuberant
|
||
Ctags", and with it, you can store multiple definitions in the same tags
|
||
file. Once in vim, you can do use ":tselect" or ":tjump" on a tag, and
|
||
vim will present to you a list of the multiple tag entries. Just select
|
||
from the list, and vim will take you there as it normally would with a
|
||
single tag entry!</FONT><br>
|
||
<H3>
|
||
<FONT FACE="Arial,Helvetica">There's More!</FONT></H3>
|
||
<FONT FACE="Arial,Helvetica">Of course, I could go on and on about all
|
||
the little (as well as big!) things that make vim such a great editor.
|
||
But I won't bore you with the details. :) You can go read
|
||
about them yourself on vim's homepage: <A HREF="http://www.vim.org">www.vim.org</A>.
|
||
There's plenty of new things being worked on and added all the time, including
|
||
more features in the various GUI versions (contact me if you are interested
|
||
in doing a GTK and/or a QT version!), ports to other platforms (including
|
||
the Amiga), and other nifty features.</FONT><FONT FACE="Arial,Helvetica"></FONT>
|
||
|
||
<P><FONT FACE="Arial,Helvetica">There are certainly a lot of text editors
|
||
out there, and if you're a vi user, you should definitely consider using
|
||
vim if you aren't doing so already!</FONT><br>
|
||
<hr>
|
||
<FONT FACE="Arial,Helvetica">
|
||
Andy works at Digital Equipment Corporation doing
|
||
Digital Unix filesystems kernel development.
|
||
He thinks he's just hacking away at more and more C code,
|
||
and in his copious spare time, he hacks on lots of other
|
||
things, including all the trees in his neighborhood.
|
||
Feel free to send him
|
||
<a href="mailto:kahn@zk3.dec.com">email</a>.
|
||
|
||
</FONT><br>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Andy Kahn <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./coldiron.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./richardson.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
<font color="navy">A <I>Linux Journal</I> Preview</font>:
|
||
This article will appear in the August issue of <I>Linux Journal</I>.
|
||
<P> <HR> <P>
|
||
|
||
<center>
|
||
<H1><font color="maroon">Sun Joins Linux International</font></H1>
|
||
<H4>By <a href="mailto:gazette@ssc.com">Marjorie Richardson</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
In May, Sun Microsystems joined Linux International. In a
|
||
year where Netscape has released their source and many companies have
|
||
announced that their products will be supporting Linux, I felt Sun's move
|
||
was an interesting enough development to want to know more. Therefore, I
|
||
did a short e-mail interview with Charles Andres, a Group Manager in
|
||
Market Development Engineering at Sun Microsystems. Here's what he told me.
|
||
<p>
|
||
<i>
|
||
<b>Margie</b>:Why has Sun made the decision to join Linux International?
|
||
</i><p>
|
||
<b>Charles</b>: Sun Microsystems is responding to renewed interest in
|
||
running Linux on its UltraSPARC products, such as the Ultra 5.
|
||
SPARC products have always been designed to run UNIX extremely well.
|
||
Linux runs well on UltraSPARC platforms.
|
||
<p>
|
||
It is important to note that this move in no way diminishes Sun's support
|
||
for Solaris, a proven reliable scalable operating system. The Solaris environment
|
||
will still be provided with all SPARC systems and is considered by us to be
|
||
the best operating system for enterprise and network computing.
|
||
<p>
|
||
<i>
|
||
<b>Margie</b>: Is Sun planning to have Linux support for all its products?
|
||
</i><p>
|
||
<b>Charles</b>: Sun Microsystems is not planning on selling any products that are bundled
|
||
with Linux. Sun bundles Solaris with every workstation and server
|
||
it currently ships. There are also no plans to provide support for
|
||
Linux directly. However, there are a number of Linux vendors that
|
||
support a variety of platforms. We are working to ensure that these
|
||
vendors include UltraSPARC platform support for their Linux products.
|
||
<p>
|
||
<i>
|
||
<b>Margie</b>: Does this move represent a shift in policy for Sun? Last year, we
|
||
asked for a picture of a SunSPARC workstation to use on our cover, and
|
||
were refused because ``Linux is a competitor.'' (We used a Ross SPARCplug instead.)
|
||
</i><p>
|
||
<b>Charles</b>: Sun Microsystems has never had an official policy regarding Linux up to now.
|
||
As stated above, Sun Microsystems has gone from having no policy regarding
|
||
Linux, to helping to ensure that Linux runs on SPARC by assisting companies who
|
||
sell supported versions of Linux.
|
||
<p>
|
||
<i>
|
||
<b>Margie</b>: How does Sun feel about the ``Open
|
||
Source'' movement? (Prominent in the news, because of Netscape
|
||
source release.)
|
||
</i><p>
|
||
<b>Charles</b>: Sun Microsystems has a long tradition of supporting open standards,
|
||
typically through standardized interfaces, many of which Sun has invented. Providing
|
||
source code may be appropriate in some specific instances, but typically works
|
||
well only in situations where trademarks associated with the source code are licensed.
|
||
Compatibility, consistency, reliability and upgrades require a
|
||
business model that can finance the effort required to provide them.
|
||
<p>
|
||
Users who want the freedom of Open Source take on the responsibility of
|
||
maintaining their own source code, but cannot guarantee consistent results
|
||
with other variants. This could become a problem for Netscape source variants if
|
||
they are not uniquely identified. This is why we feel brand protection
|
||
through licensing
|
||
is so important.
|
||
<p>
|
||
<i>
|
||
<b>Margie</b>: Some people feel that Java should be made Open
|
||
Source. Any chance of that happening?
|
||
</i><p>
|
||
<b>Charles</b>: Source for the Java language is available to anyone who signs the Java
|
||
license which is free for non-commercial use. This is done to allow
|
||
Java to run anywhere, and to avoid problems that could occur when
|
||
source is modified to produce variants that are not consistent with
|
||
the Java language specification.
|
||
<p>
|
||
<i>
|
||
<b>Margie</b>: Anything else you'd like to add?
|
||
</i><p>
|
||
<b>Charles</b>: We look forward to working with you and the Linux community
|
||
to promote the advantages of UNIX and Linux on SPARC in the future.
|
||
<p>
|
||
<i>
|
||
<b>Margie</b>:Thank you for your time.</I>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Marjorie Richardson <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./kahn.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./bryant.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H1><font color="maroon">Tom's 2 cent Tips</font></H1>
|
||
<H4>By <a href="mailto:">Tom Bryant</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
The notes listed below document the author's "show stoppers" which were
|
||
made as he learned UNIX, after working on DOS, VMS, and other systems. There
|
||
is a small chance that you will make exactly the same error, and this document
|
||
will help you to solve it. What is far more likely is that you will skim
|
||
through it, and hopefully learn one very important thing:
|
||
<P>
|
||
Almost all errors are trivial, and result from your understanding a Unix
|
||
function *almost* completely. Gross errors in understanding are very rare,
|
||
although when you hit a show stopper, you usually get the initial impression
|
||
that you are hopelessly in left field and will never understand this cryptic
|
||
operating system. Not True!! *Do not give up*!
|
||
<P>
|
||
I suppose that you have already guessed it, but the FAQs, man pages and
|
||
emacs info documentation comes with Linux, and *really* help out. You have to
|
||
really dig: there are bookshelves of documentation in the above sources. You
|
||
will probably learn more about certain topics than you wanted to, but after a
|
||
while all this knowledge begins to look good on your resume. While I have
|
||
tried to avoid overlap in this document, some does exist. It should give you
|
||
pause that there is so little overlap! A modern operating system is a complex,
|
||
many faceted beast. Take it a facet at a time and you'll get around it!
|
||
<P>
|
||
UNIX is largely free of the system crashes that plague DOS and the
|
||
MAC. This is because a user account is almost incapable of accessing the
|
||
system resources required to crash the system. When you're running in DOS or
|
||
MAC mode, you (or more often, programs that you run) can crash the system. I
|
||
once complexly wiped my hard disk while running Borland's C++ compiler. I have
|
||
never had this happen with Linux. I've never, in five years, crashed the
|
||
system so badly that I had to reset. Granted, some functions (X windows and
|
||
the modem) required a reset, but I could always get to a root virtual terminal
|
||
to shut down gracefully. I've merrily crashed VMS, other Unicies, and of
|
||
course, anything Microsoft has ever produced, from DOS 3.3 to NT. Linux is
|
||
robust.
|
||
<P>
|
||
I suppose no introduction is complete without a testimonial. Here goes: I
|
||
mentioned above that I had worked on a number of systems before embracing
|
||
Unix. Unix (especially Linux) is the best system I have *ever* worked on.
|
||
Give it a chance: it takes a while to collect a "critical mass" of Unix
|
||
commands to make the system really fly, but once you do, you'll become one of
|
||
those insufferable Unix propeller heads who claim (truthfully) that nothing
|
||
else even comes close!
|
||
<P>
|
||
Please Note: The author has made every effort to insure the correctness of
|
||
the information which follows. However, there are NO warranties, expressed or
|
||
implied, for this information. In other words, if something goes wrong, it's
|
||
your problem.
|
||
<P><HR> <P>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./bryant.html#add">adduser</a>
|
||
<li><a HREF="./bryant.html#ar">ar</a>
|
||
<li><a HREF="./bryant.html#bac">Backing Up</a>
|
||
<li><a HREF="./bryant.html#bas">bash</a>
|
||
<li><a HREF="./bryant.html#c">C</a>
|
||
<li><a HREF="./bryant.html#chm">chmod</a>
|
||
<li><a HREF="./bryant.html#csh">cshrc</a>
|
||
<li><a HREF="./bryant.html#fin">find</a>
|
||
<li><a HREF="./bryant.html#ftp">ftp</a>
|
||
<li><a HREF="./bryant.html#gdb">gdb</a>
|
||
<li><a HREF="./bryant.html#ima">imake</a>
|
||
<li><a HREF="./bryant.html#ker">kermit</a>
|
||
<li><a HREF="./bryant.html#log">login</a>
|
||
<li><a HREF="./bryant.html#les">less</a>
|
||
<li><a HREF="./bryant.html#lin">Linux</a>
|
||
<li><a HREF="./bryant.html#mai">mail</a>
|
||
<li><a HREF="./bryant.html#mak">make</a>
|
||
<li><a HREF="./bryant.html#mod">modem</a>
|
||
<li><a HREF="./bryant.html#net">Networking</a>
|
||
<li><a HREF="./bryant.html#nro">nroff</a>
|
||
<li><a HREF="./bryant.html#qso">qsort</a>
|
||
<li><a HREF="./bryant.html#ppp">PPP</a>
|
||
<li><a HREF="./bryant.html#rm">rm</a>
|
||
<li><a HREF="./bryant.html#set">Setup</a>
|
||
<li><a HREF="./bryant.html#swa">swapon</a>
|
||
<li><a HREF="./bryant.html#tar">tar</a>
|
||
<li><a HREF="./bryant.html#tes">test</a>
|
||
<li><a HREF="./bryant.html#tim">Time</a>
|
||
<li><a HREF="./bryant.html#use">useradd</a>
|
||
<li><a HREF="./bryant.html#vir">Virtual Terminals</a>
|
||
<li><a HREF="./bryant.html#x">X</a>
|
||
</ul>
|
||
|
||
<P><HR> <P>
|
||
Alphabetical list of utilities with one or more tips with them:
|
||
<P><HR> <P>
|
||
<a name="add"></A>
|
||
<B>adduser</B>
|
||
<P>
|
||
You can only run this from root, but it is an essential command. Almost
|
||
all of your time spent in Linux should be spent in a user account of your
|
||
own creation, as this account is prevented from executing disastrous
|
||
commands such as rm -rf /* (This cleans your disk in a disastrously
|
||
complete fashion.)
|
||
<P>
|
||
MORAL: Always run in a user account, not root unless you are doing some
|
||
system administration which will only work in root.
|
||
<P><HR> <P>
|
||
<a name="ar"></A>
|
||
<B>ar</B>
|
||
<P>
|
||
Ar creates a library file, which, after you get a utility program you'll
|
||
be using in other programs, allows you to easily access the object files
|
||
of that program. The files are created by the following command:
|
||
<PRE>
|
||
ar -r libArchiveName.a objectfile.o
|
||
</PRE>
|
||
ArchiveName is, by convention, named libArchiveName.a. However, you refer
|
||
to in your make file only by ArchiveName. e.g
|
||
<PRE>
|
||
LIBFILES = ... -lArchiveName ...
|
||
</PRE>
|
||
<P> <HR> <P>
|
||
<a name="bac"></A>
|
||
<B>Backing up. </B>
|
||
<P>
|
||
Having your system crash and not loosing valuable data is what separates
|
||
the computer pros from the also rans. Here's how I do it.
|
||
<P>
|
||
All of the software on my system is safely contained on the CD that I used
|
||
to load it in. There's no reason to back up this stuff. CDs are more
|
||
stable than any tape or disk backup I know of.
|
||
<P>
|
||
I only back up files that I have fiddled with. My programs, configuration
|
||
files, documents, etc. I have a script file, sall (save all) which goes
|
||
to each directory that I have stuff in, tars it, gzips it and then saves
|
||
it to floppy.
|
||
<P>
|
||
This stuff all fits on one 1.44 Mb disk. It represents about 730 pages of
|
||
single spaced typewritten output. That's a lot of typing. Most books
|
||
aren't that big. If you have more stuff than this, I'd suspect that 80%
|
||
of it is stuff you haven't touched in a year. You can back it up to a
|
||
disk, put the disk in a safe place and pretty much forget it. Of course,
|
||
if you gzip the result, you can usually more than triple the amount of
|
||
stuff you back up.
|
||
<P>
|
||
I have 15+ disks which I keep my backups on, and back up at the end of any
|
||
day that I have done a substantial amount of input. This gives me access
|
||
to a month or more of past versions.
|
||
<P>
|
||
You'll find your own way in this. The important thing is to *do* it.
|
||
Then you can feel almost smug when you hard disk finally dies.
|
||
<P><HR> <P>
|
||
<a name="bas"></A>
|
||
<B>bash (and ksh and sh)</B>
|
||
<P>
|
||
To set an environmental variable with bash use the following syntax:
|
||
<PRE>
|
||
VARIABLE=value
|
||
</PRE>
|
||
For example, to tell bash
|
||
that your are a vt100 type terminal, enter:
|
||
<PRE>
|
||
TERM=vt100; export TERM
|
||
</PRE>
|
||
NOTE: There are no spaces around the equal sign. This is true for
|
||
all bash commands, not just setting environmental variables.
|
||
Remember this and be saved frustration down the road.
|
||
<P><HR> <P>
|
||
<a name="c"></A>
|
||
<B>C</B>
|
||
<ol>
|
||
<li>As Unix is currently configured, there is no easy way to get a single
|
||
keystroke without using curses or changing the terminal characteristics.
|
||
Your users will just have to get used to hitting Enter after an input. If
|
||
they can't, uses curses or the GCC C manual (actually a superb reference
|
||
for C libraries well worth the $50+ bucks!)
|
||
|
||
<li>After you have output to an opened text file, it is a good idea to send a
|
||
fflush(stdout) command. This will flush the buffer and keep you from
|
||
overflowing it if you get over 2048 characters in it, which is easy to do.
|
||
|
||
<li>To use math.h functions in a c program:<BR>
|
||
Link in the math libraries by typing:
|
||
<PRE>
|
||
gcc source.cxx -lm
|
||
</PRE>
|
||
Math libraries MUST be linked in last!!! Old UNIX linker convention!
|
||
|
||
<li>When declaring pointers, every variable must be proceeded by an asterisk!
|
||
<PRE>
|
||
int *v1,
|
||
v2,
|
||
v3;
|
||
</PRE>
|
||
Results in compiler complaints of bad unary operator arguments! Correct:
|
||
<PRE>
|
||
int *v1,
|
||
*v2,
|
||
*v3;
|
||
</PRE>
|
||
<li>To capture the output of a compile which is causing problems, and
|
||
outputting reams of digital vomit, use this construct from a sh based
|
||
shell like bash:
|
||
<PRE>
|
||
gcc -c flaw.cxx &> TextCapture
|
||
</PRE>
|
||
or
|
||
<PRE>
|
||
gcc -c flaw.cxx 2> TextCapture
|
||
</PRE>
|
||
The errors will be captured in TextCapture.
|
||
|
||
<li>A static variable is initialized only once in a function. All other calls
|
||
to that function result in the existing value of the variable being used.
|
||
|
||
<li>Shifts in most Unix C compliers are actually integer divides and
|
||
multiplies by 2. Never mind what the ANSI spec says: <BR>
|
||
This code gives problems:
|
||
<PRE>
|
||
long n = 0x80000000;
|
||
for (i = 0; i < 24; i++) printf("\n n is now %lx.", n >> i);
|
||
</PRE>
|
||
n must be declared as an unsigned long for this to produce reasonable
|
||
results. The fact that n starts negative fowls the compiler up. This
|
||
also indicates that right and left shifts are implemented as divide and
|
||
multiply by 2 with the GNU C++ compiler.
|
||
|
||
<li>This is perhaps my favorite subtle error. If I only had a dollar for every
|
||
hour I've spent searching for this self imposed klutziness...
|
||
<PRE>
|
||
for (i = 0; i < upper_limit; i++);
|
||
{
|
||
this = cant_happen;
|
||
the_loop = wont_execute;
|
||
}
|
||
</PRE>
|
||
See the semi-colon at the end of the for statement line? The program
|
||
pauses for an empty loop of upper_limit cycles, and then proceeds to do
|
||
just the first installment of the loop and nothing else. It's quite easy
|
||
to to, too, even after you've been bitten a few times by it.
|
||
|
||
<li>You can core dump a program sooner than quicker by writing too much stuff
|
||
into a string, so that it doesn't end with that all important 0. e.g.:
|
||
<PRE>
|
||
double age;
|
||
char oops[52];
|
||
int len; ...
|
||
sprintf(oops,"The age of the universe in nanoseconds is %f.\n",age);
|
||
len = strlen(oops);
|
||
</PRE>
|
||
The fragment will die at the strlen call, as the string is longer than 50
|
||
characters, even if it is 10 character in the sprintf statement. The age
|
||
of the universe in nanoseconds is about 19 characters long.
|
||
|
||
<li>This code will pass a file pointer (tfile) to a function:
|
||
<PRE>
|
||
#include <stdio.h> /* fclose, fopen, printf.*/
|
||
#include <stdlib.h> /* exit. */
|
||
|
||
void main(int argc, char* argv[])
|
||
{
|
||
/* Function Prototypes:*/
|
||
|
||
int openfile(FILE** tfile);
|
||
|
||
/* Variables:*/
|
||
|
||
FILE *tfile; /* Test file.*/
|
||
|
||
/* Begin:*/
|
||
|
||
printf("Starting program. tfile = %p.\n", tfile);
|
||
openfile(&tfile);
|
||
printf("Back in main. tfile = %p\n", tfile);
|
||
fclose(tfile);
|
||
}
|
||
|
||
/* Open the file and return the pointer.*/
|
||
|
||
int openfile(FILE **tfile)
|
||
{
|
||
*tfile = fopen("junk","wb");
|
||
printf("Tfile just opened. tfile = %p, *tfile = %p.\n",
|
||
tfile, *tfile);
|
||
return 1;
|
||
}
|
||
</PRE>
|
||
<li>This code will allow you to reference an array of characters as an array
|
||
of longs without using a union:
|
||
<PRE>
|
||
int bozo(void)
|
||
{
|
||
void use_long(long *array); // Function prototype.
|
||
char *array; // The character array.
|
||
|
||
use_long((long*) array);
|
||
}
|
||
|
||
void use_long(long *array);
|
||
{
|
||
// Reference the array as longs here.
|
||
}
|
||
</PRE>
|
||
<li>Profiling:<BR>
|
||
Compile with the flag -pg (for gprof compatible output).
|
||
Link with the -pg flag AT THE END OF THE LINK LIST. e.g:
|
||
<PRE>
|
||
gcc -o run_time_image my_main.o my_other_stuff.o -pg
|
||
</PRE>
|
||
Even then, don't expect miracles. This does not work on an mpeg2 package
|
||
I found on the net.
|
||
|
||
<li>Reading in a globbed (wildcarded) file list:<BR>
|
||
If you want you program to work on all files in a directory, you can
|
||
enter "myprog *". Argc will count the number of files out there, and
|
||
argv will be the char **list of their names.
|
||
|
||
<li>The code
|
||
<PRE>
|
||
string1[i++] = string2[i];
|
||
</PRE>
|
||
Will take the nth component of string2 and put it the into the nth
|
||
component of string1, then increment i. This is how GCC and the SGI C
|
||
compiler do it.
|
||
<P>
|
||
The Motorola C compiler takes the (n + 1)th component of string2 and puts
|
||
it into the nth component of string1. I gets incremented *before* the
|
||
assignment. Safer is to just use this code:
|
||
<PRE>
|
||
string1[i] = string2[i];
|
||
i++;
|
||
</PRE>
|
||
<li>The code
|
||
<PRE>
|
||
if (index++ == NR_PTS) index = 0; // Fails to implement a circular buffer.
|
||
</PRE>
|
||
Does not implement the desired buffer. Let's say that NR_PTS is 100, and
|
||
index is 99. The comparison is made when index is 99. Index is not reset,
|
||
by then it is set to 100 by the ++. Next time, of course, the index will
|
||
be reset to 0, but by then, it's overwritten whatever was in buffer[100],
|
||
which is the 101st entry in buffer, a 100 int (or whatever) array.
|
||
<P>
|
||
use this instead:
|
||
<PRE>
|
||
if (++index == NR_PTS) index = 0; // Implements the circular buffer.
|
||
</PRE>
|
||
<li>Occasionally, if you allocate a *huge* array (I needed one 10.7 MB to
|
||
make this one happen) the program will bomb as it tries to pass the array
|
||
to another function. For example:
|
||
<PRE>
|
||
char moby[20000000]; // A really big text file.
|
||
</PRE>
|
||
There simply wasn't enough room on the C/C++ stack to hold the array,
|
||
and the program bombed as soon as it tried to access it. The compiler,
|
||
of course, didn't complain.
|
||
<P>
|
||
The fix is to malloc (or new, in C++) the array:
|
||
<PRE>
|
||
char *moby; // A really big text file.
|
||
|
||
moby = (char*) malloc(20000000);
|
||
if (moby == NULL)
|
||
{
|
||
printf("Hey! I'm not big enough to hold moby!\n");
|
||
}
|
||
</PRE>
|
||
<li>When it works on one machine and not on others, or in the debugger and
|
||
not out of it:<BR>
|
||
You might well be not initializing your variables properly. Sometimes
|
||
one machine will just happen to initialize a variable to a non lethal
|
||
value, and the others won't. See inexplicable errors item 3 as well.
|
||
|
||
<li>Inexplicable errors:<BR>
|
||
Occasionally, you will face very odd errors. A function works perfectly
|
||
*most* of the time. The rest of the time, it has very strange errors.
|
||
Variables seem to change value in a capricious way, and your frustration
|
||
index soars off of the charts. If you're a beginner, you decide that
|
||
programming is beyond you, and give up. Don't despair, quite yet. There
|
||
are a few tricks, not written in any book that I have seen, that I have
|
||
developed over the years to help you over these rough spots. In general,
|
||
try these in the order given.
|
||
<ol>
|
||
<li>Rewrite your code until it is remorselessly neat.
|
||
|
||
<li>Step through it line by line with a good debugger (I recommend
|
||
GNU's GDB for C code. It's a bit flaky (1998) for C++).
|
||
|
||
<li>If these steps did not fix the problem, try recompiling
|
||
everything with a command like:
|
||
<PRE>
|
||
rm *.o // Important!
|
||
make // Or whatever compilation command you use.
|
||
</PRE>
|
||
<li>If you have inconsistent program results, so that the program
|
||
works most of the time, and inexplicably fails occasionally,
|
||
carefully check to see that all of your variables have been
|
||
initialized properly.
|
||
|
||
<li>Sometimes the memory can be corrupted by new routines not fitting
|
||
into word boundaries on your machine. Granted, this is *not*
|
||
supposed to happen, but it does anyway, even in the best
|
||
compilers and linkers. Try declaring arrays to be 1 index larger
|
||
than they should be and see if that fixes it. (This is getting to
|
||
be a rare C error (1998)).
|
||
<ol>
|
||
<li>There are times when the program does not misbehave in the
|
||
debugger, and if you put a few diagnostic printfs in it to further
|
||
check it out, it still does not die. These temporary measures may
|
||
need to be made permanent as the extra variables you created to
|
||
let you see what is going on have pushed the memory usage
|
||
boundaries of the function to a more robust spot (i.e. to a word
|
||
boundary).
|
||
</ol>
|
||
|
||
<li>Once you think you've fixed the problem, *TEST EVERYTHING* before
|
||
you release anything.
|
||
|
||
<li>Keep at it. With practice, you can dumb yourself down to the
|
||
intelligence level of a compiler. Good Luck!
|
||
</ol></ol>
|
||
<P><HR> <P>
|
||
<a name="chm"></A>
|
||
<B>chmod </B>
|
||
<P>
|
||
The command chmod XXX .* can have unforeseen after effects. It affects
|
||
the directory you're in as well as the files in that directory! You might
|
||
find that only root can access the files, and then only after chmoding
|
||
them back to where they were supposed to be.
|
||
<P>
|
||
cpio (not often used, most Unix users use tar instead)
|
||
<P>
|
||
To use cpio, for backups, specify:
|
||
<PRE>
|
||
find (path name) [-name] | cpio -oc > (destination file and directory.)
|
||
</PRE>
|
||
To extract a cpio file:
|
||
<PRE>
|
||
cpio -i [-F (full file specification)] [-r rename files]
|
||
</PRE>
|
||
<P><HR> <P>
|
||
<a name="csh"></A>
|
||
<B>cshrc</B>
|
||
<P>
|
||
To change the erase key from ctrl h to <-, one has to add the line:
|
||
<PRE>
|
||
stty erase \x7F
|
||
</PRE>
|
||
To the .cshrc file. Unfortunately, the C shell interpreter does not
|
||
understand the sequence \x7F, and I needed to write a short C program to
|
||
insert the byte with value 127 (7F hex) at the end of the file.
|
||
<P>
|
||
To set the terminal from 'console' or 'Linux' to vt100 (needed by elm (a
|
||
mail handling utility)) on an SGI, put this line in your .cshrc file in
|
||
you SGI home directory:
|
||
<PRE>
|
||
eval `tset -s -Q vt100`
|
||
</PRE>
|
||
If your etc/ttytype file is set up to recognize vt100s, this should work.
|
||
<P>
|
||
Note this does not work on all machines. These methods were useless on
|
||
a motorola, for example
|
||
<P><HR> <P>
|
||
<a name="fin"></A>
|
||
<B>find </B>
|
||
<PRE>
|
||
find (path name) -name (file name) -print
|
||
</PRE>
|
||
wildcards at the beginning of a find names must be preceded by a \. e.g.:
|
||
<PRE>
|
||
find / -name "\*bozo*" -print
|
||
</PRE>
|
||
finds all files with the letters bozo in them. Some systems require the
|
||
quotes as well.
|
||
<P><HR> <P>
|
||
<a name="ftp"></A>
|
||
<B>ftp</B>
|
||
<P>
|
||
Make sure the line setting is binary. Zipped files will not transfer
|
||
correctly if this is not set.
|
||
<P><HR> <P>
|
||
<a name="gdb"></A>
|
||
<B>gdb (and dbx)</B>
|
||
<P>
|
||
To examine a core file:
|
||
<PRE>
|
||
gdb <executable file name> <core file name>
|
||
</PRE>
|
||
The core file name is usually "core".
|
||
<P>
|
||
To examine an array:
|
||
<PRE>
|
||
p *arrayName@number_of_bytes_you_want_to_see
|
||
</PRE>
|
||
<P> <HR> <P>
|
||
<a name="ima"></A>
|
||
<B>imake</B>
|
||
<P>
|
||
The new way of handling compiling and linking programs is with a utility
|
||
called imake. It makes programs easier to move around from machine to
|
||
machine. To use it:
|
||
<ol>
|
||
<li>Read the imake, make and xmkmf man pages. Also any README files
|
||
that came with the program you're trying to build. If you're going
|
||
to be getting into some serious program development, the emacs
|
||
info page on make is a must read.
|
||
<li>Back up everything! Source, Makefile, imakefile, etc.
|
||
<li>imake
|
||
<li>If imake doesn't work, try xmkmf
|
||
<li>If it *still* doesn't work, go back to step 0.
|
||
</ol>
|
||
<P> <HR> <P>
|
||
<a name="ker"></A>
|
||
<B>kermit (quick check of file integrity)</B>
|
||
<P>
|
||
This is true for any other data transfer protocol as well, such as ftp.
|
||
<P>
|
||
Check the size of the files that you have transfered to the target system.
|
||
If they are not the same size, something went wrong.
|
||
<P><HR><P>
|
||
<a name="log"></A>
|
||
<B>login</B>
|
||
<P>
|
||
To disable the annoying wait after an unsuccessful login, edit the file
|
||
/etc/login.defs. Change the parameter FAIL_DELAY from whatever it's set
|
||
to to 0. You'll have to be root to do this.
|
||
<PRE>
|
||
link (ln)
|
||
</PRE>
|
||
to create a symbolic link:
|
||
<PRE>
|
||
ln -s <existing file or directory> <Linked file or directory$gt;
|
||
</PRE>
|
||
e.g.:
|
||
<PRE>
|
||
ln -s OldFile NewLink
|
||
</PRE>
|
||
This creates a symbolic link name NewLink that points to OldFile.
|
||
When you access NewLink, Unix actually accesses OldFile.
|
||
<P>
|
||
Links are mainly used to save disk space, allowing yu to have the same
|
||
file in several different places without actually having maintain
|
||
multiple copies of the file.
|
||
<P><HR> <P>
|
||
<a name="les"></A>
|
||
<B>less</B>
|
||
<P>
|
||
Less can't display ANSI color escape sequences like most of the other Unix
|
||
text output utilities can. It instead tries to print them with ugly
|
||
results. On other unicies, the work around is to use the pg function, but
|
||
it's not avalible on Linux (yet).
|
||
<P><HR> <P>
|
||
<a name="lin"></A>
|
||
<B>Linux</B>
|
||
<P>
|
||
To regain text that has scrolled off of the screen, try shift-PageUp
|
||
and/or shift-PageDown. This will work on a given console until you shift
|
||
to another one. When you shift back, however, you will find that the
|
||
scrolled text has been lost.
|
||
<P>
|
||
To change from virtual console to virtual console, use left alt (only the
|
||
left alt key works on my machine) FX where FX is one of the function keys
|
||
F1 thru F6. F7 will be your X window, and isn't set up for you to log
|
||
into it, but see the note below.
|
||
<P>
|
||
When you are in X, you can move back to the text consoles by simultaneously
|
||
typing the control and alt keys, and then the function key of the virtual
|
||
console you want to be in.
|
||
<P>
|
||
To add more virtual consoles edit your /etc/ inittab file and add a line to
|
||
the getty configuration section. I added this line to inittab and it
|
||
allowed me to add another virtual console:
|
||
<PRE>
|
||
c7:456:respawn:/sbin/agetty 38400 tty7
|
||
</PRE>
|
||
This let me log into F7, but not as root. To log in as root, I added this
|
||
line to the /etc/securetty file:
|
||
<PRE>
|
||
tty7
|
||
</PRE>
|
||
I did not add further consoles, as 7 is the canonical number for the
|
||
maximum number of things you want to juggle at one time, and each virtual
|
||
console takes up precious RAM even if it is dormant.
|
||
<P>
|
||
When your screen gives weird output for lower case letters, try this:
|
||
<PRE>
|
||
echo "^V^[c"
|
||
</PRE>
|
||
(that's E C H O space control-V escape C return) to fix it.
|
||
<P><HR> <P>
|
||
<a name="mai"></A>
|
||
<B>mail</B>
|
||
<P>
|
||
To send a message with a subject:
|
||
<PRE>
|
||
mail -s "This is the subject" recipient@computer.full.ip.address < message
|
||
</PRE>
|
||
To forward your mail:
|
||
<P>
|
||
Create a file in your root directory called .forward. This file
|
||
should contain the address of the machine that you want to send the
|
||
mail to:
|
||
<P>
|
||
e.g. My .forward file reads:
|
||
<PRE>
|
||
Thomas.V.Bryant.1@gsfc.nasa.gov
|
||
</PRE>
|
||
<P> <HR> <P>
|
||
<a name="mak"></A>
|
||
<B>make</B>
|
||
<P>
|
||
The make utility *requires* that commands (as listed under a
|
||
target:dependency line) begin with a tab (ASCII 09).
|
||
<P>
|
||
If your emacs tab stops are set to under 8, emacs will insert spaces
|
||
(ASCII 32), and not a tab. This will stop make dead in its tracks.
|
||
You'll have to reset your tabs to edit a makefile.
|
||
<P>
|
||
If you break up the lines in your make file (a good idea: readability
|
||
is king!) don't put anything after your backslash (line continuation
|
||
symbol) or make will throw up on it:
|
||
<PRE>
|
||
LIBS = Lmylib Lyourlib ... \
|
||
^
|
||
|
|
||
|
|
||
No spaces or tabs or anything after here!!!
|
||
</PRE>
|
||
<P> <HR> <P>
|
||
<a name="mod"></A>
|
||
<B>modem</B>
|
||
<P>
|
||
When you install linux, your serial ports will not be configured. You have
|
||
to enable the call to /etc/rc.d/rc.serial in /etc/rc/rc.S:
|
||
<PRE>
|
||
# Run serial port setup script:
|
||
# (CAREFUL! This can make some systems hang if the rc.serial script isn't
|
||
# set up correctly. If this happens, you may have to edit the file from a
|
||
# boot disk)
|
||
#
|
||
# You need to enable this line (remove the # comment symbol):
|
||
|
||
. /etc/rc.d/rc.serial
|
||
|
||
# for your modem to work.
|
||
</PRE>
|
||
<P><HR> <P>
|
||
<a name="net"></A>
|
||
<B>Networking</B>
|
||
<P>
|
||
Installation (for Author's PPP link -- a *very* brief reminder list):
|
||
<PRE>
|
||
Load the networking module in the slakware file.
|
||
Create or copy the /etc/hosts file.
|
||
Create or copy the /etc/resolve.conf.
|
||
Edit /etc/rc.d/rc.serial.
|
||
</PRE>
|
||
|
||
Run time problems:
|
||
<P>
|
||
Try the ifconfig and netstat commands to find out what your current
|
||
network configuration is.
|
||
<P>
|
||
Use the ping command to check you connections.
|
||
<P>
|
||
Make sure that your linux kernel has drivers both for your network
|
||
card and ethernet. Networking will not work without them.
|
||
<P><HR> <P>
|
||
<a name="nro"></A>
|
||
<B>nroff</B>
|
||
<P>
|
||
Many text files are quasi-readable, and filled with control characters.
|
||
If the file turns out to be an nroff man page, you can read it with the
|
||
command:
|
||
<PRE>
|
||
groff -Tascii -man file.name | less
|
||
</PRE>
|
||
Often a variation of this command is necessary. See the man pages for
|
||
groff and grog. Grog tries to look at the file for you and suggest a
|
||
command. This is one that repays a lot of fiddling. Back up the original
|
||
file, and groff away. Usually you'll get it. Remember also that
|
||
postscript files (usually denoted by a .ps suffix) are read with the
|
||
ghostscript command from X.
|
||
<P><HR> <P>
|
||
<a name="qso"></A>
|
||
<B>qsort</B>
|
||
<P>
|
||
Here's a wierd one. The qsort function has a hard time calling it's
|
||
comparison function from a C file compiled with gcc. It works fine if gcc
|
||
thinks it's compiling a C++ file. Here's a pixel value sort I did,
|
||
heavily edited:
|
||
<PRE>
|
||
int pixCmp(pixel*, pixel*); // Return -1, 0, or 1. For the qsort call.
|
||
...
|
||
qsort(data, BigNumber, sizeof(pixel), pixCmp);
|
||
...
|
||
int pixCmp(pixel* a,
|
||
pixel* b)
|
||
{
|
||
if (a->clr > b->clr) return 1;
|
||
else if (a->clr < b->clr) return -1;
|
||
else return 0;
|
||
}
|
||
</PRE>
|
||
If the file is named pixels.c, it produces the following gcc error:
|
||
<PRE>
|
||
pixels.c: In function `readData':
|
||
pixels.c:164: warning: passing arg 4 of `qsort' from incompatible
|
||
pointer type
|
||
</PRE>
|
||
If the file is named pixels.C, it produces no errors:
|
||
<P><HR> <P>
|
||
<a name="ppp"></A>
|
||
<B>PPP</B>
|
||
<P>
|
||
Installing PPP to work with Linux can be done, but it is not trivial.
|
||
<P>
|
||
I'll describe the steps that worked for me, so that you might get a
|
||
variation on them to work for you.
|
||
<P>
|
||
Don't expect it to work perfectly the first time. You'll have to futz
|
||
with it, unless you are very lucky.
|
||
<P>
|
||
PPP must first be installed in your kernel. To check if it is there:
|
||
<PRE>
|
||
dmesg | grep -i ppp
|
||
</PRE>
|
||
You should get something that looks like this:
|
||
<PRE>
|
||
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS
|
||
PPP line discipline registered.
|
||
</PRE>
|
||
If you don't, you'll have to recompile your kernel, or get a copy of a
|
||
kernel that has ppp on it from the net. Instructions for doing this are
|
||
found in the file /usr/doc/ppp/README.linux.gz. This is where it is in my
|
||
Slackware release, yours will probably be similar. You need to read this
|
||
file now. Before you go any further. Otherwise, what follows will read
|
||
like gibberish.
|
||
<P>
|
||
Read the Readme? Good. Here's how my pppd/chat command looks:
|
||
<PRE>
|
||
/usr/sbin/pppd connect '/usr/sbin/chat "" ATDT7035551212 CONNECT "" ogin:\
|
||
tbryant word: secret_password' /dev/modem 38400 -detach crtscts modem \
|
||
defaultroute noipdefault
|
||
</PRE>
|
||
Fill in your appropriate telephone number, user ID and password.
|
||
<P>
|
||
Run the script from your root directory,unless you have given pppd suid
|
||
privileges (recommended).
|
||
<P>
|
||
When I am running the script, I do so from an X windows term, so I can
|
||
start netscape (or whatever X application I want) easily.
|
||
<P>
|
||
Once I've established the connection, then I can run netscape, ftp, or
|
||
telent to other internet connected machines.
|
||
<P>
|
||
My ISP (Internet Service Provider) assigns me a different IP address each
|
||
time I log on. This IP address can be found with ifconfig, or from the
|
||
/var/log/messages file.
|
||
<P>
|
||
The last few lines have what you need:
|
||
<PRE>
|
||
Aug 28 20:01:23 3C273 pppd[168]: local IP address 205.252.11.62
|
||
</PRE>
|
||
To log off, the PPP-HOWTO.gz document has the following logoff script:
|
||
<PRE>
|
||
#!/bin/sh
|
||
DEVICE=ppp0
|
||
#
|
||
# If the ppp0 pid file is present then the program is running. Stop it.
|
||
if [ -r /var/run/$DEVICE.pid ]; then
|
||
kill -INT `cat /var/run/$DEVICE.pid`
|
||
#
|
||
# If the kill did not work then there is no process running for this
|
||
# pid. It may also mean that the lock file will be left. You may wish
|
||
# to delete the lock file at the same time.
|
||
if [ ! "$?" = "0" ]; then
|
||
rm -f /var/run/$DEVICE.pid
|
||
echo "ERROR: Removed stale pid file"
|
||
exit 1
|
||
fi
|
||
#
|
||
# Success. Let pppd clean up its own junk.
|
||
echo "PPP link to $DEVICE terminated."
|
||
exit 0
|
||
fi
|
||
#
|
||
# The PPP process is not running for ppp0
|
||
echo "ERROR: PPP link is not active on $DEVICE"
|
||
exit 1
|
||
</PRE>
|
||
Additional hints not in the README.linux file:
|
||
<P>
|
||
All exchanges between you and you host computer will be logged in the
|
||
/var/log/messages file. Deducing what's going wrong is much easier if
|
||
you just look at the end of this file:
|
||
<PRE>
|
||
tail /var/log/messages
|
||
</PRE>
|
||
Keep trying, don't be afraid to futz around. If you're well backed up
|
||
(you *ARE*, aren't you?) you won't hurt any of you hardware, or
|
||
permanently damage any software (even this is very unlikely).
|
||
Good Luck!
|
||
<P><HR><P>
|
||
<a name="rm"></A>
|
||
<B>rm</B>
|
||
<P>
|
||
When a file absolutely refuses to go away, try surrounding its name
|
||
with quotes. This might kill it. I needed to remove a file called
|
||
#filename#. Here's how I fared.
|
||
<PRE>
|
||
rm #filename# Refused to work.
|
||
rm "#filename#" Worked.
|
||
rm '#filename#' Worked.
|
||
rm \#filename# Worked.
|
||
</PRE>
|
||
The top command worked on the older versions of Linux and SGI's IRIX.
|
||
This is probably a Posix compatibility problem that caused the more
|
||
recent versions of Linux to stop working.
|
||
<P><HR> <P>
|
||
<a name="set"></A>
|
||
<B>Setup</B>
|
||
<P>
|
||
The setup script will not run unless you are in /usr/lib/setup, and
|
||
running as root. Be careful. Back up everything before you start playing
|
||
around with this. Don't be afraid to play, however, as you can always
|
||
improve on the defaults Linux comes with.
|
||
<P><HR> <P>
|
||
<a name="swa"></A>
|
||
<B>swapon</B>
|
||
<P>
|
||
To set up a swap file, (needed for installation)
|
||
<ol>
|
||
<li>Start you new Linux box with the boot and root disks.
|
||
|
||
<li>make a partition (The rule of thumb is 1 - 2 times the size of
|
||
the RAM on your machine.) using fdisk. Be sure and set the
|
||
data type to Linux swap.
|
||
|
||
<li>Format the partition: mkswap -c </dev/partitionName>
|
||
|
||
<li>Enable swapping in /etc/rc.d/rc.S: /sbin/swapon -a
|
||
</ol>
|
||
<P><HR> <P>
|
||
<a name="tar"></A>
|
||
<B>tar</B>
|
||
<P>
|
||
To make a tar file:
|
||
<PRE>
|
||
tar -cf tarfilename filename (or directory. Directory is recursive)
|
||
</PRE>
|
||
This creates the file.
|
||
<PRE>
|
||
tar -rf tarfilename filename (or directory. Directory is recursive)
|
||
</PRE>
|
||
This appends to an existing file.
|
||
<P>
|
||
To extract a tar file:<BR>
|
||
Get into the directory where you want to have the files.
|
||
<PRE>
|
||
tar -xf (Complete filespec of the tar file to be extracted.)
|
||
</PRE>
|
||
<P><HR> <P>
|
||
<a name="tes"></A>
|
||
<B>test</B>
|
||
<P>
|
||
*NEVER* *NEVER* *NEVER* name an executable test. This is a very easy,
|
||
logical thing to do. When you try and run it, the shell will invoke it's
|
||
test utility, find nothing there, and exit silently, leaving you very
|
||
puzzled.
|
||
<P><HR> <P>
|
||
<a name="tim"></A>
|
||
<B>Time</B>
|
||
<P>
|
||
To set the system clock (CMOS) from Linux:
|
||
<P>
|
||
Set the system time from the CMOS clock, adjusting the time to correct for
|
||
systematic error, and writ- ting it back into the CMOS clock.
|
||
<P>
|
||
This option uses the file /etc/adjtime to determine how the clock changes.
|
||
It contains three numbers: The first number is the correction in seconds
|
||
per day (for example, if your clock runs 5 seconds fast each day, the
|
||
first number should read -5.0).
|
||
<P>
|
||
The second number tells when clock was last used, in seconds since
|
||
1/1/1970.
|
||
<P>
|
||
The third number is the remaining part of a second that was left over
|
||
after the last adjustment.
|
||
<P>
|
||
The following instructions are from the source code:
|
||
<ol>
|
||
<li> create a file /etc/adjtime containing as the
|
||
first and only line: '0.0 0 0.0'
|
||
|
||
<li> run clock -au or clock -a, depending on whether your CMOS is
|
||
in Universal or Local Time. This updates the second number.
|
||
|
||
<li> set your system time using the date command. mmddhhmm[yy][.ss]
|
||
|
||
<li> update your CMOS time using clock -wu (for UT) or clock -w.
|
||
|
||
<li> replace the first number in /etc/adjtime by your correction.
|
||
|
||
<li> put the command clock -au or clock -a in your /etc/rc.local,
|
||
or let cron(8) start it regularly.
|
||
</ol>
|
||
<P><HR> <P>
|
||
<a name="use"></A>
|
||
<B>useradd</B>
|
||
<P>
|
||
When a user is added, you have to make sure that the user owns, or at least
|
||
has read, write, and execute privileges on his/her home directory. If you
|
||
neglect this step, the new user will be unable to function properly, and
|
||
perhaps will not be able to log on!
|
||
<P>
|
||
The /usr/bin directory must have its privileges set to 755 in order for
|
||
users to be able to execute the UNIX commands contained therein.
|
||
<P><HR> <P>
|
||
<a name="vir"></A>
|
||
<B>Virtual Terminals:</B>
|
||
<P>
|
||
To change from terminal to terminal:
|
||
<PRE>
|
||
Left Alt + fn
|
||
</PRE>
|
||
(n is the terminal number, from 1 - 6 and f is a function key.)
|
||
<P>
|
||
To return to virtual terminal text mode from X:
|
||
<PRE>
|
||
Left Alt + Control + fn
|
||
</PRE>
|
||
n is again the number of the terminal you want.
|
||
<P>
|
||
To see text that has scrolled off of the screen:
|
||
<PRE>
|
||
Shift + Page up or Page down.
|
||
</PRE>
|
||
Moves you up and down by half a screen each time.
|
||
<P>
|
||
To see task information:
|
||
<PRE>
|
||
+ Scroll Lock
|
||
</PRE>
|
||
To see memory information:
|
||
<PRE>
|
||
Shift + Scroll Lock
|
||
</PRE>
|
||
<P> <HR> <P>
|
||
<a name="x"></A>
|
||
<B>X:</B>
|
||
<P>
|
||
There are few short X tips. You need to read much of the documentation
|
||
that is out there, and but the O'Rielly series in X and Motif if you
|
||
intend to do serious developemt. It's an extrodinary, platform
|
||
independent, system that solves some very difficult problems with
|
||
accessing system resources in a uniform way. It's also very complex, with
|
||
all sorts of redundant functions and kludges. Good Luck.
|
||
<P>
|
||
If you're going to just start getting into building user interfaces, I
|
||
suggest that you bypass X entirely, and concentrate on Java. Of course,
|
||
Java for Unix platforms is based on X, but you shouldn't have to worry
|
||
about that.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Tom Bryant <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./richardson.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./hughes.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
<font color="navy">A <I>Linux Journal</I> Preview</font>:
|
||
This article will appear in the August issue of <I>Linux Journal</I>.
|
||
<P> <HR> <P>
|
||
|
||
<center>
|
||
<H1><font color="maroon">UniForum '98 Report</font></H1>
|
||
<H4>By <a href="mailto:phil@ssc.com">Phil Hughes</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
I am writing this article as I fly back from the UniForum Association
|
||
Spring '98 Conference. This was the first ever East Coast conference
|
||
held by UniForum in its 17 year history. It was held in Ocean City,
|
||
Maryland--a beautiful town by the Atlantic Ocean.
|
||
<p>
|
||
UniForum is an advocacy
|
||
organization that promotes the use of Open Computing solutions--or, to
|
||
put it in succinct terms--the use of UNIX and UNIX-like solutions.
|
||
UniForum and Usenix have tended to complement each other with UniForum
|
||
being the conference for suits and Usenix the conference for T-shirts.
|
||
<p>
|
||
The conference was a two and a half day event that looked light on paper.
|
||
Once there, I discovered there was too much to do in such a
|
||
short time. For the first two days, there were three tracks: <i>New Open
|
||
Software Development Model and Linux</i>, <i>Network Computing</i> and
|
||
<i>Best of SCO Forum</i>. All tracks included common Plenary and Keynote
|
||
sessions. On the third day there were two three-hour sessions: one presented by
|
||
the Open Group and the other by Linux International.
|
||
I attended all the Linux track sessions as well as the common sessions.
|
||
<p>
|
||
Monday's Plenary session was Eric Raymond's presentation of his paper <i>The
|
||
Cathedral and the Bazaar</i> which is credited with convincing Netscape to
|
||
take their Open Source stance.
|
||
If you haven't heard the talk or read the paper, it is available on our
|
||
Linux Resources page.
|
||
<p>
|
||
After Jon Hall introduced the Linux track, Frank Hecker, who is a systems
|
||
engineer at Netscape, gave a talk entitled <i>The Why and the How</i> that
|
||
filled in the background of Netscape's decision to embrace the Open
|
||
Source model.
|
||
For those of us who have been involved in what I call ``revolution from
|
||
below''--that is, attempting to sell Linux or Open Source to those in the trenches
|
||
and let it move up the corporate ladder--Frank had some interesting
|
||
things to say.
|
||
He said the engineers didn't believe Open Source could happen with
|
||
Netscape. So, Frank went to Marc Andreessen with the idea, and the rest is
|
||
history.
|
||
<p>
|
||
After Frank's talk, we got together for the keynote lunch where Ralph
|
||
Nader (<A HREF="./uniforum2.html">UniForum Press Release</A>) spoke on the Microsoft monopoly and how Linux could be a big player
|
||
in an alternate solution.
|
||
It was a treat to get to meet Ralph and to hear the
|
||
word Linux come out of his mouth just a few days after hearing Marc
|
||
Andreessen saying it.
|
||
I brought up how U.S. government procurements used to require a
|
||
POSIX-compliant operating system be made available with any system they
|
||
purchased, and Ralph and his staffers are going to look into why that
|
||
requirement was dropped.
|
||
I asked him to keep <i>LJ</i> up to date on any findings, but you might also
|
||
wish to check out his web site at http://www.essential.org/.
|
||
<p>
|
||
Two afternoon sessions were held in the Linux track.
|
||
The first was presented by Ron Workman of Cygnus Solutions, and the second
|
||
was presented by me. Covering mine is easy--I went through a series of
|
||
articles which have appeared in our <i>Linux Means Business</i> column,
|
||
illustrating how companies identified a problem, then used Linux to
|
||
address that problem.
|
||
<p>
|
||
Ron's talk addressed Open Source software from a different direction:
|
||
how a company can succeed in the business of supporting freely
|
||
available software. Cygnus was
|
||
founded in 1989 to provide commercial support for open Internet technologies
|
||
and has grown to 160 employees. The company has succeeded by offering
|
||
consulting and support on such products as the Free Software
|
||
Foundation's GNU C Compiler.
|
||
<p>
|
||
Monday evening was filled with good food and bad beer (Coors
|
||
Light?--lucky Linus wasn't there) at a beach party hosted by Red Hat
|
||
Software.
|
||
Like most parties at these conferences, the evening was filled with
|
||
meeting others and talking about computers, the UNIX market and telling
|
||
Microsoft jokes.
|
||
I found it a valuable time to get to know people better, for example, Morgan Von
|
||
Essen and Garry Paxinos of Metro Link, and to thank Alan Fedder and Kathy
|
||
Goetz of UniForum for organizing the conference.
|
||
<p>
|
||
Tuesday morning started with a Plenary by Eid Eid, President of Corel
|
||
Computer (see <i>LJ</i>, Issue 48). If I had to choose one person who provided
|
||
me with the most
|
||
new information, I would choose Eid. I did cheat a little however, as I also
|
||
talked to him extensively over lunch.
|
||
<p>
|
||
Eid's Plenary was a pleasant combination of future fantasy and a look at
|
||
what is available today. The fantasy part consisted of describing a day in
|
||
the life of Mr. Twenty O'One, illustrating what we should
|
||
expect in the near future (2001 isn't that far away) from our personal
|
||
communicator: voice- and e-mail access,
|
||
voice commands and an interface to the Corel NetWinder.
|
||
<p>
|
||
At the office, Mr. Twenty O'One will have a typical Intel-based PC
|
||
but most of his work will be done on his personal communicator and his
|
||
NetWinder. The NetWinder is much faster for doing common tasks
|
||
because, while it is a complete Linux system, common tasks (everything
|
||
from e-mail to video conferencing and replying to e-mail with a
|
||
voice message automatically appended to e-mail) are trivial to
|
||
access.
|
||
<p>
|
||
After this fictional introduction, Eid went on to cover the pieces which
|
||
actually exist today, including the NetWinder, video conferencing, XML and capable
|
||
portable systems.
|
||
He went on to say that we need to make all the interfaces and
|
||
standards open so any vendor can produce pieces which interoperate.
|
||
I expect some people were surprised when he said, ``Corel, Lotus and
|
||
others
|
||
will have no choice but to provide some source code for commercial
|
||
products in the near future.''
|
||
<p>
|
||
Eid also pointed out that Microsoft
|
||
controls over 50% of the money made on PC applications.
|
||
Eid was the Chief Technical Officer for Corel Corporation, makers
|
||
of CorelDraw and owner of Corel Computer before coming President of Corel
|
||
Computer.
|
||
He explained how Corel had been a Microsoft partner until Corel acquired
|
||
WordPerfect, then Microsoft started hiding technology from them.
|
||
<p>
|
||
As many of us have concluded in the past, Eid believes you cannot
|
||
successfully fight Microsoft, but went on to point out what you can do.
|
||
He sees the network computer as the new wave, being less costly and more
|
||
maintainable.
|
||
The network computer opens up a new market and, done right, it can become a
|
||
market as large as today's personal computer market.
|
||
<p>
|
||
The morning session in the Linux Track included a presentation by Don
|
||
Rosenberg of Stromian Technologies on making money with Open Source as
|
||
an OEM/VAR.
|
||
Differing from Ron Workman's presentation of the previous day, Don's
|
||
presentation was a mini-tutorial on how to get into a market and how to
|
||
make the right distribution choices along the way.
|
||
<p>
|
||
Next, Morgan Von Essen, President of Metro Link, with the help of Garry
|
||
Paxinos, Vice President, presented a talk on Metro Link's cooperative
|
||
work with the XFree86 community--another model of a commercial
|
||
enterprise working with the free software community.
|
||
In this case, they developed technology needed for their
|
||
commercial customers and then gave that technology back to the
|
||
XFree86 community. Doing this makes it easier for Metro Link to continue
|
||
development, because their work becomes standard in new XFree86 releases.
|
||
<p>
|
||
Tuesday's keynote lunch was presented by Janpieter Scheerer who was
|
||
President of Sunsoft and has now moved to head the storage division of Sun.
|
||
He talked about WebTone and made some very interesting points
|
||
demonstrating how the non-Microsoft community is growing faster than
|
||
the Microsoft community.
|
||
His pointed out that while MS Windows sales are growing at 13% a year,
|
||
companies like Cisco are growing at 30%, and that while there are over
|
||
100,000,000 MS/PC users, that number is a small minority of the six
|
||
billion people on the planet.
|
||
He also pointed out that every Quicken user who registers their product
|
||
is a UNIX user since the Quicken on-line registration server runs on
|
||
Sun systems.
|
||
<p>
|
||
Janpieter explained that today most ISVs will port their product to
|
||
either NT or Solaris. By
|
||
mentioning an old Dutch saying, ``the enemy of my enemy is my
|
||
friend,'' he clearly
|
||
sees Linux as an ally. By the same reasoning, we need to see Sun ports as
|
||
potential Linux ports of the future.
|
||
<p>
|
||
Janpieter, like Eid, pointed out that the network computer is in--all
|
||
we need is a $150 device to connect to the Internet.
|
||
He then went on to talk about two subjects: first
|
||
``OPEN-standardization''
|
||
and then Java.
|
||
This got a reaction from both Eric Raymond and Eid Eid, who both pointed out that
|
||
for Java to be the answer, its standard needs to be open.
|
||
There was no resolution, but I am sure we were heard.
|
||
<p>
|
||
The afternoon Linux track brought Bob Young discussing the size of the
|
||
Linux market or, more accurately, explaining how hard it is to come up
|
||
with an accurate estimate.
|
||
Bob also announced the availability of the <i>Extreme Linux</i> CD which
|
||
includes all the Beowulf RPMs for those of you who want to build your
|
||
own supercomputer.
|
||
Jon Hall of Linux International closed the track with some general
|
||
comments and preparation work for the workshop the following morning.
|
||
<p>
|
||
On Wednesday the Linux track attendees changed their plans and
|
||
attended the first hour of a presentation entitled <i>What Exciting
|
||
Technology is Emerging?</i> by The Open Group, the organization that owns
|
||
the UNIX brand and standards.
|
||
In this presentation, the Open Group announced the UNIX'98 standard.
|
||
<p>
|
||
Historically, vendors such as Digital, Hewlett-Packard and Sun have paid
|
||
a lot of money to use the UNIX brand.
|
||
This money goes to support The Open Group's work on the standards and
|
||
enforcement of the trademark.
|
||
While it would be great for Linux or a Linux distribution to be UNIX
|
||
branded, the cost is prohibitive.
|
||
<p>
|
||
The Open Group has now
|
||
recognized the advantage of getting the Linux community on board.
|
||
While Sun and others anchor the high end of the Open Systems community,
|
||
having an entry-level system compatible with the standard would be a plus.
|
||
This is not yet a done deal. While the use of the
|
||
UNIX trademark is limited to those who have paid the fees, the
|
||
opportunity will be present for a system to be conformant with the standard.
|
||
Stay tuned, this could be the <i>in</i> necessary to tighten the bond
|
||
between Linux and the rest of the UNIX community.
|
||
<p>
|
||
For more information on the UNIX'98 standard, see the web page
|
||
<A HREF="http://www.UNIX-systems.org/">http://www.UNIX-systems.org/</A>.
|
||
<p>
|
||
The melding of minds with regard to UNIX standards, Open Computing and Open
|
||
Source software needs a venue and UniForum has elected to be that venue.
|
||
Here's what Alan Fedder (<A HREF="./uniforum.html">UniForum Press Release</A>), President of UniForum had to say about it:
|
||
<p>
|
||
<blockquote>
|
||
UniForum Association is the only forum for open
|
||
discussion and open debate about open computing.
|
||
Where else could Eric Raymond and Mike Lambert [of The Open Group]
|
||
debate each other, listen to each other, and have a
|
||
better understanding of each other's position? Where
|
||
else could you hear Ralph Nader, Eid Eid, Janpieter
|
||
Scheerer, Eric Raymond--all quoting Eric Raymond?
|
||
Momentous things happened at the UniForum Spring
|
||
Conference in Ocean City--and I honestly believe
|
||
that five years from now, 5,000 people will be telling
|
||
each other they were there when UNIX was saved.
|
||
<p>
|
||
</blockquote>
|
||
In conclusion, I found attending the conference to be truly worthwhile
|
||
and look forward to going again next year.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Phil Hughes <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./bryant.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./pate.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2><font color="maroon">Using rdist for Backups</font></H2>
|
||
<H4>By <a href="mailto:johnny@dvc.org.uk">John Pate</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
|
||
In <STRONG>Linux Gazette</STRONG> Issue number 24 <STRONG>Gerd
|
||
Bavendiek</STRONG> described his script which he calls "mirror." In this
|
||
script he makes use of the utility 'rdist' which is widely available on
|
||
Unix systems. In my article I shall explain how I use 'rdist' which
|
||
I hope will give the beginning Linux user a background to Gerd's article
|
||
and show how useful 'rdist' is to those with multiple computers (which
|
||
should be every Linux user nowadays!)
|
||
|
||
<P>
|
||
|
||
In the UK today you can get a complete 486DX66 system including monitor
|
||
for a hundred pounds, which has got to be a bargain and ideal as a backup
|
||
system for your "main" computer. Even if you feel its hard disk is too
|
||
small (typically they have them in the 200-300meg range) today you can
|
||
get a 2gig hard disk for under one hundred pounds or an 850meg one for
|
||
sixty pounds. So for no more than a couple of a hundred pounds you not
|
||
only have a backup device but a working computer you can use in emergency
|
||
in the event of the failure of your "main" machine. I have two 486DX66s,
|
||
both other peoples' discards which cost me nothing apart from extra RAM
|
||
and a bigger hard disk for the "main" machine (and a modem of course -
|
||
though now I have a couple of spare V32bis other people have junked,
|
||
isn't progress wonderful). One has 40meg of RAM and is my "main" computer
|
||
running Slackware 3.3. The other has 8meg of RAM and Slackware 3.3 again.
|
||
The "backup" has a half gig hard disk given to me because it makes an
|
||
unpleasant whine during operation. In spite of the noise, the disk
|
||
works fine so is good for backup space. A couple of discarded network
|
||
cards from a "parts bin" and a look at the <STRONG>NET-3-HOWTO</STRONG>
|
||
(you can find this in the directory '/usr/doc/faq/howto' in Slackware 3.3)
|
||
gets the two computers talking to each other. Other alternatives are PLIP
|
||
or a null modem cable, but network cards are easy to come by nowadays.
|
||
(Note: network cards with RJ45 interfaces can connect two computers
|
||
together if you make a crossover cable, it works for me.)
|
||
|
||
<P>
|
||
|
||
Once the computers are talking you can use ftp or even Samba to
|
||
transfer files, as well as mounting various drives and partitions
|
||
by NFS. All good clean fun. But the ideal way to maintain a "mirror"
|
||
of your home directories so you don't lose any precious datafiles is
|
||
to use 'rdist'. (Note: the following describes a Slackware 3.3 setup
|
||
but the procedure should give the rest of you a start.) Firstly you
|
||
must amend the file 'hosts.equiv' on the "backup" machine (i.e. the
|
||
one you are going to back-up the files to) to allow users to 'rlogin'
|
||
(see the man page for 'rlogin') to the "backup" computer from the "main"
|
||
computer without having to supply a password. 'hosts.equiv' is found in
|
||
'/etc' (Slackware), the stock 'hosts.equiv' has one entry, 'localhost'.
|
||
Simply add the relevant name or IP address for your "main" computer (go
|
||
back and read the <STRONG>NET-3-HOWTO,</STRONG> you know you have to)
|
||
on a new line. If you have accounts (same user name) on both machines,
|
||
you are now able to 'rlogin' to the "backup" from the "main" with the
|
||
command 'rlogin <other_computer_name>' and it should not
|
||
demand a password (unless you are 'root', but you don't want to mess
|
||
around letting 'root' rlogin without a password, do you?).
|
||
|
||
<P>
|
||
|
||
Now you're cooking with gas. Make a file called 'distfile' in your
|
||
home directory on your "main" computer. Here's one I made earlier--
|
||
|
||
<P>
|
||
|
||
<BLOCKQUOTE>
|
||
|
||
<PRE>
|
||
|
||
HOSTS = ( johnny@pod )
|
||
FILES = ( ~/ )
|
||
EXCEPT = ( ~/.netscape ~/\(PROG\) ~/StarOffice-3.1 ~/.trash ~/.bash_history )
|
||
|
||
${FILES} -> ${HOSTS}
|
||
install -oremove,chknfs,younger ;
|
||
except ${EXCEPT} ;
|
||
|
||
</PRE>
|
||
|
||
</BLOCKQUOTE>
|
||
|
||
<P>
|
||
|
||
Now's the time for you to consult 'man rdist' to see what all this means.
|
||
The first three lines set variables - it is possible to give 'rdist'
|
||
command line switches to modify these, so it could be helpful when you
|
||
get more adventurous. The last three lines are commands for 'rdist'.
|
||
The 'install' command copies/deletes files/directories as specified.
|
||
The 'except' command omits the specified files/directories from
|
||
processing. (If you specify a directory it means that directory's
|
||
files and subdirectories and files.) The '->' line tells it what to
|
||
where. Note the 'host' is the "backup" computer and given of the form
|
||
'user@domain'. This should be an account you can 'rlogin' to without
|
||
needing a password (modify 'hosts.equiv' see above). If you look at
|
||
the above example, it says,
|
||
|
||
<BLOCKQUOTE>
|
||
|
||
"Copy the entire home directory to "pod," excepting the Netscape cache
|
||
directory, the trash directory, the StarOffice stuff and the .bash_history
|
||
file."
|
||
|
||
</BLOCKQUOTE>
|
||
|
||
The switches to 'install' say,
|
||
|
||
<BLOCKQUOTE>
|
||
|
||
"Remove any files on the backup that aren't on the main machine,
|
||
don't follow through NFS links, and don't update files on the backup
|
||
machine that are younger than the equivalent on the main machine."
|
||
|
||
</BLOCKQUOTE>
|
||
|
||
<STRONG>Note</STRONG> how 'remove'and 'younger' interact: 'remove'
|
||
will remove any orphan files, so 'younger' won't keep brand new files
|
||
on the backup that haven't been made on the main machine - decide what
|
||
you want! In the case of a backup to an account you don't use then
|
||
'younger' isn't really necessary. If it's an account you do use, then
|
||
don't use 'remove' but do use 'younger'.
|
||
|
||
<P>
|
||
|
||
A perusal of the 'rdist' man page should make this all clear. Having made
|
||
the 'distfile,' all you have to do to synchronize the files on your
|
||
two machines is type 'rdist' at the prompt on the "main" machine and
|
||
it will go ahead and do it all for you and tell you about it. 'rdist'
|
||
will create directories as needed, preserve permissions, ownerships etc.,
|
||
will only change files that don't match (you can alter the criteria it
|
||
uses to decide this, see the 'man' page). It is excellent! Run 'rdist'
|
||
regularly and you need never "lose" your data-files. Even better if
|
||
you back-up over the Internet to a remote location.
|
||
|
||
<P>
|
||
|
||
Now you can go back to <A HREF="../issue24/bavendiek.html">Gerd's
|
||
article</A> and see how he uses his script to keep his laptop and desktop
|
||
in synch. A study of the 'rdist' man page will make evident that 'rdist' has
|
||
great power and flexibility for the adventurous. There really is no
|
||
excuse for not backing up your work!
|
||
|
||
<P>
|
||
|
||
<hr>
|
||
<address><a href="mailto:johnny@dvc.org.uk">John Pate</a></address>
|
||
|
||
<!-- hhmts start -->
|
||
Last modified: Sat May 2 12:25:18 BST 1998
|
||
<!-- hhmts end -->
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, John Pate <BR>
|
||
Published in Issue 29 of <i>Linux Gazette</i>, June 1998</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./hughes.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./lg_backpage29.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
<center>
|
||
<H1><IMG SRC="../gx/backpage.gif" alt="Linux Gazette Back Page"></H1>
|
||
|
||
<H5>Copyright © 1998 Specialized Systems Consultants, Inc.<br>
|
||
For information regarding copying and distribution of this material see the
|
||
<A HREF="../copying.html">Copying License</A>.</H5>
|
||
</center>
|
||
|
||
<P> <hr> <P>
|
||
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_backpage29.html#authors">About This Month's Authors</a>
|
||
<li><a HREF="./lg_backpage29.html#notlinux">Not Linux</a>
|
||
</ul>
|
||
|
||
<a name="authors"></a>
|
||
<P> <HR> <P>
|
||
<!--======================================================================-->
|
||
|
||
<center><H3><font color="maroon">About This Month's Authors</font></H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--======================================================================-->
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Tom Bryant</H4>
|
||
Tom has been working with computers since 1978.
|
||
Since then, I wrote my thesis (on emission lines in planetary nebulae)
|
||
on an Apple II, wrote the telemetry processing program with which NASA deduced
|
||
some of the early problems with the space telescope (its direct descendant is
|
||
still in use today), and lately a program that fixes a serious telemetry
|
||
formatting error on the EOS AM-1 satellite. I've written programs that
|
||
display tesseracts, simulate a star cluster with accurate stellar motions,
|
||
implement a new language (related to forth), and play the piano!
|
||
My interests include (in alphabetical order) 35mm photography, the
|
||
American Civil war, Astronomy, Beethoven, Chopin, Classical piano,
|
||
Cryptography, Explorer post 1275, Fixing old cars, History, Mathematics,
|
||
Rachmaninov, Science, Single Malt Scotch, Sports cars, Telescope making...
|
||
My wife and I have 2 kids, 2 cars, 2 birds and 1 18 year old cat.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jim Dennis</H4>
|
||
Jim is the proprietor of <A href="http://www.starshine.org">
|
||
Starshine Technical Services</A>.
|
||
His professional experience includes work in the technical
|
||
support, quality assurance, and information services (MIS)
|
||
departments of software companies like
|
||
<A href="http://www.quarterdeck.com"> Quarterdeck</A>,
|
||
<A href="http://www.symantec.com"> Symantec/
|
||
Peter Norton Group</A>, and
|
||
<A href="http://www.nai.com">McAfee Associates</A> -- 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. His wife,
|
||
<A HREF="mailto:star@starshine.org">Heather Stern, is now doing the HTML for his column.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michael Hamilton</H4>
|
||
Michael has been working as a freelance Unix C/C++ developer
|
||
since 1989. More recently he's been working on web applications and
|
||
Unix server administration. Michael tripped over one of Linus's
|
||
postings back at the beginning of 1992 and has been hooked ever
|
||
since.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Phil Hughes</a></H4>
|
||
Phil Hughes is the publisher of <I>Linux Journal</I>, and thereby <I>Linux
|
||
Gazette</I>. He dreams of permanently telecommuting from his home on the
|
||
Pacific coast of the Olympic Peninsula.
|
||
As an employer, he is "Vicious, Evil,
|
||
Mean, & Nasty, but kind of mellow" as a boss should be.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Andy Kahn</a></H4>
|
||
Andy works at Digital Equipment Corporation doing
|
||
Digital Unix filesystems kernel development.
|
||
He thinks he's just hacking away at more and more C code,
|
||
and in his copious spare time, he hacks on lots of other
|
||
things, including all the trees in his neighborhood.
|
||
Feel free to send him
|
||
<a href="mailto:kahn@zk3.dec.com">email</a>.
|
||
|
||
<p>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Eric Marsden</H4>
|
||
<a href="http://www.chez.com/emarsden/">Eric</a> is studying computer
|
||
science in Toulouse, France, and is a member of the local Linux Users
|
||
Group. He enjoys programming, cycling and Led Zeppelin. He admits to
|
||
once having owned a Macintosh, but denies any connection with the the
|
||
<a href="http://locke.ccil.org/~esr/ecsl/">Eric Conspiracy Secret
|
||
Labs</a>.
|
||
|
||
<p>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">David Nelson</H4>
|
||
David manages scientific research at the U.S. Department of
|
||
Energy. Before that he earned his living as a theoretical plasma
|
||
physicist. He started programming on the IBM 650 using absolute machine
|
||
language and later graduated to CDC, DEC and Cray machines for his
|
||
research. But Linux is the most fun. He and his wife, Kathy, live
|
||
near Washington DC; they enjoy tennis, skiing, sailing, music, theater
|
||
and good food.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">John Pate</H4>
|
||
John works part-time at <A HREF="http://www.cybersurf.co.uk/">Café
|
||
Cyberia Edinburgh</A> and is looking for a full-time job in Unix System
|
||
Administration. John has a first degree in Psychology and has
|
||
been playing on the Internet since he first discovered it in the
|
||
late eighties. Having worked for a while programming for Windows
|
||
3.1x he decided Linux was the way forward. He can be contacted at <A
|
||
HREF="mailto:johnny@dvc.org.uk">johnny@dvc.org.uk</A> and his homepage
|
||
is at <A
|
||
HREF="http://www.dvc.org.uk/johnny/">http://www.dvc.org.uk/johnny</A>
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Carlo Prelz</H4>
|
||
Carlo is an Italian who does not live in Italy, an architect who
|
||
does not work as an architect. He spent the last decade developing
|
||
software for TV audience measurement calculation but he does not watch
|
||
TV. His secret wish is to become the in-house Linux expert for the
|
||
Tibetan government in exile in Dharamsala. Suggestions are welcome
|
||
at his e-mail address: fluido@fluido.markdata.pt
|
||
|
||
<a name="notlinux"></a>
|
||
<P> <hr> <P>
|
||
<!--====================================================================-->
|
||
|
||
<center><H3><font color="maroon">Not Linux</font></H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--======================================================================-->
|
||
<P>
|
||
<img align="left" src="../gx/rose.gif">
|
||
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. And a special thanks to Heather Stern for the great job
|
||
she is doing on htmlizing "The Answer Guy". It looks good and she's saving
|
||
me a lot of work. :-)
|
||
<P>
|
||
My wonderful father-in-law, Ralph Richardson, has moved to Seattle from
|
||
Southern California. He's been here almost 2 weeks now and it's been fun
|
||
helping him get settled in and seeing him on a much more frequent basis. I
|
||
know we'll get used to him being here all the time, but right now getting
|
||
to see so much of him feels like vacation. And I can use as much vacation
|
||
as I can get! :-)
|
||
<P>
|
||
Have fun!
|
||
|
||
<P> <hr> <P>
|
||
<A HREF="http://www.ssc.com/ssc/Employees/Margie/margie.html">
|
||
Marjorie L. Richardson</A> <br>
|
||
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
|
||
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a><BR>
|
||
<I>Linux Gazette</I> Issue 29, June 1998,
|
||
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com</A><BR>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
||
PAGE ]"></A>
|
||
<A HREF="./pate.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<p><hr><p>
|
||
This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>
|
||
<P>
|
||
</BODY>
|
||
</HTML>
|