old-www/LDP/LG/issue51/issue51.html

11249 lines
427 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> Linux Gazette Table of Contents LG #51</TITLE>
<META NAME="robots" CONTENT="noindex, nofollow">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000" >
<center>
<A HREF="http://www.linuxgazette.com/">
<H1><IMG SRC="../gx/newlogo.jpg" ALT="LINUX GAZETTE" border="0"></H1></A>
<H2>March 2000, Issue 51 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Published by <I>Linux Journal</I></H2>
<A HREF=../index.html>Front Page</A> &nbsp;|&nbsp;
<A HREF=../index.html>Back Issues</A> &nbsp;|&nbsp;
<A HREF=../faq/index.html>FAQ</A> &nbsp;|&nbsp;
<A HREF=../mirrors.html>Mirrors</A> &nbsp;|&nbsp;
<A HREF=http://www.linuxgazette.com/search.html>Search</A>
</center>
<!--=================================================================-->
<table>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<table>
<tr>
<td VALIGN="top"><H1><font color="#BB0000">Visit Our Sponsors:</font></H1></td></tr>
<!-- *** BEGIN sponsors *** -->
<TR><TD>
<A HREF="http://www.linuxjournal.com"><IMG ALT="Linux Journal" SRC="../gx/ljtop.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.linuxcare.com"><IMG ALT="LinuxCare" SRC="../gx/linuxcare.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.linuxmall.com/"><IMG ALT="LinuxMall" SRC="../gx/linuxmall.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.cygnus.com"><IMG ALT="Cygnus Solutions" SRC="../gx/sponsors/cygnus.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.vmware.com"><IMG ALT="VMware" SRC="../gx/sponsors/vmware.jpg" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.infomagic.com"><IMG ALT="InfoMagic" SRC="../gx/infologo.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<!-- *** END sponsors *** -->
</table>
</td>
<!--==================================================================-->
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=1 HEIGHT=1 WIDTH=1%></TD>
<td VALIGN=top>
<H1><font color="#BB0000">Table of Contents:</font></H1>
<P> <FONT COLOR=red FACE=arial,helvetica>New feature:</FONT> &nbsp;
<STRONG>TALKBACKS!</STRONG><BR>
Talkbacks offer a forum for readers, editors, and
authors to discuss articles and their topics. Look for a link to
Talkbacks at the end of every <I>Linux Gazette</I> article
starting this month.
<P> (This does not include the columns--"The Mailbag", "News
Bytes", "The Answer Guy", "More 2-Cent Tips" and the Back Page--because these
consist of many unrelated topics in one article. We are exploring what kind of
discussion forum would be most appropriate for them.)
<!-- *** BEGIN toc *** -->
<UL>
<LI> <a HREF="lg_mail51.html">The MailBag</A>
<UL>
<LI> <a HREF="lg_mail51.html#help">Help Wanted &amp; Article Ideas</A>
<LI> <a HREF="lg_mail51.html#gen">General Mail</A>
</UL>
<LI> <a HREF="lg_bytes51.html">News Bytes</A>
<UL>
<LI> <a HREF="lg_bytes51.html#distro">Distro News</A>
<LI> <a HREF="lg_bytes51.html#general">News in General</A>
<LI> <a HREF="lg_bytes51.html#software">Software Announcements</A>
</UL>
<LI> <a HREF="lg_answer51.html">The Answer Guy</A> , <EM>by James T. Dennis</EM>
<LI> <a HREF="lg_tips51.html">More 2-Cent Tips</A>
<LI> <a HREF="collinge.html">HelpDex</A> , <EM>by Shane Collinge</EM>
<LI> <a HREF="dellomodarme.html">X Stations and Linux</A> , <EM>by Matteo Dell'Omodarme</EM>
<LI> <a HREF="kijewski.html">The Story of an Implementation</A> , <EM>by Jacek Kijewski</EM>
<LI> <a HREF="livingston-blade.html">Tweaking Eterm</A> , <EM>by Edward Livingston-Blade</EM>
<LI> <a HREF="mauerer.html">GIMP-Perl: GIMP Scripting for the Rest of Us</A> , <EM>by Wolfgang Mauerer</EM>
<LI> <a HREF="nielsen.html">Private Networks and Roadrunner using IP Masquerading</A> , <EM>by Mark Nielsen, Andrew Byrd</EM>
<LI> <a HREF="pramode.html">Static checking of C programs with LCLint</A> , <EM>by Pramode C E and Gopakumar C E</EM>
<LI> <a HREF="steffler.html">Making Smalltalk with the Penguin</A> , <EM>by Jason Steffler</EM>
<LI> <a HREF="vrenios.html">Process Cloning in C</A> , <EM>by Alex Vrenios</EM>
<LI> <a HREF="lg_backpage51.html">The Back Page</A>
<UL>
<LI> <a HREF="lg_backpage51.html#authors">About This Month's Authors</A>
<LI> <a HREF="lg_backpage51.html#notlinux">Not Linux</A>
</UL>
</UL>
<!-- *** END toc *** -->
</td>
</tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif"
ALT="-------------------------------------------------------------"
HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table>
<!--=============================================================-->
<P>
<table>
<tr><td>
<A HREF="issue51.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="issue51.html">TWDT 2 (HTML file)</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.
</td></tr>
<!--==================================================================-->
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<center>
<I>Linux Gazette</I><img alt="[tm]" src="../gx/tm.gif">,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com/</A><BR>
This page maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
<P>
<H5>Copyright &copy; 1996-2000 Specialized Systems Consultants, Inc.</H5>
</center>
</td></tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table>
<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="#help">Help Wanted -- Article Ideas</a>
<li><a HREF="#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>
Answers to these questions should be sent directly to the e-mail address of
the inquirer with or without a copy to gazette@ssc.com. Answers that are
copied to <I>LG</I> will be printed in the next issue in the Tips column.
<P> <STRONG>Before asking a question, please check the
<A HREF=../faq/index.html><I>Linux Gazette</I> FAQ</A> to see if it has been
answered there.</STRONG>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 01 Feb 2000 12:16:28 -0200
<BR>From: Clovis Sena &lt;<A HREF="mailto:csena@itautec-philco.com.br">csena@itautec-philco.com.br</A>&gt;
<BR>Subject: help in printing numbered pages!
<P> Hi,
<P> I usualy print a lot of documentation. One thing that I would like to
make is that my print jobs gets the pages to be numbered. So at the
bottom of the pages
we could see "page 1/xx" , etc. I had looked a while for info in how to
set this up,
but could not find. The printtool just dont do it. Maybe i should to
create a filter, but
what commands must i use to make this heapppens???
<P> A other thing that would be nice is that is we could also print the
location of the document,
or the url, if it be a web page, like /usr/doc/html/mydoc.html or
http://www.linuxjournal.com/article/example.html. Could this be done???
<P> Any help will be welcome. Thanks for reading this.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 1 Feb 2000 16:37:07 +0200
<BR>From: Knobel Alex &lt;<A HREF="mailto:alex@pet.ac.il">alex@pet.ac.il</A>&gt;
<BR>Subject: samba problim
<P> hi and thank's fore your Help :0)
will my english is "so bad so forgive me".
will I have Linux Box With Kernel 2.2.12-20 Red Hat Linux &amp; I Have Install The Samba Frome The Same CD
I Have Red The HOWTO Samba &amp; I Try What IT But I Dis'nt Anderstand How The Windows Shod See The
Linux Box Will Frome The Linux I Can See The Network &amp; see The Share But the NT Dosn't See The Linux
In The smb.conf I Write The Follow
<PRE>
[global]
workegroup = staff " i have a group cald staff"
netbios name = samba
......
</PRE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 01 Feb 2000 11:46:50 -0500
<BR>From: Stan Wilburn &lt;<A HREF="mailto:stan.wilburn@rhtelco.com">stan.wilburn@rhtelco.com</A>&gt;
<BR>Subject: Modem problem with 5.2
<P> I have recently setup Linux 5.2 on a PC at home. The setup went great with
only one problem:
I cannot get the modem to dial so that I can access the Internet. Looking
through various websites on
Linux, I found that if your modem is on com3 there is some additional setup
that is required. Can you
help me with this? I have mapped the com3 port to /dev/cua2 and by the
manual that is all I thought
I had to do. I also ran statserial on this port and I get the correct
information here also. What
could be wrong? I can hear the modem clicking like it is trying to dial,
but it will never dial the
number. Thanks.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 01 Feb 2000 15:48:28 MST
<BR>From: Sipe &lt;<A HREF="mailto:dksclan@hotmail.com">dksclan@hotmail.com</A>&gt;
<BR>Subject: Linux on IBM Aptiva S6H
<P> I have an IBM Aptiva S6H (214) with an IBM MM75 Multimeda monitor. I cannot
seem to get my X server (Xfree86 -- current version #.#.5) with mandrake
6.1. I have an onboard ATI Mach64 3D Rage Pro card as well as a voodoo2,
which supports rather high res. I've set custom frequencies (horiz: 69khz
vert: 120khz) and picked my card from the card database. Still, when i run
x windows, it's saying monitor res not supported and no monitor found,
specifically "fatal server error" "no monitor". If somebody could help me
out i would REALLY appreciate it! If you need more information about my
computer or versions, please email me (dksclan@hotmail.com). I am desparate
for help, i've tried irc dalnet and efnet #linux, friends, and checked many
forums.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 2 Feb 2000 01:46:20 -0500
<BR>From: Anthony H. Downey, Jr. &lt;<A HREF="mailto:adowney@logicalinfo.com">adowney@logicalinfo.com</A>&gt;
<BR>Subject: IP Masquerade Connection Problems
<P> I've been running Linux for a few years now, using mostly RedHat
distributions. I'm currently running RedHat 6.1. Recently, I decided to
connect my small office (4 workstation nodes and 2 servers) to the internet
via IP Masquerading rather than having each workstation dial directly (as
was done previously).
<P> IP Masquerading works fine, save for one small problem that's turning into a
real annoyance. I'm using PAP authentication with the ISP. Whenever I
initiate a connection, the modem dials, waits until whatever timeout is
specified, then hangs up without ever achieving a complete connection. The
two modems handshake, but the login to the ISP is never successfully
completed. Since I've specified for it to reconnect on a line drop, it
immediately redials and then successfully connects and logs in on the second
try.
<P> This is 99.9% consistent, meaning that it nearly always requires two dial
attempts to get a successful connection. On rare occaisons, it will connect
on the first try, but this is apparently only after I've just downed the
interface within the past few minutes. I don't have it configured for
demand dial at this point -- I normally bring the link up and down manually
via ifup ppp0 and ifdown ppp0. Eventually this will be set to demand dial
once I'm confident of the configuration.
<P> I suspected the ISP at first, but then I tried a Mandrake 6.5 distribution
on the same equipment (with essentially the same config files), and it
connects the first time every time. I'd much rather use RedHat 6.1,
however, for various reasons. I've even tried a few different modems, both
56K and K56Flex, and the results are the same.
<P> Does anyone have any ideas as to why this would be happening and how to
correct it?
<P> TIA.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 02 Feb 2000 11:15:32 -0500
<BR>From: John Sanabria &lt;<A HREF="mailto:jo-sanab@uniandes.edu.co">jo-sanab@uniandes.edu.co</A>&gt;
<BR>Subject: Tip &amp; Tricks
<P> Hello:
<P> I'm currently work with the domain .edu.co at Universidad de los Andes,
Bogota, Colombia. I want to know how can do when the people enter the
url, uniandes.edu.co, the browser go at www.uniandes.edu.co. eg. i can
type the url linuxtoday.com, and my browser show me www.linuxtoday.com.
<P> Where do i modify my dns entry in order to obtain this behavior?
<P> Thanks in advance.
<P> PS: Sorry for my poor english.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 2 Feb 2000 17:41:31 -0500
<BR>From: Rob C &lt;<A HREF="mailto:rchan@idirect.com">rchan@idirect.com</A>&gt;
<BR>Subject:
<P> Hi,
<P> I was wondering what you have to do to get your Diamond Supraexpress 56i
modem recognized and configured under Linux. I also need to get a PPP
connection setup on my linux system to access my internet. I am positive
that it isn't a winmodem.
<P> I am a really new newbie at this, so i'll need lotsa explanating here.
<P> Thanks.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 03 Feb 2000 21:26:00 +0100
<BR>From: Ivo Naninck &lt;<A HREF="mailto:inaninck@linuxfan.com">inaninck@linuxfan.com</A>&gt;
<BR>Subject: Question to be published.
<P> Hello LG,
<P> Can you please put this in your next issue?
<P> Anyone who has a hint on how to get a Linux DHCP client to get a lease
from a DHCP server over a Token Ring network?
I have already tried a LOT, believe me. Things like dhcpcd, dhclient and
pump all do
not work.
There is also VERY little response on this matter from several related
news groups.
<P> -- <BR>
Best regards, Ivo Naninck.<BR>
Neckties strangle clear thinking.<BR>
-- Lin Yutang<BR>
~<BR>
:wq!<BR>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 03 Feb 2000 23:08:31 +0100
<BR>From: JA &lt;<A HREF="mailto:lubiec@datacomm.ch">lubiec@datacomm.ch</A>&gt;
<BR>Subject: WindowsNT vs. Linux
<P> I've made a comparison running the same Fortran program
compiled with GNU g77 compiler with identical options.
<P> The results is unexpected: the program ran under WinNT4.0 20 sec,
and under Linux/Slackware7.0 27 sec.
<P> Why?
<P> Jacek Arkuszewski, Switzerland
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 03 Feb 2000 22:34:56 -0500
<BR>From: BLOODICE &lt;<A HREF="mailto:bloodice@ipass.net">bloodice@ipass.net</A>&gt;
<BR>Subject: Linux &amp; win98 internet connection sharing
<P> im just wondering if it is possible to connect linux to the internet,
over a network through a win98 machine using internet connection
sharing?
<P> if there is a way, can you tell me
if i cant do it that way is there another way i can do it?
<P> also...do you happen to know of any cable modem software(for linux) that
will run RoadRunner modems
<P> one more thing...are there any tutorials on my first question that i
should look at?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 26 Apr 1999 14:23:10 +0530
<BR>From: Sreelal T S &lt;<A HREF="mailto:sree1980@md4.vsnl.net.in">sree1980@md4.vsnl.net.in</A>&gt;
<BR>Subject:
<P> My opl3-sax 32-bit soundcard was not supported by redhat linux6.1.I tried configuring it using sndconfig.Please send your responses.My address is kgkris@rediffmail.com
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 4 Feb 2000 17:43:38 -0600
<BR>From: Jeffrey T. Ownby &lt;<A HREF="mailto:jownby@ecsis.net">jownby@ecsis.net</A>&gt;
<BR>Subject: 5250 terminal for AS400 connection
<P> I am adding a Linux box to a network consisting of several Win9X and NT machines that use either IBM Client Access or Rumba to connect to our AS400. Is there a program similar to either one of these that can provide terminal emulation on Linux. Any info appreciated!
<P> Later,<BR>
Jeffro
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 09 Feb 2000 09:18:14 +0100
<BR>From: Vipie - Your Leader &lt;<A HREF="mailto:vipie@operamail.com">vipie@operamail.com</A>&gt;
<BR>Subject: Multiple video cards
<P> Hello,
<P> I have a question, have you any idea where I could find info
about running multiple video cards and monitors under linux.
eg. 2 SVGA cards or a SVGA and a VGA card ...
and how should one configure these ??
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 9 Feb 2000 10:37:33 +0200
<BR>From: Mahdy &lt;<A HREF="mailto:mahdy@mail.pet.ac.il">mahdy@mail.pet.ac.il</A>&gt;
<BR>Subject: dos boot disk that can logon to linux
<P> i know that my quistion is silly but i didn't find in the wep solution
will i'm trying to make a boot disk fore dos that can see my linux box
in my linux box i have install samba v2.0.5 will frome win 95/98/NT i can see the linux but frome dos i cant
i need this thing to restore the Ghost files (image of disk) to the station until now i do this thing thru the NT server
&amp; in the client machien i run the NET.exe file to make this connection ?
is there application fore dos that i can use and to be in one floppy disk 1.44 MB ?
<P> Thank's <BR>
Hijaze Mahdy
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 09 Feb 2000 12:42:27 +0000
<BR>From: thierry.lamant &lt;<A HREF="mailto:thierry.lamant@free.fr">thierry.lamant@free.fr</A>&gt;
<BR>Subject: Configuring Xfree for i810 chipset
<P> I have successfully introduced Linux and XFree (now 3.3.5) in my company
for the development of Aircraft
Simulators on PC.
I would like now to use it on my home computer, a Compaq Presario 5456
which include a i810 chipset. I can
see that XFree 3.3.6 is supporting i810 mother board, but that does not
work better than 640*480 when I try
to install it (Win98 is running good at least in 1024*780). SuperProbe
cannot detect the hardware.
<P> Is there something special to do? Shall I wait for XFree 4?
<P> Thanks in advance for any help.
<P> Best Regards (and thousands thanks for the usefull Gazette)
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 8 Feb 2000 23:05:15 -0200
<BR>From: pedroanisio &lt;<A HREF="mailto:pedroanisio@bol.com.br">pedroanisio@bol.com.br</A>&gt;
<BR>Subject: Clenning Lost+Found?
<P> I having problem with my filesystem lately. And I have a
lot o file in my lost+found, and I am having some
problem to cleaning up those file which corrupted.
<PRE>
b---rwS-wt 1 30291 357 88, 118 Dec 8 2023 #586
b--sr-S--t 1 27968 27968 115, 109 Apr 29 2032 #592
br-xrwS-wt 1 14963 25715 108, 97 Apr 12 2031 #683
br-xrw---- 1 29555 21622 115, 115 May 10 2031 #713
br-S--S--x 1 26483 14641 116, 97 Apr 12 1998 #732
br-xr-xrw- 1 10604 24864 101, 114 Feb 13 1996 #741564
c---r----- 1 8224 25632 32, 32 Jan 29 2029 #741565
br-sr-xrwx 1 29806 24864 116, 32 Oct 15 2021 #741567
</PRE>
<P> I tried rm -rf but it didn<64>t work, it result in
<P> rm: cannot unlink `file': Operation not permitted
<P> what can I do?
Thank You,
<BLOCKQUOTE><EM>
[When people have gotten weird permissions like
that, it's often the sign of serious disk corruption. I would definitely
back up any data you can right now just in case the drive fails in the near
future. Is the drive otherwise working OK? I would be inclined
to buy a new drive and install a fresh copy of Linux on it, and then later
decide whether to trust this drive enough to continue using it. Hard drives
and power supplies are the most failure-prone components of any PC.
Fortunately, nowadays hard drives are cheap to replace.
<P> You can run "file" on the files to see what types they are, and "less"
to see if they have any contents worth saving. -Ed.]
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 10 Feb 2000 15:07:36 -0800
<BR>From: Chris Dumont &lt;<A HREF="mailto:chrisd@ece.ubc.ca">chrisd@ece.ubc.ca</A>&gt;
<BR>Subject: linuxconf
<P> I've been trying to use linuxconf (ver 1.14 on a RH 6.0 install) and
have now screwed it up in my computers at work and at home in the same
way. When I'm ready to leave linuxconf it wants to "sync" the
configuration with the system. Every time I run linuxconf now it says
that it must execute "/etc/rc.d/rc5.d/S85gpm start". And then, even
after it does so, it still says it's not in sync and it wants to do it
again. I guess that it thinks it must start the mouse even though it's
already running.
<P> How do I fix this?
<P> A possibly significant piece of information is that in both cases when
I originally installed Red Hat I chose the wrong mouse driver and had to
play around to find the right one.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 11 Feb 2000 22:43:26 +0100
<BR>From: Daniel L&uuml;scher &lt;<A HREF="mailto:daniel.luescher@pop.dplanet.ch">daniel.luescher@pop.dplanet.ch</A>&gt;
<BR>Subject: Linux-Mandrake 7.0
<P> Hello!
What about Linux-Mandrake 7.0? It would be worth an article or even an
interview with the developers.
<P>
Greetz Pat
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sat, 12 Feb 2000 14:14:40 +1000
<BR>From: Tony Smith &lt;<A HREF="mailto:tony.smith@usa.net">tony.smith@usa.net</A>&gt;
<BR>Subject: Help wanted etc.
<P> Hi
<P> This little problem has been sending me nuts for two days now.
I sure hope someone in the <I>LG</I> community can help
<P> I wonder if someone would mind helping me with a mystery that is causing me
to pull my hair out......
<P> I have been using a Linux server based on RedHat 5.2 for some time to
connect to the Internet and provide masquerade for a bunch of Windows boxes
on a private network behind it.
<P> Today I decided to redo the server to incorporate a few more sophisticated
things like DNS, DHCP and HTTP serving for a prototype intranet.
<P> All went very well with one small hiccup. There seems to be an undocumented
change in the behavior of ppp between RedHat 6.1 and 5.2.
<P> Using 5.2 invoking "ifup ppp1" will result in the server making one and one
only attempt to connect to the internet.
<P> This is exactly what I want
<P> Using 6.1 if the dialout attempt fails, it simply loops and tries again and
again until it either connects or is stopped.
<P> I don't want this.
<P> I have compared all the relevant (I hope) scripts between 5.2 and 6.1 but I
cannot find a difference that would account for the changed behavior.
<P> I have the awful feeling I've missed something important (it's been a long
day), could someone please tell me what it is?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 13 Feb 2000 04:59:29 +0200
<BR>From: FreeDoM &lt;<A HREF="mailto:free_dom34@hotmail.com">free_dom34@hotmail.com</A>&gt;
<BR>Subject: ZOLTRIX modem
<P> Hi My name is Ozgur;
I use redhat Linux but I dont use modem
I have 56K Zoltrix (Rockwell cheap set) modem Winmodem but this modem dont run under Linux could u help me?
If u have file this problem pls send me!
<P> Tnx for helping.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 13 Feb 2000 22:01:33 -0600
<BR>From: Kim Updike &lt;<A HREF="mailto:kupdike@met-net.com">kupdike@met-net.com</A>&gt;
<BR>Subject: Inexpensive, powerful db's for Linux?
<P> To develop a distributed database application that runs on Linux, what
inexpensive, powerful databases might work best?
<P> E-mailiing me at kupdike@met-net.com with any advice would be much
appreciated.
-Kim
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 13 Feb 2000 10:53:21 -0500
<BR>From: Art &lt;<A HREF="mailto:mperry@pei.sympatico.ca">mperry@pei.sympatico.ca</A>&gt;
<BR>Subject: Drivers
<P> I have a question. Where can I download an update driver for a "Diamond Monster 3D" voodoo card? The present software I have is Version 1.08 and DOS 6. My OS is Win98 Second Addition 64Mg Ram and Celeron 300 with an I intel 740 video card.
I thank you in advance for your reply.
Art
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 15 Feb 2000 08:14:24 -0500
<BR>From: William Aycock &lt;<A HREF="mailto:william.e.aycock@lmco.com">william.e.aycock@lmco.com</A>&gt;
<BR>Subject: Window Managers and Window App Development
<OL>
<LI> Do you have an automatic email when a new issue is available?
<LI> Do you know which window manager will become the standard? It
appears to me, from my limited exposure, that KDE and
Gnome/Enlightenment are the front runners. Do you have an article on
this issue?
<LI> What are some good IDE's for window development and where can I get
documentation for them?
</OL>
<BLOCKQUOTE> <EM>
[There's an lg-announce mailing list. See the Linux Gazette FAQ at
<A HREF="../faq/index.html">http://www.linuxgazette.com/faq/index.html</A>
http://www.linuxgazette.com/faq/index.html
<P> KDE and GNOME are graphical "environments" (that is, a set of custom
applications, widgets and rules that all have a common "look and feel").
A window manager is just one aspect of this. In my opinion, KDE is
currently "ahead". But I don't tell people, "Use KDE, it's #1." I use
KDE at work, but only because it's the default, and I don't use 90% of
its features. At home I use fvwm2.
<P> Some people want to see Linux have a single standard desktop. However,
I think most people are glad there's a choice, because different people
want different things. Indeed, with some people running Linux for
games (i.e., they need a 3D video card and fast drivers) and other people
running it on 486s as servers, different people have very different software
needs. KDE and GNOME tend to appeal to people who want a standard look and
feel a la Windows and the Mac. But those who hack with the older programming
tools are never going to give them up. As the geek joke goes, "Who needs a GUI
when you've got Emacs?"
<P> February's <I>Linux Journal</I> had an in-depth look at KDE and
at GNOME. Both articles are on-line at
<A HREF="http://www.linuxjournal.com/lj-issues/issue70">
http://www.linuxjournal.com/lj-issues/issue70</A>-Ed.]
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 16 Feb 2000 20:45:06 +0100
<BR>From: Dennis Johansen &lt;<A HREF="mailto:dennis.johansen@email.dk">dennis.johansen@email.dk</A>&gt;
<BR>Subject: Quakeworld server as a deamon
<P> I want to set my RedHat Linux 6.1 up as a QuakeWorld server on my lan.
I<EFBFBD>ts a k6-200 with 64 mb ram.
<P> And it works fine when i start it, but how do i run it as a deamon ?
<P> Please help.
<P> Best Regards
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 18 Feb 2000 08:47:02 +0200
<BR>From: Halil Cem Tonguc 998027 &lt;<A HREF="mailto:tonguccem@hotmail.com">tonguccem@hotmail.com</A>&gt;
<BR>Subject: I NEED PIII PATCH.
<P> Where can I found a patch for PIII????
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 18 Feb 2000 23:46:14 -0800
<BR>From: wesley &lt;<A HREF="mailto:wesley@digi-dim.com">wesley@digi-dim.com</A>&gt;
<BR>Subject: make virtuald
<P> I am trying to compile virtuald using make virtuald
here is the error I get "Makefile:14: *** missing separator. Stop. "
<P> I did a cut and paste of the code from
<A HREF="http://www.linuxdoc.org/HOWTO/Virtual-Services-HOWTO-3.html">
http://www.linuxdoc.org/HOWTO/Virtual-Services-HOWTO-3.html</A>
in the section 3.4 Source
then used ftp to put it on the server in order to compile it.
<P> what am I missing??
<P> thanks for your time and help
<P> Wes
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sat, 19 Feb 2000 23:53:46 +0000
<BR>From: Ari Hyv&ouml;l&auml; &lt;<A HREF="mailto:ari@hyvola.com">ari@hyvola.com</A>&gt;
<BR>Subject: pppd daemon dies
<P> Hello, I am a beginner in Linux world and would like to test Linux
ISDN ability. I have ASUSCOM 128 modem connected to RS-232
port. ISP, IP and DNS are correctly set up but kppp hangs up while
logging onto network with the error message "pppd daemon died
unexpectedly" and the log says "cannot open logfile". The modem tests
run through. I have Corel Linux 2.2.12 and the Kernel should include
neccessary isdn and ppp -options. Lock option has been turned off.
I appreciate any help - from Corel pages support can not be found.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 20 Feb 2000 14:19:25 +0100
<BR>From: Santiago Cepas &lt;<A HREF="mailto:HALAMAD@teleline.es">HALAMAD@teleline.es</A>&gt;
<BR>Subject: Memory undetected
<P> Hello there.
<P> I've got some problems with my RAM: Linux only detecs 64 M when I have 128.
My specs are: SuSE Linux 6.3, kernel 2.2.13, runnin in a AMD k6-2 350 box. The
weirdest thing is that the whole 128 M are in the same DIMM slot. The bios
seems to detect 128 M, and also that other op. system which in don't want to
name. Could anyone help me here?
<P> Thanks
<BLOCKQUOTE><EM>
[Linux cannot auto-detect memory above 64MB. You have to tell it
explicitly how much memory you have at the boot prompt, or put
<PRE>
append = "mem8M"
</PRE>
in your /etc/lilo.conf file and re-run lilo (if you're using lilo; see
the lilo documentation).
<P> The problem is that the BIOS detects the extra memory but it doesn't tell
Linux about it. It's a limitation in the PC BIOS design. I don't know how
that other OS probes for memory.
<P> If you ever reduce the amount of memory you have, remember to tell lilo
first. Otherwise, the system will segfault at boot time when it tries to use
memory that isn't there. You can always type "mem=64M" at the boot prompt to
override what lilo thinks.
<P> Information from the Linus himself about situation is in the
<A HREF="http://www.ssc.com/mirrors/LDP/HOWTO/">BootPrompt HOWTO</A> . -Ed.]
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 31 Jan 2000 22:33:26 +0000
<BR>From: T.J. Rowe &lt;<A HREF="mailto:tjr@ida.net">tjr@ida.net</A>&gt;
<BR>Subject: glibc compilation problem
<P> Hello everyone,
<P> I'm making glibc 2.1.2 from the source tarball for use in building a
system from the
ground up (to get rid of all those statically linked programs I've
started with). Well,
when compiling either 2.1.2 or 2.1.1, I get following error and the
compilation stops:
<PRE>
common/db_appinit.c: In function `__db_appname':
common/db_appinit.c:479: fixed or forbidden register 0 (ax) was spilled
for class
AREG.
common/db_appinit.c:479: This may be due to a compiler bug or to
impossible asm
common/db_appinit.c:479: statements or clauses.
common/db_appinit.c:479: This is the instruction:
(insn 902 901 903 (parallel[
(set (reg:SI 2 %ecx)
(unspec:SI[
(mem:BLK (reg:SI 5 %edi) 0)
(const_int 0 [0x0])
(const_int 1 [0x1])
] 0))
(clobber (reg:SI 5 %edi))
] ) 424 {strlensi+1} (insn_list 901 (nil))
(expr_list:REG_UNUSED (reg:SI 5 %edi)
(nil)))
make[1]: *** [db_appinit.os] Error 1
make: *** [db2/others] Error 2
</PRE>
<P> I have pgcc 2.95.2, which I believe fills the requirement for gcc. I'm
clueless as to
what else can be causing this. Any ideas?
<P> btw, I come up with some other undefined function error when trying to
compile glibc
2.0.7pre6, and I don't want to use the older glibc, anyway.
<P> Someone has to know what causes these kinds of errors, right? :)
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 31 Jan 2000 22:40:13 +0000
<BR>From: T.J. Rowe &lt;<A HREF="mailto:tjr@ida.net">tjr@ida.net</A>&gt;
<BR>Subject: bash problem
<P> I have an interesting problem with my bash prompt. The upper case K and
T letters do not echo to the screen, and when I type them it beeps at
me. Now, before jumping to conclusions, let me describe what I've done
so far. This problem only occurs in bash and bash2, not in tcsh, zsh,
csh, etc. I've recompiled and reinstalled bash several times from both
the source tarballs and source rpms. I've replaced very thing terminal
related that I can think of, such as gettydefs and libtermcap. I've
looked at my keymaps repeatedly, and there doesn't seem to be a problem
there--and again, it only happens in bash. It has to be something
broken which I haven't replaced yet, but I'm not sure what is left. The
K and T letters work fine in programs spawned in bash, it's just the
prompt itself. This one has just about everyone I know confused.
Hopefully someone out there can help or has heard of this odd problem.
If anyone would like more details or has any information, please contact
me.
<P> Thanks,
~T.J.
tjr@ida.net
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 23 Feb 2000 14:45:47 -0500
<BR>From: LabRDist &lt;<A HREF="mailto:LabRDist@ufl.edu">LabRDist@ufl.edu</A>&gt;
<BR>Subject: bootup disk?
<P> i have a toshiba 415cs and i formatted the hard drive. I dont have the
toshiba companion disk or did i make a boot disk before i formatted it.
i need to find a way to get into the computer to activate the d: drive
to install windows. I just get an error every time i start saying insert
the boot disk. Any help would be appreciated.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 23 Feb 2000 21:29:29 -0800 (PST)
<BR>From: napolean &lt;<A HREF="mailto:novac_s@yahoo.com">novac_s@yahoo.com</A>&gt;
<BR>Subject: question about linux 5.2 deluxe
<P> i installed linux and then it said it was completed,
then i got a prompt saying
<PRE>
[bonethugs@localhost bonethugs]$
</PRE>
after entering the password and login name
what do i do?
and i have one more question can you have linux and
windows 98 on one hard drive with out being
partitioned in half
please e-mail me back please
thank you very much
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 24 Feb 2000 10:22:52 -0000
<BR>From: Ivica Glavocic &lt;<A HREF="mailto:ivica.glavocic@post.hinet.hr">ivica.glavocic@post.hinet.hr</A>&gt;
<BR>Subject: unable to install
<P> Hi
<P> I don't know if this is the proper way to contact you, but this is the
address I found searching through Internet for solution for my problem:
<P> PC is PII233 (LX) with 128 MB DIMM SDRAM, 6.4 GB WD HDD, Diamond Speedstar
50 AGP (4MB) VGA, Genius LAN card, Philips 40x CD, ps/2 keyboard and mouse.
On it I have installed NT Workstation 4.0 on first partition (4G) formatted
as NTFS. NT is working fine.
<P> Now, I wanted to put Linux RedHat 6.1 on second partition. First I checked
HCL for my PC - OK. On Internet I found documents how to boot Linux using NT
Loader and everything seemed to be fine until i started actual installation
booting it from CD. It loaded X graphical display, gave me choice for
language and keyboard, and then disk druid started. I could see my NTFS
partition as HPFS but I knew this would happen since I red about it before.
So out of unused ~2 GB I created swap (129M) and root (2G) partition and
after i pressed next, error was displayed "error opening security file ..."
and termination and kill signals stopped further installation.
<P> Now, I know that this is not a fatal error (security..), but what is the
problem then? I tryed to change partitioning (added /boot partition, many
combinations) but nothing seem to work. There is no explanation WHY this
happens, on wich module installation fails. Then I got new boot diskette
from RedHat, tryed with it, but same thing happened. So I put some boot
parameters like MEM8M and changed keyboard type, but still nothing.
<P> Maybe installation log would help, but it is going fast on my screen and I
can't read it, is there a way to save it to diskette since I can't put it on
NTFS partition? Is this partition a problem somehow? Shouldn't be.
<P> Please answer as soon as you can because it is really urgent for me to get
this Linux going.
<P> Thank you in advance
<P> Ivica Glavocic
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 24 Feb 2000 23:52:17 +0100
<BR>From: jacek czerwinski &lt;<A HREF="mailto:jacy@poczta.onet.pl">jacy@poczta.onet.pl</A>&gt;
<BR>Subject: users' information on my netware 4.11
<P> Novell ver &gt;= 5.x has LDAP gateway to his NDS. These are many of LDAP
clients (API from Mozilla, OpenLDAP, netscape).
caldera has made NDS fo Linux (3 user trial ? - i cant download it from
my small city and test ) (www.caldera.com)
Novell said that in march/april will release Opensourced API for NDS
based on OpenLDAP (www.openldap.org)
Maybe LDAP gateway for NDS (in trial wersion ?) is free for download
from Novell ?
Write after your success ;-)
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 3 Feb 2000 08:43:48 -0800
<BR>From: Linux Gazette &lt;<A HREF="mailto:lg@ssc.com">lg@ssc.com</A>&gt;
<BR>Subject: FAQs
<P> The following questions received this month are answered in the
<A HREF="../faq/index.html"><I>Linux Gazette</I> FAQ</A>:
<UL>
<LI> How can i get my US Robotics Winmodem to work in Red Hat 6.0?
<LI> Is the <I>Linux Gazette</I> available in PDF format?
<LI> Is it available on CD-ROM?
<LI> Where can I find a French translation of the <I>Gazette</I>?
<LI> Can I subscribe to the <I>Gazette</I> or have it e-mailed to me?
</UL>
<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">
Sat, 5 Feb 2000 20:07:59 -0800 (PST)
<BR>From: Ron Bates &lt;<A HREF="mailto:raretek@yahoo.com">raretek@yahoo.com</A>&gt;
<BR>Subject: Linux in Grocery Stores...
<P> Hey,
I just wanted to tell you guys, I purchased the
premiere issue of Maximum Linux magazine with a full
install of Linux-Mandrake 6.0 at Pak N' Save in So.
San Francisco. To think the day has come when you can
purchase a copy of Linux at your local chain grocery
store. <SNIFF> It's a beautiful world.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 6 Feb 2000 23:14:00 -0500
<BR>From: Pierre Abbat &lt;<A HREF="mailto:phma@oltronics.net">phma@oltronics.net</A>&gt;
<BR>Subject: Gazette crashes Konqueror
<P> I am trying to read the Gazette with kfm 1.167 and several pages crash it,
including the Mailbag and 2<> Tips. Can you help me figure out what's wrong?
It's happened before.
<P> phma
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 11 Feb 2000 15:05:04 +0100
<BR>From: Richard Vanek (ETM &lt;<A HREF="mailto:Richard.Vanek@etm.ericsson.se">Richard.Vanek@etm.ericsson.se</A>&gt;
<BR>Subject: current issue
<P> Hi
<P> I would like to download always current issue of Linux Gazette to my Pilot. Do you have general link which always point on contents of current issue?
<H4>Richard then wrote again, clarifying his request:</H4>
<P> The download is done by avantgo server which prepare a html pages for downloading to Palm Pilot. I would like to setup link where I can always find a new issue. AvantGO will look at it and when it's change I will get a new pages into pilot.
<P> The reason why link to the current issue is simple, if I point to your main page in level 1 of html I will have all issues which is too much for a Palm Pilot memory.
<BLOCKQUOTE> <EM>
[I added a symbolic link
<STRONG>http://www.linuxgazette.com/current</STRONG> pointing to the
current issue. I also made <STRONG>index.html</STRONG> in each issue
point to the Table of Contents page.
<P><STRONG>Readers, please do not bookmark anything through the
"current" link! </STRONG> The bookmark will go dead at the end of the
month or point to the wrong article. Instead, use the actual issue
directory (e.g., <CODE>issue51</CODE>. -Ed.]
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 18 Feb 2000 08:35:58 -0800
<BR>From: Linux Gazette &lt;<A HREF="mailto:lg@ssc.com">lg@ssc.com</A>&gt;
<BR>Subject: Mirror site in India
<P> Sankar wrote:
<BLOCKQUOTE>
I am located in India, and keenly interested in hosting a mirror site
which would actually be in India. Can you please let me know what would
be approximate size required in the server for this?
</BLOCKQUOTE>
<P> The WWW directories are approximately 84 MB. Each issue will add 2-3 MB.
<P> The size of the FTP files can be found at
<A HREF="http://www.linuxgazette.com/ftpfiles.txt">
http://www.linuxgazette.com/ftpfiles.txt</A>
The current size is 43 MB, plus 1-2 MB for each new issue.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
18 Feb 2000 10:16:01 -0800
<BR>From: Michael Grier &lt;<A HREF="mailto:e1city@altavista.com">e1city@altavista.com</A>&gt;
<BR>Subject: WebGlimpse Blank Page Syndrome
<P> It has been my experience that Netscape will not display a page if there is
a missing closing <CODE>&lt;/table&gt;</CODE> tag somewhere, especially if
there are nested tables. Try appending an extra one at the end of the table.
<BLOCKQUOTE><EM>
[You are correct. However, fixing this requires delving into the
internals of WebGlimpse and Glimpse, which we do not have the resources
to do. It also appears that Netscape is throwing away the bottom of
the page when a large result set is returned, and that's where the
&lt;/TABLE&gt; tag is going. -Ed.]
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 25 Feb 2000 10:46:34 -0500
<BR>From: Jeff Rose &lt;<A HREF="mailto:whisper@iag.net">whisper@iag.net</A>&gt;
<BR>Subject: Main LG Logo ...
<P> Greetings,
<P> Agreed, I am *not* any type of GIMP-guru [see _my_ horrible non-aliasing
problematic logo] ... however, a suggestion:
<P> The Linux Gazette Main Logo is, well, ugly!
<P> Perhaps you could encourage the readership to submit their own logo
creations for Linux Gazette and have fun while making an improvement at
the same time?
<P> Hope this sounds like a plan,
<P> Jeff
<PRE>
--
( &gt;- Jeff Rose - everyone's Linux User Group (eLUG) -&lt; )
/~\ http://www.elug.org mailto:jrose@elug.org /~\
| \) *** Freelance Linux/IT Writer *** (/ |
|_|_ eFAX: +1.630.604.4130 _|_|
</PRE>
<BLOCKQUOTE> <EM>
[The staff and readers of </EM>LG<EM> are divided over whether it's
time for a new logo. I myself am undecided. But I can do this:</EM>
</EM><H3><EM>If you or any readers wish to submit artwork for
the </EM>Gazette<EM>, I will put them in a "</EM>Linux Gazette<EM> Art"
article so when we can all see them. They will then be available when
I go looking for something to jazz up a page with. </EM></H3><EM>
<!-- The extra <EM> tags are because Netscape misinterprets <EM> inside
<STRONG> inside <EM>. -->
<P><IMG SRC="../gx/lg-penguin.gif" ALIGN="right" WIDTH="161" HEIGHT="160">
This was how the "Penguin Reading the Gazette" image at right found
a home on the </EM>LG<EM> FAQ page. We had the existing image from the
days when Margie was the Editor of the </EM>Gazette<EM>. (She still
retains the title "Ruler of the </EM>Gazette<EM>"--she refused to give
me that title! :) I liked it, used it in one of my
<A HREF="../issue44/lg_backpage44.html#notlinux">Not Linux</A> columns,
and then decided it would make a good image for the FAQ.
<P> The </EM>LG<EM> logo is 600x256, and any new logo should probably be
the same size. The Penguin Reading the Gazette is 161x160; most page
decorations will want to be more or less that size. Page decorations
are a lot more likely to be used in future </EM>Gazette<EM> issues than
logos are, because there can be only one logo. All images should have
a </EM>Linux Gazette<EM> theme in their content somehow.
<P> With this in mind, send in some art! -Ed.]
<BR CLEAR="all">
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 25 Feb 2000 13:07:44 -0500
<BR>From: Jason Fink &lt;<A HREF="mailto:jay_rf@exis.net">jay_rf@exis.net</A>&gt;
<BR>Subject: Pundit Here, Pundit There, Pundits Everywhere
<H4>Pundit Here, Pundit There, Pundits Everywhere</H4>
<P> Pundits. Had enough of that word yet? I know I have and I also know there
are a few of these so-called experts whose teeth I would like knock out (I
guess the web equivalent would be breaking their knuckles or something). In all
honesty, since when did becoming an expert one area of technology suddenly make
one an absolute know-it-all about all technology? This has suddenly become the
new thing to be: an industry pundit, a technology pundit, or whatever. A
pundit, by the definition I refer to, is an accomplished expert in a particular
discipline. This e-world of ours has suddenly given anyone who has the time and
tenacity to become a pundit the opportunity to do so. Those whom have been in
the industry a long time have received that label, and rightfully so, for
excelling in a particular field. All of a sudden, however, many of these
pundits are breaking away from their disciplines and yammering about others. I
would rather they did not.</p>
<P> <H4>The Neo Pundit Know It All</H4>
<P> This is the group that really irritates me. They started out as people who
knew a lot about something, and in some cases, they outright contributed to
making something, setting a trend or engineering a brilliant new process. While
these people should be (and have been) commended, after a period of time they
suddenly become experts in other fields as well, but now they can forego
validation. Why that is, I have no idea. One can relate it to actors/actresses
or music stars who suddenly feel they should become involved with politics and
that their ideas are right. While there is a difference of sorts, you can see
the obvious parallel: I'm a somebody now so everything I say should be taken
seriously.</p>
<P> <H4>Losing Readers</H4>
<P> This sort of abuse of journalistic power needs to stop, someone needs to
start putting an end to it. The reason it needs to stop is not just ethics, it
really has more to do (in my opinion) with quality. If a person is particularly
known for having insightful columns on a given subject, chances are, I will
read them. The second they step into unknown territory and blunder, they lose
credibility in my eyes. While I may be just one person, I highly doubt I am the
only one who stops reading the material they write about because they
blundered.</p>
<P> <H4>Misinforming Glassy Eyed Suits</H4>
<P> Another point many administrators have brought to my attention has been the
pointy-haired-boss syndrome. A Glassy-Eyed Suit (IS Department Head) reads a
well-known, well-respected pundits column. It must true, right? Those who
know no better cannot be protected by the sane. A pundit writing about
something outside the sphere of their knowledge is in fact damaging the
industry as a whole. Knuckleheads across the world will do a 180 based upon
what some guy at some zine printed. Surely this is a good enough reason not to
arbitrarily write about something.</p>
<P> <H4>I Did it for the Hits . . . Come on the Hits . . .</H4>
<P> Word has it, if you secretly embed the word Linux on Coke cans, Coke sales
will skyrocket. Zines across the globe are printing Linux this and Linux that,
all for the sake of advertising dollars. That, in itself, is disgraceful. It
is bad enough that there are so many 2-bit sites in general The fact that
established journalists are using Linux to bring in the hits is repulsive.</p>
<P> <H4>Okay Wise Guy What About YOU?</H4>
<P> So am I being hypocritical? In a sense, yes, because I really do not know
much about Journalism, then again, I am not a pundit now am I? This trend has
been going on for a long time now. It is my hope, that by seeing this, not only
will you as a reader take the extra step to verify the information source, but
perhaps those readers out there who are writers will think twice about their
next article. </p>
<BLOCKQUOTE> <EM>
[The thing about Linux on coke cans reminded me of something somebody said
at the Python conference. He said, a Linux Janitorial
Service could go IPO just because it has the word "Linux" in it.
Then the stockholders would be surprised to realize they were serious
about the "Janitorial" part. -Ed.]
</EM> </BLOCKQUOTE>
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<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="#distro">Distro News</A>
<li><a HREF="#general">News in General</a>
<li><a HREF="#software">Software Announcements</a>
</ul>
</td></tr></table>
</center>
<P> <hr> <P>
<!-- =================================================================== -->
<center><IMG ALT=" " SRC="gx/cover71.jpg" WIDTH=200 HEIGHT=268></center>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<font color="green">
March 2000 <I>Linux Journal</I>
</font>
</H3>
<P>
The March issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
Journal</I></A> is on the newsstands now. This issue focuses on Linux training.
<P> <I>Linux Journal</I> has articles that appear "Strictly On-Line".
Check out the Table of Contents at
<A HREF="http://www.linuxjournal.com/issue71/index.html">
http://www.linuxjournal.com/issue71/index.html</A> for articles in
this issue as well as links to the on-line articles.
To subscribe to <I>Linux Journal</I>, go to <A
HREF="http://www.linuxjournal.com/subscribe/index.html">
http://www.linuxjournal.com/subscribe/index.html</A>.
<P>
<font color="green">
For Subcribers Only</font>: <I>Linux Journal</I> archives are available
on-line at
<A HREF="http://interactive.linuxjournal.com">
http://interactive.linuxjournal.com/</A>
<a name="distro"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Distro News</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">BlueCat
</FONT>
</H3>
<P><B>SAN JOSE, Calif., 7 February 2000</B> - Lynx Real-Time Systems, Inc.,
today announced the availability of BlueCat(tm) Linux, Release 1.0, Lynx'
version of Linux for high-availability, high-reliability embedded applications.
BlueCat Linux is part of the LynuxWorks(tm) suite that allows embedded systems
development of both BlueCat Linux and the LynxOS(r) real-time operating system
with a common compatible tool set.</P>
<P> <P>BlueCat, a tested and stabilized Linux version based on Red Hat 6.1, is
binary compatible with Linux applications, system and development tools and
drivers to allow rapid, efficient embedded deployment. Lynx provides cross
development support for BlueCat to a variety of popular embedded processors and
includes an advanced test methodology to ensure quality and reliability.</P>
<P><I>"BlueCat and its development environment, LynuxWorks, has established
Lynx as a key player in the embedded Linux market,"</I> said Rick Lehrbaum of
LinuxDevices.com, the embedded Linux portal.<I> "By taking the bold strategy of
'competing' against themselves in delivering BlueCat Linux, Lynx has provided a
viable business model that will avoid fragmenting Linux. Real-time support is
an important option for embedded developers who are choosing Linux as their
operating system."</I></P>
<P> <A HREF="http://www.bluecat.com">www.bluecat.com</A>.</P>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Corel
</FONT>
</H3>
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000210-3.shtml">
Corel Delivers Macromedia Flash to Linux</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Hard Hat
</FONT>
</H3>
<P> Bellevue, Wash., February 8, 2000 - GoAhead(R) Software, today announced
that MontaVista Software Inc. is shipping GoAhead WebServer with their recently
announced Hard Hat Linux(R), a Linux operating system for embedded
applications. GoAhead WebServer is an open source, embedded Web server that
provides a secure, flexible and free way to access remote devices and
appliances via standard Internet Protocols.
<P> GoAhead WebServer leverages embedded JavaScript, a strict subset of
JavaScript optimized for small footprint environments. It is the only open
source, embedded Web server that uses Active Server Pages (ASP), embedded
JavaScript and in-memory CGI processing to deliver a highly efficient method
of dynamic Web page creation. GoAhead WebServer also features a ROM
packaging utility for Web pages.
<P> GoAhead's web site is <A HREF="http://www.goahead.com">
http://www.goahead.com</A>. The source code for the GoAhead WebServer is at
<A HREF="http://www.goahead.com/webserver/wsregister.htm">
http://www.goahead.com/webserver/wsregister.htm</A>.
Support for GoAhead WebServer is available through a
collaborative Usenet newsgroup,
<A HREF="news://news.goahead.com">news://news.goahead.com</A>, in which GoAhead
is an active participant.
<P> Information on Hard Hat Linux is on MontaVista's web site,
<A HREF="http://www.mvista.com">http://www.mvista.com</A>. (See the picture of
a penguin wearing a yellow hard hat in the top left corner of this page.)
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux for Windows
</FONT>
</H3>
<P> Linux for Windows has been released in the UK.
It is based on Linux-Mandrake 6.1, and requires no partitioning or reformatting
since it runs from a file within Windows. For details, see the
<A HREF="http://www.macmillansoftware.com">Macmillan software webs site</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux-Mandrake
</FONT>
</H3>
<P> NEW YORK - (LinuxWorld); February 2, 2000 - Macmillan USA, the Place for
Linux, (<A
HREF="http://www.placeforlinux.com">http://www.placeforlinux.com</A>),
announced it is shipping Complete Linux-Mandrake 7.0 for beginning and
intermediate Linux users. Macmillan's new product simplifies the process of
installing the Linux operating system for first time users and includes
in-depth user reference guides, technical support, and a complete suite of
desktop productivity applications.
Complete Linux-Mandrake 7.0 is available now at a MSRP of U.S. $29.95.
<P> System Requirements for Complete Linux-Mandrake 7.0: CPU Intel Pentium
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Red Hat
</FONT>
</H3>
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000214-1.shtml">
Red Hat Expands European Operations</A> to France and Italy
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">SPIRO-Linux
</FONT>
</H3>
<P> A description of SPIRO-Linux is included in the
<A HREF="#cellphoneadmin">Configure your network from a web cell phone</A>
announcement below.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Storm
</FONT>
</H3>
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000222-4.shtml">
Storm Linux 2000 Makes European Debut </A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">SuSE
</FONT>
</H3>
<P> SuSE has appointed Sysdeco Mimer as its first Business Partner in Sweden.
Sysdeco Mimer will be providing their MIMER DBMS technology on the SuSE Linux
distribution.
MIMER is characterised
by ease-of-use, high performance, scalability, openness and high
availability. Among the thousands of MIMER users all over the world, Volvo,
Swedish Telecom, Ericsson, Hammersmith Hospital (UK) and English Blood
Authority can be mentioned.
MIMER Personal Edition for Linux is available for free download from
<A HREF="http://www.mimer.com/download">http://www.mimer.com/download</A>.
<P> LINUXWORLD EXPO 2000, NEW YORK, NY (February 2, 2000) -
<A HREF="http://www.sco.com">SCO</A>
and SuSE Linux AG today announced plans to deliver SCO's Tarantella
web-enabling software to SuSE Linux customers worldwide.
SCO will bring Tarantella web-enabling software to the SuSE Linux platform
and work with SuSE to market the software to its customers.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">TurboLinux
</FONT>
</H3>
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000223-4.shtml">
TurboLinux Adds E-Commerce Suite to New Server</A>
<a name="general"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">News in General</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">C.O.L.A news
</FONT>
</H3>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Upcoming conferences &amp; events
</FONT>
</H3>
<table border>
<tr>
<td valign=top>
<b>Linux Open Source <BR>Expo and Conference</b>
<td valign=top>
March 7-10, 2000<BR>
Sydney, Australia<BR>
<A HREF="http://www.linuxexpo.com.au" target=_blank>www.linuxexpo.com.au</A>
<tr>
<td valign=top>
<b>Game Developers Conference</b><BR>
<td valign=top>
March 10-12, 2000<BR>
San Jose, CA<BR>
<A HREF="http://www.gdconf.com" target=_blank>www.gdconf.com</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Software Development Conference &amp; Expo</b><BR>
<td valign=top>
March 19-24, 2000<BR>
San Jose, CA<BR>
<A
HREF="http://www.sdexpo.com" target=_blank>www.sdexpo.com</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Singapore Linux Conference (SLC)</b><BR>
<td valign=top>
March 23-25, 2000<BR>
Singapore<BR>
<A HREF="http://www.slc.com.sg" target=_blank>www.slc.com.sg</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Colorado Linux Info Quest</b><BR>
<td valign=top>
April 1, 2000<BR>
Denver, CO<BR>
<A HREF="http://thecliq.org" target=_blank>
thecliq.org</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Montreal Linux Expo</b><BR>
<td valign=top>
April 10-12, 2000<BR>
Montreal, Canada<BR>
<A HREF="http://www.skyevents.com/EN/" target=_blank>
www.skyevents.com/EN/</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Spring COMDEX</b><BR>
<td valign=top>
April 17-20, 2000<BR>
Chicago, IL<BR>
<A HREF="http://www.zdevents.com/comdex" target=_blank>www.zdevents.com/comdex</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>HPC Linux 2000</b>: Workshop on High-Performance Computing with
Linux Platforms<BR>
<td valign=top>
May 14-17, 2000<BR>
Beijing, China<BR>
<A
HREF="http://www.csis.hku.hk/~clwang/HPCLinux2000.html" target=_blank>
www.csis.hku.hk/~clwang/HPCLinux2000.html</A>
<P>
(In conjunction with <A
HREF="http://www.cs.wm.edu/hpcs/HPCAsia2000.html/" target=_blank>
HPC-ASIA 2000</A>:
The Fourth International Conference/Exhibition on
High Performance Computing in Asia-Pacific Region)
<P>
</td></tr>
<tr>
<td valign=top>
<b>Linux Canada</b><BR>
<td valign=top>
May 15-18, 2000<BR>
Toronto, Canada<BR>
<A HREF="http://www.linuxcanadaexpo.com" target=_blank>www.linuxcanadaexpo.com</A>
<P>
</td></tr>
</table>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Open Source Equipment Exchange
</FONT>
</H3>
<P> Hauppague, New York, NY - February 8, 2000 - BASCOM Global Internet
Services, Inc. (BASCOM), pioneering developers of Linux-based thin server
productivity solutions for small business, today announces an initiative in
keeping with the collaborative spirit of the Open Source movement.
BASCOM's Open Source Equipment Exchange
<A HREF="http://osee.bascom.org">(osee.bascom.org)</A> is designed to
match those donating computer equipment with those in the Open Source
community needing to add infrastructure to further their development
efforts and spur innovation toward the continued evolution of the Linux
operating system.
<P> The OSEE web site will link those donating equipment with those in the Open
Source community in need of hardware resources. Since the Linux OS requires
relatively modest "horsepower" to drive it, older class computers that have
outlived their use in corporate environments will be given renewed life in the
hands of Open Source developers.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Help wanted - literally
</FONT>
</H3>
I have a position available for a Framework Developer/Designer in
d/t Toronto. The technology is C/C++, Unix or Linux (Linux preferred), and
TCP/IP (sockets), and it is being used to develop secure web conferencing
software that can operate in almost real-time and across multiple platforms.
It is full-time and the company is pre-IPO. Maybe someone out there is
interested?
<P> Ken French, BScH, MSc<BR>
Consultant, IT Division<BR>
Multec Canada Ltd.<BR>
200 Ronson Drive, Suite 204<BR>
Telephone: (416) 244-2402 ext. 105<BR>
Email: <A HREF="mailto:kfrench@multec.ca">kfrench@multec.ca</A><BR>
Web: <A HREF="http://www.multec.ca">www.multec.ca</A><BR>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Global Linux Event Series
</FONT>
</H3>
<P> MILFORD, CT - 11 February 2000 - Advanstar Communications, Inc., parent
company of LINUX Canada and Advanstar Expositions Canada LTD, and Specialized
Systems Consultants, Inc., publishers of <I>Linux Journal</I>, announced today
a strategic alliance to create a series of global conferences and expositions
for the Linux community.
<P> The Linux event series launches in Canada, May 15 - 18, 2000 at the
Metropolitan Toronto Convention Centre. The inaugural event, LINUX Canada, will
consist of multiple conference sessions and an exhibit hall with leading-edge,
Linux-related exhibitions. Three visionary keynote presentations are also
confirmed, including: Robert Young, chairman &amp; CEO of Red Hat, Tuesday, May
16; Linus Torvalds, creator of the Linux operating system, Wednesday, May 17;
and, Ransom Love, title of Caldera Systems, Thursday, May 18. The event has
already gained strong support from the Canadian Linux Users Exchange (CLUE) and
the Toronto Linux Users Group (TLUG).
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">What is the Future of OS?
</FONT>
</H3>
<P> Portland, OR, February 15, 2000 - Representatives from Caldera Systems,
GartnerGroup, Novell Corporation and Red Hat will debate "The Future of OS on
Desktop PCs and Servers" on Friday, March 10th at Noon, announced System
Builder Summit today. The panel discussion will take place in conjunction
with System Builder Summit Spring 2000, being held March 8-11th at the Desert
Springs Marriott Resort and Spa in Palm Desert, California.
<P> In addition to the OS panel, the agenda for System Builder Summit Spring
2000 includes Keynotes by Michael Tiemann, CTO of Red Hat; Jim Yasso, Vice
President of Intel Corporation; and Dan Vivoli, Vice President of Marketing at
nVIDIA. Through roundtable sessions, theater presentations and exhibits, more
than 100 technology vendors will offer a preview of year 2000 roadmaps,
products, services and programs that cover the entire technology spectrum from
the desktop to the server to Internet-enabled computers and communication.
Among them are 3COM Corporation, AMD, ATI Technologies, Canon Computer Systems,
Conexant, D&amp;H Distributing, Imation, Ingram Micro, Intel Corporation, Logitech,
NASBA, Novell, nVIDIA, Quantum and Techworks, among others.
<A HREF="http://www.systembuildersummit.com">
http://www.systembuildersummit.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">GetTux.com closes shop
</FONT>
</H3>
This note is going out to all customers of GetTux.com, and their 'SubX
Series' subscribers.
<P> Unfortunately, due to a lack of funding, GetTux.com is ceasing business.
This is a most unpleasant situation, and we are not thrilled to have to send
out this notice, but, without major funding, we are unable to advertise,
unable to increase staff, and are thus unable to advance as a company. We
had meetings with several large investors, but, unfortunately, no one was
able to invest in us, while at the same time leaving us control of the
company and its direction. What a sad thing the business world can be.
<P> As several of you know, the company was run, on a day to day basis, by me,
Scott McDaniel. Website, promotions, product, research and all. We really
needed a few other people, and, without that funding, we couldn't continue.
<P> We certainly felt that we offered a unique and useful product, but, again,
without the funding we hoped to receive, we were forced to discontinue
service. Hopefully, the Linux community will strive (of course it will!),
and someone may indeed resurrect the idea of a monthly subscription service.
I know that several of you are in Linux related businesses, some of you in
the print media, and others are part of Linux related websites.
<P> GetTux.com was formed in the hope that we could advance the use of Linux ,
and that the ease of use would be promoted by allowing users updates to
documentation and applications. We are fans of Linux. We are users of Linux.
We are part of the commmunity. And we are sorry we are unable to continue to
serve you in this capacity.
<P> In the event that anyone in the community would like to use the GetTux.com
domain, or would like the product we were selling, business plan and all,
please contact me personally,
<A HREF="mailto:scott@mcdev.com">scott@mcdev.com</A>.
<P> Anyway, back to the sad business: Current subscribers will be given a FULL
refund. Consider the first month of your subscription a gift from other
Linux aficionados. If you have a refund related question, please email
<A HREF="mailto:refunds@gettux.com">refunds@gettux.com</A>.
<P> Again, my apologies for any inconvenience, and, again, I wish to thank each
and every customer that allowed us to serve them.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Links
</FONT>
</H3>
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000204-5.shtml">
VA Linux Acquires Andover.Net for $800M</A>
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000207-4.shtml">
IBM Expands Linux Investment</A>
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000209-7.shtml">
VA Linux Expands SourceForge Online Development</A>
regarding KDE and the CMU Sphinx speech recognition system.
<P> The <A HREF="http://www.linuxshowcase.org">Atlanta Linux Showcase</A> has a
call for papers. Submissions are due April 17 for the Extreme Linux Workshop,
and May 1 for the Hack Linux/Use Linux Tracks.
<P> <A HREF="http://www.ecommercetimes.com/news/articles2000/000224-4.shtml">
eSoft and Gateway</A> are partnering to advance Linux-based
Internet software and services to small and mid-sized businesses.
<P> <A HREF="http://www.manning.com/Grayson">
Python and Tkinter Programming</A> is a new book by
John E. Grayson, published by Manning Publications.
<P> <A HREF="http://www.whichrpm.com">www.whichrpm.com</A> is a site helping you
to find Linux software in the RPM format. Over 35 000 software packages are
indexed, allowing you to find, for instance, a package that lets you talk to
your PalmPilot.
<P> <A HREF="http://linuxdevices.com/cgi-bin/news_view.cgi?newsid=NS8830783548">
Using Linux in Embedded and Real-time System</A> is a white paper on why Linux
is ideal for this environment.
<P> <A HREF="http://www.extremeprogramming.org/">Extreme Programming</A> was
mentioned in <A HREF="steffler.html">Jason Steffler's article</A>, but I want
to mention it again because it's a cool site. It's "a gentle introduction to
Extreme Programming", which is one of those strategies for getting product
development synchronized with the client's expectations.
<P> Metran Technologies has updated the HTML version of
<A HREF="http://samba.he.net"><I>Using Samba</I></A>, and placed it on a
more reliable web server.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">The Linux-Net Project
</FONT>
</H3>
<P> The Linux-Net Project,
<A HREF="http://linux_net.tripod.com">http://linux_net.tripod.com</A>
(temporary URL), seeks to modify Linux to allow your household computing
devices to become intelligent "terminals".
For instance, your refrigerator may notice that milk is running low and,
being a termenal, asks the server to put "Milk" on the shopping list. Now
you get the shopping list off of your PDA, which is also a termenal, and see
that you should get milk. It could even be extended so that the server will
watch how much milk, or any other product, your family drinks and will
adjust the ammount you should get based on that.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Cobalt Qube 2 and the Phoenix Adaptive Firewall
</FONT>
</H3>
<P> COLUMBUS, OH, (February 1, 2000)-Progressive Systems, Inc., a leading
provider of Linux-based network security solutions, and Cobalt Networks,
Inc., a leading developer of server appliances, today
announced a new firewall appliance solution based on Progressive's
Phoenix Adaptive Firewall, the only firewall for Linux to be both ICSA
and LinuxLabs certified, and Cobalt's award-winning Qube 2 server
appliance. The combination will allow small-to medium-sized businesses,
workgroups, branch offices, schools and government institutions greater
flexibility in establishing network security policy and design.
<P> With the Phoenix firewall on the Qube 2, Progressive extends both its
relationship with Cobalt and its existing offering of Linux-based
firewall appliances. The partnership with Cobalt allows Progressive to
deliver security solutions designed to meet a range of customer needs
and opens Cobalt's customer base to Progressive. The Phoenix firewall
on the Qube 2 joins the existing Phoenix firewall on the Cobalt RaQ 2, a
Linux-based firewall appliance that allows service providers and
resellers to deliver security products and managed services to
small-to-medium-sized businesses, branch offices, schools, and
government institutions. The addition of the Phoenix on the Qube gives
customers an easy-to-use, high functionality premise-based solution that
satisfies the needs of individual businesses and institutions.
Progressive and Cobalt enjoy synergies in their product and sales
organizations, allowing the companies to leverage their respective
channel and product strategies.
<P> The Phoenix Qube will retail for $2,495 with unlimited users.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">OpenTape.org
</FONT>
</H3>
<P> Boulder, CO - January 31, 2000 - Ecrix Corporation and the Linux Fund
today announced <A HREF="http://www.opentape.org">OpenTape.org</A>, a new
nonprofit web site supporting the open source software movement. OpenTape.org
offers users access to technical information about data backup hardware and
software for the Linux operating system. All advertising and vendor
participation revenues generated by the site go to the Linux Fund, a non-profit
organization that supports Linux programmers with development grants and
university scholarships.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">LinuxLinks.com launches free e-mail service to rival Hotmail
</FONT>
</H3>
<P> LinuxLinks.com is proud to announce the launch of a free web based
email service targeted specifically for the Linux community. This
service allows users to send and receive email on any computer that
offers a web browser. Now you can deal with email anywhere in the
world in a discreet and secure manner whilst at the same time
promoting the Linux cause.
<P> Some of the features provided include: a yourname@firstlinux.net email
address, lightning fast service, attachments, folders, address book,
spam filters and POP mail retrieval. There are many preference options
available too allowing users to enhance their messages with different
font styles, sizes and colors. A built-in help facility is also provided.
<P> To complement this rich number of features we also provide message
searches, personal signatures, aliases, and a personal profile to
make a complete FREE web email service.
<P> For more information and to sign up please visit
<A HREF="http://www.firstlinux.net/">http://www.firstlinux.net/</A>
<P> This service is the latest addition to the FirstLinux network,
which currently comprises of
<A HREF="http://www.linuxlinks.com/">LinuxLinks.com</A>
and <A HREF="http://www.firstlinux.com/">FirstLinux.com</A>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Lineo to appear in hotel/apartment set-top boxes
</FONT>
</H3>
<P> LINDON, UTAH-Jan. 18, 2000-Lineo, Inc, developer of embedded Linux system
software; Elitegroup Computing, manufacturer of system board products; and
Bast, Inc., provider of set-top hardware, today announced an agreement to use
Lineo Embedix Linux 1.0 and Embedix Browser for Bast's line of embedded
Linux-based set-top hardware. These devices will be installed in hotel rooms
and apartment buildings in the United States, Europe and Asia. This
Embedix-based Web browser is the first Internet appliance to provide hotel and
apartment managers a low-cost, convenient way to give customers easy access to
the Internet from an ordinary television set via a broadband network maintained
by the property owner.
Lineo:<A HREF="http://www.lineo.com">www.lineo.com</A><BR>
Elitegroup: <A HREF="http://www.ecsusa.com">www.ecsusa.com</A>,
<A HREF="http://www.ecs.com.tw">www.ecs.com.tw</A><BR>
Bast: <A HREF="http://www.bastinc.com">www.bastinc.com</A>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">G.lite: Linux-based DSL modem
</FONT>
</H3>
<P> Silicon Automation Systems Limited today extended its Synapse range of
xDSL products by introducing a G.lite solution for Linux. This is the
world's first Linux based internal G.lite modem offering the end-user
enhanced data rates over the existing copper lines.
<P> Mr. Deepak Gupta, Vice President.,
SAS, says, "External ADSL modem solutions available in the market today are
expensive and bulky. They are not suitable for the Internet appliance
market where cost and size are critical. Synapse G.lite for Linux is an
extremely attractive solution for OEMs looking for providing ADSL access
to their Linux based appliances. Providing G.lite under Linux is a
pioneering step towards mass deployment of ADSL and in firmly establishing
it as the technology of choice in the Internet access market," he added.
<P> The Synpase G.lite for Linux modem provides data transfer rates of 1.5 Mb
/ s downstream and 512 Kb / s upstream while allowing simultaneous
access for analog voice telephony. It is fully compliant with the ITU-T
G.992.2 standard and has been interoperated with most major DSLAM vendors.
Moreover, the performance of the system exceeds those mandated by
standards.
<A HREF="http://www.sasi.com">www.sasi.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">New Red Hat CTO to address system builders
</FONT>
</H3>
<P> Portland, OR, January 31, 2000 - Michael Tiemann, Chief Technical Officer
(CTO) of Red Hat, will address system builders and technology vendors from
North America and Europe at the Opening Reception of System Builder Summit on
Wednesday evening, March 8th. A technical leader in the industry, Tiemann
will provide strategic insight into the open source movement and the impact
it will have on current industry and channel models. System Builder Summit
takes place March 8-11th at the Desert Springs Marriott Resort and Spa, in
Palm Desert, California.
<P> Tiemann was named Chief Technical Officer of Red Hat on January 12th of
this year. Prior to this, he was co-founder and acting CTO of Cygnus Solutions,
which Red Hat acquired this month. In his new role, Tiemann is responsible for
communicating Red Hat's strategic direction to the company's customers and
ensuring that Red Hat technologies meet their long term business requirements.
<A HREF="http://www.systembuildersummit.com">www.systembuildersummit.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">
<FONT COLOR="green">C.O.L.A software news
</FONT>
</H3>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Internet phone for Linux
</FONT>
</H3>
<P> <A HREF="http://www.linuxmotors.com/phone">Phone</A> is a linux client
program that lets you talk with other people on the internet using voice on a
full duplex connection. The requirements are:
<UL>
Linux
<LI> 24000 bits/second or better internet connection
<LI> Full duplex sound card (you can read and write audio data at the
same time)
<LI> Linux support for that sound card (many drivers have trouble in
full duplex mode)
<LI> Microphone
<LI> Speakers
</UL>
<P> Your identity is based on your email address. The
server maintains a database of who is online and
everyone's contact list. You can find out if your
friends are on line if they are in your contact list
and you're in their contact list. Similar to ICQ.
<P> The program is very new and is command line based.
Lots of improvements are planned, should it become
popular. The client is free and open source. The
matching service is free until further notice.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">CodeCatalog and cyclic.com acquired by OpenAvenue
</FONT>
</H3>
<P> Scotts Valley, CA -- Paul Hessinger, chairman and chief executive
officer of OpenAvenue, Inc. (<A
HREF="http://www.openavenue.com">www.openavenue.com</A>), today announced that
the company has acquired CodeCatalog and Cyclic.com from SourceGear
Corporation. OpenAvenue is a privately-held, business-to-business company
specializing in Web-based hosting, management, and distribution of worldwide
collaborative software development projects. OpenAvenue hosts application
development content provided by individual and corporate content owners, and
makes it available to a worldwide community of software developers under open
source, community-based, and private licensing.
<P> A Web-based open-source code search engine, CodeCatalog
(<A HREF="http://www.codecatalog.com">www.codecatalog.com</A>) provides a fast
reference tool to search and browse a source code repository which currently
contains more than 20 million lines of open-source code from Linux, Mozilla,
KDE, GNOME, and others. All of the most popular open-source projects are
represented, searchable, browsable, and cross-referenced against each other.
CodeCatalog is built upon a variety of open source technologies, including
Linux. OpenAvenue will integrate CodeCatalog into its OAsis infrastructure.
<P> OpenAvenue also acquired SourceGear's
<A HREF="http://Cyclic.com">Cyclic.com</A>, a popular Web
destination for developers using the Concurrent Versions System (CVS),
the leading version control tool for open-source developers. OpenAvenue
will further SourceGear's initiative to support the open community
development of CVS, work to enhance its functionality, and remain
committed to its status as free software.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">e-speak.net
</FONT>
</H3>
<P> SAN FRANCISCO, CA--Collab.Net announced today that it has entered into an
agreement with Hewlett-Packard Company to build, host and maintain the Open
Source software development infrastructure and Web site (<A
HREF="http://www.e-speak.net">www.e-speak.net</A>) for e-speak technology.
E-speak, an HP-developed software that is now available as Open Source
software, dramatically simplifies the creation, composition, deployment,
management, and maintenance of e-services over the Internet.
<P> Collab.Net is providing Web-based development life-cycle management
services including code versioning, bug tracking, and email discussion
forums that are key to a well-run Open Source software community.<P> As a part of this effort, Collab.Net is providing a hosting platform
consisting of several major, well-known packages of Open Source
software combined into a cohesive offering:
<PRE>
- Code Version System (CVS) repositories
- Bug tracking using the BugZilla software from the Mozilla Project
- Mailing lists, archived and searchable
- Source code browsing tools
- An administrative interface for "admins" from the e-speak community
</PRE>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">iPlanet web server from the Sun-Netscape Alliance
</FONT>
</H3>
<P> MOUNTAIN VIEW, Calif. - January 19, 2000 - The Sun-Netscape
Alliance (Alliance) today announced iPlanet(TM) Web Server,
Enterprise Edition 4.1 and the new FastTrack Edition 4.1
software, both of which now include support for the Linux
operating system and the latest Java(TM) technologies. With
these additions, iPlanet Web Server software now gives users
an even wider degree of choice and flexibility in using
iPlanet Web Server software on the operating system - or
combination of operating systems - that best meets their
business and Internet system requirements.
<P> The new iPlanet Web Server, FastTrack Edition 4.1 software
was specifically designed to meet the needs of developers
and will be offered for free. FastTrack Edition 4.1
contains nearly all the core application development and
administrative features of Enterprise Edition 4.1 that
developers need to build rich, dynamic Web applications.
iPlanet Web Server, Enterprise Edition 4.1 software
continues to meet the needs of enterprises and service
providers who require a high performing, scalable Web server
to power their mission-critical Internet applications.
<P> CNN To Power Web Sites With iPlanet Web Server 4.1 Software
"The CNN Web sites have relied on Netscape Web Servers to
meet the world's tremendous demand for news ever since
CNN.com's initial launch in 1995. We have served billions of
pages with Netscape Enterprise Server 2.01, and now it is
time to move forward," said Sam Gassel, chief systems
engineer for CNN Internet Technologies. "Our initial
testing shows that iPlanet Web Server 4.1 software should be
a highly scalable and reliable release. As we offer a more
dynamic and personalized service, our users will benefit
from the improvements in core functionality and new features
such as integrated support for the latest Servlet and
JavaServer Pages(TM) (JSP) specifications."
<P>
A pre-release version of iPlanet Web Server, Enterprise
Edition 4.1 software on Linux is currently available on the
iPlanet Web site, at
<A HREF="http://www.iplanet.com/downloads/testdrive/index.html">
www.iplanet.com/downloads/testdrive/index.html</A>, for trial
use and feedback. iPlanet Web Server, Enterprise Edition
4.1 software on the Linux, NT and Solaris(TM) Operating
Environment is scheduled to be available for purchase in
early March, 2000. iPlanet Web Server, Enterprise Edition
4.1 software with support for HPUX, AIX and Tru64
(Compaq/DEC) is scheduled to be available in early April,
2000. iPlanet Web Server, FastTrack Edition 4.1 software is
scheduled to be available on all supported operating
systems--Linux, Solaris, NT, AIX, Tru64 and HPUX--for free
on the iPlanet Web site in early May, 2000.
iPlanet Web Server, Enterprise Edition 4.1 software is
priced at $1495 per CPU.
<P> <hr> <P>
<!-- =================================================================== -->
<A NAME="cellphoneadmin"></A>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Configure your network from a web cell phone
</FONT>
</H3>
<P> January 24, 2000 - Wayne, NE -
SPIRO-Linux announces the development of a Linux Administration
System, SPIRO-Linux WETMINtS, a powerful web-based administration
interface for Linux systems.
<P> Using WETMINtS, you can configure DNS, Samba, NFS, local/remote
filesystems and more using your web-enabled cellular phone.
WETMINtS is simple web-enabled cellular phone software, and
consists of a number of CGI programs which directly update
system files. WETMINtS supports all SPIRO-Linux and other Linux
operating systems. Standard operations available with WETMINtS
include:
<PRE>
<LI> Creating and editing Unix users and groups
<LI> Log in to your system with telnet
<LI> List, Kill and Renice running processes on your system
<LI> Manage WETMINtS configuration
<LI> Perform network diagnostics (ping, traceroute, port scanning)
<LI> List currents logins
</PRE>
<P> About SPIRO-Linux
<P> <A HREF="http://www.spiro-linux.com">SPIRO-Linux</A> is the only
distribution that comes with five easy-to-use Server installations (Mega
Server, Web Server, Application Server, Name Server, File and Print Server) and
three Workstation installations (General Purpose, Development and Graphics),
plus an upgrade path and a custom install. SPIRO-Linux includes an Office Suite
which contains a word processor, spreadsheet that is built into the product.
In addition, SPIRO-Linux has the capability to import Microsoft Word documents
into Linux.
<P> Currently, SPIRO-Linux is pursuing relationships with different OEM
manufacturers in need of a more robust and easier to use version of
Linux. SPIRO-Linux is published under the GNU general public license.
<P>
<BLOCKQUOTE> <EM>
[Just before press time, I couldn't get to www.spirolinux,com.
It could be on <A HREF="http://www.openshare.net">
http://www.openshare.net</A> according to a web search, but that
site is under renovation. However, Walnut Creek has a version of
SPIRO-Linux for download at
<A HREF="ftp://ftp.cdrom.com/pub/linux/sunsite/distributions/spiro/i386/SPIRO/RPMS/">
ftp://ftp.cdrom.com/pub/linux/sunsite/distributions/spiro/i386/SPIRO/RPMS/</A> .
If anybody at SPIRO-Linux reads this, please send the correct URL
to <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>. -Ed.]
</EM> </BLOCKQUOTE>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Xi Graphics Product Line for Linux
</FONT>
</H3>
<P> Denver - XI Graphics Inc.
has announced a new web-based product line of graphics hardware drivers for
Linux. In making the announcement, Xi Graphics' National Sales Manager, Lee
Roder, said the company would continue to offer its existing Accelerated-X
Display Server line of products for Linux and Unix operating systems.
<P> "Desktop Linux is coming fast, and we're going to be there," said
Roder. "We produce higher quality drivers more efficiently than anyone
else in the business. Linux gamers and developers alike can easily
download, demo and purchase our drivers from the Web site at
affordable pricess -- it's good for us and it's good for Linux."
<P> The 3D Linux drivers are OpenGL 1.1.1-compliant, support libGLU
and libGL, and are available for download from Xi Graphics' web site
(<A HREF="http://www.xig.com">www.xig.com</A>) starting at $29 each. A limited
number of drivers are currently available, but more are being added weekly.
<P> Roder said each driver is priced according to a numbe of factors
such as hardware capabilities of the card, the degree of difficulty
developing and testing the driver and the likely volume of sales
of the driver.
<P> "Our new line of graphics support for Linux in desktop installations
is a result of requests from our customers," said Roder. "It gives them
the ability to very quickly get superb graphics support for their
specific hardware at a price that is quite economical."
<P> The new 3D Linux driver products are sold only over the Web and are
available as freely downloadable, limited-run-time demos. The demos
can be run on the customers' hardware to confirm compatibility and
performance before purchasing. Customers use a registration system
to purchase a key through Xi Graphics' web site. The key is e-mailed
back to the customer, unlocks the demo product and converts it into
standard product.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Other software
</FONT>
</H3>
<P> <A HREF="http://www.magicsoftware.com">Magic eDeveloper for Linux</A> is a
toolkit to build e-commerce and enterprise software directly on Linux.
<P> <A HREF="http://www.accessnt.com.au/~jsno/clobberd">clobberd 4.16</A> is a
daemon that monitors user activity and network interface activity. Available
at Linux FTP sites.
<P> <A HREF="http://www.etnus.com">TotalView 4.0</A> is the first parallel
debugger to support multiple development platforms for both traditional UNIX
and Linux.
<P> <A HREF="http://babylon.spellcast.com/">Babylon remote-access software</A>
from Spellcaster is now open-source.
<P> <A HREF="http://www.cycladescard.com">Cyclades</A> has released version
6.5.5 of the Cyclom-Y and Cyclades-Z Linux driver. (In the Tech support
section of the web site.)
<P> <A HREF="http://www.csvtech.com">EZHTML</A> makes the arcane art of HTML
accessible to everyone with an easy to use interface and well thought out
design. Tags are arranged in categories and are grouped with other related
tags. The built in search function makes it easy to find that one tag you are
looking for and save time. A free 14-day trial is available.
<P> <A HREF="http://www.littleigloo.org">Igloo FTP</A> has released a beta
version of their commercial FTP client, IglooFTP-PRO Beta 1.0.0pre1. Binaries
for this, and the source for an earlier version (IglooFTP 0.6), are on the web
site.
<P> The <A HREF="http://www.wolfram.com/applications/parallel">
Parallel Computing Toolkit</A> from Wolfram Research, Inc.
is a Mathematica application
package that brings parallel computation to anyone having
access to more than one computer on a network or to a
multiprocessor computer.
<P> Easy Software Products announces
<UL>
<LI> <A HREF="http://www.easysw.com/printpro">ESP Print Pro</A>, a
printing package for Linux with over 1600 printer drivers (free 45-day trial)
<LI> <A HREF="http://www.easysw.com/cups">CUPS</A>, the Common UNIX
Printing System (GPL, the basis for ESP Print Pro, without printer drivers).
</UL>
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<H4>"The 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>
LinuxCare,
<A HREF="http://www.linuxcare.com/">http://www.linuxcare.com/</A>
</H4>
</center>
<p><hr><p>
<H3>Contents:</H3>
<p><a href="#tag/greeting"
><img src="../gx/dennis/bbub.gif" alt="(!)" border="0"
align="middle"><strong>Greetings From Jim Dennis</strong></A></p>
<DL>
<!-- index_text begins -->
<dt><A HREF="#tag/1"
><img src="../gx/dennis/bbub.gif" height="28" width="50"
alt="(!)" border="0"
></a>linux ether16 support --or--
<dd><A HREF="#tag/1"
><strong>isapnptools</strong></a>
<dt><A HREF="#tag/2"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Need Help!!! --or--
<dd><A HREF="#tag/2"
><strong>Removing an OS</strong></a>
<dt><A HREF="#tag/3"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>uninstallshield --or--
<dd><A HREF="#tag/3"
><strong>InstallShield: Netscape 4.7</strong></a>
<dt><A HREF="#tag/4"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>redhat linux problem --or--
<dd><A HREF="#tag/4"
><strong>Console Goes Comatose After a Few Days</strong></a>
<dt><A HREF="#tag/5"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Routing a Linux Subnet --or--
<dd><A HREF="#tag/5"
><strong>Subnetting</strong></a>
<dt><A HREF="#tag/6"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>soho linux network --or--
<dd><A HREF="#tag/6"
><strong>Two Node Network: How</strong></a>
<dt><A HREF="#tag/7"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Problem --or--
<dd><A HREF="#tag/7"
><strong>Informix/SCO SE version 5.0 under iBCS</strong></a>
<dt><A HREF="#tag/8"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Hub restriction --or--
<dd><A HREF="#tag/8"
><strong>Do Your Homework: IEEE 802.3</strong></a>
<dt><A HREF="#tag/9"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>question about ProxyArp --or--
<dd><A HREF="#tag/9"
><strong>ProxyARP</strong></a>
<dt><A HREF="#tag/10"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Is there any.. --or--
<dd><A HREF="#tag/10"
><strong>Syslog Events from a Particular Host to a Particular File</strong></a>
<dt><A HREF="#tag/11"
><img src="../gx/dennis/bbub.gif" height="28" width="50"
alt="(!)" border="0"
><strong>Id "x" respawning too fast: Murdered Mysteriously</strong></a>
<dt><A HREF="#tag/12"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>windows 2000 --or--
<dd><A HREF="#tag/12"
><strong>First Win/2000 Question!</strong></a>
<dt><A HREF="#tag/13"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>drive space --or--
<dd><A HREF="#tag/13"
><strong>What to Delete from Drive C</strong></a>
<dt><A HREF="#tag/14"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Linux as a SOCKS client</strong></a>
<dt><A HREF="#tag/15"
><img src="../gx/dennis/bbub.gif" height="28" width="50"
alt="(!)" border="0"
></a>Lost Password --or--
<dd><A HREF="#tag/15"
><strong>Simpler Way to Recover From a Lost Password</strong></a>
<dt><A HREF="#tag/16"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Re: "harden" Linux DNS server --or--
<dd><A HREF="#tag/16"
><strong>"Hardening" a Red Hat (into a Helmet?)</strong></a>
<dt><A HREF="#tag/17"
><img src="../gx/dennis/bbub.gif" height="28" width="50"
alt="(!)" border="0"
></a>Kermit --or--
<dd><A HREF="#tag/17"
><strong>A bit more about C-Kermit</strong></a>
from its author.
<dt><A HREF="#tag/18"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>problem with bash/vi editing mode --or--
<dd><A HREF="#tag/18"
><strong>ksh Keybindings (vi Keys)</strong></a>
<dt><A HREF="#tag/19"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Weird Mount Permissions &amp; Where's a Word Processor</strong></a>
<dt><A HREF="#tag/20"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>.max files --or--
<dd><A HREF="#tag/20"
><strong>.max extension on an e-mail attachment</strong></a>
<dt><A HREF="#tag/21"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>lots of linux questions --or--
<dd><A HREF="#tag/21"
><strong>Accupuncturist Filmaker Hates Fascist MS Products</strong></a>
<dt><A HREF="#tag/22"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>IMAP/POP daemon on RH 6.0 and 6.1 --or--
<dd><A HREF="#tag/22"
><strong>Installing a POP Daemon on Red Hat Linux</strong></a>
<!-- index_text ends -->
</DL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/greeting"><HR WIDTH="75%" ALIGN="center"></A>
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Greetings from Jim Dennis</H3>
<!-- begin greeting -->
<p>Many people have been known to quote Blaise Pascal:<p>
<blockquote>
"I have made this letter longer than usual because I
lack the time to make it shorter."
</blockquote>
<p>In this month's Answer Guy, the Answer Guy himself learns some solid
lessons in recovery planning. In the case of his editor, to hit the Save
key combination every once in a while. You never know when you're
accidentally going to hit the key assigned to "quit this session without
prompting". Thus </p>
<blockquote>
"I have made this blurb shorter than usual because I
lack the time do it over."
</blockquote>
<p>Sorry folks! And I wouldn't be the Answer Guy if I didn't have the answer
for this. Emacs users, make sure to turn auto-save-mode on for your important
buffers <em>before</em> you get rolling, amd set your auto-save-interval to
something other than NIL. Screen users, make sure to update -- the newer
versions now ask before completely shutting down screen itself. And try not
to use a keyboard with \ too close to ] so you're less likely to backwack
that fascinating article you were writing.</p>
<!-- end greeting -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/1"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>isapnptools</H3>
<p><strong>From David B. Sarraf on Sun, 30 Jan 2000
</strong></p>
<!-- ::
isapnptools
~~~~~~~~~~~
:: -->
<P><STRONG>
James:
</STRONG></P>
<P><STRONG><BlockQuote>
I recently read this question regarding the ethernet card. You mentioned
that the card may be configured to a base address which autoprobe was not
looking at. I agree that this may be a problem. You advised the reader to
use boot-time parameters. That is a workable approach however I try to
avoid it whenever possible.
</BlockQuote></STRONG></P>
<P><STRONG>
I have had very good results using isapnptools, which came with my RedHat
5.1 distro. I used it to configure a modem card and a network card.
Between the well engineered software and the excellent documentation the
process was quite painless and eminently successful. Now I have cards that
work and which run at well-defined and well-known addresses and IRQs and I
don't need the boot parameters.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
That's probably very good advice.
</BLOCKQUOTE>
<BLOCKQUOTE>
I've never used isapnptools and I usually forget that they
even exist. Could you give an example of HOW you use them?
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I recently ran into a similar situation with a 3-com card. It had been
taken out of a PNP system and put into a stock ISA system. I knew it to be
a PNP card but I did not realize that it had been set to use the same IRQ
as the floppy drive controller and isapnptools would not detect this card.
This caused much head scratching until I put it back in a PNP system and
ran 3Com's "disable PNP mode" software. Still, I was successfull at using
the card without boot parameters.
</STRONG></P>
<P><STRONG>
None of this is meant as a criticism of your initial advice. It is just my
experience with an alternative method.
</STRONG></P>
<P><STRONG>
Dave Sarraf
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Actually I think I could use more criticism.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/2"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 2 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Removing an OS</H3>
<p><strong>From Paully0529 on Sun, 30 Jan 2000
</strong></p>
<!-- ::
Removing an OS
~~~~~~~~~~~~~~
:: -->
<P><STRONG>
I recently received a laptop which has <A HREF="http://www.redhat.com/">Red Hat</A> 5.1 installed on it. I would
like to remove this OS but have no idea what the login password is.
Is there any way around this?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
You don't need a user/account password to remove any
operating system. So long as you can control the boot
sequence of the system (i.e. boot from floppy or CD)
then you can boot up into something that will wipe out
all that nasty stuff that you don't want on your new
laptop's hard disk.
</BLOCKQUOTE>
<BLOCKQUOTE>
There are also ways for you do force a password change
on a Linux box. I've described it several times
--- but the basic sequence is something like this:
</BLOCKQUOTE>
<BLOCKQUOTE>
At the LILO: prompt type:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><code>
linux init=/bin/sh rw
</code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... this will boot the system using the "linux" LILO
stanza, and force the kernel to bypass the normal
bootup process (by loading a command shell instead of
the usual init process). It will also force the kernel
to mount it's "root" filesystem in "read/write" mode.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can then type:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><code>
mount /usr
</code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... which might not be necessary, and thus might
give a (harmless) error message.
</BLOCKQUOTE>
<BLOCKQUOTE>
Then type:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><code>
/usr/bin/passwd
</code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... and provide a new password (which you'll need to
repeat twice).
</BLOCKQUOTE>
<BLOCKQUOTE>
Next you can type the following commands (ignoring
some possible, harmless warnings and errors):
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><pre>
sync
umount /usr
mount -o remount,ro /
exec /sbin/init 6
</pre></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Of course those directions are for people who want
to take over a Linux system and preserve the
programs, configuration and data on it. In your case
you could do something more like the following at the
LILO prompt:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><code>
linux init=/bin/sh rw
</code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... and when you get a shell prompt just use:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><code>
dd if=/dev/zero of=/dev/hda
</code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... (assuming that Linux is on your primary IDE drive).
</BLOCKQUOTE>
<BLOCKQUOTE>
NOTE: This last command example will WIPE OUT EVERYTHING
ON YOUR PRIMARY IDE DRIVE! It will scribble strings
of binary zeros (ASCII NUL characters) all over the
drive wiping out everything. Don't use this unless that's
really what you want to do!
</BLOCKQUOTE>
<BLOCKQUOTE>
(Note: one some systems you might have to use some
other "stanza" name other than "linux" --- hit a
[Tab] key at the LILO prompt to see a list of options).
</BLOCKQUOTE>
<BLOCKQUOTE>
SysAdmins Note: If you want to prevent users from
doing these sorts of things to their desktop systems
(as a matter of policy for example) then you can set
up a LILO password and mark the system as "restricted"
in the <TT>/etc/lilo.conf</TT> file.
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course this by itself will not be much "protection" --
you'll also have to mark the file as not readable by users
other than root, restrict root access to the system, change
the CMOS boot sequence to prevent booting from floppies, CD
discs and other removable media, and set a CMOS/NVRAM
password to prevent the users from changing the boot
sequences back. On top of all that you'll have to pick a
brand of PC/BIOS that doesn't have any known "backdoor" CMOS
passwords and you'll have to lock the cases so that the
users can't open them up to short the battery to clock chip
leads, or otherwise reset the CMOS registers to their
factory state. Those are all hardware security limitations
of PCs, Macintosh and many of the other workstations. They
are not OS specific issues.
</BLOCKQUOTE>
<BLOCKQUOTE>
With most operating systems, you can boot up off their
installation media and readily wipe out whatever happens
to be sitting on the system by simply answer some silly
install program warning. (Early versions of MS-DOS were
pretty stupid in that they would refuse to remove or
overwrite "foreign" or "unknown" partitions in FDISK
regardless of a users wishes. I don't know if they
ever fixed that. I haven't installed any MS operating
system on anything for several years).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/3"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 3 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>InstallShield: Netscape 4.7</H3>
<p><strong>From Dr.S.Vatcha on Sun, 30 Jan 2000
</strong></p>
<!-- ::
InstallShield: Netscape 4.7
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Dear answerguy
</STRONG></P>
<P><STRONG>
Everytime I attempt to set up netscape4.7 version a browser error
432 comes up saying close uninstallshield and resatrt the setup.
i have not to my knowledge opened uninstallshield or that it
exists on any files on my pc.
</STRONG></P>
<P><STRONG>
help
shahrookh.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The problem here is probably that you are running
MS-Windows or some derivative thereof. Last I heard
InstallShield is a program for installing software
on MS Windows systems. I've never heard of a version
for Linux.
</BLOCKQUOTE>
<BLOCKQUOTE>
I presume also that your copy of Netscape (Navigator,
Communicator, whatever you've got) is trying to
launch "UninstallShield" to remove the older version
of the NS software that you are trying to upgrade from.
There's probably some sort of temp or "lock" file that is
confusing their uninstaller.
</BLOCKQUOTE>
<BLOCKQUOTE>
Pretty pathetic programming, really. That sort of thing
is one of the reasons I stopped using and supporting
MS Windows so many years ago.
</BLOCKQUOTE>
<BLOCKQUOTE>
(BTW: I'm the Linux Gazette Answer Guy).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/4"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 4 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Console Goes Comatose After a Few Days</H3>
<p><strong>From kodancha on Sun, 30 Jan 2000
</strong></p>
<!-- ::
Console Goes Comatose After a Few Days
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
sir
</STRONG></P>
<P><STRONG>
i have installed redhat linux 6.1 on piii hardware with fire
walls.IT works fine.But every 3-4 days i have to reboot the system
because of the following.
</STRONG></P>
<P><STRONG>
Sytems will not take any command.When i type any thing cursor
moves but no char appears on the screen.Even cntrl-alt-del is also
not working.But all oher clients connected this server has got no
problem.I tryied stty sane ,cntrl -c etc but it is not
respondig.Can u help me
</STRONG></P>
<P><STRONG>
gjkodancha
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Well, you description doesn't give me much to go on.
</BLOCKQUOTE>
<BLOCKQUOTE>
Is this in X? Are you using a kernel with frame buffer
(graphics driven text mode) console support?
</BLOCKQUOTE>
<BLOCKQUOTE>
Try building a new kernel. Leave the system in
text mode and disable any "VESA VGA Graphics" support
in the kernel (in menuconfig under the "Console Drivers"
menu). Be sure to enable the "Magic SysRq Key" under
"Kernel Hacking." Read the docs about this "Magic SysRq"
in the <TT>/usr/src/linux/Documentation/sysrq.txt</TT> file.
</BLOCKQUOTE>
<BLOCKQUOTE>
Now, after you've built and installed the new kernel,
when you reboot with it, use runlevel 3 (<A HREF="http://www.redhat.com/">Red Hat</A>:
text mode multi-user mode) rather than runlevel 5
(multi-user with GUI/xdm login mode).
</BLOCKQUOTE>
<BLOCKQUOTE>
If the console seems to go comatose again, try
using some of the Magic SysRq keys, particularly
the p (processor status), t (task list) and m (memory
status) diagnostics, and the k and r keys to kill
everything on a given console and to "reset" the
keyboard driver.
</BLOCKQUOTE>
<BLOCKQUOTE>
A couple of other things you can do:
</BLOCKQUOTE>
<BLOCKQUOTE>
Edit <TT>/etc/syslog.conf</TT> and add a line like:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
*.* <TT>/dev/tty12</TT>
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... (and restart your syslog daemon). This will
copy all syslog messages to your twelfth virtual
console. When you leave your system unattended,
switch to that VC. If it appears comatose when
you get back, look at the messages at the end.
</BLOCKQUOTE>
<BLOCKQUOTE>
When you restart your system, look at the tail
of the <TT>/var/log/messages</TT> file. That's where most
system warnings and errors are logged.
</BLOCKQUOTE>
<BLOCKQUOTE>
Also you can try logging in via ssh (or telnet,
rlogin or some other insecure protocol) and using
the commands: chvt 1 or chvt 2
... to force the console to switch to another VC.
See if that works.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can also run commands like
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
stty sane &lt; <TT>/dev/tty1</TT>
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
And:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
setterm -reset &gt; <TT>/dev/tty1</TT>
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
(note: the redirection operator on my stty
command is NOT backwards. stty performs<TT> ioctl()</TT>
calls on it's input device while setterm
words on it's output file descriptor. It looks
weird but stty was written a long time ago and
it actually made sense back then).
</BLOCKQUOTE>
<BLOCKQUOTE>
I've had cases where I could revive a console (from a
crashed X session or a wacked out SVGAlib program failure)
by running startx (from a remote session, even from a serial
login. That works sometimes (since the X server has to
reset quite a bit of the video and keyboard state as it
starts).
</BLOCKQUOTE>
<BLOCKQUOTE>
These kinds of console oddities are pretty rare.
It's usually the result of some buggy program that's
running with root privileges or some buggy driver
(which naturally is running with system/kernel
level access to the hardware). It could be a bit
of flaky hardware, too. It would be good to
figure out what is doing this. However, if this
is set up as a server, it may be that you don't
need the console all that much. You can treat it
like a "headless" system if you need to.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you do decide to switch out hardware, try a
cheap replacement video card. Under Linux, in
server applications there is no point to using a
high end video card. Meanwhile the high end video
cards are most likely to have the cutting edge
technology and the highest chance of conflict with
other system components. Also make sure that any
"Plug and Pray" (PNP) settings are disabled in your
ISA peripherals and BIOS/CMOS.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you think it's software then try attaching
strace to various processes that are bound to
your console. See if there's some oddity to
the system calls they're making before the lockup.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Read the strace man page to understand a bit more
about this. Don't even bother if you don't know
the difference between a system call and a library
function. There's a pile of learning curve in
that direction).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/5"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 5 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Subnetting</H3>
<p><strong>From Berlin Tokugawa on Sun, 30 Jan 2000
</strong></p>
<!-- ::
Subnetting
~~~~~~~~~~
:: -->
<P><STRONG>
I have a LAN in our office connected to the Internet using a
subnet (240) for 16 IP numbers. Our office actually use only 4
computers to assign IP numbers from the said IP pool. One of
those computer in our office LAN is a Linux box configured as a
PPP server so I could dial-in from home (and get a static IP
number from the office IP pool assigned to the ppp interface) and
connect my small home LAN using a subnet of 248. I used eight(8)
IP numbers at home (using those unused, contiguous IP numbers from
the office IP pool) but I'm having problems.
</STRONG></P>
<P><STRONG>
The other computers at home (not the dial-out computer) can not
ping the dial-out computer when I'm PPP-connected to the office
LAN. Unconnected via PPP to the office LAN, all my home computers
can ping each other. All the other computers at home have the
home dial-out computer as their gateway to the outside world,
while the office computers have their gateway set to our office
router connected via leased-line to an ISP. I am wondering if the
cause of the problem is the re-use of the IP numbers at home that
are already subnetted in the office --regardless of their
assignment or non-assignment to working computers.
</STRONG></P>
<P><STRONG>
BTW, I do not want to use private IP addresses, IP aliasing,
firewalling, etc., as there is a need for my home computers at
home to be referenced by the outside world via valid IP numbers
directly. Any thoughts on this problem is greatly
appreciated. Thanks.
</STRONG></P>
<P><STRONG>
Berlin Tokugawa
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
You should really draw an ASCII diagram of
your network and include the IP addresses (even
a fake set of <EM>consistent</EM> IP addresses) when you
ask a question like this.
</BLOCKQUOTE>
<blockquote><pre> +-----------------------+
| The Internet |
+-------+---------------+
| (A)
+---+----------+
| Your Office +-----------+
+--------------+ (B) | +-----------+
+--+ Home |
(C) +-----------+
</pre></blockquote>
<BLOCKQUOTE>
The routers here are:
</BLOCKQUOTE>
<BLOCKQUOTE>
A you office's end of your link from your ISP,
<br>B your offices end of the link between your
office and your home,
<br>C your home's end of the link to your office
</BLOCKQUOTE>
<BLOCKQUOTE>
So there are five routing tables you care about.
</BLOCKQUOTE>
<BLOCKQUOTE>
Let's assume that they've given you 123.45.67.176
through 123.45.67.192 (a.k.a. the 123.45.67.176/240
network).
</BLOCKQUOTE>
<BLOCKQUOTE>
Let's presume that you and your ISP have followed common
conventions and assigned the first usable IP address
in your block to your router (A). That means that
(A) is 123.45.67.177. Therefore it would make sense
for the office to use the lower subnet (from 177 to 182)
Thus that subnet will have a netmask of 255.255.255.248
and a broadcast address of 123.45.67.183 (add 7 to
176) Remember, you only get six usable addresses out
of that mask since one is reserved for the network
(the "zero offset from your base) and the last address
(your base net address with a trailing sequence of
binary 1's).
</BLOCKQUOTE>
<BLOCKQUOTE>
So you pick an IP address for (B): lets call that
123.45.67.182 (the last usable address in your
lower subnet). You'll also need an address for (C)
123.45.67.185 (the first usable address in the
upper subnet). Actually all of these routers
will have multiple interfaces. The PPP (exterior)
interface to your ISP at (A) will usually have one
of the ISP's addresses. You can actually use any
RFC1918 address for your PPP link from (B) to (C)
since only B and C will use those addresses in
their routing tables. Let's call those PPP
endpoints 10.1.1.1 and 10.1.1.2
</BLOCKQUOTE>
<BLOCKQUOTE>
(I'm not sure but I think there's a way around
that in some TCP stacks but this should work).
</BLOCKQUOTE>
<BLOCKQUOTE>
Now the home system have to have a default route that
points to (C). (C) has a default route that points
to (B), and a network route that point to eth0
(the home network). That network route corresponds
to our upper subnet so it looks like:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
route add -net 123.45.67.84 netmask 255.255.255.248 eth0
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
(A) and (B) also each a route that look similar. In
(B)'s case it looks like:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
route add -net 123.45.67.84 netmask 255.255.255.248 gw 10.1.1.2
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... (B) is listing (C) as the gateway to the upper
subnet. (C) lists ppp0 as its default route.
</BLOCKQUOTE>
<BLOCKQUOTE>
Finally there's (A) which lists (B) as its gateway
to the upper subnet and the ISPs address as its
default route.
</BLOCKQUOTE>
<BLOCKQUOTE>
The only tricky part is that all of the machines on
the office subnet should also know about the
subnet route to (B).
</BLOCKQUOTE>
<BLOCKQUOTE>
This is simplified slightly if (B) is actually
not a separate router, but merely an extra interface
on (A).
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course there are many ways to do all of this.
When asking questions about routing --- draw a picture
and then go to each network and router (connecting point)
and ask what the routing tables must look like
from that location!
</BLOCKQUOTE>
<!-- sig -->
<!-- end 5 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/6"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Two Node Network: How</H3>
<p><strong>From Rich on Sun, 30 Jan 2000
</strong></p>
<!-- ::
Two Node Network: How
~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Answer guy
</STRONG></P>
<P><STRONG>
I have looked everywhere for some basic instructions on setting up a two
system soho network and can't seem to find any information.
</STRONG></P>
<P><STRONG>
I am currently running linux-mandrake 7.0. Basically all I want to do
is have the two machines talk to one another in a network
configuration. Any help would be greatly appreciated.
</STRONG></P>
<P><STRONG>
Thanks
Rich
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Let's assume that you have ethernet cards
in your two machines. You can then hook them up
with a "crossover" cable or you can get a hub and
plug both of your systems into that. Most ethernet
cards and hubs have little lights on them. Some
combination of these lights being on should reassure
you that you've successfully connected to two systems.
</BLOCKQUOTE>
<BLOCKQUOTE>
That takes care of the physical layer. If you don't
get that far then you'll need some phone or in person
support.
</BLOCKQUOTE>
<BLOCKQUOTE>
Next you have to configure the two systems to talk
to one another.
</BLOCKQUOTE>
<BLOCKQUOTE>
I'm going to guess that they are both Linux boxes.
I'm also going to guess that you don't have a block
of "real" IP addresses assigned to you. Therefore
you're going to use a couple of addresses from one
of the special "reserved blocks" that are set aside
for this situation. The reserved blocks are defined
in RFC 1918 (an Internet standards document). They
are:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><code>
192.168.*.*
<br>10.*.*.*</code>
<br>and: <tt>172.16.*.*</tt> through <tt>172.31.*.*</tt>
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... that's a lot of addresses to choose from. I'm
going to choose 192.168.130.17 and 192.168.130.18 for
deeply mystical reasons. (192.168 are the "class C"
address blocks, which are normally used by small to
medium offices, and this is 1/30/2000, so I picked 130
for the next digit. The 17 and 18 are chosen because
it is common convention to reserve the bottom and top
16 or so IP addresses in any class C block for
routers, servers, etc).
</BLOCKQUOTE>
<BLOCKQUOTE>
So on one one of these twins (let's call it pollux)
we'll log in as root and type the command:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
ifconfig eth0 192.168.130.17
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... and, on the other (which we'll call it castor)
we'd issue the command:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
ifconfig eth0 192.168.130.18
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
For a temporary connection that's all we have to do.
If we these two systems to be persistently configured for
this we edit some file under <TT>/etc/sysconfig/network-scripts</TT>
... or we use one of Mandrake's little configuration
"helper" programs.
</BLOCKQUOTE>
<BLOCKQUOTE>
I haven't been using Mandrake (or recent versions of
<A HREF="http://www.redhat.com/">Red Hat</A>) and
I've never been a fan of GUI configuration
tools. So I can't help you with the latter of these.
If you are familar with basic text editing then look at
the <TT>/etc/sysconfig/network-scripts/ifcfg-eth0</TT> script
and see if you can guess what needs to be put in there.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can use a netmask of 255.255.255.0 and a broadcast
address of 192.168.130.255 on both of the twins. In
fact there are many values you could use for these
--- so long as they were consistent with one another and
some other arcane rules that I won't cover this morning.
</BLOCKQUOTE>
<BLOCKQUOTE>
I't also possible for you to connect these to system
over a null modem or a "Laplink" (parallel link) cable.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you were using a serial/null modem cable you'd
run the PPP program (direct connection). I definitely
don't have time to explain configuring PPP right now;
that's the most complicated option. If you connected
the two boxes with a parallel link cable you'd use
commands roughly like this:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
modprobe plip
<Br>ifconfig plip1 192.168.130.17
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
(on pollux) and
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
modprobe plip
<br>ifconfig plip1 192.168.130.18
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... for castor.
</BLOCKQUOTE>
<BLOCKQUOTE>
Notice that we can use the same IP addresses for
our two boxes regardless of what sort of physical
connection we use between them. That's the whole
point of TCP/IP networking. That was the breakthrough
that it made before any of the other networking
protocols did.
</BLOCKQUOTE>
<BLOCKQUOTE>
Once you've done this you should be able to
use any standard networking service between your
twins.
</BLOCKQUOTE>
<BLOCKQUOTE>
I'm pretty sure this is covered in the "Linux Installation
and Getting Started Guide" (Linux Documentation Project)
<A HREF="http://www.linuxdoc.org"
>http://www.linuxdoc.org</A>.
</BLOCKQUOTE>
<BLOCKQUOTE>
Hope that helps.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 6 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/7"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 7 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Informix/SCO SE version 5.0 under iBCS</H3>
<p><strong>From Alvaro Gonzalez on Sun, 30 Jan 2000
</strong></p>
<!-- ::
Informix/SCO SE version 5.0 under iBCS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi.
</STRONG></P>
<P><STRONG>
I need your help. I have <A HREF="http://www.caldera.com/">Caldera</A>
OpenLinux version 2.2 and i have
problems using Informix-SE version 5.0 for SCO UNIX.
</STRONG></P>
<P><STRONG>
This software run with iBCS 2.1-1 without problems, but i have a
limit in the size of the database files, 1 Giga.
</STRONG></P>
<P><STRONG>
I think that limits is for the variable ULIMIT of SCO UNIX, set on
1 Giga for default, and if this is true I need to set iBCS with a
value greater than 1 Giga.
</STRONG></P>
<P><STRONG>
Thanks.
Alvaro
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I'll be the first to admit that I just don't know
as much as I want about the big SQL DBMS packages.
</BLOCKQUOTE>
<BLOCKQUOTE>
However the question that immediately comes to mind
is:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
Why don't you use the Linux version of
Informix?
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
<A HREF="http://www.informix.com/informix/products/linux/lx.html"
>http://www.informix.com/informix/products/linux/lx.html</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
I have an evaluation copy for IDS (Informix Dynamix Server)
version 7.30.UC7.
</BLOCKQUOTE>
<BLOCKQUOTE>
Is the problem here that upgrading to this will be
too expensive? Is it that there are enough upgrade issues
that your code and tables will take too much effort to
upgrade for operations under the new server?
</BLOCKQUOTE>
<BLOCKQUOTE>
Assuming that upgrading/migrating to the Linux version of
Informix is not an option doesn't Informix 5.0 allow you
to define database file "extents" (1Gb Linux/UNIX files
that their server internal manages as blocks of the large
tables. I was under the impression that all of the major
DBMS packages did this before the LFS (large file summit)
brought support for large files to most of the 32-bit
UNIX implementations. (Linux hasn't implemented LFS, though
there are exerimental patches floating about to do so).
</BLOCKQUOTE>
<BLOCKQUOTE>
There is a ulimit command (shell built-in) and there
are Linux facilities for managing the ulimit settings.
These vary from one distribution to another and based
on some of the packages you might have installed.
For example some use the <TT>/etc/login.defs</TT> (stock
Shadow suite) or the PAM pam_limits module or
<TT>/etc/lshell.conf</TT> (my
<A HREF="http://www.debian.org/">Debian</A> system). However the limit
you're bumping into might be with your iBCS support.
</BLOCKQUOTE>
<BLOCKQUOTE>
Current Linux ext2 filesystems have a 2Gb filesize limit
on 32-bit systems. This is likely to change in 2.4 or 2.6
(over the next year or so). However, that's not likely to
help you in the near term.
</BLOCKQUOTE>
<BLOCKQUOTE>
Personally I suggest that you look into the Linux native
Informix server, and into the table segmenting features
for that. If those don't to the trick, maybe you should
contact a DBMS specialist. (We have some people at
<A HREF="http://www.linuxcare.com/">Linuxcare</A>, where I work
for my day job; that know far more about these things than I do).
</BLOCKQUOTE>
<!-- sig -->
<em><p>[ Sadly, Informix' FAQ,
<a href="http://www.informix.com/informix/products/linux/lxfaq.html"
>http://www.informix.com/informix/products/linux/lxfaq.html</a>
notes they took out several cool features when releasing
their SE suite for Linux. Perhaps they were in a rush
to market, or perhaps they don't think we're really
"the enterprise" so we don't care, or maybe they're
merely uncertain (they say they're evaluating Linux needs).
Among the features taken out were raw device support (which
probably would allow use of larger spaces) and backups (!? WHat
good is a big server without backups? You mean I have to turn it OFF
to back it up? Ow!).</p>
<p>They also claim we're missing a feature I'm not entirely sure we
lack (asynchronous I/O -- a
<a href="http://www.google.com/linux?q=asynchron*&num=30&site=search&sa=Google+Search">Google! linux search on "asynchron*"</a> yields plenty of info, seeming
to implicate a particular flamer in the land of tainted benchmarks).
If you are among those who'd hope to use it for real work, make
sure to let them know your <strong>real</strong> needs at
<a href="mailto:linux@informix.com">linux@informix.com</a>).
<br>-- Heather ]</p></em>
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/8"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 8 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Do Your Homework: IEEE 802.3</H3>
<p><strong>From Farhad Saberi on Sun, 30 Jan 2000
</strong></p>
<!-- ::
Do Your Homework: IEEE 802.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hello,
my situation is this::
</STRONG></P>
<P><STRONG>
"provide a wiring diagram of an Ethernet (802.3) 100 Mbps network
for the following application:
</STRONG></P>
<P><STRONG><BlockQuote>
Company A has two offices located 1km apart. Each office has
about 40 computers. All the computers will need to be interconnected
on the same LAN. "
</BlockQuote></STRONG></P>
<P><STRONG>
Apparently, I have to use full-duplex fiber optics because of the
distance
of 1 km.
</STRONG></P>
<P><STRONG>
My problem is that I don't know how many hubs I can use. Is there a
restriction on the number of hubs, according to some standards ?
</STRONG></P>
<P><STRONG>
Thanks,
Farhad.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
This sounds suspiciously like a homework assignment
rather than a problem you are actually having around
the house, office or campus.
</BLOCKQUOTE>
<BLOCKQUOTE>
Personally I think you should refer to whatever
textbooks or lecture notes that you should have
seen before this question was posed to you.
</BLOCKQUOTE>
<BLOCKQUOTE>
The standards that govern ethernet are maintained by
the IEEE (Institute of Electrical and Electronics
Engineers). You're interested in the 802 series of
documents (Maybe you wondered what those funny numbers
in that question were about). Not that I'm actually
suggesting that you slog through an IEEE draft standards
document. I wouldn't do it for a question like this
(those are written for engineers who are designing the
hardware to implement the standards).
</BLOCKQUOTE>
<BLOCKQUOTE>
The info you're looking for should be in any good
networking text book.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 8 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/9"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 9 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>ProxyARP</H3>
<p><strong>From Jinquan Luo on Mon, 31 Jan 2000
</strong></p>
<!-- ::
ProxyARP
~~~~~~~~
:: -->
<P><STRONG>
Dear James,
</STRONG></P>
<P><STRONG>
I have been tring to set up Proxy ARP using the ARP commands in
Linux (<A HREF="http://www.redhat.com/">Red Hat</A> 6.1), but they do not seem to work for me. I
wonder if you would give me some advice as to how to fix the
problem. Here is my problem.
</STRONG></P>
<P><STRONG>
I have a CISCO router that connects to the internet. From that
ONE link comes into a hub. Two computers are connected to the
hub. One of the computer is our bastion host which is our web
server and mail host. The e-mail messages are immediately relayed
to our internal network through the other computer, which is the
firewall. So here is the setup:
</STRONG></P>
<P><STRONG>
The firewall has ip# xx.xx.xx.2, MAC 00:20:AF:A2:9E:58 The bastion
host has xx.xx.xx.3
</STRONG></P>
<P><STRONG>
The Firewall has a second NIC which is connected to the internal
network. So the e-mail also goes through it. Now The email
received by the bastion host is forwarded to xx.xx.xx.149, which
is a phony address. So I tried to arp .149 to the MAC of the
firewall like:
</STRONG></P>
<P><STRONG><BlockQuote><Code>
arp -i eth0 xx.xx.xx.149 00:20:AF:A2:9E:58 pub.
</Code></BlockQuote></STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
This command doesn't look quite right to me.
Try something a bit more like:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
arp -i eth0 -Ds ${NETWORK} eth1 netmask ${NETMASK} pub
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
This example is taken right out of the ProxyARP
mini-HOWTO (*)
</BLOCKQUOTE>
<BLOCKQUOTE><UL><LI>
(<A HREF="http://www.linuxdoc.org/HOWTO/mini/Proxy-ARP-Subnet.html"
>http://www.linuxdoc.org/HOWTO/mini/Proxy-ARP-Subnet.html</A>)
</UL></BLOCKQUOTE>
<BLOCKQUOTE>
(NOTE: the 2.2.x kernel doesn't allow the netmask
option. Apparently you must issue a separate command
for each of the intended IP addresses you which to
publish. I don't know what the state of this will
be for version 2.4. I've copied one of my more
expert associates; perhaps he'll jump in with more info).
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The command appears to work so the arp shows xx.xx.xx.149 <EM> </EM> MP
eth0 as advertised. The firewall is functiong and does translate
the .149 address into an internal number 192.168.1.52, which is
our internal mail server. the problem is that if I ping
xx.xx.xx.149 on the bastion host it show this:
</STRONG></P>
<pre><strong> $ ping mickey
\PING mickey.tbc.com (xx.xx.xx.149): 56 data bytes
--- mickey.xx.xx ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss.
</strong></pre>
<P><STRONG>
In another window I have
</STRONG></P>
<pre><strong> $ tcpdump -n arp
12:33:06.979376 arp who-has xx.xx.xx.149 tell xx.xx.xx.3
12:33:07.969471 arp who-has xx.xx.xx.149 tell xx.xx.xx.3
12:33:08.969470 arp who-has xx.xx.xx.149 tell xx.xx.xx.3
3 packets received by filter
0 packets dropped by kernel.
</strong></pre>
<P><STRONG>
This continues forever.
</STRONG></P>
<P><STRONG>
My Kernel routing table looks like this:
</STRONG></P>
<pre><strong>bash# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
xx.xx.xx.3 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
xx.xx.xx.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 xx.xx.xx.1 0.0.0.0 UG 0 0 0 eth0
</strong></pre>
<P><STRONG>
Apparently there is something missing in setup that ARP is not
providing the right link_addr.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The arp command doesn't affect your routing tables.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
When I added a static route such as:
</STRONG></P>
<pre><strong> route add -net xx.xx.xx.0 netmask 255.255.255.0 gw xx.xx.xx.2
</strong></pre>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
[where xx.xx.xx.2 is the firewall]
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
then the tcpdump shows this : 12:40:52.120385 arp who-has
xx.xx.xx.149 tell xx.xx.xx.2.
</STRONG></P>
<P><STRONG>
Apparently PROXY ARP is not working because it is not responding
to requests.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Try reading the ProxyARP mini-HOWTO and using a
command that's closer to their example.
</BLOCKQUOTE>
<BLOCKQUOTE>
Yes, you do need to make sure that the routing table
on the proxyarp host has entries for both subnets.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I am really not sure what is wrong with my set-up. If you can
spare a moment please take a look and give me some clues.
</STRONG></P>
<P><STRONG>
Thanks very much.
<br>Jinquan
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
If this doesn't help, draw up an ASCII art diagram
to help me figure it out. It takes along time to
guess what you mean based on this text. Be sure to
include the routing tables on each of the routers
(and proxyarp hosts) and a sample routing table from
representative non-router hosts on each subnet.
</BLOCKQUOTE>
<BLOCKQUOTE>
Usually the process of creating this diagram will
make your problem obvious.
</BLOCKQUOTE>
<EM><p>[
There's a reasonable example of such art in another message this
month, subject "Subnetting".
<br>-- Heather. ]</P></EM>
<!-- sig -->
<!-- end 9 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/10"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 10 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Syslog Events from a Particular Host to a Particular File</H3>
<p><strong>From Nathan Keeter on Sat, 19 Feb 2000
</strong></p>
<!-- ::
Syslog Events from a Particular Host to a Particular File
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Is there any way to specify that syslog log all events from a particular
host to a particular file?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
That depends.
</BLOCKQUOTE>
<BLOCKQUOTE>
First I'd have to understand what you mean by "events" (and
what you mean by "from" actually).
</BLOCKQUOTE>
<BLOCKQUOTE>
There are several sorts of "events" that can logged
"from" a host. For example the TCP Wrappers (tcpd) that is
pre-installed and configured for use by all major Linux
distributions will log each access attempt to each wrapper
protected service.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can figure out most of the "wrappered" services by
reading the <TT>/etc/inetd.conf</TT> and looking for references to
tcpd on each of the active lines therein. Also note that
the portmapper, rcp.mountd and some other "standalone"
services might also be "wrappered." They would generally
be compiled with and linked to "libwrap" (the TCP Wrappers
libraries).
</BLOCKQUOTE>
<BLOCKQUOTE>
(Anyone interested in this should read the <tt>hosts_allow(5)</tt>
and <tt>tcpd(8)</tt> man pages).
</BLOCKQUOTE>
<BLOCKQUOTE>
Another source of log messages "from" a host might be your
kernel packet filtering tables. There are options to
ipfwadm and ipchains to allow you to output/log messages
about packets that match certain packet filtering rules.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Anyone interested in more details on this should read the
<tt>ipfwadm(8)</tt> and/or <tt>ipchains(8)</tt> man pages, looking for the -o
and -l option respectively).
</BLOCKQUOTE>
<em><p>[ For those of you keeping up with the newer kernel
series, Rusty is trying to encourage people to use
and debug the new netfiler code. See the homepage
<a href="http://netfilter.kernelnotes.org/"
>http://netfilter.kernelnotes.org/</a>
for the latest scoreboard.
<br>-- Heather.]</p></em>
<BLOCKQUOTE>
Yet another source of syslog messages "from" a given
host might be that you've configured your syslogd to
accept remote (UDP) messages (by adding the appropriate
command option to its <tt>rc*</tt> script), and you've configured
the hosts in question to forward their messages to that
loghost (using appropriate "<tt>@</tt>" directives in the
<TT>/etc/syslog.conf</TT> files of the loghost clients).
</BLOCKQUOTE>
<BLOCKQUOTE>
(Anyone interested in these topics should read the
<tt>syslogd(8)</tt> and <tt>syslog.conf(5)</tt> man pages).
</BLOCKQUOTE>
<BLOCKQUOTE>
Obviously any other services my have their own logging
features in addition to these.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Thus you see what I mean by "it depends on what you
mean by 'from.'" Do you mean: "log messages from
localhost services that involve (stem from interactions
with) a host" or do you mean "log messages received by
my syslog daemon that were purportely issued from
the hosts in question").
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, it is not possible to configure the normal syslog
daemon to separate the messsages into separate files based
on the hosts from which they were received. The normal
configuration directives allow separation and filtering
based on the "facility" and "severity" (read that
syslog.conf man page for an explanation and lists of
these).
</BLOCKQUOTE>
<BLOCKQUOTE>
One way to do what you want would be to feed the messages
into a processing script (awk, or PERL). It's even possible
to do this "in real time" by configuring your loghost to
feed messages into one or more FIFOs (named pipes) and
running your processing script(s) to read from that
(or them). Again, the details should be in your
syslog.conf man page but the short form would be
something like this:
</BLOCKQUOTE>
<BLOCKQUOTE>
Add a line to <TT>/etc/syslog.conf</TT> like:
</BLOCKQUOTE>
<blockquote><pre>*.* |/dev/myloggingnode
</pre></blockquote>
<BLOCKQUOTE>
Create "myloggingnode" (conventionally in
the <TT>/dev/</TT> directory, though a <TT>/var/run</TT> or
other suitable place might be better). Use
a command like:
</BLOCKQUOTE>
<blockquote><pre> mkfifo /dev/myloggingnode
</pre></blockquote>
<BLOCKQUOTE>
or with:
</BLOCKQUOTE>
<blockquote><pre> mknod -m 0600 p /dev/myloggingnode
</pre></blockquote>
<BLOCKQUOTE>
(You'll need to make this writable by your syslog daemon,
of course).
</BLOCKQUOTE>
<BLOCKQUOTE>
Then you just run your PERL or awk script on that.
</BLOCKQUOTE>
<BLOCKQUOTE>
Another option is to check out one of the alternative
syslog systems. I've read a bit about syslog-ng (next
generation), and I think it can be configured for what
you want. Have a look at:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
<A HREF="http://www.balabit.hu/products/syslog-ng"
>http://www.balabit.hu/products/syslog-ng</A>
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... or at:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
<A HREF="http://www.freshmeat.net/appindex/1999/02/17/919286467.html"
>http://www.freshmeat.net/appindex/1999/02/17/919286467.html</A>
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
For more on that.
</BLOCKQUOTE>
<BLOCKQUOTE>
For those interested in other aspects of network system
logging and event monitoring across Linux and UNIX systems,
I suggest looking at the "secure syslog" (which uses
cryptographic techniques to authenticate that messages came
from the host that purports to have sent them, etc) and
I also recommend "<tt>colortail</tt>" as a great tool for those
who like monitor their systems with '<tt>tail -f</tt>' logging.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can find those at:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
<A HREF="http://www.core-sdi.com/english/slogging/ssyslog.html"
>http://www.core-sdi.com/english/slogging/ssyslog.html</A>
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
... and
<DD><A HREF="http://www.freshmeat.net/appindex/1999/02/20/919554599.html"
>http://www.freshmeat.net/appindex/1999/02/20/919554599.html</A>
</DL></BLOCKQUOTE>
<!-- sig -->
<!-- end 10 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/11"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 11 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Id "x" respawning too fast: Murdered Mysteriously</H3>
<h4 align="center">Helpful hints from days gone by.</h4>
<p><strong>From Timothy Roloff on Sun, 20 Feb 2000
</strong></p>
<P><STRONG>
I am responding to information posted about
<A HREF="http://www.gnome.org/">GNOME</A> on your website at
<A HREF="http://www.linuxgazette.com/issue46/tag/5.html"
>http://www.linuxgazette.com/issue46/tag/5.html</A> .
</STRONG></P>
<P><STRONG>
Someone was getting this message from Linux just before the log-in screen:
</STRONG></P>
<Pre><STRONG>According to <TT>/var/run/gdm.pid</TT>, gdm was already running (process id)
but seems to have been murdered mysteriously.
INIT: Id "x" respawning too fast: disabled for 5 minutes
</STRONG></Pre>
<P><STRONG>
I ran into the same problem myself in RedHat 6. I tried all your
suggestions, which I appreciate because they gave me somewhere
to start. But none of them worked. Finally, on a whim I ran df I found that
my drive was full. Freeing up some space solved the problem.
</STRONG></P>
<!-- sig -->
<!-- end 11 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/12"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 12 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>First Win/2000 Question!</H3>
<p><strong>From Dr. Firyal Bou-Rabee on Sun, 20 Feb 2000
</strong></p>
<!-- ::
First Win/2000 Question!
~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<BLOCKQUOTE>
[From Kuwait].
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
hi,
I have windows 2000 professional edt.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
My condolences.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Q1. How to get ride of pop window for asking about user name and password?
<br>Q2. How to reinstall windows 2000?
<br>thank you
<br>MAB
</STRONG></P>
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Try calling Microsoft or reading their manual. Didn't they
sell you some documentation and/or support with that?
If not, what exactly are you getting for your money?
</BLOCKQUOTE>
<!-- sig -->
<!-- end 12 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/13"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 13 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>What to Delete from Drive C</H3>
<p><strong>From steve eckard on Sun, 20 Feb 2000
</strong></p>
<!-- ::
What to Delete from Drive C
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
I would appreciate some advice on what to delete off my C drive. I seem
to be just about out of space and know that there's plenty of junk
there, but I'm not sure which is which. Are there any guidelines on what
is not needed. Thanks for your help.
My email address is <em>[snipped]</em>
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The fact that you refer to it as your "C" drive suggests
that it is running MS-DOS and probably MS-Windows ('95,
'98, or whatever).
</BLOCKQUOTE>
<BLOCKQUOTE>
Personally I'd start by removing that and putting in Linux.
However that's based purely on my personal bias. It's what
most people would expect from the "Linux Gazette Answer
Guy."
</BLOCKQUOTE>
<BLOCKQUOTE>
Presumably you'd like to be a bit more selective.
</BLOCKQUOTE>
<BLOCKQUOTE>
This is one of the long-standing problems with MS-Windows in
all its many flavors (3.0 through 3.11, WfW, '9x, and NT).
It is customary for software to scatter their files all over
your drive(s) and to embed drive/path information throughout
their configuration files (or "registry" trees).
</BLOCKQUOTE>
<BLOCKQUOTE>
That leads to two problems:
</BLOCKQUOTE>
<BLOCKQUOTE><ol>
<li> You don't know which files belong to which
packages.
<li> Adding a new drive and trying to move data
and programs into the additional free space
leads to "transplant shock" or requires removal
and re-installation/configuration of some
software.
</ol></BLOCKQUOTE>
<BLOCKQUOTE>
These lead to other problems. Proper function of your
system can be dependent on the order in which some of your
software was installed. Re-installation of some software
can result in the replacement of some DLLs with older
versions, which can cause other software to fail.
</BLOCKQUOTE>
<BLOCKQUOTE>
Basically the whole design is like a house of cards.
</BLOCKQUOTE>
<BLOCKQUOTE>
You could try some programs like "Uninstaller" or
"Cleansweeper." I don't remember the actual names of any of
these but you can find a list of them in the TUCOWS
(<A HREF="http://www.tucows.com"
>http://www.tucows.com</A>) "Win '95/98 Disk Cleaner
Utilities" category at: <A HREF="http://www.tucows.com/diskc95.html"
>http://www.tucows.com/diskc95.html</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course you should use these programs with caution and
only after you've backed up any data (particularly that
thesis that you might need to graduate). Of course my
favorite disk cleaner for MS-Windows partitions is the
Linux command:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
dd if=/dev/zero of=/dev/hda?
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... which will WIPE OUT WHOLE FILESYSTEMS without so much as
a "Are you sure?" warning prompt!
</BLOCKQUOTE>
<BLOCKQUOTE>
TUCOWS is self-proclaimed to be "The Ultimate Collection of
Windows Software." If you're going to continue using
MS-Windows you might was well have a decent selection of
shareware and freeware to make it more tolerable.
</BLOCKQUOTE>
<BLOCKQUOTE>
They also run Linuxberg (<A HREF="http://www.linuxberg.com"
>http://www.linuxberg.com</A>)
(or <A HREF="http://linux.tucows.com/index.html"
>http://linux.tucows.com/index.html</A>) which is a
good source of free and shareware Linux software.
They are arranged in categories and each is rated
with one to five "penguins" (stars).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 13 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/14"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 14 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Linux as a SOCKS client</H3>
<p><strong>From Phoenix_II on Sun, 20 Feb 2000
</strong></p>
<!-- ::
Linux as a SOCKS client
~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hey answerguy!!
</STRONG></P>
<P><STRONG>
I have a problem here. First of all, I am brand spanking new to
Linux. I have a Win98SE box and a Linux Mandrake 6.0 box. The
Win98 box has two network cards, one is connected to a LAN and the
other to the Linux box via crossover cable. I just installed
winproxy on the win box and am trying to get the Linux box to
"notice" the proxy so I can get HTTP, FTP and so forth, to the
internet through the win box. the winproxy has "CERN HTTP," FTP,
Telnet, "SOCKS 4 &amp; 5," DNS, DHCP, and Transparent Proxy
capabilities and all the instruction is for if I want to connect
another win box to it. Do you think you can help me out? Thanks,
Phoenix
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Well, that's a backwards way to do it. Usually
you'd use the Linux box as a proxy server and use
the MS-Windows boxes as the clients. That's because Linux
is much more stable, and secure, requires much less system
overhead, and has much more flexible IP filtering, routing
and masquerading control.
</BLOCKQUOTE>
<BLOCKQUOTE>
However, to make your Linux system into a SOCKS client
you can install the socks-client RPMs and modify
the <TT>/etc/libsocks5.conf.</TT> Once this is done all of the
normal TCP/IP client software on your system should
automatically use the proxy according to the configuration.
</BLOCKQUOTE>
<BLOCKQUOTE>
I did provide a more extensive discussion of this process
and the many other options available back in issue 36
<dl><dt>
"Linux as Router and Proxy Server: HOWTO?"
<dd><A HREF="http://www.linuxgazette.com/issue36/tag/21.html"
>http://www.linuxgazette.com/issue36/tag/21.html</A>
</dl></BLOCKQUOTE>
<BLOCKQUOTE>
That contains a sample <tt>libsocks5.conf</tt> file and
a bit of explanation on what the fields mean.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Some software, notably your Netscape Navigator/Communicator
will have to be separately configured to use the proxy.
Just hunt down the appropriate dialog boxes through the
program's UI --- Edit, Preferences for Netscape, etc).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 14 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/15"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 15 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Simpler Way to Recover From a Lost Password</H3>
<p><strong>From mjschack on Mon, 21 Feb 2000
</strong></p>
<!-- ::
Simpler Way to Recover From a Lost Password
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
In reference to your explanation of how to recover a lost password in the
current issue of the Linux Gazette, there is a simpler method.
</STRONG></P>
<P><STRONG>
For instance, if your kernel is labeled "linux," you could reboot (assuming
your currently using the system), type "<tt>linux 1</tt>" at the boot prompt,
boot to
single-user mode, type "<tt>passwd</tt>" when at the prompt and then enter a new
password. To get it all in one logical sequence, the next command could be
"<tt>telinit 3</tt>" or if XDM is running the show, "<tt>telinit 5</tt>."
"<tt>Telinit 6</tt>" in this
scenario wouldn't be necessary, since no volatile changes to the disk have
been made.
</STRONG></P>
<P><STRONG>
Just my two cents.
Sincerely,
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
That will work on some Linux distributions under some
configurations. However, most modern distributions use
an "sulogin" utility to password protect the single user
mode.
</BLOCKQUOTE>
<BLOCKQUOTE>
The steps I gave will handle most systems. Two cases
that are likely to interfere with the procedure I
outlined would be:
</BLOCKQUOTE>
<BLOCKQUOTE><ol>
<li> System has a LILO password enabled to prevent
passing over-ride parameters to the kernel
<br>AND
<br> System has CMOS password in place to prevent booting
from floppy and other removable media.
<br>
OR
<li> System has ppdd (privacy protected disk driver) installed
and the root filesystem is encrypted.
</ol></BLOCKQUOTE>
<BLOCKQUOTE>
There are ways to get around the second part of problem #1 ---
(which bypasses the LILO password). However, scenario #2
would be VERY difficult to get around.
</BLOCKQUOTE>
<BLOCKQUOTE>
The number of system that are actually secured to this
degree is way less than 1%. This is actually a bit of a
pity in some ways, since users don't REALLY know if their
computer workstation, left unattended in their open cubicle
is trustworthy when they sit down at it in the morning and
type their passwords into it. Ultimately this means that
most businesses have somewhat limited accountability ---
they can't definitely assert that a given user was the one
who used a particular account to violate some policy. This
is a limitation of PCs (and most other commonly available
workstations) that has nothing to do with the OS.
</BLOCKQUOTE>
<BLOCKQUOTE>
As I've described, it's possible to lock down a PC running
Linux so that it takes some pretty studly work to get into
them. However, it's pretty rare.
</BLOCKQUOTE>
<BLOCKQUOTE>
Incidentally, the MBR in recent
<A HREF="http://www.debian.org/">Debian</A> Potato releases may
be insecure from scenario #1. There was a feature added
that allows one to bypass CMOS boot restrictions and boot
from floppy by pressing the apropriate key sequence in
the MBR boot loader.
</BLOCKQUOTE>
<BLOCKQUOTE>
This was discussed a couple of weeks ago one the Bugtraq
security mailing list. It is possible to over-ride this
default using options to the Debian install-mbr command.
See its man page for details.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 15 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/16"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 16 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>"Hardening" a Red Hat (into a Helmet?)</H3>
<p><strong>From Judith M. Bride on Tue, 15 Feb 2000
</strong></p>
<p><strong>
Thank you for the response, Jim. Sorry to take so long to acknowledge!
Judith
</strong></p>
<P><STRONG><FONT COLOR="#000066"><EM>
Mr. Dennis,
Can you direct me to a source that will tell me how to secure our
RHLinux 6.0 DNS server. I am new to Linux. We only use it for DNS, so
we want to make sure we've closed all unnecessary services.
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
Thanks.....
Judith
</EM></FONT></STRONG></P>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
><dl><dt>
You could start with Bastille Linux at
<DD><A HREF="http://www.bastille-linux.org"
>http://www.bastille-linux.org</A>
</DL></BLOCKQUOTE>
<!-- sig -->
<em><p>[ Plain thanks don't always get published, but it's worth
noting that Bastille just released a new version of their
scripts a few days ago. To stay secure, it's worth keeping up.
The mailing lists at <a href="http://www.securityfocus.com/">SecurityFocus</a>
are worth watching, too.
<br>-- Heather]</p></em>
<!-- end 16 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/17"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 17 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>A bit more about C-Kermit</H3>
<h4 align="center">From its author.</h4>
<p><strong>From Frank da Cruz on Mon, 21 Feb 2000
</strong></p>
<!-- ::
A bit more about C-Kermit
~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
I notice you've got a lot about Kermit in your page:
</STRONG></P>
<P><STRONG><BlockQuote>
<A HREF="http://www.linuxprogramming.com/mirrors/LDP/LDP/LG/issue32/tag_modem.html"
>http://www.linuxprogramming.com/mirrors/LDP/LDP/LG/issue32/tag_modem.html</A>
</BlockQuote></STRONG></P>
<P><STRONG>
Including:
</STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM><BlockQuote>
Another simple testing trick is to use 'minicom' to dial the phone and
establish your connection (log in). Then use the "Quit without Resetting
the Line" option (using the [Ctrl]+[A], [Q] key sequence). This should
dump you out of minicom and back to a shell prompt without disconnecting
your modem. (It is then possible to invoke pppd on that line --- using an
alternative version of the ISP options file without any "connect"
directive).
</BlockQuote></EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
That trick doesn't work with kermit --- it won't exit without resetting
the communications line. From what Frank de la Cruz tells me you can't use
C-Kermit as a replacement for 'chat' because of this. Basically he says it
violates some programming standards to do this. (I still don't understand
that --- but it's not currently a priority to me. If someone understands
it and wants to explain --- write an article and send me a copy).
</EM></FONT></STRONG></P>
<P><STRONG>
The explanation is that when a UNIX process exits, all the files that it
opened (and in UNIX, devices count as files) are closed by UNIX itself.
There's nothing the application can do to prevent it. The only way Minicom
could keep the connection open when it exits is by configuring the modem to
ignore DTR, but you could do that with Kermit too.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
But the open device was passed to chat by the parent
process, pppd, which is still running. I guess that's what
chat (or the PPP daemon) is doing.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Anyway, C-Kermit 7.0, which was announced 1 Jan 2000:
</STRONG></P>
<P><STRONG><BlockQuote>
<A HREF="http://www.columbia.edu/kermit/ckermit.html"
>http://www.columbia.edu/kermit/ckermit.html</A>
</BlockQuote></STRONG></P>
<P><STRONG>
now incorporates a built-in method for PPP dialing, which you can read about
here:
</STRONG></P>
<P><STRONG><BlockQuote>
<A HREF="http://www.columbia.edu/kermit/case13.html"
>http://www.columbia.edu/kermit/case13.html</A>
</BlockQuote></STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I didn't see that, though I know that I did mention
something about the new Kerberos features in one of my
recent issues.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It doesn't require any kludges with the modem or cables.
</STRONG></P>
<P><STRONG>
- Frank
P.S. Also note spelling of name: "da Cruz".
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Sorry. I should have double checked that. I simply
mis-remembered it.
</BLOCKQUOTE>
<BLOCKQUOTE>
PS: I'm the same guy that wrote an article for
sysadmin Magazine about C-Kermit as a replacement for
telnet, rlogin et al, back in about '97
</BLOCKQUOTE>
<BLOCKQUOTE>
You and I corresponded several times back then.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 17 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/18"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 18 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>ksh Keybindings (vi Keys)</H3>
<p><strong>From Robert Lynch on Sun, 20 Feb 2000
</strong></p>
<!-- ::
ksh Keybindings (vi Keys)
~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi-
</STRONG></P>
<P><STRONG>
My wife is an SCO sys admin whose business bought her a Dell
pre-configured RH 6.0 box for home use. She's used to ksh on SCO, with
default vi setting. She finds this broken with bash. I have tried
to fix it, including installing pdksh, but no joy.
</STRONG></P>
<P><STRONG>
Say she types:
</STRONG></P>
<Pre><STRONG>$ ls
$ who
</STRONG></Pre>
<P><STRONG>
then hits ESC + up arrow. Instead of moving through the command
history, a "[A" character appears. I tried re-mapping the arrow keys
but nada.
</STRONG></P>
<P><STRONG>
Please NOTE: I've been working on this for a while, and have seen
several postings, to the effect "just set -o vi". Ain't this!
</STRONG></P>
<P><STRONG>
TIA. Bob L.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
<tt>set -o vi</tt> under bash works fine for me. I've used it
occasionally and I've had students use it for years.
</BLOCKQUOTE>
<BLOCKQUOTE>
However, vi normally uses the letters h,j,k, and l for its
cursor controls. The [Up Arrow] and other keys are not
traditional vi key bindings (though most modern versions of
vi will also accept them if your terminal is properly
configured using the appropriate <tt>TERM</tt> variable in
association with a decent terminfo or termcap entry).
</BLOCKQUOTE>
<BLOCKQUOTE>
Can you run '<tt>vi</tt>' (the editor) and/or emacs or xemacs from
this command prompt? Is it in an xterm or from a text
console? Are you (and she) accessing this through telnet?
What terminal emulation is this going through?
</BLOCKQUOTE>
<BLOCKQUOTE>
If you can run '<tt>vi</tt>' or '<tt>emacs</tt>' within that terminal window,
or console/terminal session then your <tt>TERM</tt> environment
setting should be sufficient to support the vi keybindings
used by bash, pdksh and ksh). My quick tests with pdksh, ksh
'93, and bash all show that the [Up Arrow] key IS recognized
by the vi keys handlers in any of them. I tested this from
a text console with <tt>TERM=linux</tt>, from under the '<tt>screen</tt>'
utility with <tt>TERM=screen</tt>, and from an xterm with <tt>TERM=xterm</tt>.
This is all on a <A HREF="http://www.debian.org/">Debian</A>/Potato system
with all recent updates applied for all software (yesterday).
</BLOCKQUOTE>
<BLOCKQUOTE>
So I don't know what is wrong. You'll want to play with the
'k' (vi up key) to see if that works, and play with the TERM
variable (especially if you're connecting through your net
using some MS-DOS or MS-Windows telnet client). You might
also want to check if you are using some unusual key
mappings on your Linux console (the loadkeys command) or in
your copy of X (the xmodmap command). Again, if you have
vi and emacs working normally, then these should not be
problems for you.
</BLOCKQUOTE>
<BLOCKQUOTE>
Moving on to the larger issues of making your wife feel at
home on here new system. If she's used to SCO's ksh then
she might find some of the minor differences between it and
GNU bash (the default Linux shell, from the Free Software
Foundation --- <A HREF="http://www.gnu.org"
>http://www.gnu.org</A>). There are even
differences between pdksh and ksh '93, and even more minor
ones between pdksh and ksh '88.
</BLOCKQUOTE>
<BLOCKQUOTE>
I don't know which ksh ships with SCO UNIX nor even which
version of SCOnix that your wife is using. I'll assume
she's using a recent copy, and that it shipped with the most
recent Korn shell.
</BLOCKQUOTE>
<BLOCKQUOTE>
I suppose the best advice would be to get the real Korn
Shell (ksh '93) from David G. Korn's web site:
<A HREF="http://www.kornshell.com"
>http://www.kornshell.com</A>. Just follow a couple of obvious
links (Software, "Official AT&amp;T Release...") and fill out
the little form.
</BLOCKQUOTE>
<BLOCKQUOTE>
Note that this is NOT free for commercial use. It is also
NOT open source. You can read their license agreement for
all of the details.
</BLOCKQUOTE>
<BLOCKQUOTE>
If your use will be within those restrictions than you can
get this for your wife. If she's used to subtle nuances of
ksh --- and especially if she does serious shell scripting
involving associative arrays, co-processes, and floating
point mathematics then she'll be happier with the "real
thing" then she will be with bash or pdksh.
</BLOCKQUOTE>
<BLOCKQUOTE>
Most shell users wouldn't know the difference. However, ksh
'93 (the most recent major release of the package) is the
"king" of Unix command shells. It has a number of features
which are unique to it (particularly in support of
associative arrays).
</BLOCKQUOTE>
<BLOCKQUOTE>
There's a pretty good, and short, article co-authored by the
creator of the Korn shell that discusses some of the
features that make ksh '93 unique which was published by the
Linux Journal and can be read on their web site at:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
<A HREF="http://www2.linuxjournal.com/cgi-bin/frames.pl/lj-issues/issue27/korn.html"
>http://www2.linuxjournal.com/cgi-bin/frames.pl/lj-issues/issue27/korn.html</A>
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
More information about pdksh can be found at the web site of
its current maintainer, Michael Rendell at:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
<A HREF="http://www.cs.mun.ca/~michael/pdksh"
>http://www.cs.mun.ca/~michael/pdksh</A>
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
As far as I know pdksh and ksh are the only shells to
support co-processes. So, if your wife uses those she'll
definitely want to use one of them. Bash doesn't seem to
support co-processes, yet. I think it's on their wishlist.
</BLOCKQUOTE>
<BLOCKQUOTE>
(For those that don't know: Co-processes work something
like this:
</BLOCKQUOTE>
<blockquote><pre> $ bc |&amp;
[1] 12345
$ print -p '1234 * 4567890'
$ read -p result
$ echo $result
...
$ print -p quit
$
[1] + Done bc
$
</pre></blockquote>
<BLOCKQUOTE>
I started a copy of the "big calculator" (bc). The |&amp;
operator makes it a "co-process" --- running with its
stdin (standard input file stream) connected to one
pipe from ksh/pdksh and its stdout (standard output
file stream) connected to another. Then I printed
a value into that special co-process pipe (print -p)
and read that value back out (using read -p). I can
then print other transactions into this co-process and
read other results from it. This allows me to have
one process loaded, maintaining state, and available
for work. In shells that don't support co-processes
I'd have to maintain my own state, and keep re-executing
this command (possibly with quite a bit of extra
over-head in providing my intermediate results/state
back to the new instance of the program).
</BLOCKQUOTE>
<BLOCKQUOTE>
So, co-processes are one of the more interesting innovations
of the Korn shell. Such things are relatively easy to do
from C, but ksh and pdksh are the only shells that
interactively provide these at a high level shell prompt.)
</BLOCKQUOTE>
<!-- sig -->
<!-- end 18 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/19"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 19 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Weird Mount Permissions &amp; Where's a Word Processor</H3>
<p><strong>From Ilan Tal on Sun, 23 Jan 2000
</strong></p>
<!-- ::
Weird Mount Permissions &amp; Where's a Word Processor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi Jim,
</STRONG></P>
<P><STRONG>
This morning your answer on getting started with Samba was the
best thing I've seen to date on Linux. It answered the questions I
didn't know how to ask. I still haven't implemented it, but at
least now I know which direction to go.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Glad it helped. I have no idea which comment on
Samba you're referring to --- after three years and
over a thousand questions answered on this column
they tend to all be a blur.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have another couple questions which you might be able to
answer. I have a multiple boot machine with win95, win98, win2k
and Linux 6.1. Naturally I want Linux to talk to EVERYTHING,
including across the LAN (the Samba part).
</STRONG></P>
<P><STRONG>
I have hooked up win95 (fat16) and win98 (fat32), but each time when I boot
up and look in the <TT>/mnt</TT> folder I see both icons with a red band around them
(meaning that I can't open the folder).
</STRONG></P>
<P><STRONG>
I go into the terminal, open up a super user and do: <tt>ls -ld win98</tt>. The
result I get back is <tt>d----w-w-</tt>. That explains why I can't open them.
Then I
do a umount win98 and immediately mount it back again. Now <tt>ls -ld win98</tt>
gives me <tt>drwxrwxr-x</tt>, and I can open the folders. Under linuxconf I have
myself as the owner.
</STRONG></P>
<P><STRONG>
The problem is if I reboot, it again goes into the mode where I can't open
the folder. My question is: what do I have to do to convince it to boot up
with drwxrwxr-x and NOT <tt>d---w-w-</tt>?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Well that is odd. The initial (boot time) mount fails in
a way that marks the permissions absurdly and a remount
succeeds and shows sane permissions.
</BLOCKQUOTE>
<BLOCKQUOTE>
The diagnostics you're giving are pretty sparse. The
most useful information in this case would be:
</BLOCKQUOTE>
<blockquote><ul><li>Relevant excerpt from your <tt>/etc/fstab</tt>
<li>Output of the '<tt>mount</tt>' and '<tt>df</tt>' commands
before and after the failure.
<li>Output of the '<tt>lsmod</tt>'command before and
afer the failure.
</ul></blockquote>
<BLOCKQUOTE>
I suspect that the problem is related to your
loadable kernel modules and your kmod (kernel module
autoloading subsystem). It could be that there is
something subtly wrong with your start up sequence
so that the <tt>vfat.o</tt>, <tt>msdos.o</tt>, and related modules are
not properly loading.
</BLOCKQUOTE>
<BLOCKQUOTE>
Tracking down the problem could be interesting. Basically
you'd read through the <TT>/etc/rc.d/*</TT> scripts to find out
where kmod is activated (<TT>/etc/rc.d/rc.sysinit?</TT>) and
where your filesystems are mounted (<tt>find /etc/rc.d | xargs
grep "mount.*-a"</tt>).
</BLOCKQUOTE>
<BLOCKQUOTE>
This is made somewhat more entertaining by the amount of
cruft that's accumulated in the
<A HREF="http://www.redhat.com/">Red Hat</A> rc scripts. Some of
the other distributions have somewhat cleaner, more elegant
rc scripts and some of them have it even worse. When I
teach classes in Linux administration, I spend about a half
day on <TT>/etc/inittab</TT> and the <tt>rc*</tt> scripts.
</BLOCKQUOTE>
<BLOCKQUOTE>
Read those after digesting _Learning_the_bash_Shell_ (*) by
Cameron Newham and Bill Rosenblatt (O'Reilly and Associates)
and you'll be well prepared to troubleshoot most Linux
configuration problems.
</BLOCKQUOTE>
<BLOCKQUOTE><UL><LI>
(<A HREF="http://www.oreilly.com/catalog/bash2"
>http://www.oreilly.com/catalog/bash2</A>)
</UL></BLOCKQUOTE>
<BLOCKQUOTE>
A workaround might be easier than a real fix. One work
around would be to simply add the commands:
</BLOCKQUOTE>
<blockquote><pre> umount /mnt/win98 ; mount /mnt/win98
umount /mnt/win95 ; mount /mnt/win95
</pre></blockquote>
<BLOCKQUOTE>
... to your <TT>/etc/rc.d/rc.local</TT> script. If that
doesn't work try using something like:
</BLOCKQUOTE>
<blockquote><pre> ( sleep 120
umount /mnt/win98 ; mount /mnt/win98
umount /mnt/win95 ; mount /mnt/win95
) &amp;
</pre></blockquote>
<BLOCKQUOTE>
This encapsulates the previous commands into a
subshell (the parentheses), inserts a two minute
delay at the beginning of that subshell, and runs
the subshell in the background (the ampersand).
</BLOCKQUOTE>
<BLOCKQUOTE>
The overall effect of this would be that the
troublesome mount would be left alone for a couple
of minutes, and then cleared up in the background.
Obviously, your win '9x filesystems wouldn't be
available until after that delay.
</BLOCKQUOTE>
<BLOCKQUOTE>
As I say. This is a WORKAROUND. Normally installations
should NOT have to do this.
</BLOCKQUOTE>
<BLOCKQUOTE>
Another approach would be to ensure that the modules
are loaded BEFORE the mount command occurs. Usually
the kmod automatic module loading system is reliable
enough. However, we can always add our own '<tt>insmod</tt>'
or '<tt>modprobe</tt>' commands commands to <TT>/etc/rc.d/rc.sysinit</TT>
or to some other point in the rc scripts. Indeed we
could even insert a custom rc invocation into the
<TT>/etc/inittab</TT> file --- which would run before ALL of the
other rc scripts.
</BLOCKQUOTE>
<BLOCKQUOTE>
Yet another approach is to link the requisite modules
statically into your kernel. You don't have to do this
with all of the modules you use (and that might result in
kernels that are two big for LILO to use). However, you
should statically link in your primary disk controller,
primary filesystem, any ethernet driver and then the
other drivers that you really care about. This is
done by simply building a new kernel from sources.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Which segues into one of your other questions).
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The other question has to do with hooking up to win2k with NTFS. I
understand that I have to recompile my kernel, which is a bit
scary. My question is: is there a good source of directions on how
to do this? If there is something similar to what you showed me
for Samba, it would be great!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Well the usual answer for this is to head over to
"The Linux Kernel HOWTO" at
</BLOCKQUOTE>
<BLOCKQUOTE>
<A HREF="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html"
>http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
... and if that seems to shoot over your head then
go back to basics by reading the "Installation and
Getting Started" guide by Matt Welsh et al:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
The Linux Documentation Project Works
<DD><A HREF="http://www.linuxdoc.org/docs.html#guide"
>http://www.linuxdoc.org/docs.html#guide</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... this guide is the first link in the guides section
of the LDP (the Linux Documentation Project).
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course every Linux user should start with the LDP
guides and HOWTOs. Every general purpose Linux distribution
should have links to the LDP <A HREF="http://www.linuxdoc.org"
>http://www.linuxdoc.org</A> web site
prominently evident on their own web sites, in their
documentation and installation scripts, in the sample
HTML that's installed on any localhost web server, etc.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Incidentally the Linux Gazette is a part of the LDP.
This is relatively obscured by the fact that we run
completely autonomously).
</BLOCKQUOTE>
<BLOCKQUOTE>
If the "Installation and Getting Started" doesn't seem
to be quite enough then I'd suggest looking at
Henry White's "Basic Linux Training"
(<A HREF="http://basiclinux.hypermart.net/info-basic.html"
>http://basiclinux.hypermart.net/info-basic.html</A>)
</BLOCKQUOTE>
<BLOCKQUOTE>
That's a highly structured online class. Although it
requires registration (and a password) to access the
content of this course --- the registration seems to be
free. This class uses the Getting Started guide as
a text book.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Another question is: where can I obtain a decent word processor
for Linux? The Redhat 6.1 didn't have anything on the CD. There
are all sorts of editors, and even a spread sheet, but no word
processor. It is difficult for me to return to the dark ages where
I had no control over the font size, or which font I was using,
which are the minimum goodies for a word processor.
</STRONG></P>
<P><STRONG>
Thanks,
<br>Ilan
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
There are several word processors for Linux. However,
I should note that the whole word processor paradigm is
not the only way to have control over font size and
selection. It's also important to understand that
word processors existed for years before GUIs and "WYSIWIG"
(what you see is what you (hope to) get) were feasible.
</BLOCKQUOTE>
<BLOCKQUOTE>
One of the earliest uses of UNIX was document preparation
and typesetting using the roff (nroff, and troff) system.
This is still the format used by Linux and UNIX man pages,
and some people still create and maintain their resumes
in troff. A troff document consists of text with embedded
"dot commands" which identify the document parts (titles,
headings, sections, etc) and desired typesettings (font,
face, weight, etc).
</BLOCKQUOTE>
<BLOCKQUOTE>
Another typesetting system which is geared for technical
publications and academic work (particularly for
dissertations in mathematics, physics, Klingon linguistics,
etc) is Donald Knuth's TeX system (pronounced "tech" as in
"tau epsilon chi"). TeX is a typesetting language.
Many TeXnicians actually use the LaTeX macro package which
is built around "plain" TeX. There are hundreds of packages
which plug into LaTeX and dozens of TeX alternatives to it.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can learn far more than you ever wanted to know
about this approach to document preparation by browsing
around the TUG (TeX Users Group) website <A HREF="http://www.tug.org"
>http://www.tug.org</A>
and by perusing the CTAN (Comprehensive TeX Archive Network)
website at <A HREF="http://www.ctan.org"
>http://www.ctan.org</A>.
</BLOCKQUOTE>
<BLOCKQUOTE>
(If you need to typeset a dissertation comparing
Elvish, Goblinoid, and Klingon literature, perhaps with
diagrams of their respective approachs to chess, and
perhaps you want to have barcode footnotes of your
bibliographic references --- if you need that then
CTAN is the place to go!)
</BLOCKQUOTE>
<BLOCKQUOTE>
I've never written anything in *roff. However I do
like LaTeX, and I did use it to write my first book.
It does represent a significant learning curve, but you
do get very good control over the project as a whole.
</BLOCKQUOTE>
<BLOCKQUOTE>
So, I suggest that you look back into the "dark ages"
a bit and see what arcane wisdom might be found thereby.
</BLOCKQUOTE>
<BLOCKQUOTE>
Now, back to your question:
</BLOCKQUOTE>
<BLOCKQUOTE>
The most obvious commercial and closed source choices
for your word processing needs are:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Word Perfect by Corel software
<DD><A HREF="http://www.corel.com"
>http://www.corel.com</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
(I'd give a more specific URL, but they use
nasty Javascript redirections to access their
products listings so you'll just have to
hunt for it yourself).
</BLOCKQUOTE>
<BLOCKQUOTE>
Star Office by Star Division at
<A HREF="http://www.stardivision.com"
>http://www.stardivision.com</A> which was purchased by
Sun Microsystems <A HREF="http://www.sun.com"
>http://www.sun.com</A> last year
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Applixware for Linux
<DD><A HREF="http://www.applix.com/applixware/linux/main.cfm"
>http://www.applix.com/applixware/linux/main.cfm</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... note that you might want to wait a couple
weeks for their upcoming release of 5.0
</BLOCKQUOTE>
<BLOCKQUOTE>
(Then again you might want to also have another
word processor handy for that first couple of
months after you get Applixware 5.x --- since it
is a major commercial sofware release and a ".0"!).
</BLOCKQUOTE>
<BLOCKQUOTE>
I've used Applix (a couple of minor versions ago) and
StarOffice. In fact I decided to install the Sun release
of StarOffice 5.1 while I was writing this message.
(I'd had a small stack of the free CDs that were given out
at some LUG around here sitting next to my computer for
about two months, and one of those was sitting in my
workstation's CD tray for the last couple of weeks).
</BLOCKQUOTE>
<BLOCKQUOTE>
So, it's copying files now ... done.
</BLOCKQUOTE>
<BLOCKQUOTE>
StarOffice does install pretty easily. This workstation
(canopus) is on a <A HREF="http://www.debian.org/">Debian</A> (Potato) distribution. Here's
how:
</BLOCKQUOTE>
<BLOCKQUOTE><ol>
<li> mount the CD
<li> startx as root
<li> open an xterm
<li> changed to the <TT>/mnt/cdrom/linux/office51</TT> directory
<li> run '<TT>./setup</TT> <TT>/net</TT>'
<li> follow the on screen instructions;
<br> especially: select an installation path.
(I used <TT>/opt/StarOffice51/</TT>)
</ol></BLOCKQUOTE>
<BLOCKQUOTE>
... this creates the base system installation (about 150Mb).
</BLOCKQUOTE>
<BLOCKQUOTE>
Then each local user who intends to use the package must:
</BLOCKQUOTE>
<BLOCKQUOTE><ol>
<li> login
<li> startx (if necessary)
<li> cd to a (site dependant) directory such as
/opt/StarOffice51/bin
<li> run <TT>./setup</TT> (without the <TT>/net</TT> option)
<li> follow the instructions and fill out the
forms; pick a personal installation path
(I used ~/.Office51/)
</ol></BLOCKQUOTE>
<BLOCKQUOTE>
(Note: the CD doesn't seem to be required for the user
installations).
</BLOCKQUOTE>
<BLOCKQUOTE>
This seems to install about 3Mb under my home directory. It
seems to me that quite a bit of that could be replaced with
symlinks but...
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, StarOffice comes with word processing, spreadsheet,
database, scheduler, presentation, and drawing programs. It
also seems to have some features for accessing your Palm
Pilot PDA.
</BLOCKQUOTE>
<BLOCKQUOTE>
Overall I think the whole StarOffice suite works O.K. but
is a bit too cluttered. There are too many tool bars, icon
ribbons, rulers, scroll bars, menu bars, status lines etc.
Some, possibly most of that could be configured away, but it
is not clear how you access those functions without having
the various widgets constantly in your face and taking up
valuable screen real estate.
</BLOCKQUOTE>
<BLOCKQUOTE>
When you start StarOffice it creates one window/frame into
which all of the others must fit. Thus your document,
dialog, spread sheet and other windows don't float on your
desktop co-existing with your other X applications. They
are "boxed in" and visually isolated from the rest of your
desktop. This isn't much of a problem to me. I tend to
give each application its own virtual screen in my window
manager (mostly I've been using icewm recently --- it's very
modest and mostly unobtrusive). So I have no objection to
sizing StarOffice to "full screen" and let it take over
almost all of my screen. I just leave my icewm menu bar at
the bottom (taking up valuable screen real estate) and I use
it's little screen buttons to switch to my xterm screen
(O.K., I cheat! I have a couple of xterms open on that
one), my Navigator screen, or to my "other" (xdvi, gv,
whatever) screens.
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course one of my xterms has a copy of 'screen' (the text
mode terminal multiplexer) running in it. This is running
my copy of xemacs, with my mailer and most of my other
editing buffers. Other screen sessions have shell prompts,
root shell prompts, and my lynx sessions. I regularly
detach this screen session, yanking it over to whichever
terminal session I happen to be on. So it makes rounds from
text console, to xterm, to ssh session as I keep
re-attaching from various locations and under various modes.
(Understanding how I work my help you decide that you don't
want to listen to my advice about GUI programs).
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, I consider StarOffice to be acceptable, and
certainly no worse then what I've seen of MS Office.
</BLOCKQUOTE>
<BLOCKQUOTE>
There is a free alternative. StarOffice is free as in "beer"
not free as in "speech" -- you can use it around the house
without paying any money but you can get the sources (yet),
modify it, or redistribute it without a license from Sun).
</BLOCKQUOTE>
<BLOCKQUOTE>
Abiword is the premier GPL'd GUI word processor. The
current version is 0.7.7.
</BLOCKQUOTE>
<BLOCKQUOTE>
Since you're a Red Hat user you can download the RPM file
from the AbiSource web site:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
AbiSource -- Linux <TT>/</TT> Intel Install
<DD><A HREF="http://www.abisource.com/dl_linux_intel.phtml"
>http://www.abisource.com/dl_linux_intel.phtml</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
You can learn lots more about this project and the company
that's undertaken it at:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
<A HREF="http://www.abisource.com"
>http://www.abisource.com</A>
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Under Debian you could install the latest Abiword using the
command:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote><Code>
apt-get install abiword
</Code></BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... assuming you have your <TT>/etc/apt/sources.list</TT> configured
correctly. Debian will then handle all of the downloading,
installation and dependency resolution for you.
</BLOCKQUOTE>
<BLOCKQUOTE>
I've played with Abiword and it is pretty nice. However it
is missing some fairly key pieces (such as the dialogs to
control your margins and page layout. It does seem less
cluttered than StarOffice's "writer" and when you use the
option to turn of the "ruler" display then you can still
find all the options it offered on the pull down menus.
(Now if they just offered options to display the display of
the tool and menu bars and offered options to pop those up
with middle and "other" mouse buttons on the main text
display, then we might have a really clean interface).
</BLOCKQUOTE>
<BLOCKQUOTE>
One of the most aggressive projects to create a new office
suite for Linux is KOffice (<A HREF="http://koffice.kde.org"
>http://koffice.kde.org</A>) by the
<A HREF="http://www.kde.org/">KDE</A> folks. I haven't gotten this running yet. I did try to
grab the RPMs and use alien to install pre-compiled binaries
in the background as I was writing this message --- but I'm
missing a few libraries that it wants, so I'll have to get
the sources and build it all in order to test it. That will
have to happen later.
</BLOCKQUOTE>
<BLOCKQUOTE>
There are lots of other word processing packages for Linux.
Some are under development, others are commercial, some seem
to be half done and abandonned projects (like Maxwell, and
Papyrus). Here's a couple of URLs to browse some of them:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
[freshmeat] X11/Office Applications
<DD><A HREF="http://www.freshmeat.net/appindex/x11/office%20applications.html"
>http://www.freshmeat.net/appindex/x11/office%20applications.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Christopher B. Browne's Linux Word Processing
<DD><A HREF="http://www.hex.net/~cbbrowne/wp.html"
>http://www.hex.net/~cbbrowne/wp.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Goob:Software:Office
<DD><A HREF="http://www.linuxlinks.com/Software/Office"
>http://www.linuxlinks.com/Software/Office</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
(This last one appears as "Goob" in my book marks
file --- so I think that is a historical name for the site).
</BLOCKQUOTE>
<em><p>[ Yes, it used to be called "Linux Links by Goob!" and
I always assumed it started life as his personal bookmarks.
<br>-- Heather ]</p></em>
<BLOCKQUOTE>
That should keep you busy for awhile.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 19 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 19 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>thanks</H3>
<p><strong>From Ilan Tal on Sun, 30 Jan 2000
</strong></p>
<P><STRONG>
Hi Jim,
</STRONG></P>
<P><STRONG>
The diagnostics are pretty sparse because I don't know what I'm
doing!
</STRONG></P>
<P><STRONG>
I'm coming from the Windows world, but I'm in unfamiliar territory
with Linux.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Don't feel bad. When I was supporting MS Windows users
full time I often got sketchy symptomology.
</BLOCKQUOTE>
<BLOCKQUOTE>
The thing that makes it more frustrating these days
is that I'm doing it via e-mail. So the questions I
want to ask and the data I need to gather in order
to treat the problem involve long delays in both
directions.
</BLOCKQUOTE>
<BLOCKQUOTE>
As Linux increases in popularity there will be many
people in the same boat with you. I'll have to refer
more people to interactive phone support (which is
NOT free). Sometimes that will be the only sane
approach.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It will take me a few days to digest your letter. I will look into
the problem and see if I can solve it, with the hopes of learning
something along the way. If I can't solve it, then I'll go for a
work around. In any case, I hope to learn something in the process
- and maybe as a result next time my diagnostics won't be quite so
sparse.
</STRONG></P>
<P><STRONG>
I VERY much appreciate all the effort you put into your
answer. Now I've got to digest it by trying out all the things you
suggested.
</STRONG></P>
<P><STRONG>
Thanks again,
Ilan
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Many people feel a bit overwhelmed by my responses.
I'm used to it. Obviously you are motivated and
interested in learning more.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 19 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 19 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>More on Strange Mount Permissions</H3>
<p><strong>From Ilan Tal on Sun, 30 Jan 2000
</strong></p>
<!-- ::
More on Strange Mount Permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi Jim,
</STRONG></P>
<P><STRONG>
I don't want to bother you without doing my homework, but I have run into a
couple of questions which I just don't know how to solve. You answered my
question about the weird file permissions when I log on, which become normal
when I umount and then mount again.
</STRONG></P>
<P><STRONG>
First of all, my fstab is:
</STRONG></P>
<pre><strong>/dev/hda6 / ext2 defaults 1 1
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/hda5 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda4 /mnt/win98 vfat exec,dev,suid,rw,conv=auto,uid=500,gid=500,umask=755 1 1
/dev/hda1 /mnt/win95 msdos exec,dev,suid,rw,conv=auto,uid=500,gid=500,umask=755 1 1
</strong></pre>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Doh! [self: slaps forehead!]
</BLOCKQUOTE>
<BLOCKQUOTE>
I should have guessed!
</BLOCKQUOTE>
<BLOCKQUOTE>
Your problem is with those UMASK settings. I see
what you intended but that not how the UMASK works.
UMASK is a list of the bits to strip OFF (mask away from)
the default 666 file creation permissions (777 for
directories).
</BLOCKQUOTE>
<BLOCKQUOTE>
So a UMASK of 022 is actually what you want!
</BLOCKQUOTE>
<BLOCKQUOTE>
Basically consider each of the digits in the permissions
set to be an octal value (three binary bits). To get
the sequence rwx you have to use 4 + 2 + 1 (or
1 * 2 ^ 2 + 1 * 2 ^ 1 + 1 * 2 ^ 0 if you were to look at
the binary exponents). 777 in octal is 111 111 111, and
022 is 000 010 010. The complement of your UMASK (each
bit is inverted) is 111 101 101. If you and that against
your default permissions (777 for directories and 666
for files) then you "strip out" the write permissions for
groups and "others."
</BLOCKQUOTE>
<BLOCKQUOTE>
I know that this is confusing. It's one of those things
that makes perfect sense to the programmers who used
UNIX early one; and is something that many sysadmins and
UNIX users just learn (umasks of 022 or 027 are good,
most others are bad) without really understanding the
underlying bit manipulations.
</BLOCKQUOTE>
<BLOCKQUOTE>
The easy way to calculate the effects of a
umask are to subtract the desired permissions (755)
from 777. That you can do in your head: 777 - 755 = 022.
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, just change those 755's to 022 and everything
should be fine.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The other thing which I noticed about the ls -ld win98 with d----w-w- is
that the owner is ilan. After I umount and mount again the owner is root.
Your message actually gave me a very important clue. If, in fact, I do a
simple
</STRONG></P>
<P><STRONG>
umount <TT>/mnt/win98;</TT> mount <TT>/mnt/win98</TT>
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Of course that wouldn't work. The mount command has been
working right all along. It's doing exactly what the
options in the fstab are saying.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
then nothing good happens! I am still stuck with the same garbage
permissions. However if I mount as: mount <TT>/dev/hda4</TT> <TT>/mnt/win98</TT>, THEN the
permissions are OK (and the owner is root, not ilan).
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Of course. When you specify the device and the mount
point then the 'mount' command doesn't perform a lookup
in the <TT>/etc/fstab.</TT> It just mounts the filesystem according
to your arguments and its compiled in defaults.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I tried to extend your command (find <TT>/etc/rc.d</TT> | xargs grep "mount. *-a") to
something to find the mount win98 string, but I couldn't make it work
correctly. What I tried was find <TT>/etc</TT> | xargs grep "mount. win98", but aside
from telling me that every entry was a directory, I didn't get anything
useful. Thus I don't know where or how it mounts win98.
</STRONG></P>
<P><STRONG>
While I'm at such questions, I tried sending you the output of the commands
(like ls -ld win98). What I found for redirection was rather complicated:
</STRONG></P>
<P><STRONG><BlockQuote>
(command) 2&gt;&amp;1 | tee (output file)
</BlockQuote></STRONG></P>
<P><STRONG>
I did all that, but each new command erased the output file. In the DOS
days, I used to use (command) &gt; (output file), or (command) &gt;&gt; (output file)
to append to an existing file. I'm sure there must be something similar in
Linux.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
You can use the &gt;&gt; operator under Linux. (Actually the
operators are part of the syntax of your shell, bash, or
tcsh. Theoretically someone could write a UNIX/Linux
shell that used completely different syntax).
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Finally I tried recompiling the kernel to accommodate NTFS (read only). Your
suggested source helped a lot in adding information to what I had from the
official Linux documentation. Still it keeps coming back at me, at the
compile stage, telling me the kernel is too big and it can't compile it.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Use the 'make bzImage' option rather than the 'make zImage'
choice. This is a bit of a historical artifact.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can read the Linux Kernel Mailing List (LKML) FAQ
at Tux.org (<A HREF="http://www.tux.org/lkml"
>http://www.tux.org/lkml</A>) for more on that.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I suspect that this is a red herring, so I simply had to ask your opinion. I
have 926 Mbyte on my Linux partition, of which no less than 95% is in use!
This blew my mind, and I have 41 Mbyte free. I suspect that the real problem
may be that the disk space just isn't big enough.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
No. That's now a problem. You should clear up
some space but that's now causing the symptoms you've
described to me.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
If this be the case, either I have to somehow exploit my win98 disk, which
has loads of free space, or I need to figure out what I can dump from my
Linux partition.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
You can symlink your home and <TT>/usr/src/linux</TT> directories
into directories on one of your MS Windows partitions,
though you should use the uvfat filesystem type rather
than just vfat. That will impose some UNIX/Linux semantics
on your MS FAT filesystems using some hidden files that
the Linux uvfat filesystem driver will transparently create
and maintain for you.
</BLOCKQUOTE>
<BLOCKQUOTE>
You might want to hunt around for information on uvfat and
it's predecessor/ancestore UMSDOS. I haven't used these in
years and haven't read about them recently.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Another very useful suggestion in your letter was to sign up for the Linux
course. This I did yesterday. Hopefully it may fill in some of the huge
holes in my background. Knowing Windows just isn't enough, not by a long
shot!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I just saw an interesting link to Linux training providers
at:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
LinTraning:
<DD><A HREF="http://www.lintraining.com"
>http://www.lintraining.com</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... which is currently just a redirection to:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
LinSight: Training
<DD><A HREF="http://training.linsight.com"
>http://training.linsight.com</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
I'm just mentioning that for the benefit of my other
readers, though you can check it out if you want to
shop around.
</BLOCKQUOTE>
<BLOCKQUOTE>
I thought about referring you to <A HREF="http://www.linuxcare.com/">Linuxcare</A> (which does
do some training). Howevever I see from our web site
that we don't currently have any classes for individuals
scheduled. Our focus at Linuxcare is more on training
the instructors of the training facilities, and on
corporate training. So we only occasionally offer
classes to the general public.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Many of the facilities listed in LinTraining are
coming to Linuxcare for their materials).
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks,
Ilan
</STRONG></P>
<!-- sig -->
<!-- end 19 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 19 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>100% correct!</H3>
<p><strong>From Ilan Tal on Mon, 21 Feb 2000
</strong></p>
<!-- ::
100% correct!
~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi Jim,
</STRONG></P>
<P><STRONG>
It took me a couple of days before I could get rid of my Windows obligations
and return to the fun stuff of Linux. In any case I must report to you that
YOU are right and the Linux documentation is WRONG. I am referring to your
letter:
</STRONG></P>
<pre><strong>&gt;&gt;&gt; /dev/hda4 /mnt/win98 vfat &gt;&gt;&gt; exec,dev,suid,rw,conv=auto,uid=500,gid=500,umask=755 1 1
&gt;&gt;&gt; /dev/hda1 /mnt/win95 msdos &gt;&gt;&gt; exec,dev,suid,rw,conv=auto,uid=500,gid=500,umask=755 1 1
</strong></pre>
<P><STRONG><FONT COLOR="#000066"><EM>
Doh! [self: slaps forehead!]
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
I should have guessed!
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
Your problem is with those UMASK settings. I see
what you intended but that not how the UMASK works.
UMASK is a list of the bits to strip OFF (mask away from)
the default 666 file creation permissions (777 for
directories).
</EM></FONT></STRONG></P>
<P><STRONG>
Where in hell would I know what permissions to use? I must have read it
somewhere, because I know NOTHING. First of all I took your suggestion, went
into linuxconf and changed 755 to 22. That solved my problem COMPLETELY! No
more problems with logging on, IT WORKS!
</STRONG></P>
<P><STRONG>
The next problem was to figure out where I got the bum steer. I went to the
Linux documentation, "Getting started". I wanted to get started, right?
There is a section about mounting Windows devices. That is what I needed,
right? Well it says to use 755, so that is what I did. I didn't know nothin'
about any UMASK, and I didn't change any UMASK. I took YOUR suggestion (in
linuxconf) about using 22, and guess what? It works!
</STRONG></P>
<P><STRONG>
Someone should either fix linuxconf, or they should fix the documentation.
One of them is simply wrong. Without your telling me where the problem was,
I didn't have the chance of a snowball in hell of finding it.
</STRONG></P>
<P><STRONG>
Thanks,
Ilan
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hmm. If you could find the passage in "Installation and
Getting Started" to which you are referring, we could
look up the current maintainer of that LDP guide and suggest
a clarification.
</BLOCKQUOTE>
<BLOCKQUOTE>
Matt Welsh, the original author of GS, knows at least as
much about UNIX as I do (probably more). So if the
passage was incorrect, it was probably an accident in the
wording, or something confusing about the sentence
structure. I presume that he was trying to say that you
should set your umask value such that the resulting
directories end up with mode 755.
</BLOCKQUOTE>
<BLOCKQUOTE>
As for linuxconf, don't get me started about it. I've tried
it a couple of times and it just does things WRONG! I
refuse to use it on my systems. I'd like a mode in
linuxconf that would just "edit the files" and show me
what needs to be put where. In other words it would be nice
if it had interactive help, and forms to put the right stuff
into the right places in things like zone, hosts, passwd,
and other files. Some of these conf files can be pretty
picky.
</BLOCKQUOTE>
<BLOCKQUOTE>
(I once let crackers create directories on a public FTP site
and upload "warez" --- pirated software --- all because I
had a space following a common in a WU-FTPd ftpaccess file;
I was saved by some other settings that prevented them and
their ilk from get back into to retrieve the warez --- but
that's still a slightly spooking experience).
</BLOCKQUOTE>
<BLOCKQUOTE>
I suppose I should quit my kvetching and get in there to fix
it, or to help with the COAS (<A HREF="http://www.caldera.com/">Caldera</A> Open Admin System).
One problem with UNIX and Linux is that those of us who get
good at managing the system with text conf. files have
little interest in or incentive to make easier interfaces
for those who don't know that a man page that specifies
a syntax of "opt1,opt2,opt3..." really MEANS that there
should be no spaces after those commas, etc.
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, if you can find the places that lead you astray,
please feel free to e-mail the maintainers of those
documents and packages (linuxconf included) and let them
know.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 19 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/20"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 20 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>.max extension on an e-mail attachment</H3>
<p><strong>From Paul Todd on Sun, 30 Jan 2000
</strong></p>
<!-- ::
.max extension on an e-mail attachment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
I have been sent a document with a .max extension.
What software do I need to be able to open and print it?
</STRONG></P>
<P><STRONG>
Regards
Paul Todd
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have no idea. If you look at it with a text
text/hex editor is there any sort of hint among
the gibberish?
</BLOCKQUOTE>
<BLOCKQUOTE>
I'd bounce a message to your correspondent
and ask that he or she provide the attachment
in a format you can support or point you to
the necessary tools to use it.
</BLOCKQUOTE>
<BLOCKQUOTE>
(.max is not any sort of standard or convention
I've ever heard of).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 20 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 20 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>RE: .max files</H3>
<p><strong>From Paul Todd on Mon, 31 Jan 2000
</strong></p>
<BLOCKQUOTE>
Hi Jim
Thanks for your note.
The person who sent me the file thought it was a "Paperport" file.
If I use Wordpad to look at it is just gibberish - random characters.
If I use something like Quickview I get the same but it is possible to see
the odd word
</BLOCKQUOTE>
<!-- end 20 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 20 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>RE: .max files</H3>
<p><strong>From Paul Todd on Mon, 31 Jan 2000
</strong></p>
<BLOCKQUOTE>
Jim,
I found a viewer for Paperport files on the web and sure enough .max files
are Paperport format and having downloaded the viewer I have printed the
manual out.
</BLOCKQUOTE>
<BLOCKQUOTE>
Sorry to have wasted your time so some extent but at least you know what
.max files are!!!!
</BLOCKQUOTE>
<BLOCKQUOTE>
regards
</BLOCKQUOTE>
<BLOCKQUOTE>
Paul
</BLOCKQUOTE>
<!-- end 20 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/21"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 21 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Accupuncturist Filmaker Hates Fascist MS Products</H3>
<p><strong>From Zombewolf on Mon, 31 Jan 2000
</strong></p>
<!-- ::
Accupuncturist Filmaker Hates Fascist MS Products
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
dear answer guy
</STRONG></P>
<P><STRONG>
I'm a keep it simple, I dont like to waste time on computers kind
of guy. I do very little with a computer because the learning
curve is too high and software changes version far too frequently
to allow me to use what I just learned.
</STRONG></P>
<P><STRONG>
In 1993 I edited many films, commercials, infomertials on AVID
proprietary mac based machines. Now I'm an accupuncturist with
minimal computer usage. I draft bills and do some research. Some
day, when I get rich, I'll make films again ( maybe in 5 or 10
years).
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
That's an interesting background.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I HATE MICROSOFT AND IT'S FASCIST WINDOWS PRODUCTS.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
This sentiment seems a mite strong for a casual
computer user. Usually it's the professionals who
spend 80 hours a week working on this stuff that
have such seething vehemence.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I'll buy a computer in March - can I do well with linux or am I
the wrong profile?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I hate to see some one driven so much by hatred.
(O.K. I know that sounded funny, but I mean it).
</BLOCKQUOTE>
<BLOCKQUOTE>
I'd rather you use Linux because it offered you
what you wanted, rather than out of unadulterated
revulsion.
</BLOCKQUOTE>
<BLOCKQUOTE>
How to you feel about MacOS?
</BLOCKQUOTE>
<BLOCKQUOTE>
It sounds like Linux or MacOS might fill the bill for
you. However, you might have a bit of a trick to
find Linux applications that meet your needs and user
interface preferences.
</BLOCKQUOTE>
<BLOCKQUOTE>
The <A HREF="http://www.gnome.org/">GNOME</A> project is working on GNOfin and GNUcash
for personal accounting. However I doubt those are
ready for use as general purpose accounting and
billing applications. There is the AppGen commercial
accounting package for Linux (*) which might be
overkill for your needs.
</BLOCKQUOTE>
<BLOCKQUOTE><UL><LI>
(<A HREF="http://www.appgen.com/linux.html"
>http://www.appgen.com/linux.html</A>)
</UL></BLOCKQUOTE>
<BLOCKQUOTE>
Unfortunately there isn't a "Quickbooks" for Linux,
yet. Here's one place to look for some of the
financial applications that exist for Linux:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
LinuxStart
<DD><A HREF="http://www.linuxstart.com/applications/finance.html"
>http://www.linuxstart.com/applications/finance.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... and a couple of my favorites:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Christopher B. Browne's
<DD><A HREF="http://www.hex.net/~cbbrowne/finances.html"
>http://www.hex.net/~cbbrowne/finances.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... and
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Linas Vepstas
<DD><A HREF="http://linas.org/linux"
>http://linas.org/linux</A>
</DL></BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I dont know anyone who uses the os and want to know how to make an
informed decision.
</STRONG></P>
<P><STRONG>
Thank You
William Daniels
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I see by your phone number that you're in the
415 area code. (As always I've removed all addressing
and personal information beyond your name from the
quoted portions of your e-mail; I don't let those get
published in my column).
</BLOCKQUOTE>
<BLOCKQUOTE>
You're in the perfect location to visit Linux user's
groups to meet lots of people who use Linux. You can
visit SVLUG (<A HREF="http://www.svlug.org"
>http://www.svlug.org</A>) and BALUG
(<A HREF="http://www.balug.org"
>http://www.balug.org</A>) to find out the details about
when and where the have their meetings.
</BLOCKQUOTE>
<BLOCKQUOTE>
SVLUG meets next Wednesday (first Wednesday of every
month). The February meeting will probably be a bit
less well attended than usual --- many bay area Linux
users will be in New York at the LinuxWorld Expo.
However, there will probably still be over 100 people
there. (Their meetings are usually twice that).
</BLOCKQUOTE>
<BLOCKQUOTE>
BALUG is held on the third Thursday of the month
at the Four Seas restaurant in San Francisco's
chinatown.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can find out more than you'd ever want to know
about Bay Area (and Silicon Valley) Linux events at
<A HREF="http://www.linuxmafia.com/bale"
>http://www.linuxmafia.com/bale</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
(Note: Installfests are events where Linux geeks like
me get together and help new users install Linux
unto their systems and configure them for your use.
That's one of the nice benefits of using a free
operating system --- we can help one another without
concerns about software piracy interfering with our
fun).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 21 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 21 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Tuesday, Thursday...</H3>
<p><strong>From Tim Moss on Sun, 20 Feb 2000
</strong></p>
<P><STRONG>
Jim Dennis wrote:
</STRONG></P>
<!-- ::<BlockQuote>
Accupuncturist Filmaker Hates Fascist MS Products
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</BlockQuote>:: -->
<P><STRONG><FONT COLOR="#000066"><EM>
BALUG is held on the third Thursday of the month
at the Four Seas restaurant in San Francisco's
chinatown.
</EM></FONT></STRONG></P>
<P><STRONG>
Tim Moss says:
<br>Shouldn't that be 3rd Tuesday?
</BlockQuote></STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Yep! 3rd Thursday is <a href="http://www.baylisa.org/">BayLISA</a>
(Bay Area Large Installation Systems Administration: a predecessor
to <a href="http://www,usenix.org/sage/">SAGE</a>, the SysAdmin's Guild).
</BLOCKQUOTE>
<BLOCKQUOTE>
I sometimes get them confused, though my PalmPilot
reminds me of the right meeting dates. I have
a pair of periodic reminder for each (previous and
same day for each).
</BLOCKQUOTE>
<BLOCKQUOTE>
That's two you've caught me on this month. Want
a job as "assistant editor"?
</BLOCKQUOTE>
<BLOCKQUOTE>
(The pay is non-existent, but we have the benefits to
match!)
</BLOCKQUOTE>
<em><p>[ Tight deadlines R us! For those who may be wondering who
this fellow is, he's a work colleague of Jim's who has
had a chance to see some of these ahead of time. I do
attempt to clean up little details like that during
processing. <img src="../gx/dennis/smily.gif" alt=":)"
align="top">
<br>-- Heather ]</p></em>
<!-- sig -->
<!-- end 21 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/22"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 22 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Installing a POP Daemon on Red Hat Linux</H3>
<p><strong>From Hongwei Li on Mon, 31 Jan 2000
</strong></p>
<P><STRONG>
Hi Jim,
</STRONG></P>
<P><STRONG>
Thank you very much! I did the following as you advised, but still failed:
</STRONG></P>
<!-- ::<BlockQuote>
Installing a POP Daemon on <A HREF="http://www.redhat.com/">Red Hat</A> Linux
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</BlockQuote>:: -->
<P><STRONG><FONT COLOR="#000099"><EM>
<BR>Hi,
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000099"><EM>
<BR>I recently installed RedHat 6.0 and 6.1 on two machines,
<BR>respectively. Everything looks working except that users can not
<BR>access their e-mail accounts on these two servers from PC Windows
<BR>using Netscape Mail or MS Outlook Express although they can access
<BR>the e-mails using telnet, pine. Apparently, POP3 daemon is not
<BR>working on these two RH Linux boxes.
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000099"><EM>
<BR>Somebody said I can retrieve POP3 daemon from IMAP package. But,
<BR>I don't know where it is and how to do it. Could you help me?
<BR>How to check the system if POP3 daemon is installed and working?
<BR>Where can I get IMAP package and retrieve POP3 daemon, then
<BR>installed it and let it run? or should I get something else?
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000099"><EM>
<BR>I would greatly appreciate your help!
<BR>Hongwei Li
</EM></FONT></STRONG></P>
<blockquote><strong><FONT COLOR="#000066"><EM>
Your "somebody" is a smart cookie. You sould listen
to him or her. However, you might ask him (or her) for
a wee bit more detail.
</EM></FONT></STRONG></blockquote>
<P><STRONG>
-- He/she sent me the first advice, but didn't explain further after I asked
in more detail. So, I could not do anything until I received your help.
</STRONG></P>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
Red Hat inexplicably puts their POP and IMAP daemons
in the same file. You can install them using
something like the following procedure:
</EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
1) Mount your RH Linux CD (disc #1?) using
a command like:
</EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM><BlockQuote><Code>
mount /mnt/cdrom
</Code></BlockQuote></EM></FONT></STRONG></blockquote>
<P><STRONG>
-- I did it.
</STRONG></P>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
2) Go to RPM directory using something like:
</EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM><BlockQuote><Code>
cd /mnt/cdrom/Redhat/RPMS
</code></blockquote></EM></FONT></STRONG></blockquote>
<P><STRONG>
-- then, this.
</STRONG></P>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
3) Install the imap....rpm package using a
command like:
</EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM><BlockQuote><Code>
rpm -Uvh imap*
</Code></BlockQuote></EM></FONT></STRONG></blockquote>
<P><STRONG>
-- then this as:
</STRONG></P>
<P><STRONG>
<tt>rpm -Uvh imap-4.5.3.i386.rpm</tt> (on a RH 6.0 system)
<br>the screen shows:
<br><tt>imap ##....#</tt>
</BlockQuote></STRONG></P>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
... or:
</EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM><BlockQuote>
rpm -i imap*
</BlockQuote></EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
That's basically all there is to it. You can
test for POP installlation/accessibility using a
command like:
</EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM><BlockQuote><Code>
telnet $TARGET 110
</Code></BlockQuote></EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
... where $TARGET is replaced with the hostname or
IP address of the system on which you hope to find
a POP server.
</EM></FONT></STRONG></blockquote>
<blockquote><STRONG><FONT COLOR="#000066"><EM>
If you get a "connection refused" or a "connection
closed by remote host" then you don't have POP installed
properly on the $TARGET system (or you have a firewall,
packet filter, or <TT>/etc/hosts.deny</TT> rule between your client
and the server).
</EM></FONT></STRONG></blockquote>
<P><STRONG>
-- then I try this:
</STRONG></P>
<P><STRONG>
<tt>telnet elyback.wustl.edu 110</tt> from that machine (elyback) and another
Linux system, but got:
</STRONG></P>
<Pre><STRONG> Trying 128.252.85.78...
telnet: Unable to connect to remote host: Connection refused
</STRONG></Pre>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It sounds like you have a more basic networking
problem. Are you sure that you have your IP addresses
and routes set up correctly?
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Then, I reboot the machine (maybe I don't need to reboot, but enter some
other command else?), try it again and still get the same message from that
machine and from another system. I check the <TT>/etc/service</TT> file, it shows
</STRONG></P>
<pre><strong> pop-3 110/tcp # POP version 3
pop-3 110/udp
</strong></pre>
<P><STRONG>
and the <TT>/etc/hosts.deny</TT> file is empty. We don't have firewall.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It's good that you checked that. Actually it's
possible to put deny rules in the <TT>/etc/hosts.allow</TT>
file (or vice versa). When I asked Wietse why he
didn't just change that to <TT>/etc/tcpd.conf</TT> instead of
having two different files who's names are obviously
derived from the name of the utility that references
them (<TT>/sbin/tcpd</TT>).
</BLOCKQUOTE>
<BLOCKQUOTE>
Remember to ensure that you have valid <TT>/etc/hosts</TT>
entries for your two systems. Do a search on my
FAQ or in the Linux Gazette Archives on the string:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
"double reverse lookup"
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... for some long explanations on why this is important.
</BLOCKQUOTE>
<BLOCKQUOTE>
(My first guess would be that you don't have
proper <TT>/etc/hosts</TT> or DNS PTR records for these, and that
your copy of TCP Wrappers may be configured (compiled)
with the -DPARANOID option. Possibly that your
<TT>/etc/hosts.allow</TT> has a PARANOID directive in it).
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
So, it seems that the pop3 daemon is still not working. Is there any other
way to check if it is installed and running after I did the above things?
</STRONG></P>
<P><STRONG>
Could you give me more advice? Thank you!
<br>Hongwei
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The fastest way to get an answer would be to call
<A HREF="http://www.linuxcare.com/">Linuxcare</A>'s tech support number. However, that is not
free. You could keep trying to get me enough information
so that I could find the answer --- but I'm sure you
understand that this might take a long time (I'll be
gone in New York all next week, and in Arizona the
week after that).
</BLOCKQUOTE>
<BLOCKQUOTE>
So, if you need this quickly, and are willing to pay
a little bit to get some handholding consider calling
888-LIN-GURU. Otherwise I'll need to see the output
from the following commands:
</BLOCKQUOTE>
<blockquote><pre> script /tmp/answerguy.capture
ifconfig -a
route -n
netstat -an --inet | grep LISTEN
tail /var/log/messages
exit
cd /tmp
col -b &lt; answerguy.capture &gt; answerguy.txt
</pre></blockquote>
<BLOCKQUOTE>
If you do that correctly you should see a message
like: &quot;Script done, file is <TT>/tmp/answerguy.capture&quot;</TT>
and you should find a reasonably clean copy of the
the captured information in <TT>/tmp/answerguy.txt</TT>
</BLOCKQUOTE>
<BLOCKQUOTE>
(The 'script' or "typescript" command is what
students use to capture there interactive sessions to
files, so they can print their homework assignments.
The col -b command "collates out" the backspaces
and other control characters that might have been
captured along with the text. The other commands are
diagnostics and information gathering, ended by the
exit command to end the typescript session).
</BLOCKQUOTE>
<BLOCKQUOTE>
I'd need these for both of the machines involved.
</BLOCKQUOTE>
<BLOCKQUOTE>
Also see if each system can "ping" the other, and
try running the command:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE><BlockQuote>
tcpdump -n
</BlockQuote></CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... on the server while you are trying to access
the POP service. You should be able to see the
packet headers that tcpdump "sees" as the connection
attempts are made.
</BLOCKQUOTE>
<BLOCKQUOTE>
As I say, if you decide to stick with me it could be
a few weeks before I get back to you (two weeks out
of town and more time to get caught up with my
e-mail backup after that.
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course you can also post this to netnews
(<a href="news:comp.os.linux.networking">comp.os.linux.networking</a>)
or you could subscribe to L.U.S.T. (Linux Users Support Team) which
has a web page at:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
L.U.S.T. Home Page:
<DD><A HREF="http://www.ch4549.org/lust"
>http://www.ch4549.org/lust</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... you can find a list of other support options
at:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Netpedia Linux: Support
<DD><A HREF="http://smalllinux.netpedia.net/links/support.html"
>http://smalllinux.netpedia.net/links/support.html</A>
</DL></BLOCKQUOTE>
<!-- sig -->
<!-- end 22 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 23 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>More on: Installing a POP Daemon on Red Hat Linux</H3>
<p><strong>From Tim Moss on Sun, 20 Feb 2000
</strong></p>
<!-- ::
More on: Installing a POP Daemon on <A HREF="http://www.redhat.com/">Red Hat</A> Linux
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<BLOCKQUOTE>
Tim Moss commented on one reader's apparently unresolved
problem:
</BLOCKQUOTE>
<P><STRONG>
Have him uncomment pop-3 in his <TT>/etc/inetd.conf.</TT> I believe it is
commented out by default in current Red Hat distros.
</STRONG></P>
<P><STRONG>
Hongwei wrote:
</STRONG></P>
<P><STRONG><FONT COLOR="#000099"><EM>
Hi Jim,
<BR>Thank you very much! I did the following as you advised, but still failed:
<BR>Installing a POP Daemon on Red Hat Linux
</EM></FONT></STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Of course I should have added a "check your inetd.conf"
check to my instructions.
</BLOCKQUOTE>
<BLOCKQUOTE>
I have mixed feelings about this change to Red Hat's
default <TT>/etc/inetd.conf.</TT>
</BLOCKQUOTE>
<BLOCKQUOTE>
On the one hand I applaud the advance towards better
security. It's long been a problem in the UNIX world that
companies leave services enabled and insecurely configured
in their call avoidance efforts. Doing the "right thing"
can often result in getting a very large number of technical
support calls, which translates to EXPENSE for the
commercial software vendor.
</BLOCKQUOTE>
<BLOCKQUOTE>
So it's nice that Red Hat is in a business where they can
fix problems like this and not worry about the
consequences.
</BLOCKQUOTE>
<BLOCKQUOTE>
On the other hand I think that it is absurd that they
haven't enhanced their RPM's and package management to
resolve the issue of configuring (and re-configuring)
packages as they are installed and/or after the fact.
</BLOCKQUOTE>
<BLOCKQUOTE>
This is one of those respects in which I prefer <A HREF="http://www.debian.org/">Debian</A>. If
I install a Debian POP server it makes sure that the
inetd.conf is configured to use it. It might ask me if I
want to add an entry to limit the hosts.allow that are
allowed to access this service.
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course Red Hat couldn't simply adopt the Debian strategy.
The Red Hat distributions are geared for an "install
everything" approach. When I try to make an initial
"minimal" installation in Red Hat I find that later efforts
to add packages "as needed" are frought with trips into
"dependency hell."
</BLOCKQUOTE>
<BLOCKQUOTE>
By contrast Debian excels at the minimal installation.
Later addition (and removal) of packages is more robust than
I've seen under any other OS. Dependencies and conflicts
are handled (mostly automatically).
</BLOCKQUOTE>
<BLOCKQUOTE>
(At the same time Debian has room for improvement as well.
I'll save my choice comments for a review of their next
major release).
</BLOCKQUOTE>
<BLOCKQUOTE>
(Incidentally, any reader that writes to suggest using
Linuxconf will get an e-raspberry! I won't even comment on
my experiences with Linuxconf. Ugh!).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 23 -->
<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&#162; Tips!</A></H1> <BR>
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">
gazette@ssc.com
</A></center>
<!-- BEGIN tips -->
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Get a weather report on your desktop
</FONT> </H3>
Sat, 12 Feb 2000 13:08:03 -0500 (EST)
<BR>From: Matthew Willis &lt;<A HREF="mailto:matt@optimus.cee.cornell.edu">matt@optimus.cee.cornell.edu&gt;</A>
<P> On my KDE desktop, I have semi-live satellite images on several of
the pages. I used cron and wget to get the latest weather for my
desktop background. Here's how. First I made a couple of directories
<PRE>
mkdir ~/weather ~/bin/cron
</PRE>
Then in the file ~/bin/cron/hourly.job I did this
<PRE>
#!/bin/sh
W=$HOME/weather
wget http://www.cis.ec.gc.ca/goes/huron_f.jpg \
-O $W/goes_huron_f.jpg
wget http://www.cis.ec.gc.ca/goes/gulf_f.jpg \
-O $W/goes_gulf_f.jpg
wget http://sgiot2.wwb.noaa.gov/COASTWATCH/GOES/G8CWNEVS.GIF \
-O $W/G8CWNEVS.GIF
</PRE>
<P> Then, I made it executable
<PRE>
chmod +x ~/bin/cron/hourly.job
</PRE>
and set up a crontab entry like this, using
<PRE>
crontab -e
</PRE>
and creating this line:
<PRE>
10 * * * * $HOME/bin/cron/hourly.job &gt;&gt; /tmp/out.h 2&gt;&amp;1
</PRE>
then I saved the file and exited.
<P> I used 10 minutes after the hour to avoid a race on the hour.
Finally, you're ready. Give a test with the command:
<PRE>
~/bin/cron/hourly.job
</PRE>
Did it work? If so, let's set up the window manager. If not, you may
not have wget installed. (Note- you can snag wget at
<A HREF="ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/">
ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/</A>)
<P> Setting up your WM:
<DL>
<DT> KDE
<DD> Use kcontrol to change the wallpaper to ~/weather/*****
whatever. You probably want "Centred" arrangement, or "maxpect". If
you uncheck "Common background" you can have different pictures on
each page.<P>
<DT> GNOME
<DD> With GNOME, use gnomecc to set the background image to
something in ~/weather/****.<P>
<DT>Windowmaker
<DD> With windowmaker, you can use wmsetbg ~/weather/*****
to sync a new picture. I'm not too sure you want to do this if you're
logged out though. You could put the line in your cron job if you
want. <P>
</DL>
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Tip: kfmhere
</FONT> </H3>
Mon, 21 Feb 2000 22:15:11 -0500
<BR>From: Pierre Abbat &lt;<A HREF="mailto:phma@oltronics.net">phma@oltronics.net&gt;</A>
<P> Here's a shell script to do the opposite of kfm's File|Open Terminal.
<PRE>
#!/bin/sh
# Opens a kfm window in the current directory.
kfmclient openURL `pwd`
</PRE>
<P> I put it in /opt/kde/bin/kfmhere .
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Info-search tips for Midnight Commander users
</FONT> </H3>
Mon, 31 Jan 2000 14:57:13 -0800
<BR>From: Ben Okopnik &lt;<A HREF="mailto:fuzzybear@pocketmail.com">fuzzybear@pocketmail.com&gt;</A>
<P> Funny thing; I was just about to post this tip when I read Matt Willis' "HOWTO searching script" in LG45. Still, this script is a good bit more flexible (allows diving into subdirectories, actually displays the HOWTO or the document whether .gz or .html or whatever format, etc.), uses the Bash shell instead of csh (well, _I_ see it as an advantage <grin>...), and reads the entire /usr/doc hierarchy - perfect for those times when the man page isn't quite enough. I find myself using it about as often as I do the 'man' command.
<P> You will need the Midnight Commander on your system to take advantage of this (in my opinion, one of the top three apps ever written for the Linux console). I also find that it is at its best when used under X-windows, as this allows the use of GhostView, xdvi, and all the other nifty tools that aren't available on the console.
<P> <A HREF="misc/tips/doc.sh.txt">Here's the script.</A>
<P> To use it, type (for example)
<PRE>
doc xl
</PRE>
<P> and press Enter. The script will respond with a menu of all the /usr/doc subdirs beginning with 'xl' prefixed by menu numbers; simply select the number for the directory that you want, and the script will switch to that directory and present you with another menu. Whenever your selection is an actual file, MC will open it in the appropriate manner - and when you exit that view of it, you'll be presented with the menu again. To quit the script, press 'Ctrl-C'.
<P> A couple of built-in minor features (read: 'bugs') - if given a nonsense number as a selection, 'doc' will drop you into your home directory. Simply 'Ctrl-C' to get out and try again. Also, for at least one directory in '/usr/doc' (the 'gimp-manual/html') there is simply not enough scroll-back buffer to see all the menu-items (526 of them!). I'm afraid that you'll simply have to switch there and look around; fortunately, MC makes that relatively easy!
<P> Oh, one more MC tip. If you define the 'CDPATH' variable in your .bash_profile and make '/usr/doc' one of the entries in it, you'll be able to switch to any directory in that hierarchy by simply
typing 'cd &lt;first_few_letters_of_dir_name&gt;' and pressing the Tab key for completion. Just like using 'doc', in some ways...
<P> Hope this is of help.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Triple booting
</FONT> </H3>
Mon, 14 Feb 100 11:51:22 Australia/NSW
<BR>From: Harry &lt;<A HREF="mailto:hfphillips@iname.com">hfphillips@iname.com&gt;</A>
<P> In a recent two cent tip there was a suggestion to use NT loader to triple
boot, I have another method use lilo.
<P> Install all three OS'es, the order I did it, Win95(FAT32), NT4(NTFS) then linux
(ext2).
<P> Edit lilo.conf and add the following sections:
<PRE>
# Windows 95 stanza
other=/dev/hda1
table=/dev/hda
label=windows
# End Windows 95 stanza
# Windows NT stanza
other=/dev/hda2
table=/dev/hda
loader=/boot/os2_d.b
label=NT
# End Windows NT stanza
</PRE>
<P> Then run lilo and when you can select between the three of them. If you select
NT it then comes up with the NT loader. I have set this to appear for 0 seconds
so that it starts straight away instead of having a menu.
<!-- END tips -->
<P> <hr> <P>
<!--================================================================-->
<H4><font color="maroon">
Tips in the following section are answers to questions printed in the Mail
Bag column of previous issues.
</font></H4>
<!-- BEGIN tips.answers -->
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Driver for ATI Xpert @ Work PCI card (from LinuxGazette)
</FONT> </H3>
Tue, 2 Feb 1999 09:25:01 +0000
<BR>From: Jan-Hendrik Terstegge &lt;<A HREF="mailto:helge@jhterstegge.de">helge@jhterstegge.de&gt;</A>
<P> Hi Mike!
<P> In LinuxGazette #50 you wrote:
<BLOCKQUOTE>
I'm new user and believer of the Linux OS and I need help badly. I'm
looking for a driver for an ATI Xpert@Work 8Mb PCI card. Where can I get it?
I'm using a RedHat 5.2 and my monitor is a Mitsubishi Diamond Scan model
FA3415AT4 [...]
</BLOCKQUOTE>
Configure your display with the help of 'XF86Setup' (you have to write it as
I do, with upper and lower cased letters), or, if it doesn't run the
'xf86config' program.
Try to find your ATI Card, and if you don't, use simply SVGA. Most of cards
which are not listed are standard SVGA Cards (my Matrox Millenium G200 also),
and they run very well with the SVGA driver.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Overclocking a Motherboard? 233Mhz to 450Hmz? (AnswerGuy Gazette issue
50)
</FONT> </H3>
Wed, 02 Feb 2000 10:54:51 -0500
<BR>From: R. Smith &lt;<A HREF="mailto:rsmith13@tampabay.rr.com">rsmith13@tampabay.rr.com&gt;</A>
<BLOCKQUOTE>
<P> Overclocking a Motherboard? 233Mhz to 450Hmz?
<P> From Steve on Fri, 07 Jan 2000
<P> I have a motherboard in my PC that says it has a max processor speed of 233mhz, i did'nt know this when i resently purchased a 450mhz CPU. Is
there any way i can override this issue, my max bus speed is 66.
<P> I wouldn't recommend it. Bare motherboards are not very expensive so you should be able to pick up one for about a $100 or less
that will take the CPU that you got and still allow you to pull in your old DIMMs, and adapter cards from the existing system.
<P> Of course I'd double check the RAM (DIMMs, SIMMs or whatever you've got) and make sure it is fast enough that you aren't wasting the
investment in the new CPU.
<P> Personally I don't recommend CPU upgrades at all. I suggest that people buy the CPU, motherboard, and RAM together, and get them
matched to one another. Also it is quite unlikely that you applications are actually CPU bound. Your CPU investment would probably have
been better spent in extra RAM or a faster controller.
<P> As you say your current motherboard's bus speed is only 66Mhz. You probably want a motherboard that runs at closer to 100Mhz (at least
PC100 RAM). You don't want the CPU sitting there waiting for its own RAM all the time.
</BLOCKQUOTE>
<P> Sometimes it can be done! I just managed to get my old DFI 586STC Rev
D+ motherboard to run an AMD k6-2/400.
<P> The jumper settings for the cpu voltage only went down to 2.5v The K6-2
needs 2.2v. There are three jumpers used to set voltage. I noticed a
binary pattern to the settings suggesting that there are undocumented
settings for: 2.4-2.0v. Following this pattern, I set the jumper for
what should be 2.2v. I installed a K6/300 and turned on the computer.
It fired up fine. I let it run a while and the cpu stayed cool. I now
had a K6/300 running but the bios was saying it was a MMX processor at
50mhz. It was running at 300mhz: Bogomips was 597 which is what it
should be for a K6/300. The K6-2/400 will run at 6x (66mhz times 6x 396mhz) when the multiplier jumpers are set to 2x. I tried that and it
was no go. She wouldn't boot. I put the K6/300 back in and reset the
multiplier jumpers to 4.5x. I went to DFI's web page and downloaded the
latest bios. I flashed the new bios and success, the cpu was now
recognized as a K6/300. So, I put the K6-2/400 back in and set the
jumpers back to 2x. Success again! My old DFI motherboard is now
running at 400mhz. I have SUSE 6.3 on it and it seems rock stable. With
a K6-2/400 selling for under $50 I don't see this as a bad day's work.
However, I WAS prepared to suffer the consequences if this project had
failed! The motherboard was old, retired from service and failure
wouldn't have been that great a lost.
<P> -- <BR>
Rick in Tampa
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Help request send to Linux Gazette
</FONT> </H3>
Wed, 2 Feb 2000 17:21:23 -0600 (CST)
<BR>From: Michael P. Plezbert &lt;<A HREF="mailto:plezbert@cs.wustl.edu">plezbert@cs.wustl.edu&gt;</A>
<P> These are not strictly linux questions, but I'll answer them anyway. :)
<P> On Sun, 16 Jan 2000, Wei Huang wrote
<A HREF="../issue50/lg_mail50.html">(in issue50)</A>:
<BLOCKQUOTE>
<P> sir, I need some help.
<P> Question1,
<P> I wrote a program of showing the contents of other program on the
platform of LINUX,the compiler is g++, but got problems in statement 1
and statement 2.
<P> First,I want to show the sentence in statement 1 ahead of the body
of file being showed,but it can't appear in the proper position.I mean
I want the program running like this:
</BLOCKQUOTE>
<P> This is caused by buffering being done in the C++ stream library. To get
the result you desire, you just need to flush the stream before writing
directly to stdout. In other words, just put the statement
"cout.flush();" right after statement 1.
<BLOCKQUOTE>
<P> I don't why,how can it be corrected. Second,I had believed the
statement 2 is illegal in grammar.Because if you define an array, char
buffer[BufferSize] ,the BufferSize indicate the number of elements in
array and should be a constant or at least be a const variable,and it
can't be a variable, otherwise the program cann't be compiled. But the
fact is this program is compiled smoothly and functions normally. What
is wrong?
</BLOCKQUOTE>
<P> ANSI C++ does not allow this, but g++ does. If you run g++ with the
"-pedantic" flag, it will issue a warning about that statement.
<BLOCKQUOTE>
<P> Question 2, I write a c program. But when compiling, gcc reports
that all the functions with "vga_" profix are undefined,what is the
problem? I had included "vga.h" in my programe as indicated in "man"
help on the usage of either "vga_" function.
</BLOCKQUOTE>
<P> You need to link with the vga library. Just include the flag "-lvga" when
running g++.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">C Programming hints
</FONT> </H3>
Mon, 14 Feb 2000 10:27:02 -0500
<BR>From: Curly &lt;<A HREF="mailto:ocurtin@usa.net">ocurtin@usa.net&gt;</A>
<P> Wei Huang did write an email asking:
<BLOCKQUOTE>
<P> I want to show the sentence in statement 1 ahead of the body
</BLOCKQUOTE>
<P> The two statements in your code:
<PRE>
cout&lt;&lt;"\nThis is the body of file.\n";
</PRE>
and
<PRE>
write(1,buffer,sizeof(buffer));
</PRE>
<P> are using two different methods of writing to the terminal.
<P> The C++ statement "cout" uses a buffer inside your program to
collect individual output statements into a larger block. When
your program writes "\nThis is the body of file.\n" the first
time, it goes into the buffer. When it writes the same line
again,
it gets added to the buffer. Finally, when your program ends (or
if the buffer gets full) then the contents of the buffer are sent
to the screen.
<P> The kernel call "write" has very different behavior. This uses
the method that cout uses when it writes the buffer to the screen.
When you call "write", your program does not continue until the
data has been written.
<P> Since the "cout" library call buffers data inside your program
and the "write" kernel call does not, then the strings you "write"
will usually arrive on your screen before the strings you "cout".
<P> The solution is to use one method for writing strings throughout
your program rather than mix different methods. For almost all
programs, "cout" is a better choice than "write". Do some more
reading about the C/C++ library. A good place to start is your
Linux system, where you can type `info libc`.
<P> In your second question:
<BLOCKQUOTE>
gcc reports that all the functions with "vga_"
profix are undefined,
</BLOCKQUOTE>
<P> the message "undefined reference to ..." comes from the linking
phase of the compile. That is, the compiler has already
translated your code into machine language, and is now trying
to find the library routines needed to run the program. Vga
programming is not a standard thing, so you have to tell the
compiler which library to look into. Add the compiler option
"-lvga" to your command line.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Upgrading to shadow passwords
</FONT> </H3>
Wed, 2 Feb 2000 17:31:56 -0600 (CST)
<BR>From: Michael P. Plezbert &lt;<A HREF="mailto:plezbert@cs.wustl.edu">plezbert@cs.wustl.edu&gt;</A>
<P> On Fri, 28 Jan 2000, oliver cameron wrote:
<BLOCKQUOTE>
I am running RH 4.2 and I need to convert my existing etc/passwords file
to the shadow passwords format used on a new RH 6.1 installation. Can
anyone give me a simple explanation of how to do this? Any help would be
greatly appreciated.
Many thanks in advance, Oliver.
</BLOCKQUOTE>
<P> Redhat 6.1 comes with utilities for converting to and from shadow files.
<P> "man pwconv" should give you a description.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">dual booting NT and linux
</FONT> </H3>
Thu, 03 Feb 2000 22:30:06 +0000
<BR>From: Clive Wright &lt;<A HREF="mailto:clive_wright@telinco.co.uk">clive_wright@telinco.co.uk&gt;</A>
<P> I am not familiar with Norton Ghost; however I have been
successfully dual booting NT 4 and versions of linux
(currently Redhat 6.0) for the past year.
<P> First let me refer you to the excellent article on
multibooting by Tom de Blende in issue 47 of LG. Note step
17. "The tricky part is configuring Lilo. You must keep Lilo
OUT OF THE MBR! The mbr is reserved for NT. If you'd install
Lilo in your mbr, NT won't boot anymore".
<P> As your requirements are quite modest they can easily be
accomplished without any third party software ie.
"Bootpart".
<P> If NT is on a Fat partition then install MSdos and use the
NT loader floppy disks to repair the startup environment. If
NT is on an NTFS partition then you will need a Fat
partition to load MSdos. Either way you should get to a
stage where you can use NT's boot manager to select between
NT and MSdos.
<P> Boot into dos and from the dos prompt: "copy bootsect.dos
*.lux".
<P> Use attrib to remove attributes from boot.ini "attrib -s -h
-r boot.ini" and edit the boot.ini file; after a line
similar to C:\bootsect.dos="MS-DOS v6.22" add the line
C:\bootsect.lux="Redhat Linux".
<P> Save the edited file and replace the attributes.
<P> At the boot menu you should now have four options: two for
NT (normal and vga mode) and one each for msdos and Linux.
To get the linux option to work you will have to use
redhat's boot disk to boot into Linux and configure Lilo.
Log on as root and use your favorite text editor to edit
/etc/lilo.conf. Here is a copy of mine:
<PRE>
boot=/c/bootsect.lux
map=/boot/map
install=/boot/boot.b
prompt
timeout=1
image=/boot/vmlinuz-2.2.14
label=linux
root=/dev/hda5
read-only
</PRE>
<P> It can be quite minimal as it only has one operating system
to boot; there is no requirement for a prompt and the
timeout is reduced to 1 so that it boots almost immediately
without further user intervention. If your linux root
partition is not /dev/hda5 then the root line will require
amendment.
<P> I mount my MSdos C: drive as /c/ under linux. I am sure
this will make some unix purists cringe but I find C: to /c
easy to type and easy to remember. If you are happy with
that; then all that is required is to create the mount
point, "mkdir /c" and mount the C: drive. "mount -t msdos
/dev/hda1 /c" will do for now but you may want to include
/dev/hda1 in /etc/fstab so that it will automatically
mounted in the future; useful for exporting files to make
them available to NT.
<P> Check that /c/bootsect.lux is visible to Linux "ls
/c/bootsect*"
<PRE>
/c/bootsect.dos /c/bootsect.lux
</PRE>
<P> Then run "lilo"
<PRE>
Added linux *
</PRE>
<P> Following an orderly shutdown and reboot you can now select
Redhat Linux at NT's boot prompt and boot into Linux.
I hope you find the above useful.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Linux-compatible modems.
</FONT> </H3>
Fri, 4 Feb 2000 04:24:19 -0800 (PST)
<BR>From: Ron Poulton &lt;<A HREF="mailto:thok@surrey1.bc.wave.home.com">thok@surrey1.bc.wave.home.com&gt;</A>
<P> Any modem that is not a WinModem is Linux-compatible, in a nutshell. Why?
<P> A normal modem has two components:
<UL>
<LI> the basic analog-to-digital conversion to convert whatever you want to
send or receive into signals that can be sent on a phone line.
<LI>extra junk due to compression (to make it transfer at 56K like it should),
error correction (so that your download doesn't end up messed up due to
phone line problems), interpreting commands and other neat things.
</UL>
<P> WinModems (or "software based modems") require that your dialer program
handle the second part up there about compression and error correction. This
means that the manufacturer only has to implement the first feature, and
therefore means it's cheaper to produce. MUCH cheaper.
<P> Although there are whispers in the shadows about future WinModem compatibility
within Linux, this feature doesn't exist. It's always better to go for a
hardware-based modem anyway, because that means your dialer doesn't have to
do all the work, which means your programs may run faster.
<P> This entails the basics. Check out http://www.56k.com/winmodem.shtml for more
technical information.
<P> Again, if it's not a WinModem, it's Linux compatible. I use an Aopen 56K
modem and it works beautifully.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">samba, sharing home directories article
</FONT> </H3>
Fri, 4 Feb 2000 09:04:30 -0500 (EST)
<BR>From: F D Jones &lt;<A HREF="mailto:mrj@magicnet.net">mrj@magicnet.net&gt;</A>
<P> fyi -
<P> For small networks that include both encrypted and
unencrypted password clients (wfwg3.1, 95, 98, nt), you can
customize the [global] settings on a machine-by machine basis to
accommodate both.
<P> If the majority of your systems are encrypted, but you have
two exceptions maca and macb, set up your smb.conf to use encrypted
passwords in the [global] section, then, also in your [global]
section put the following:
<PRE>
include = /usr/local/samba/lib/smb.conf.%m
</PRE>
<P> Then create mini-configs /usr/local/samba/lib/smb.conf.maca
and /usr/local/samba/lib/smb.conf.macb which contain
<PRE>
[global]
encrypt passwords = no
</PRE>
<P> Now all machines on the network will connect with samba
using encrypted passwords EXCEPT maca and macb.
<P> If the majority of systems on your network are unencrypted,
do the reverse, setting the smb.conf global encryption off and
using encryption on a machine-by-machine basis.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">2 cents entry: Microsoft Cordless Wheel Mouse
</FONT> </H3>
Sun, 6 Feb 2000 14:54:20 -0500 (EST)
<BR>From: Lee Sonko &lt;<A HREF="mailto:sp1@swiftmail.com">sp1@swiftmail.com&gt;</A>
<P> Getting a PS/2 Microsoft Cordless Wheel Mouse working correctly under X-windows
takes a litte bit of tweaking.
<P> In the Pointer Section of /etc/X11/XF86Config, set the following:
<PRE>
Protocol "MouseSystems"
Device "/dev/gpmdata"
</PRE>
<P> Then, make your gpm start like so:
<PRE>
gpm -R -t imps2
</PRE>
<P> You should be all set.
<P> To explain:
-gpm's "-t imps2" option reads the mouse input as if it were a "Microsoft
Intellimouse (ps2) - 3 buttons, wheel unused".
-Then gpm's "-R" option pushes mouse output to /dev/gpmdata in the
"MouseSystems" format.
-So you have to set X-windows to read the new device in the new format.
<P> You can also control mouse speed and acceleration and other things from
gpm. Check it out.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Norton Ghost/LILO problem
</FONT> </H3>
Mon, 7 Feb 2000 11:43:36 +0100
<BR>From: &lt;<A HREF="mailto:irado@unforgettable.com">irado@unforgettable.com&gt;</A>
<P> Ted Wood &lt;ted_wood@hotmail.com&gt; asked:
<BLOCKQUOTE>
I'm trying to create a dual boot image with Redhat and NT Workstation. I'm
using Norton ghost version 6 to create the image. It will ghost fine but
after ghosting, lilo comes up as "LI" only. The problem is fixable by
booting to the Linux floppy and rerunning Lilo which rewrites the mbr. After
that everything is great, but why won't Lilo work properly the first time?
I've searched Symantec's page and I've tried the switches but they all
result in the same problem. Please Help!
</BLOCKQUOTE>
<P> it is better to use the Fips32 - available from your /dosutils distro
cd-rom. Please, *read carefully* all instructions there - it can damage
your data (and will surely do it) if not adequately utilized.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Win95-Linux small network with null modem
</FONT> </H3>
Mon, 7 Feb 2000 11:48:28 +0100
<BR>From: &lt;<A HREF="mailto:irado@unforgettable.com">irado@unforgettable.com&gt;</A>
<P> Wagner Perlino &lt;wagner.perlino@edb.ericsson.se&gt; asks:
<BLOCKQUOTE>
I am trying to build a small network at home with one Linuxbox and another
Win95/Win98 box. I have no printer, but I would like to share files and use
my Linuxbox as a gateway to the internet so that both boxes can use one
single dial-up connection AT THE SAME time. Is there any link or suggestion
for this type of connection ?
</BLOCKQUOTE>
hmm.. suggest you to buy 2 nic's. Even a good tulip 10/100 is cheap.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Partiton Magic 5.0 and Linux Installation
</FONT> </H3>
Mon, 7 Feb 2000 11:59:06 +0100
<BR>From: &lt;<A HREF="mailto:irado@unforgettable.com">irado@unforgettable.com&gt;</A>
<P> &lt;abc@abc.com&gt; asks:
<BLOCKQUOTE>
<P> I have a new DELL with 13 GB hard-disk running windows98 second edition.
<P> I bought Partition Magic 5.0 to create couple logical drives and Linux
Native and Swap Partitions.
<P> I am trying to install RedHat 5.2 using a bootable disk and a CD -ROM.
<P> For some reason, neither disk-druid nor fdisk (in-built) recognizes my
Logical Partitions.
<P> On the Blue screen (driver information) it says:
<PRE>
/hda1 &lt;size&gt; Win95 FAT 32
/hda2 &lt;size = 13 GB - size of C drive&gt; 0x0f (blank in type field)
</PRE>
<P> That means, the installation process does not know there are couple of
Logical Drives and also a Linux Native and a Swap Partitons. What does 0x0f
type means ?
<P> fdisk however shows there are partitions on MS-DOS propmt but installation
program can not recognize them !
<P> Is there anything I am doing wrong ? Any suggestions ?
</BLOCKQUOTE>
<P> friend:
<P> a) linux doesnot work on fat32 - neither NT, btw ;-)
<P> b) first convert all your hd to fat16. As it means that you will lost all
of your data, first make a good backup
<P> c) with fdisk (M$-dos) make a single partition for your win-xx. The
remaining hd must be ignored.
<P> d) try again with cfdisk or d-druid.
<P> ah: throw the Partition magic thing. If needing, use fips
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">re:Question
</FONT> </H3>
Mon, 7 Feb 2000 12:10:16 +0100
<BR>From: &lt;<A HREF="mailto:irado@unforgettable.com">irado@unforgettable.com&gt;</A>
<P> Dina Yazbeck &lt;dina.yazbeck@spacecom1.com&gt; asks:
<BLOCKQUOTE>
I am basically trying to host a domain and have all the e-mails of the users
of this domain (remotedomain.com) sent to one particular Mailbox (such as
remotedomain@myisp.net). This is straightforward. Assuming that the remote
domain machine (LINUX) polls the ISP server. What is the procedure to use to
retrieve this mail and distribute it to the respective mailboxes of the
users? Do I have to use procmail? Is fetchmail sufficient for distributing
the mail? Waiting for your reply.
</BLOCKQUOTE>
<P> There is a very good
<A HREF="../issue45/pollman/mail.html">article</A> on this matter from j.pollmann:
linux gazette, issue 45. Also read the FAQ's at
<A HREF="http://www.sendmail.org">www.sendmail.org</A>, where
you will find many tips and hints on this. Also your distribution (howto/mini)
must have something about - think that it is called "queue mail" or something
similar there.
<P> Here things are working 100%, *after* I followed the a.m. instructions.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">re: 2 quick questions
</FONT> </H3>
Mon, 7 Feb 2000 12:15:41 +0100
<BR>From: &lt;<A HREF="mailto:irado@unforgettable.com">irado@unforgettable.com&gt;</A>
<P> glitch &lt;pidpot@freewwweb.com&gt; asks:
<BLOCKQUOTE>
I would like to ask for a QUALITY set of general instructions on how
to install things i download off the internet such as
</BLOCKQUOTE>
<P> just use webmin (www.wbmin.com). It is GREAT, and will administer
EVERYTHING in your box (and network), including samba and NIS.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Foreign-language questions
</FONT> </H3>
Mon, 7 Feb 2000 13:46:00 -0700
<BR>From: Simeon ben Nevel &lt;<A HREF="mailto:snevel@sonic.net">snevel@sonic.net&gt;</A>
<P> Gabriel Ramiro Ferro &lt;gferro@gamma.com.ar&gt; wrote:
<BLOCKQUOTE>
<P> Subject: Desde Argentina
<P> Perd&oacute;n pero no manejo el ingles, lo que desear&iacute;a es que me
informen como adquirir los CD de Linux en forma gratuita Desde ya
muchas gracias.
</BLOCKQUOTE>
<P> Babelfish translation:
<BLOCKQUOTE>
<P> Subject: From Argentina
<P> Pardon but nonhandling ingles, which would wish is that they inform
to me like free acquiring the CD of Linux From already
thank you very much.
</BLOCKQUOTE>
<P> Just for grins, I decided to run <A HREF="http://babelfish.altavista.com/">
babelfish</A>
on Gabriel's letter to the LinuxGazette. While Babelfish doesn't do
a very "good" translation, you can usually get the gist of the message.
<P> Gabriel and I have since exchanged a number of e-mails all translated thru
babelfish.
<P> I found a number of Spanish language Linux resources and no less than 3
Argentine LUGs that I pointed him to.
<P> A copy of the latest Linux/Redhat/Mandrake distribution is on its way to
him.
<P> Trying to help someone when there is no language in common was a fun and
enlightening experience. I hope other Gazetteers give it a try!
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Screen "Camera" for linux
</FONT> </H3>
Thu, 10 Feb 2000 10:53:52 -0700 (MST)
<BR>From: Michael J. Hammel &lt;<A HREF="mailto:mjhammel@graphics-muse.org">mjhammel@graphics-muse.org&gt;</A>
<P> Thus spoke Shawn Medero
<BLOCKQUOTE>
It captures motion on the computer desktop . .basically multiple
screen-captures tied together to form a movie of sorts. Primarly one would
use to create training demostrations on linux applications, etc.
</BLOCKQUOTE>
<P> Sorry to take so long to get back to you. I was out of town.
<P> I don't know of anything that does this for Linux, although there were some
tools for Unix/Motif that did so. I haven't looked at them for quite some
time and can't find any notes on what they were called. My suggestion is
to look at http://www.motifzone.com/. There may be some links there to
help.
<P> The problem, of course, is that these tools will work well with Motif, but
not with Gtk or any of the popular Linux desktops (GNOME, KDE, etc). This
is just one area that hasn't been addressed yet by the Linux marketplace.
<P> At least I don't *think* they will work with Gtk. They work on low level X
events, but don't know how they deal with widget sets, window managers and
desktop environments.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Modems
</FONT> </H3>
Tue, 22 Feb 2000 21:48:30 +0100 (CET)
<BR>From: Roland Smith &lt;<A HREF="mailto:rsmith@xs4all.nl">rsmith@xs4all.nl&gt;</A>
<BLOCKQUOTE>
I am a new user to Linux (Red Hat 6.0). I am currently dual booting
between Windows 95 and Linux and I have a 56K winmodem install. I have
not been able to get this modem to work under Linux. Can you suggest a
good modem to upgrade to? Preferably one that will work under both my
Linux and Windows installations.
</BLOCKQUOTE>
<P> The only modem that is certain to work is an external one, connected via a
serial cable.
<P> Otherwise a internal ISA (not PCI!) modem might work, preferably not a
plug-and-pray model. If you can get a modem that can be configured via
dip-switches, that should work.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Users required to enter root-password? Red Hat 6.1
</FONT> </H3>
Tue, 22 Feb 2000 22:01:01 +0100 (CET)
<BR>From: Roland Smith &lt;<A HREF="mailto:rsmith@xs4all.nl">rsmith@xs4all.nl&gt;</A>
<BLOCKQUOTE>
<P> I have just installed version 6.1 and set up my modem to dial out to my
ISP. However, when I log on as a user and press KDE-&gt;Internet-&gt;kppp a
pop-up box opens up and wants me to enter the root-password! This does
not seem right. is there a way to avoid having to enter the root pass
word when logged on as a non-root user?
</BLOCKQUOTE>
<P> This is probably related to the permissions of the serial port that your
modem is using.
<P> For instance my modem is /dev/modem. This is a symbolic link:
<PRE>
rsmith@aragorn:~$ ls -l /dev/modem
lrwxrwxrwx 1 root root 10 Nov 28 1998 /dev/modem -&gt; /dev/ttyS2
</PRE>
<P> Now for the permissions on this device:
<PRE>
rsmith@aragorn:~$ ls -l /dev/ttyS2
crw-r----- 1 root dialout 4, 66 Feb 22 21:24 /dev/ttyS2
</PRE>
<P> So only the owner [root] has read/write acess [cRW-r-----], and the group
has read access [crw-R-----]. Your setup is probably similar.
<P> So you can do a chmod (see `man chmod') to grant wider access to the
device. This can be done in two ways.
<P> - You can give read/write access to the group that owns the device (in my
case dialout), and make yourself a member of the relevant
group.
- Alternatively you can give read/write access to everybody.
<P> Both of these approaches have security implications on a multi-user
machine.
<P> Another approach could be to make pppd setuid root. That means that pppd
assumes the identity of root even if you start it as a normal user. I would
not reccommend this. These suid programs can be a major security risk.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Display support
</FONT> </H3>
Tue, 22 Feb 2000 22:10:46 +0100 (CET)
<BR>From: Roland Smith &lt;<A HREF="mailto:rsmith@xs4all.nl">rsmith@xs4all.nl&gt;</A>
<BLOCKQUOTE>
<P> I am trying to run Linux on a system with a NEC Multisync monitor. Where
can I find a driver Or what monitor should I use.
</BLOCKQUOTE>
<P> The X Window System doesn't use a monitor driver as such.
<P> Information about the monitor's characteristics should be entered in the
configuration file for the X server program, usually /etc/X11/XF86Config.
<P> Some tools like xconfigurator or xf86config can help you with this. Your
monitor might even be in their database. The X server distribution XFree86
also comes with a list of so-called modelines for lots of monitors.
<P> Alternatively you can use the following example:
<PRE>
Section "Monitor"
Identifier "SAM M174"
VendorName "S.A.M. GmbH"
ModelName "M174"
HorizSync 30-64
VertRefresh 47-100
Gamma 1.2
Mode "640x480@72Hz" # Standard VESA
DotClock 31.5
HTimings 640 664 704 832
VTimings 480 489 492 520
EndMode
Mode "800x600@72Hz" # Standard VESA
DotClock 50
HTimings 800 856 976 1040
VTimings 600 637 643 666
Flags "+HSync" "+VSync"
EndMode
Mode "1024x768@70Hz" # Standard VESA
DotClock 75
HTimings 1024 1048 1184 1328
VTimings 768 771 777 806
Flags "-HSync" "-VSync"
EndMode
EndSection
</PRE>
<P> It is the "Mode"'s that you want. All VESA compliant monitors should
support these modes. Note that you have to look-up the "HorizSync" and the
"VertRefresh" in your monitor's documentation.
<P> For more in-depth information, see the XFree86-Video-Timings-HOWTO
(usually in /usr/doc/HOWTO/XFree86-Video-Timings-HOWTO.gz)
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: X won't start
</FONT> </H3>
Tue, 22 Feb 2000 22:24:21 +0100 (CET)
<BR>From: Roland Smith &lt;<A HREF="mailto:rsmith@xs4all.nl">rsmith@xs4all.nl&gt;</A>
<BLOCKQUOTE>
I Have Reacently Installed LINUX on an Dell OptiPlex GX110 PentiumIII that
I bought. I can boot up an login into root but when i issue the command
<CODE>startx</CODE> to get X to start this is what i get:
<PRE>
execve failed for /ect/X11/X (errno 2)
</PRE>
and then
<PRE>
_X11TransSocketUNIXConnect: Can't Connect: errno = 2
</PRE>
then
<PRE>
Giving up
</PRE>
and Finally I wonderered if anyone could help a LINUX newbie.
</BLOCKQUOTE>
<P> Your X installation has not been finished. This is/was a common problem
with Red Hat and probably other distro's
<P> Basically, /etc/X11/X is a symbolic link to the real X server (that usually
lives in /usr/X11R6/bin/.
<P> In your case the link probably doesn't point to the right file.
<P> Try configuting X again (using whatever program you used for that) or make
a link using `ln -s' to the appropriate server.
<P> <hr> <P>
<!--================================================================-->
<a name=""></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Outgoing mail problem
</FONT> </H3>
Tue, 22 Feb 2000 22:46:59 +0100 (CET)
<BR>From: Roland Smith &lt;<A HREF="mailto:rsmith@xs4all.nl">rsmith@xs4all.nl&gt;</A>
<BLOCKQUOTE>
<P> We are attempting to set up our linux machine such that it can used as a
POP server. On a Windoze machine, Eudora software successfully retrieves
email from the machine. However, when we try to send email through the
linux machine, the email bounces back.
By the way, using email tools such as pine on the linux machines itself
works fine.
</BLOCKQUOTE>
<P> The mail transfer agent on your Linux box is not configured to send the
mail from the windoze box through. Most mail tranfer agents block relaying
from other machines/domains.
<P> The log files (/var/log/syslog, var/log/messages) should give you an idea
what's wrong.
<P> Read the documentation for the MTA you're using (probably sendmail?) to see
how you should configure it properly for your situation.
<P> You could also ask your local network wizard. :)
<!-- END tips.answers -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">HelpDex</font></H1>
<H4>By <a href="mailto:shane_collinge@yahoo.com">Shane Collinge</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<IMG ALT="HelpDex8.jpg" SRC="gx/collinge/cushion.jpg"
WIDTH="750" HEIGHT="300">
<BR CLEAR="all">
<IMG ALT="agbdab.jpg" SRC="gx/collinge/loonix.jpg"
WIDTH="750" HEIGHT="302">
<BR CLEAR="all">
<IMG ALT="agbdab.jpg" SRC="gx/collinge/surfsup.jpg"
WIDTH="750" HEIGHT="305">
<BR CLEAR="all">
<IMG ALT="HelpDex6.jpg" SRC="gx/collinge/clouds.jpg"
WIDTH="750" HEIGHT="303">
<BR CLEAR="all">
<IMG ALT="HelpDex10.jpg" SRC="gx/collinge/entropy.jpg"
WIDTH="750" HEIGHT="299">
<BR CLEAR="all">
<P> More <EM>HelpDex</EM> cartoons are on Shane's web site,
<A HREF="http://mrbanana.hypermart.net/Linux.htm">
http://mrbanana.hypermart.net/Linux.htm</A>.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Shane Collinge<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">X Stations and Linux</font></H1>
<H4>By <a href="mailto:matt@martine2.difi.unipi.it">Matteo Dell'Omodarme</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<center>
<b>Introduction</b></center><p>
Some years ago, a typical UNIX cluster was composed by an expensive,
powerful server and many cheaper terminals connected to that server.
An example of such a terminal is the IBM X Station.
The hardware of the IBM X Station includes a screen,
keyboard, mouse, some RAM, and jacks for Ethernet cables.
Since they do not have a hard disk or a floppy drive,
they must get the operating system from a host on the net that they are
attached to.
<p>
The aim of a X Station was to provide a terminal optimized for X and
graphics and connected to a
powerful server at low cost. <p>
X Stations depend on a IBM Workstation, as RISC 6000, running AIX OS. The <em>X
station manager</em> package, released with this OS, contains the
software needed in order to make X Stations boot from network and then
run the X interface.
Managing several X Stations from a RISC 6000 server is a quite easy
job; can we do the same thing from a Linux box? The main reason to do
such work are hardware failures of the IBM server since RISC Workstations
are expensive (much more than a PC). <p>
This article shows how to configure a Linux box in order to provide to
X Station 120 and X Station 130 all the information needed to boot
and work properly.<p>
<center>
<b>Configuring the Linux box</b></center><p>
There are 5 different steps to accomplish before you can successfully
start a X Station from Linux:
<ol type=1>
<li> Get boot files for X Stations from the IBM RISC 6000
<li> Get fonts for X Stations from IBM RISC 6000
<li> Configure Linux bootpd daemon
<li> Configure Linux tftp daemon
<li> Configure Linux xdm daemon
</ol>
Let's inspect each step in greater detail.<p>
<center>
<b>Getting boot files</b></center><p>
All the boot files for your X
Stations are in the directories <code>/etc/x_st_mgr</CODE> and
<CODE>/usr/lpp/x_st_mgr</CODE> in the AIX installation backup.
Restore the backup in your Linux box (in the following we presume you
restored the backup in the same directories as the AIX installation).<p>
You don't need all the files; but a minimal installation must contain:
<pre>
/etc/x_st_mgr/120 link to /usr/lpp/x_st_mgr/bin/bootfile3
/etc/x_st_mgr/120.cf configuration file, see below
/etc/x_st_mgr/bootfile3.cf copy of 120.cf
/usr/lpp/x_st_mgr/bin/bootfile3 boot file X Station 120
/usr/lpp/x_st_mgr/bin/x11xor3.out X server
/usr/lpp/x_st_mgr/bin/rgb.txt color descriptor database
</pre>
for X Station 120, and:
<pre>
/etc/x_st_mgr/130 link to /usr/lpp/x_st_mgr/bin/bootfile4
/etc/x_st_mgr/130.cf configuration file, see below
/etc/x_st_mgr/bootfile4.cf copy of 130.cf
/usr/lpp/x_st_mgr/bin/bootfile4 boot file X Station 130
/usr/lpp/x_st_mgr/bin/x11xor4.out X server
/usr/lpp/x_st_mgr/bin/rgb.txt color descriptor database
</pre>
for X Station 130.<p>
The file 120.cf contains the names of the files needed by X Station
120 during the boot process. An example of its structure is:
<pre>
/usr/lpp/x_st_mgr/nls/keymap
/usr/lpp/x_st_mgr/nls/msg
/usr/lpp/x_st_mgr/bin/x11xor3.out
/home/x_st_mgr/lib/fonts,/home/x_st_mgr/lib/fonts/ibm850
/usr/lpp/x_st_mgr/bin/rgb.txt
</pre>
In the file 130.cf the sole change is the line:
<pre>
/usr/lpp/x_st_mgr/bin/x11xor4.out
</pre>
replacing the line of the X server x11xor3.out.<p>
<center>
<b>Setting the fonts</b></center><p>
In the configuration file 120.cf (or 130.cf) the line:
<pre>
/home/x_st_mgr/lib/fonts,/home/x_st_mgr/lib/fonts/ibm850
</pre>
points to the directories where you copied the fonts of the AIX
installation, located in /usr/lib/X11/fonts.
You can freely change the installation directory, but you must be
consistent.<p>
<center>
<b>The bootpd daemon</b></center><p>
When a X Station is switched on it send on the network its Ethernet
address and a request of assistance to accomplish the boot.
During this process on the X Station screen you can see some
informations, as shown below.
<pre>
The IBM Xstation
Version 1.4
(c) Copyright IBM Corporation 1981, 1990
Ethernet Hardware Address 08005A010F33
Ethernet Thick/Thin Thin
BOOTP - 0000 0000 0000 0000
TFTP - 0000 0000 0000 0000
</pre>
First of all
record the <em>Ethernet Hardware Address</em> of the terminal;
this information is needed later. <p>
Turning on the X Station the first number on the BOOTP line starts to
augment: the X Station is sending a request for help on the network.
To respond to that request a computer must have bootpd daemon running
and properly configured, that is have a line in the bootpd
configuration file matching exactly the Ethernet address of the X
Station. <p>
This step is required for X Station 120; a X Station 130 can be a
statically configured to contact the machine which stores the
boot files and font.
This is done in the setup screens which are accessed by
pressing F12 during the boot procedure.
Here you must provide all the boot and IP informations (the informations are
stored in a <em>Non-Volatile RAM</em> subsystem on the X Station)
and disable BOOTP.
In the following we suppose you don't use a static configuration for
your X Station 130.<p>
bootpd daemon is usually located in /usr/sbin/booptd. If you can't
find it here or in similar locations you must get a copy of the
program from the net and follow the installation procedure (this part
is not covered here). <p>
The configuration file for bootpd is /etc/bootptab. Here you must
insert the informations about all X Stations you want to manage from
the Linux box. An example of this file is reported below:
<pre>
# declaration of types
x_st_mgr.120:ht=ether:hd=/etc/x_st_mgr:bf=120:T170=2328:ds=131.114.8.144:gw=131.114.8.129:sm=255.255.255.0:
x_st_mgr.130:ht=ether:hd=/etc/x_st_mgr:bf=130:T170=2328:ds=131.114.8.144:gw=131.114.8.129:sm=255.255.255.0:
# X Stations
astr12pi.difi.unipi.it:tc=x_st_mgr.120:ha=08005A010F1A:ip=131.114.8.236:
astr13pi.difi.unipi.it:tc=x_st_mgr.130:ha=08005A010F33:ip=131.114.8.237:
</pre>
In this file there are two declaration of type (i.e. X Station 120
and X Station 130), with the informations about the related boot
files. The name of the tags are explained below:
<pre>
# hd -- home directory
# bf -- bootfile
# sa -- server IP address to tftp bootfile from
# gw -- gateways
# ds -- DNS
# ha -- hardware address
# ht -- hardware type
# ip -- host IP address
# sm -- subnet mask
# tc -- template host (points to similar host entry)
# hn -- name switch
# bs -- boot image size
# dt -- old style boot switch
</pre>
The other lines are the list of the X Stations managed.
For a X
Station 120 a typical entry begin with the name of that X Station and
refers to tag <em>tc=x_st_mgr.120</em>; the
<em>ha</em> tag must match the Ethernet address you previously recorded and the
<em>ip</em> tag is the IP number corresponding to the X Station.
For a X Station 130 change the tag <em>tc</em> to <em>tc=x_st_mgr.130</em>.<p>
The bootpd daemon is started from /etc/inetd.conf file inserting the line:
<pre>
bootps dgram udp wait root /usr/sbin/tcpd bootpd
</pre>
You can test your Linux bootpd configuration issuing the command:
<pre>
kill -HUP `cat /var/run/inetd.pid`
</pre>
and turning on the X Station. If the BOOTP phase is passed (i.e. the
first number on the TFTP line increases) the bootpd daemon works
properly. <p>
<center>
<b>The tftp daemon</b></center><p>
Now the Linux box can successfully answer to the boot request from the
X Station but it's not able to supply the files the X Station is
asking. To accomplish this process you must install and configure the
tftp daemon (Trivial File Transfer Protocol).
tftp daemon usually resides in /usr/sbin/tftp and can be started from
/etc/inetd.conf inserting the line:
<pre>
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /home/x_st_mgr /etc/x_st_mgr /usr/lpp/x_st_mgr
</pre>
The configuration can be tested restarting inetd:
<pre>
kill -HUP `cat /var/run/inetd.pid`
</pre>
Turning on the X Station the boot process must be successful and after
a short wait on the X Station screen appears a message like this:
<pre>
Copyright 1989, 1994 AGE Logic Inc.
All rights reserved, Release 072594
</pre>
and after another wait the screen becomes grey with a typical cross
cursor in the middle. The X interface is now working. <p>
<center>
<b>The xdm daemon</b></center><p>
The last step is to provide a login mask to the X Station. This is the
job of xdm daemon.
The xdm daemon can be started setting the runlevel 5 in the
/etc/inittab, i.e. in this file you must have the line:
<pre>
id:5:initdefault:
</pre>
Now change directory to /etc/X11/xdm.
If you won't the xdm interface starts automatically on console edit
the file <em>Xservers</em> and comment
the line:
<pre>
:0 local /usr/X11R6/bin/X
</pre>
In the same file add the names of all the X Stations defined above,
as in the example:
<pre>
astr12pi:0 foreign
astr13pi:0 foreign
</pre>
Now edit the <em>xdm-config</em> file and insert the lines:
<pre>
DisplayManager.astr12pi_0.setup: /etc/X11/xdm/Xsetup_astr12pi_0
DisplayManager.astr12pi_0.startup: /etc/X11/xdm/Xstart
DisplayManager.astr12pi_0.reset: /etc/X11/xdm/Xstop
</pre>
where Xsetup_astr12pi_0 is a copy of Xsetup_0, Xstart and Xstop are
links to GiveConsole and TakeConsole. Repeat this operation for all
the X Stations defined.<p>
The last operation is insert a crontab entry which refreshes the xdm
daemon every 1 minute. This step is needed to manage quickly a X Station
when it's switched on. As user root issue the command:
<pre>
crontab -e
</pre>
and insert the line:
<pre>
* * * * * kill -HUP `cat /var/log/xdm.pid`
</pre>
Reboot your Linux box and turn on the X Stations. If all goes OK, the X
stations will boot, start the X server and show the login screen.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Matteo Dell'Omodarme<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">The Story of an Implementation</font></H1>
<H4>By <a href="mailto:jacek@softomat.com.pl">Jacek Kijewski</a><BR>
Translated from the Polish by
<a href="mailto:Pawel.Moszumanski@sobieski.com.pl">Pawel Moszumanski</a><BR>
Originally published in
<A HREF="http://www.linux.com.pl">Linux Plus</A>, February 2000<BR>
<!-- Editor: <A HREF="mailto:artur@software.com.pl">Artur Skura</A> --></EM>
</H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P> The implementation was conducted in Jan III Sobieski Hotel - one of the
biggest, most luxurious and prestigious hotel facilities in Poland. The
hotel offers a wide variety of services, ranging from suite rental,
through restaurants to organisation of conferences.
<P> The hotel has over 400 rooms and employs up to 600 persons. The office
and administration centre is located in a four-story building. The hotel
owns restaurants, underground car park, business centre, pay-TV,
information desks at the airport, etc.
<P> Jan III Sobieski is a giant entity which could be compared to a large
factory. It is operated round-the-clock, as guests do not like to be
kept waiting. Since the prices reflect hotel's high standard, the guests
are keen on getting their money's worth. The expectations with regard to
the computer system are, therefore, very high.
<P> The system has to provide for uninterrupted operation in continuous
traffic. Operating downtimes should be reduced to a minimum, as no time
is available to shut the server down for maintenance. The system should
provide for reliable customer service and ensure that the numerous,
large and critical databases be adequately protected.
<P> The following systems had been in use at Jan III Sobieski Hotel prior to
the network implementation:
<OL>
<LI> The main hotel system developed by a German company operated on HP
UX and alphanumeric terminals. The system supported room reservations,
inventory settlements and accountancy. Its greatest weakness was the inability
to communicate efficiently with taxation modules, as the system supplier could
not keep up with the rapid changes in Polish legislation.
<LI> The office centre was operated in Windows 3.11 and MS Office 4.3
(Word 6.0, Excel 5.0) environment. Since the applications' processing capacity
became insufficient, a decision was made to switch to a 32-bit platform.
<LI> Novell NetWare was the file server.
</OL>
<H1>Why Linux?</H1>
<P> The decision to implement Linux was made in 1998 when communication
problems with the taxation module were aggravated due to frequent
legislative changes. A decision was made to purchase an application
designed by a local provider and offering better support. The hotel
selected HS-Partner and their hotel and restaurant application.
<P> The HS-Partner application (now HS-Partner - Protest) operates on Linux
graphic terminals. The terminal comprises a PC in specialist casing, a
touch-operated LCD display and software: XWindow and specialist
libraries. It is based on QT with a number of adjustments implemented by
HS Partner programmers.
<P> The actual program operates on a server based on the SQL database -
initially PostrgeSQL, now Adabas-D.
<P> The terminals themselves provide for secure operation in the kitchen and
the bar as they are resistant to temperature, humidity and do not need
to be repaired. It is a very important feature in a hotel and restaurant
environment.
<P> The application was implemented in the first half of 1999. The
management decided to switch to a 32-bit platform. The choice was
restricted to two platforms - Windows NT and Linux.
<P> <A HREF="mailto:Pawel.Moszumanski@sobieski.com.pl">Pawel Moszumanski</A>,
a manager of the
IT department and a great Linux enthusiast, played the vital role in the
decision-making process. Being aware of system capabilities as well as
the hotel's operating needs, Moszumanski was able to convince the
management to seriously consider the Linux option.
<P> At that time, our company had already become known for forcing
StarDivision, the developer of the StarOffice package, to enter the
Polish market. We took an interest in StarOffice after we had
experienced difficulty in promoting our Linux solutions. Still, the
customers never ceased to ask the sacramental question: what about Word
and Excel?
<P> StarOffice was the only Linux package which could match Microsoft
solutions. Its operating standards resembled similar solutions developed
by the Redmond company. The only obstacle was the absence of a Polish
distributor and a Polish language version.
<P> After laborious efforts (the Polish market has always been disregarded
by American software developers), our company finally became an official
StarDivision dealer and we could offer solutions based on the system.
Thanks to our PKFL activity and the recommendation of HS-Partner, we
were able to establish contact with Jan III Sobieski Hotel.
<P> The hotel management were faced with a difficult choice - either to
spend a lot of money to develop Windows-based solutions or to acquire a
system whose advantages were recognised only by the professionals
without any marketing support. The main advantage of Linux was its
ability to maintain a uniform system platform, while Windows' strength
laid with its commercial popularity. Still, the numbers were on our
side. The cost of acquiring Windows-based software exceeded the Linux
solution five-fold.
<P> For a large company like Jan III Sobieski Hotel, the cost of acquiring
software is not as important as overall system development costs. As it
turned out, the total software cost was ZERO!
<H1>Let's reduce TCO</H1>
<P> The cost of owning a computer is higher than the actual purchase cost.
The cost of installing 100 computers with NT Workstations would be:
100 (computers) x 2 (hours to install the system, network and
applications) equals the monthly pay of a well-paid computer expert.
<P> Additional costs would have to be incurred with regard to management,
maintenance and support. Jan III Sobieski Hotel is a large facility and
it takes more than a short walk to get from one building to another. A
system requiring less maintenance would be the preferred choice.
<P> The alternative solutions were the Zero Administration Kit, PC Anywhere
and others. Still, they implied additional costs without a guarantee of
proper operation.
<P> All those features were already present in the Linux System. A PC could
be transformed into a practically self-operated terminal, a remotely or
centrally controlled workstation. The high reliability of a Unix class
system also guaranteed safe data processing.
<H1>One Company - One Platform</H1>
<P> The hotel management decided to implement a uniform system platform. A
decision was soon made to introduce the StarOffice package provided that
the HS-Partner system would be successfully implemented. The
implementation was completed in August 1999. The next step was to unify
the system platform. Negotiations were held on involving our company in
the implementation process. Our company had become known for a number of
successful StarOffice implementations based on Linux, for example in
Warsaw's BoatHouse restaurant.
<P> The hotel management take credit for approaching the subject in the most
reasonable way - by stating the requirements and demanding results. They
did not intervene in technical details and provided the programmers with
the freedom to make the right decisions.
<H1>A present from Sun</H1>
<P> At that time, a fee was charged for commercial StarOffice applications.
Even though it was half the price of the MS Office package, we still had
to import it, pay the customs duty, wait and transfer the money.
At low margin levels, it was not a very lucrative undertaking - our
company makes money on implementing, rather than selling software
packages. In the late summer of 1999, StarDivision was taken over by Sun
Microsystems and the StarOffice package became available to the public
for free. We no longer had to waste our time dealing with bureaucratic
chores and we were (and still are) the most competent company
implementing the StarOffice package based on Linux.
<H1>What about the terminals?</H1>
<P> We suggested that Xterminals be used, but the idea was not picked up by
the hotel's IT department. Firstly, the terminals implied additional
costs. The hotel had an adequate PC base and only some of the computers
required upgrading. Secondly, a new server would have to be acquired to
prevent the loss of the system's calculating power on the terminals.
Server capacity was also questioned.
The capacity of the Intel platform and servers with Linux support seemed
limited and other hardware platforms were not an option. The present
solutions ensure adequate processing capacity.
<P> The management decided to postpone the decision on buying terminals
until the existing stations became inadequate. A number of weaker
computers would still have to be configured as Xterminals.
<H1>Setting to Work</H1>
<P> The contract was signed in October and it involved training and system
installation. We had to begin by developing a quick system installation
mechanism.
The company called MandrakeSoft helped by releasing Linux-Mandrake.
This distribution was equipped with the KickStart mechanism which
provided for automatic installation based on previously developed
scripts. Our programmers wrote a set of scripts which installed the
system and the required applications with the developed computer base.
The script would be saved on a floppy disk and run to install the
abridged version of Mandrake, the StarOffice package, configure the
network and printers.
Another set of scripts was used to automatically generate user
configurations. All those tools enabled us to install the system on
workstations practically overnight.
<H1>Technical Aspects of the Configuration </H1>
<P> Workstations with the operating system and the StarOffice application
are installed on the local disk. The users' home directories are
installed from the server with the use of NFS. Authorisation control is
conducted with the use of yp. IPXutils is used to communicate with the
Novell server.
<P> The only problem was NFS. NFS itself is not an optimal solution and is
probably the greatest weakness of Unix systems. The majority of hotel
users frequently browse through directories to find a given file - with
100 logged users, the capacity of the server using nfsd drops below the
allowable level. The Kernel nfsa driver - knfs - was used. At present,
processor load is negligent (the server has two processors) and the
network operates correctly. We did not experience any other
network-related problems. Thanks to remote access, user support became
possible without running from one floor to another.
<H1>Training</H1>
<P> Training sessions were held in the hotel's training room. Two lecturers
trained two groups each. Courses were taught daily - one group in the
morning, the other in the afternoon. The course comprised 24 class hours
on package operation, basic Internet and e-mail skills, etc. The users
did not have any problems with the presented material despite the sudden
change of the working environment. The training session lasted less than
four weeks. Following the course, we provided the users with two weeks
of start-up support - a job well done by Piotr Duszynski.
<P> Most users are not familiar with the specific nature of the Linux system
and the system itself. They use the window manager interface to open
applications such as StarOffice, accounting applications and, in
justified cases, Netscape. Practically none of the users know how to
administer or configure the system, but such skills are not required.
<H1>Present Condition</H1>
<P> The hotel currently relies on the above hotel system and the office
centre operates the StarOffice package. The HP UX accountancy system is
also used. The WWW and e-mail server operates on Linux. The Novell
NetWare system is integrated with Linux using IPXutils tools.
The Windows system is used for pay-TV, which is the only hotel service
that keeps the IT department busy troubleshooting.
<H1>The Story of Success</H1>
<P> The implementation was one of the few stories of success in the Polish
computer industry. I would rather not make any references to major
system failures experienced by large companies, but we tried to steer
clear of the common errors. The hotel management defined the goals and
the programmers developed the right implementation methodology. The IT
department is always short of people during system implementations which
is why we had to resort to outsourcing to a limited extent. Pawel
Moszumanski's managerial skills cannot go unnoticed - he scrupulously
supervised project goals and provided the team with organisational and
technical support. Much of the credit goes to the hotel's staff who
provided us with a friendly and stress-free working atmosphere. We also
received massive support from Arek Podg&oacute;rski, one of the top Linux
administrators and system designers, and Piotr Duszynski, implementation
expert. Lenin's theory that "all depends on the working class" was fully
proven.
<H1>Other Applications</H1>
<P> A business application should be the key feature of a computer system. A
Unix class system proved to be a reliable platform for such
applications. Business applications should be selected to match the
company's operating profile, but the system's open architecture and
stability should also be taken into account. The costs of maintaining
and developing open applications and systems are half of those incurred
in closed systems. Linux and other Unix class systems, such as SCO and
Solaris, provide the perfect solution. The system selected for office
applications should be well integrated with the business application
system. Linux is the best solution in the Unix system category. It
provides for a single stable platform, uniform administration system and
lower costs. Network size is of minor significance - we have implemented
a similar solution (featuring Xterminals) in 5 workstations at Warsaw's
BoatHouse restaurant. A similar method can be applied in a network of
1000 workstations. Unix was developed for large networks, but Linux is
more flexible and can be used in both small businesses and giant
corporations. If its scaling capacity is exhausted, commercial Unix
systems can always be applied.
<P> <EM>Softomat's web site is
<A HREF="http://www.softomat.com.pl">http://www.softomat.com.pl</A>. In the
near future, the company plans to launch a mini service which will discuss
their experience implementing the above as well as other projects.</EM>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Jacek Kijewski (author), Pawel Moszumanski (English translation)<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Tweaking Eterm</font></H1>
<H4>By <a href="mailto:edward_leah@earthlink.net">Edward Livingston-Blade</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
Try this string with <A HREF="http://eterm.sourceforge.net">Eterm</A>:
<P>
<I>Eterm -W -O --shade 60 --home-on-echo no --home-on-input</I>
<P>
Here's the reasoning. Oh, and I'm doing all of this with "Eterm-0.8-9.i386.rpm". If something I do here doesn't work for you, consider the possibility that you're using a newer or (less likely) older version, and that the author(s) has changed something relevant.
<P>
The "-O" gives a pseudo-transparent Eterm. The terminal remembers your wallpaper at the time the terminal was created, though, so if you use any sort of automated wallpaper changer, you're going to end up with the wallpaper one thing and the background on the Eterm another. Same thing if you move the Eterm to a desktop with different wallpaper. The "-W" causes the Eterm to watch the desktop for changes to the wallpaper, fixing this behavior. The "--shade 60" darkens the Eterm's background. This is a big help if you use wallpaper with bright colors... you can shade the Eterm background to the point where you can actually use the terminal. :-) The "60" in "--shade 60" is the percentage amount of shading applied to the background... "0" is no shade, "100" is black. A value of "60" works well for me, you might want to tinker.
<P>
If you are scrolled up in an Eterm window, and the system generates new text, Eterm will automatically scroll you down as far as it can go so that you 1) are made aware that there's new output and 2) can read it immediately. <I>(I should add here that this may just be the default for the Red Hat package I'm using and not the official Eterm download. The man page for Eterm warns that "In keeping with the freedom-of-choice philosophy, options may be eliminated or default values chosen at compile-time, so options and defaults listed may not accurately reflect the version installed on your system". Now, regarding the above-mentioned "jump to bottom on output" feature, that same man page reads as if the option is inactive by default. On my Eterm, it's not... it's active. In fact, the POSIX "-H" option that controls this is useless to me because my Red Hat package Eterm behaves the same way whether "-H" is present or not. :-( So between the man page warning and the behavior I see, I tend to think that my Red Hat package has "-H" on by default.)</I> I don't like this behavior. I've been using "gnome-terminal" for a while, and when you scroll up in a gnome-terminal window, it stays scrolled whether the system is generating new text or not. (Although it WILL <U>appear</U> to be scrolling down as text scrolls up past your point-of-view, displaced by the new text the system is generating. That'll probably make more sense once you've seen it happen.) I like that because, for example, if I'm running a "find" and want to scroll up and examine an old directory listing while the "find" is finding, I don't have to fight the terminal as much to keep my point-of-view on the directory listing. Therefore, "--home-on-echo no". (The long option "--home-on-echo" is equivalent to the POSIX option "-H", but since, as I discuss above, "-H" appears to be compiled into the Eterm Red Hat package, the long option is the only way to turn the option off.) Now, something else weird. Normally, if YOU generate text (rather than the system) while scrolled up in an Eterm window, Eterm will automatically scroll you down so you can read what you're typing. I like this behavior. However, for some reason that's opaque to me, as soon as you use "--home-on-echo no", this behavior stops, and the point-of-view stays where you scrolled it to, whether the system OR you generates new text. It's as if turning "--home-on-echo" off somehow forces "--home-on-input" off as well, even though the latter option had defaulted to "on" previously. Anyway, using "--home-on-input" in the command string reinforces what I want and gets the Eterm back in line.
<P>
<B>correction:</B> Eterm doesn't QUITE mimic the behavior of gnome-terminal, even after these tweaks... when you are scrolled up, gnome-terminal will "lock" the view in place until the buffer fills, then text will scroll. Text in an Eterm window will scroll regardless of the buffer. (Again, that'll probably make more sense once you've seen it happen.) I like gnome-terminal's behavior better, so if anybody knows or can figure out a way to make Eterm work exactly the same, please <A HREF="MAILTO:edward_leah@earthlink.net">let me know</A>.
<P>
I use "ls --color". While the default color choices are fine against a solid background, I find them less than optimal against my wallpaper, even with "Eterm --shade 60". (And much higher than that, and why bother?) So I'm trying to figure out how to tweak the default Eterm colors to get maximum visibility across as much of the enormous range of possible color contrasts brought to my desktop by my collection of wallpaper as I can. I'll swap green and white, as I find that green has better contrast with the rest of the spectrum in general than white. I'll swap the two rather than just changing white to green because files with execute permission are listed in green, and there's no sense in sacrificing that color cue. I'll also lighten the blue, as it's dark enough to have lousy contrast with most of the spectrum. These changes aren't necessarily for everyone... I'm tweaking the Eterm colors so they work better with my eyes when I'm using Eterm's pseudo-transparency feature. You may find that different choices work best for you. Nevertheless, please read on and learn from my mistakes. :-) Lastly, once I've got all this "escape sequences" stuff worked out, I'll probably try something creative with my bash prompt. OK, the first thing that I had a question about is "what are the RGB values for the default Eterm colors"? Here's what I figured out:
<P>
<PRE>Name Code RGB Value Name Code RGB Value
Black 30 000000 Dark Gray 1;30 333333
Red 31 cc0000 Light Red 1;31 ff0000
Green 32 00cc00 Light Green 1;32 00ff00
Blue 34 0000cc Light Blue 1;34 0000ff
Cyan 36 00cccc Light Cyan 1;36 00ffff
Purple 35 cc00cc Light Purple 1;35 ff00ff
Brown 33 cccc00 Yellow 1;33 ffff00
Light Gray 37 faebd7 White 1;37 ffffff</PRE>
<P>
The color names are from /usr/doc/HOWTO/Bash-Prompt-HOWTO.
<P>
I didn't understand at first why it was so difficult to find a list of <B>THE</B> ANSI colors (in RGB) somewhere on the 'net. Now I understand that there IS no <B>THE</B> ANSI colors (at least in RGB). The sixteen ANSI colors appear to be defined simply as "black", "blue", "green", "cyan", etc. and are not defined down at the RGB level at all. I base this conclusion on the fact that gnome-terminal, Eterm and a <A HREF="http://knuckle.sandwich.net/ansi.html">page</A> I found on the 'net with the ANSI colors described (look in the HTML and you'll find the RGB values that the author chose) all three use different RGB values. The RGB values are pretty straightforward in all three cases except for light gray in the Eterm set and brown in the gnome-terminal set. These two colors use unusual RGB values, and I can't explain why. Anyway, here are the values for gnome-terminal:
<P>
<PRE>Name Code RGB Value Name Code RGB Value
Black 30 000000 Dark Gray 1;30 555555
Red 31 aa0000 Light Red 1;31 ff5555
Green 32 00aa00 Light Green 1;32 55ff55
Blue 34 0000aa Light Blue 1;34 5555ff
Cyan 36 00aaaa Light Cyan 1;36 55ffff
Purple 35 aa00aa Light Purple 1;35 ff55ff
Brown 33 aa5500 Yellow 1;33 ffff55
Light Gray 37 aaaaaa White 1;37 ffffff</PRE>
<P>
And here are the values I found at <A HREF="http://knuckle.sandwich.net/ansi.html">http://knuckle.sandwich.net/ansi.html</A>:
<P>
<PRE>Name Code RGB Value Name Code RGB Value
Black 30 000000 Dark Gray 1;30 444444
Red 31 aa0000 Light Red 1;31 ff4444
Green 32 00aa00 Light Green 1;32 44ff44
Blue 34 0000aa Light Blue 1;34 4444ff
Cyan 36 00aaaa Light Cyan 1;36 44ffff
Purple 35 aa00aa Light Purple 1;35 ff44ff
Brown 33 aaaa00 Yellow 1;33 ffff44
Light Gray 37 aaaaaa White 1;37 ffffff</PRE>
<P>
<A HREF="misc/leah/color.sh.txt">Here's</A> a shell script that's semi-useful.
<P>
<PRE>echo -e " \033[30mBlack\033[0m \033[1;30mDark Gray\033[0m"
echo -e " \033[34mBlue\033[0m \033[1;34mBlue (Light)\033[0m"
echo -e " \033[32mGreen\033[0m \033[1;32mGreen (Light)\033[0m"
echo -e " \033[36mCyan\033[0m \033[1;36mCyan (Light)\033[0m"
echo -e " \033[31mRed\033[0m \033[1;31mRed (Light)\033[0m"
echo -e " \033[35mPurple\033[0m \033[1;35mPurple (Light)\033[0m"
echo -e " \033[33mBrown\033[0m \033[1;33mYellow\033[0m"
echo -e "\033[37mLight Gray\033[0m \033[1;37mWhite\033[0m"</PRE>
<P>
<A HREF="misc/leah/color2.sh.txt">Here's</A> a more sophisticated one I took from /usr/doc/HOWTO/Bash-Prompt-HOWTO.
<P>
<PRE> #!/bin/bash
#
# This file echoes a bunch of colour codes to the terminal to demonstrate
# what's available. Each line is one colour on black and gray
# backgrounds, with the code in the middle. Verified to work on white,
# black, and green BGs (2 Dec 98).
#
echo " On Light Gray: On Black:"
echo -e "\033[47m\033[1;37m White \033[0m\
1;37m \
\033[40m\033[1;37m White \033[0m"
echo -e "\033[47m\033[37m Light Gray \033[0m\
37m \
\033[40m\033[37m Light Gray \033[0m"
echo -e "\033[47m\033[1;30m Gray \033[0m\
1;30m \
\033[40m\033[1;30m Gray \033[0m"
echo -e "\033[47m\033[30m Black \033[0m\
30m \
\033[40m\033[30m Black \033[0m"
echo -e "\033[47m\033[31m Red \033[0m\
31m \
\033[40m\033[31m Red \033[0m"
echo -e "\033[47m\033[1;31m Light Red \033[0m\
1;31m \
\033[40m\033[1;31m Light Red \033[0m"
echo -e "\033[47m\033[32m Green \033[0m\
32m \
\033[40m\033[32m Green \033[0m"
echo -e "\033[47m\033[1;32m Light Green \033[0m\
1;32m \
\033[40m\033[1;32m Light Green \033[0m"
echo -e "\033[47m\033[33m Brown \033[0m\
33m \
\033[40m\033[33m Brown \033[0m"
echo -e "\033[47m\033[1;33m Yellow \033[0m\
1;33m \
\033[40m\033[1;33m Yellow \033[0m"
echo -e "\033[47m\033[34m Blue \033[0m\
34m \
\033[40m\033[34m Blue \033[0m"
echo -e "\033[47m\033[1;34m Light Blue \033[0m\
1;34m \
\033[40m\033[1;34m Light Blue \033[0m"
echo -e "\033[47m\033[35m Purple \033[0m\
35m \
\033[40m\033[35m Purple \033[0m"
echo -e "\033[47m\033[1;35m Pink \033[0m\
1;35m \
\033[40m\033[1;35m Pink \033[0m"
echo -e "\033[47m\033[36m Cyan \033[0m\
36m \
\033[40m\033[36m Cyan \033[0m"
echo -e "\033[47m\033[1;36m Light Cyan \033[0m\
1;36m \
\033[40m\033[1;36m Light Cyan \033[0m"</PRE>
<P>
Here's the table with the RGB values for the default Eterm colors again, expanded to include the internal number that Eterm uses to refer to each color.
<P>
<PRE> Eterm Eterm
Name Color # Code RGB Value Name Color # Code RGB Value
Black 0 30 000000 Dark Gray 8 1;30 333333
Red 1 31 cc0000 Light Red 9 1;31 ff0000
Green 2 32 00cc00 Light Green 10 1;32 00ff00
Brown 3 33 cccc00 Yellow 11 1;33 ffff00
Blue 4 34 0000cc Light Blue 12 1;34 0000ff
Purple 5 35 cc00cc Light Purple 13 1;35 ff00ff
Cyan 6 36 00cccc Light Cyan 14 1;36 00ffff
Light Gray 7 37 faebd7 White 15 1;37 ffffff</PRE>
<P>
So to swap "white" and "light green" and lighten up "light blue":
<P>
<I>Eterm -f rgb:00/ff/00 --color10 rgb:ff/ff/ff --color12 rgb:99/99/ff -W -O --shade 60 --home-on-echo no --home-on-input</I>
<P>
Why not <I>--color10 rgb:ff/ff/ff --color12 rgb:99/99/ff --color15 rgb:00/ff/00</I>? It doesn't work. By default, foreground-color and color15 are both "white", but they CAN be set differently, and "ls --color" uses the ANSI code for foreground-color, not for color15.
<P>
I said something earlier about doing something with my bash prompt. Well, I decided not to group that with the Eterm material. It really doesn't have anything to do with Eterm, although it WAS researching the colors for Eterm that led me to the Bash-Prompt-HOWTO. Anyway, go to <A HREF="http://home.earthlink.net/~edward_leah/linux">http://home.earthlink.net/~edward_leah/linux</A> to see what I did.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Edward Livingston-Blade<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">GIMP-Perl: GIMP Scripting for the Rest of Us</font></H1>
<H4>By <a href="mailto:wolfgang@mynetix.de">Wolfgang Mauerer</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
There is no doubt: GIMP not only is one of the applications that serves
as an attractor for Linux desktop-users, but also one of the most
powerful graphic applications available. There's hardly any task that
cannot be
done with the aid of the GIMP. One of its main features is
modularity: programmers can extend the program with C programs called
``plug-ins''. Just open your right-mouse-button
popup-menu, point to ``Filters'' and its diverse
submenus, and you'll see how important the plug-in feature is for
GIMP: all Filters seen here are implemented via plug-ins.
<p>
What about the next item in the popup menu, ``Script-Fu''? Tons of
effects can be discovered here. The difference between Script-Fus and
true filters is that Script-Fu-effects are generated by the aid of so
called ``Scheme-Scripts'', small programs written in a
strange-looking language
called ``Scheme'', which is strongly connected with Lisp--some of you
have certainly heard this name in connection with artificial-intelligence
programs. GNU Emacs uses Lisp as an
extension and implementation language, and GUILE, the GNU
Projects Ubiquitous Language for Extension that can be embedded into
all kinds of applications, is a Scheme dialect. Why does the Gimp
as an end-user-application use such a complicated language? This
question may be the source of a great religious and philosophical
debate about programming languages on which some people can spend days
and months. The religious explosive force lies shortly behind the
question about which text editor to use and the world's end. Perhaps
one can sum up the whole discussion with a simple sentence: Lisp and
Scheme are powerful, flexible and elegant
languages, but they are certainly not easy to learn for the
unexperienced user in contrast to more ``conventional'' languages.
Nevertheless, Script-Fu is a powerful means of expanding GIMP's
functionality with shortenings for often needed operations and doing
automated picture processing and image generation--features not only
useful for the end users, but also for web designers and publishers.
Just think of your home page using tons of graphical buttons with the
same look: you'd have to do the same steps over and over for every
button, and sooner or later this will become very boring and tiring.
Scripting automizes the process so that you'll only need to enter the
text of the button (and maybe the color and other things), and GIMP
generates them automatically for you with the aid of a
Script-Fu script.
<p>
As you can see, scripting is a powerful feature that can be useful for
all kinds of jobs. To make writing scripts easier, Marc Lehmann set out to
write extension software for GIMP which is already contained in the
1.1.<I>x</I> developers versions and may be used for the stable 1.0.<I>x</I>-tree
of the GIMP: He implemented an interface to make it possible to
write GIMP scripts using the Perl language. I will not start another
discussion about the qualities and weaknesses of Perl here, but in
fact the language is much easier to learn than Script-Fu if you have
no programming experience. Too, and this is the main advantage in my
opinion, most cgi-scripts and web-based programs are written in Perl,
so many people already know the language.
<p>
Perl Interpreters are available with all Linux distributions I know,
because Perl has become one of the important components of a
UNIX System, so normally there's no need to install
it separately. If you use the stable version of GIMP (1.0.<I>x</I>), then the
GIMP-Perl package needs to be installed first. See the box below on
how to do this. If you want to use interactive scripts, a language
binding between Perl and the GIMP toolkit gtk must be added to the
system, too, so that the corresponding features are accessible. The
instructions on how to do this are contained in the installation box as
well.
<p>
<H3>A Small Sample Script</H3>
<p>
Enough of theory--lets take a tour of the small GIMP-Perl script below
to see how the system works.
<A HREF="misc/mauerer/test.pl.txt">(text version of this listing)</A>
<pre>
#! /usr/bin/perl
# Simple script to demonstrate the basics of gimp-perl
use Gimp;
use Gimp::Fu;
register &quot;colored_canvas&quot;,
&quot;Creates a colored canvas&quot;,
&quot;This script creates a canvas pattern over a color gradient<\n>,
&quot;Wolfgang Mauerer&quot;,
&quot;wolfgang\@mynetix.de&quot;, # @ must be written as \@ in a perl string
&quot;0.0&quot;,
&quot;&lt;Toolbox&gt;/Xtns/Script-Fu/Patterns/Color Canvas&quot;,
&quot;&quot;,
[],
sub {
my $image = new Image(640, 480, RGB);
# Set new selections for the fore and background-color.
Palette
Palette
my $layer = $image->layer_new(640, 480,
RGB_IMAGE,
"Color Canvas",
100, NORMAL_MODE);
# Create a color gradient with the choosen colors.
Gimp->gimp_blend($layer, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
639, 379);
# ... and apply the canvas filter
Gimp->plug_in_apply_canvas(1, $image, $layer, 0, 10);
$image->add_layer($layer, 0);
return $image;
};
exit main;
</pre>
The first line of the script, <tt>#! /usr/bin/perl</tt>, has
nothing to do with
GIMP or Perl--it is just a shell command that starts Perl to
interpret the commands contained in the file. You might already know
this construction from shell scripts.
<p>
The first lines interesting for use are <tt>use&nbsp;Gimp</tt>; and
<tt>use&nbsp;Gimp::Fu</tt>;, as they initialize the GIMP binding and enable
its usage.
If you use these lines in your Perl scripts, you'll be able to refer
to nearly all of the GIMP's functionality in your Perl scripts.
<p>
One central part of creating a new script is registering it within
GIMP. In GIMP-Perl, this task is taken over by the function register,
which expects numerous arguments as parameters. The script is
described by them so that other users can get an idea of what the
script does through a textual description, and on the
other hand, the script is presented to the internal structures of GIMP
so that it can be executed in the right way. The arguments have the
following meanings:
<p>
<ul>
<li> a short but pregnant name for the script
<li> a short textual description of what the script does (GIMP also refers to this as a blurb)
<li> a longer and more detailed description of the script's work
<li> the script creator's name
<li> the creator's e-mail-address
<li> either the version number or the last-change-date of the script
<li> the location within the GIMP's menu structure
<li> the image types suitable for this script. As our script needs
no input image, this parameter can be left blank. Otherwise, you can specify
image types like RGB, GRAY etc. If your script should work with all image types
supported by GIMP, use an asterisk (*) as the argument.
<li> parameters that can be adjusted at run time. As our script runs
in a non-interactive mode, we don't want to pass parameters to it.
<li> a reference to the Perl code that will be executed when
running the script. More advanced perl programmers will have
noticed that the construct used here (<tt>sub { code };</tt>) is an
anonymous subroutine.
</ul>
Type in or download the script, then save it (we'll use
simple.pl as file name in our examples), and assign execution right
(<tt>chmod&nbsp;a+x&nbsp;simple.pl</tt> within the shell. Then start GIMP and the Perl server
(<tt>Menu Xtns -&gt; Perl Server</tt>) and execute the script by
typing <tt>./simple.pl</tt>. If everything worked, a new window with
a red-blue canvas should appear on your X desktop.
<p>
If you get an error message like ``Command not found'' or so
(depending on
the shell you use), then you should check where your perl binary is
located by typing <tt>whereis perl</tt> and adjust the
<tt>#!</tt> line to the correct location. If you get error messages
from Perl, double check
your script's code with the code shown here and try to fix the typos.
<p>
Works quite fine, didn't it? But one thing seems to be mysterious:
When calling the register function, we set a location within gimp's
menu structure for the script, and according to the line
<p>
<pre>
&lt;Toolbox&gt;/Xtns/Script-Fu/Simple/Color Canvas
</pre>
one normally would have expected the script to appear somewhere within
the Xtns-menu. The
reason why the script is not yet installed permanently is simple: we
just used some kind of test mode, a clever feature of GIMP-Perl that
enables the quick testing of new scripts. Normally, a script has to be
installed so that it may be used permanently within the GIMP. By
starting the Perl server, we receive the ability of testing the script
directly on the command line and getting the same results as a
normal, installed module. Another huge advantage of the Perl server is
that you can modify your script as often as you want and then
immediately restart it. When you install a script permanently, you
have to reinstall it whenever you change it. And worse, each
time a script is newly installed, you'll have to restart GIMP.
Debugging or improving a script would really be time consuming with
this method, but with the help of the Perl server, everything works
just fine, and the turnaround time becomes much slower.
<p>
When you are sure your script works as expected, you may
integrate it into GIMP using the gimptool utility. Our little
script, for example, would be installed executing the line:
<p>
<pre>
gimptool -install-bin simple_fu.pl
</pre>
The script is only used in your user-related GIMP
configuration--other users won't be able to access your
script that way. If you want all users to be able to profit from your
work, you'll have to type:
<p>
<pre>
gimptool -install-admin-bin simple_fu.pm
</pre>
as this installs the script globally on your machine. You need to have
root privileges for doing this.
<p>
After installing the script, you can see a new menu point in <tt>Xtns -&gt;
Script-Fu -&gt; Patterns</tt> with the name ``Color Canvas''. Select the menu
point to execute the script, and you'll get the same window as you did when
calling the script directly on the command line: our red-blue canvas.
<p>
<H3>The Procedural Database</H3>
<p>
With a quite simple script, we have created an image that would take
at least several hundred lines of code without GIMP.
Because we could use predefined functions (like <B>GIMP-blend</B>) and
already existing plug-ins (<B>apply_canvas</B>), we were able to do the whole
job with very little coding required.
<p>
As you certainly might expect, GIMP is built on the basis
of a huge number of functions and procedures, and a great number of them
can be used within scripts--never mind whether you write them as a
plug-in in C, as script-fu-scripts or with GIMP-Perl. How can one
easily keep track of this big functionality without reading GIMP's
source code and studying all the scripts and plug-ins? As we've
already seen when registering our first script within GIMP, every
new component which can be used by other GIMP users/programmers needs
to have descriptive texts associated with it. All the basic functions,
as well as all plug-ins and scripts shipped with the GIMP by default,
have such descriptions, too. The central access point for all
available functions together with their parameters and descriptions is
the DB browser, an interactive catalogue that aids you in developing
scripts.
<p>
The DB browser can be started by selecting the menu point ``DB
Browser'' from the Xtns menu. A dialog window as shown in Figure 1
appears on your screen.
<p>
<H3>Installing the Required Modules</H3>
<p>
The best thing to do if you want to work with GIMP-Perl is use one of
the developer versions of GIMP (1.1.<I>x</I>). You can get it from one of the
GIMP mirrors, just take a look at <A HREF="http://www.gimp.org/">http://www.gimp.org/</A>. Installing the
package for GIMP 1.0.<I>x</I> requires a little more work. First, you'll
have
to get GIMP-Perl and Gtk-Perl (at least version 5.0120) from any
CPAN mirror (<A HREF="http://www.cpan.org/">http://www.cpan.org/</A>). You need to unpack the tar files with
the commands:
<p>
<pre>
tar xzfv Gtk-Perl-0.5120.tar.gz
tar xzfv Gimp-1.098.tar.gz
</pre>
Move to the newly created directories and in each type:
<p>
<pre>
perl Makefile.PL
make
make test
make install
</pre>
If Gtk-Perl doesn't work and GNOME is not installed, you may have to
type:
<p>
<pre>
perl Makefile.PL --without-gnome
</pre>
<H3>GIMP Functions</H3>
<p>
<center>
<img alt="figure" src="gx/mauerer/3689f1.gif">
<h4>Figure 1: The Database Browser</h4></center>
<p>
In the left part of Figure 1 is a list box with many function names--the
GIMP's functionality is really enormous. When you select a function
from the list, several kinds of information about it appear on the
right side of the window: the functions name, a blurb (we've heard
that before--it's the GIMP's name for a short descriptive
text), a help text and--most important--the parameters needed to
execute the function correctly. When you see one or more lines headed
by ``Out:'', the function not only has input parameters, but also
returns some computed values. The <B>gimp-layer-new</B> function, for
example, takes a long list of parameter values and returns a new
layer. We've used the function in our small example script, feeding it
with the equivalent values and getting back a new layer which was
assigned to the variable <tt>$layer</tt>.
<p>
Obviously, the buttons ``Search by name'' and
``Search by blurb'' allow you to search either the
function name or the short description for a piece of text. Do a
search by name for the string ``canvas'', and you'll get to
GIMP functions with the word ``canvas'' in their name. Select
plug-in-apply-canvas and see what parameters were used for the function
in our script.
<p>
If you look at the function names exactly, you will see a very
important detail: while all the functions listed in the database have
normal dashes(<tt>-</tt>) in their names, their counterparts in the Perl-script
used underscores (_) for this purpose. While Scheme (and Lisp) usually
take the <tt>-</tt> as an optical-separation symbol, Perl uses the _ convention.
The effect of this is your scripts get more
consistent with other Perl code and thus are easier to read and
understand by programmers other than you. So when you look up
functions in the DBB (an abbreviation for database browser), don't
forget to replace the dashes by underscores in your Perl program.
<p>
In some functions, constants may be used as parameters because
descriptive names are easier to remember for than numbers. Pay
attention when using such constants, because GIMP-Perl replaces the
dashes by underscores here, too.
<p>
The DBB is a powerful tool to aid you in script development, but it's
not the only one available within the GIMP. The alternative one is the
PDB, the Procedural Data Base Browser. Both show the same functions,
but present them in a different manner. You can start it by selecting
the appropriate entry from the Xtns menu. As you can see, there is a
GIMP-Perl logo in the upper-right corner. The tool is therefore not a
script-fu tool, but natively written for GIMP-Perl. In the window's
headline, you can see that the browser is still an ``early alpha
version'', so be prepared that things may change. Nevertheless,
PDB is already a very good helper when creating GIMP-Perl scripts.
<p>
<center>
<img alt="figure" src="gx/mauerer/3689f2.gif">
<h4>Figure 2. The Procedural Database Browser</h4></center>
<p>
The whole thing works like this: in the ``Command'' text-box, you type
in a function name, and all functions containing the substring are
shown in the box below. You can either continue typing until there's
only one solution left (insert it by pressing <tt>F2</tt>), or select a
function name from the list. Select, for example,
<B>plug_in_apply_canvas</B>. When you press space after the function name,
the PDB will prompt you for the first parameter of the function,
simultaneously presenting a list of valid alternatives.
Again, you can choose one from the list or type in
the parameter via the keyboard (completion by <tt>F2</tt> works too). The
whole game runs again until all needed parameters for the function
call are selected. A nice thing for functions with 10,000 parameters
is the status-bar at the bottom of the window which shows how the
percentage of those completed.
<p>
When used in conjunction, PDB and DBB are two very useful
tools to aid you in script development.
<p>
<H3>Shorter and Shorter and Shorter</H3>
<p>
According to Larry Wall and Randal Schwarz, a programmer has three
main virtues as they state in <I>Programming Perl</I>: laziness,
impatience and hubris. But why do I tell you this when talking about
GIMP? Take a look at the function calls: aren't they really too long
for a lazy and impatient programmer? Always <tt>GIMP-&gt;gimp_...</tt>
before a simple call can be boring. GIMP-Perl introduced some
kind of shortenings for this problem. When you look at the GIMP's
functions, you find they all fit into a certain category that
is deduced from their heading: all functions starting with
gimp-palette- have to do with palette operations, layer functions have
the string gimp-layer- in front of their function name, and so on. As
GIMP-Perl uses Perl's-object oriented syntax
much typing can be saved by using the shorter forms for these
Operations, with the side effect that your scripts will be much easier
to read and understand. If, for example, you have an image-object
(<tt>$image</tt> in our example), you can use the gimp-image--functions
directly by appending them to the object. <tt>Gimp-&gt;image_add_layer($image, $layer, 0</tt>)
becomes <tt>$image-&gt;add_layer($layer, 0</tt>)
by this. <tt>$image</tt> isn't needed
as a parameter any
more since it is clear to which image the layer will be added.
<p>
Another possibility for shortening your scripts is using the kind of
abbreviations as you can do with palette operations.
Instead of writing <tt>Gimp-&gt;palette_set_foreground(...)</tt>
you may simple use <tt>Palette-&gt;set_foreground(...)</tt>.
<p>
To see what kinds of abbreviations are possible exactly, take a look
at the Gimp/Fu man page by typing <tt>man Gimp::Fu</tt> (if that
doesn't
work, try <tt>perldoc Gimp::Fu</tt>).
<p>
<H3>Tracing Errors</H3>
<p>
Programmers are just humans, so they tend to make errors in their
programs. The situation with GIMP-Perl is
exactly the same, but with a ``special extension'': you can, on the
one hand, create erroneous Perl code and, on the other hand, call
GIMP's function in the wrong manner.
<p>
The Perl interpreter helps us to fix things falling into the first
category be displaying corresponding error messages, but what about
our errors originating from the GIMP? Imagine we were calling one of
the internal GIMP functions with the wrong set of arguments. Although
the number of parameters is right, one or more may have values that are out of
range. The only message issued is something like procedural database
execution failed at file <I>name</I> line <I>line_number</I>. That's not very
much information.
<p>
Tracing is a way to get more precise messages about your running
script. Simply insert <tt>Gimp::set_trace(TRACE_NAME)</tt> into the
header of
your subroutine, and you'll get a list of all called functions together with their
arguments. For our simple script, the output to STDERR will look like
Listing 2 (the lines were split up in several parts because they are very
long in the original output).
It is possible to fine tune the information given in a trace with the
parameter of the <B>set_trace</B> call. In our example, we have used
TRACE_NAME, but there are other possiblities:
<p>
<table border="1"><caption><STRONG>set_trace Options</STRONG></caption>
<tr>
<td>Option</td>
<td> Output Information</td>
</tr>
<tr>
<td>TRACE_NONE</td>
<td> No tracing output at all.</td>
</tr>
<tr>
<td>TRACE_NAME</td>
<td> Print all the executed functions together with</td>
</tr>
<tr>
<td>&nbsp; </td>
<td> their parameters as shown in the previous examples.</td>
</tr>
<tr>
<td>TRACE_DESC</td>
<td> Print the function description from GIMP's</td>
</tr>
<tr>
<td>&nbsp;</td>
<td> internal database: All parameter names, their </td>
</tr>
<tr>
<td>&nbsp;</td>
<td> description and the possible values for them.</td>
</tr>
<tr>
<td>TRACE_ALL</td>
<td> Print all informations available.</td>
</tr>
</table>
<p>
<h4>STDERR Output</h4>
<p>
<pre>
gimp_image_new(width=640, height=480, type=0) = (image=7)
gimp_palette_set_foreground(foreground=[255,0,0]) = ()
gimp_palette_set_background(background=[0,0,255]) = ()
gimp_layer_new(image=7, width=640, height=480, type=0, name=&quot;Color Canvas&quot;,
opacity=100.000000, mode=0) = (layer=16)
gimp_blend(drawable=16, blend_mode=0, paint_mode=0, gradient_type=0,
opacity=100.000000, offset=0.000000, repeat=0,
supersample=0, max_depth=0, threshold=0.000000, x1=0.000000,
y1=0.000000, x2=639.000000, y2=379.000000) = ()
plug_in_apply_canvas(run_mode=1, image=7, drawable=16,
direction=0, depth=10) = ()
gimp_image_add_layer(image=7, layer=16, position=0) = ()
</pre>
<p>
<H3>A More Complex (and Complete) Example</H3>
<p>
Let's demonstrate the features of GIMP-Perl shown by now in a more
complex than the first. Did
you ever create a home page that uses graphical buttons? Then you
certainly know that for each button the same operations have to be
applied all the time--the perfect situation for a GIMP-Perl script.
<p>
The thing we are working on are buttons with a text component centered
in their middle (variable fonts and sizes should be usable), bordered
by a frame that looks like it has been carved into your desktop. If you've
already worked with a program using Sun's new Java metal layout, you
might already know this. Gtk, too, offers the rendering of buttons
according to such a scheme.
<p>
Before we start writing our script, we must think about the steps that
need to be done first. We need three layers: one for the background,
one for the border and one for the text. The border and text
layers must be transparent and therefore need an alpha channel.
<p>
As the font name, size and button text need to be user-configurable, we
must pass them as parameters to the script. When you apply
existing script-fu-scripts: dialog boxes for the various settings
appear before the script is actually run. The same thing is possible
with GIMP-Perl: When registering the function, we just need to say
what kind of user customizable arguments the script needs, and the
dialog where the parameters values can be entered is generated and
shown automatically when the script is executed. All these parameter
definitions have to be put inside the square brackets that already
appear in the register of the first example. The
line describing a parameter also needs to be put into square brackets. For
our new script, this would look like:
<p>
<pre>
[
[PF_STRING, 'text', 'The button's text.',&quot;&quot;],
[PF_FONT, 'font', 'Font used for the button's text label.'],
[PF_BOOL, 'flat', 'Flatten the image and convert it to indexed]
]
</pre>
Experienced Perl users know that a reference to an array containing
array references is passed that way, but this is just a technical
detail. The [] block describing the argument is always structured in
this way:
<p>
<pre>
[PF_TYPE,name,description,default value(optional),other values(optional)]
</pre>
<tt>PF_TYPE</tt> sets the type of the argument. This is important
because the
input methods differ for the diverse data types: a font selection is
done via a font selection box, while string are entered in a text box.
Boolean (true/false) values will be entered using a simple check box.
The possible values for <tt>PF_TYPE</tt> are documented in the
Gimp/Fu-man page. As the number of input types is
quite large, we won't cover them all here--just take a look at the
man page. (In fact, it would be quite difficult to write a script that
needs parameters of all types available.)
<p>
<tt>name</tt> will precede the actual input element as a descriptive text;
description will show up as a tool tip (appears when you place your
mouse over the selection widget and do not move it for some time).
<p>
The default setting for a parameter to be usable should supply safe
``base-values'' to a script--or set parameters to their optimal
values for the best look to give a good starting point.
<p>
The other values have different meanings for the different parameter
types, but we won't use them here.
<p>
<a href="3689l3.html">Listing 3</a>
<p>
What else will we need to create the button? A routine to draw the
frame would be quite handy, and we'll implement this as a Perl
subroutine that calls the corresponding GIMP functions to paint four
lines with the aid of the pencil tool. The script is shown in Listing 3.
As you can see, the subroutine used for controlling the creation of the
button is no more an anonymous one like in the simple example, but a
true Perl subroutine. Therefore, we'll have to use
<B>&amp;create_etched_button</B> to pass a reference of the subroutine to the
register function.
<p>
<center>
<img alt="figure" src="gx/mauerer/3689f3.gif">
<h4>Figure 3: The Script's Dialog Box</h4></center>
<p>
Our third argument to the script has to name <tt>flat</tt>. When it
is selected, all layers of the image will be merged together and the
resulting layer will be converted to the ``indexed'' color format. The
image may be saved in the gif format.
<p>
The general outline of the script should be clear now, as the
structure doesn't change too much from our simple example except
that we now have parameters and the subroutine is a real Perl subroutine. One
thing that still needs to be explained is how the
text layer is created.
<p>
Font and size for the text have been selected by the user and can be
found in the string <tt>$font</tt>. It's format is called X
logical font description and looks like:
<p>
<pre>
-Adobe-Courier-Medium-R-Normal-14-140-75-75-M-90-ISO8859-1
</pre>
Quite complicated. But that's no problem: we can use that string
directly as an argument for <B>gimp-text-fontname</B>, a function that
creates a new layer containing a specified text string. The function
needs both the font name, and the font size. It is
contained in the font string and can be extracted from it via the
function <B>xlfd_size</B> provided by GIMP-Perl.
<p>
Drawing the two overlaying frames that create the etched effect is
done by the Perl procedure <B>draw_frame</B> which is not exported into the
GIMP's database and therefore can be used only in our script. It draws
four lines, based on the knowledge of where the upper-left and lower-right
corner of the box are located. The settings for color and brush
are not changed; the procedure operates with the settings active when it is
called.
<p>
If the <tt>flat</tt> flag has been set (<tt>$flatten</tt> is 1
then), additional actions take place: the layers are merged together, and the
image is converted to index colors, suitable for saving as a gif file.
<p>
For the user's convenience, the back and foreground colors
from the palette are restored to the settings before the script's
execution. Then we return the picture to the GIMP, and a new window
containing a graphical button shows up. You won't see the etched
effect too much here, but try putting the button in a web page--it
will look like Figure 4 shows.
<p>
<center>
<img alt="figure" src="gx/mauerer/3689f4.gif">
<h4>Figure 4: Buttons Generated with GIMP-Perl</h4></center>
<p>
If you like the script, you may install it with the gimptool command
as demonstrated in the simple example. A new entry called
``Etched''
shows up in <tt>Xtns -&gt; Script-Fu -&gt; Buttons</tt> then.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Wolfgang Mauerer<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Private Networks and Roadrunner using IP Masquerading</font></H1>
<H4>By <a href="mailto:zing@tcu-inc.com">Mark Nielsen</a> and <a href="mailto:byrd.74@osu.edu">Andrew Byrd</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<h3>Abstract</h3>
This article is intended to assist in setting up a masqueraded private TCP/IP network connected to the internet via Time Warner's Roadrunner cable modem service. It is a rewrite of a previous article on the same subject -- with Redhat 6 available and Roadrunner's migration to DHCP (at least in Columbus, Ohio, check to see if they use DHCP in your city) several things have changed.
This is a serious exercise in networking, involving concepts from DNS to firewalls. When you complete this project, you will truly have some experience in small-scale networking.
<p>
One thing to note, I called up RR, and they were very vague about whether they allow people to use IP Masquerading. The sales rep
basically said that if you hog bandwidth, they will get upset. If you run servers that hog bandwidth, they will get upset.
<p>
There are two "I"'s in this document. Sometimes it is Andrew talking, and sometimes it is Mark.
<hr>
<h2>Table of Contents</h2>
<ol>
<li><a href="#one">Required Reading</a>
<li><a href="#two">The Big Picture</a>
<li><a href="#three">Selecting Hardware</a>
<li><a href="#four">Setting up the Gateway</a>
<li><a href="#five">Configuring IPChains / Masquerading</a>
<li><a href="#six">Configuring DNS on the Private Network</a>
<li><a href="#seven">Setting up the Workstation Machines</a>
<li><a href="#eight">Security Concerns</a>
<li><a href="#nine">Dynamic DNS</a>
<li><a href="#comments"> Comments and Other Notes</a>
<li><a href="#ten">Example Files</a>
</ol>
<a name="one"><h2>Required Reading</h2></a>
These HOWTOs contain the necessary background information required to understand the rest of this document. If you proceed without having read these, you may not fully grasp what is being done.
<ol>
<li><a href=http://www.linuxdoc.org/HOWTO/NET3-4-HOWTO.html>Networking</a> - Basic Ethernet and TCP/IP information. Sections 5 and 6 are most relevant.
<li><a href=http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html>IPCHAINS</a> - IP Firewall Chains will do most of the work in our configuration. Also has many security implications.
<li><a href=http://www.linuxdoc.org/HOWTO/DNS-HOWTO.html>DNS</a> - setting up DNS will be a lot easier if you understand how it works.
<li><a href=http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html>IP Masquerading</a> - covered in a more general sense than we will here.
<li> <a href="../issue28/nielsen.html">Our Previous</a> article on this topic.
<li> <a href="http://www.vortech.net/rrlinux/"> RRLinux Help Site</a>
<li> <a href="http://dir.yahoo.com/Computers_and_Internet/Software/Operating_Systems/Unix/Security/"> Unix Security</a> located
on Yahoo.
<li> <a href="http://stones.wcbe.org/~COLUG/"> The Central Ohio Linux User Group</a> -- where lots of ideas come from.
</ol>
<p>
<a name="two"><h2>The Big Picture</h2></a>
This diagram demonstrates the basic idea:
<br><br><center><img src=gx/nielsen/diagram.png></center><br>
Each heavy black dot in this diagram is an ethernet interface card, and each connecting line is a length of CAT5 cable, with the exception of the one running down from the cable modem, which is your cable connection to Time Warner. Note that you need one interface card in each workstation, and two in your gateway machine.
<p>
Your workstations and hub are inside your private network, indicated by a white background in the image, and the rest of the world is shown as the gray area. Note that the gateway machine is riding the fence between the two. Each of the Ethernet cards has an IP address assigned to it, and your gateway has one in the outside world and one on the inside. Positioned as such, the gateway has the power to forward communications from your private network to the outside world.
<p>
For the purpose of this discussion, I have assigned the internal network the 10.x.x.x (netmask 255.0.0.0) block of reserved private IP addresses and chosen the domain name "local". These can of course be changed if you know what you are doing, but they should work for most people.
<p>
The workstations are named "w1.local" (10.0.0.10) through "w3.local" (10.0.0.30) and the masquerading gateway is called "main.local" (10.0.0.1 on its private adaptor.) As before, you can modify or expand this scheme if you feel comfortable with it.
<p>
<a name="three"><h2>Selecting Hardware</h2></a>
The gateway machine requires relatively few resources, and can even be an old '486 machine with relatively little memory; routing packets is not particularly strenuous work. If it can run Linux at all, it should do the trick.
<p>
The workstations can be any machine running a TCP/IP capable OS, such as Linux, MacOS, or even MS operating systems, and you will need to outfit each machine with an ethernet card.
<p>
Choose a 10/100 autosensing hub. It makes your life a lot easier. Use 100 mbit ethernet cards on the inside, and the ethernet card
connecting your gateway computer to the outside can be just a 10 mbit ethernet card. I will still use all the same type of
ethernet cards and make them all 10/100. Using the same hardware across the board makes your life easier most of the time.
<p>
It is a good idea to stick with PCI ethernet cards in linux systems. Ethernet cards are quite cheap now, and having PCI cards will save you some possible headaches in the configuration phase. I have used the Netgear FA310TX card flawlessly in several machines, and have been told that Intel cards provide extremely reliable service. In any case, do some web research and make sure that there are commonly available modules for the cards you buy. The Netgear card and most 3com cards (which I have used extensively) have drivers that ship with Redhat 6. If you must use ISA cards, 3com 3c509s are quite easy to use. Keep in mind that if you are using an older machine for your gateway, it may have only ISA slots, possibly requiring you to use two ISA ethernet cards. In this case, you will have to acquire a utility program (which usually runs only in DOS) for your cards from their manufacturer, and use this program to set the IO address and/or IRQ of the cards to prevent conflicts.
<p>
<a name="four"><h2>Setting up the Gateway</h2></a>
The computer which will be your gateway will be the computer which RR is connected to.
<p>
First, physically install your carefully selected Ethernet cards in the machine. It is much less confusing to use two different brand cards on the gateway; by having a unique driver for each card you can be sure which one will be called eth0 and which will be eth1, and also lessen the chances of interrupt conflicts (to be avoided like the plague). If you opt for ISA cards, you may need to download some DOS utilities to set the IRQ and I/O addresses.
<p>
Start with a clean install of the Redhat 6 (for the purpose of this article) distribution on the gateway. If you've got the hard drive space, go ahead and install everything, but you really don't need an X server, graphics processing software, etc. on this machine. Just make sure that you are installing the ipchains, BIND, cacheing nameserver, pump, and other packages critical to what we are doing here. Also tell the install program to start named at boot.
<p>
For the purpose of this article, eth0 will be going to the cable modem and eth1 will be on your private network. You can probably get the first ethernet device up and running during the initial install. Have eth0 connected to the cable modem with the necessary crossover cable and tell it to use DHCP to get its IP address (don't specify one) since the Roadrunner service will be assigning us an internet IP. Use the netconf utility (or edit the /etc/sysconfig/network-scripts/ifcfg-eth? and <a href=#confmod>/etc/conf.modules</a> files directly) to get eth1 working once you can boot, and assign this one a private network IP address (10.0.0.1). It may take a bit of tinkering to get both cards detected and up. Be sure to specify the correct kernel modules/drivers, and once you can do an 'ifconfig' and see both eth0 and eth1 (or see them both go up at boot time), you should be ready to continue. It is possible to compile network card drivers into the kernel (this was often done in the past) but it is common and perfectly acceptable to simply use modular drivers as we've suggested here.
<p>
Ensure that your /etc/sysconfig/network looks like <a href="#networkg">this</a> and replace /etc/hosts with your own version of <a href="#hosts">this file</a>. The /etc/hosts file isn't absolutely necessary since we'll be setting up a DNS server, but it's a good backup.
<p>
NOTE ON TWO 3c509 NETWORK CARDS:
<br>Install both ISA ethernet cards before you install RedHat Linux. The two ethernet cards Mark used (a long time ago) were
3com 3c509. The first had values of, irq=10, address=300 and the second had irq=11, address=310.
Also, when you install RedHat, go ahead and install it for a LAN and have it autoprobe the
ethernet cards.
<p>NOTE ON DHCP:<br>
You can setup DHCP using
<a href="http://www.redhat.com/support/manuals/RHL-6.1-Manual/ref-guide/s1-sysconfig-control-panel.html">
RedHat's control panel</a>, netconf, editing the files manually, or during the installation of RedHat (or whatever
other Linux distribution you are using).
<a name="five"><h2>Configuring IPChains / Masquerading</h2></a>
<p>
Try pinging a few outside servers or retrieving a few web pages with lynx to see if your Roadrunner connection is functioning. If so, you are ready to add masquerading. Append <a href="#rclocal">this</a> block of modprobe and ipchains commands to your /etc/rc.d/rc.local script to enable forwarding/masquerading and also provide some fairly strong firewall rules.
<p>
<a name="six"><h2>Configuring DNS on the Private Network</h2></a>
As of now, 'pump' (which retrieves the DHCP information for eth0) is also setting the /etc/resolv.conf file to use Roadrunner's DNS servers. This provides no functionality for looking up hostnames in our private network and would require that each workstation have an identical copy of /etc/hosts and be manually set to use a Roadrunner nameserver. This is a little messy, so it's advisable to run your own DNS service.
<p>
Armed with some knowledge from the DNS-HOWTO, create or modify <a href="#namedconf">/etc/named.conf</a>, <a href="#resolvconf">/etc/resolv.conf</a>, and the related <a href="#varnamed">files</a> in /var/named. You must also create or edit <a href="#pumpconf">/etc/pump.conf</a> to keep pump from overwriting your resolv.conf settings every time eth0 goes up. Verify that 'named' is being run at bootup (there will be an S??named link in /etc/rc.d/rc3.d/ if it is) and you should have a cacheing nameserver running upon reboot, as well as DNS for your private network.
<p>
<a name="seven"><h2>Setting up the Workstation Machines</h2></a>
Make sure all of your private network machines (including the gateway) are connected via a hub and Cat5 cable, and then configure the workstations. Give each machine/interface a unique IP address within the private block, and here is an example <a href="#networkw">/etc/sysconfig/network</a> for the Linux workstations. Add a customized <a href="#hosts">/etc/hosts</a> and this <a href="#resolvconf">/etc/resolv.conf</a> file, and you should be on your way. Try some pings or read some web documents from a workstaion to ensure that masquerading and DNS are operating correctly.
<p>
Here is an example for other computers in your network.
<ol>
<li>ip address = 10.0.0.10
<li>name address = w1.local
<li>netmask = 255.255.255.0
<li><a href="#resolvconf">/etc/resolv.conf</a> for your other Linux computers.
<li><a href="#hosts">/etc/hosts</a> is a file I would use, but don't need. Just in case your dns server fails, this is handy
for a backup.
</ol>
The only thing you should have to change to each additional computer is the ip address and the
name address. w2.local and 10.0.0.20 would be used for the next computer. Get the idea?
<p>
Also, if you are using pc or mac clients or other stuff, check out
<a href="http://www.ssc.com/mirrors/LDP/HOWTO/IP-Masquerade-HOWTO.html">
the masquerading mini-howto</a>.
<p>
The general idea is to specify your masquerading machine (10.0.0.1) as the gateway and DNS server for each machine. The <a href="#one">IP-Masquerading HOWTO</a> has an excellent section on how to configure workstations running several different non-Linux operating systems in a masq'd private network.
<p>
<a name="eight"><h2>Security Concerns</h2></a>
Being connected to the internet constantly has its risks. There are plenty of people out there who have nothing better to do than wreck unprotected systems, and many more who would like to use your system as a jumping-off point for illegal activities.
<p>
Masquerading is inherently somewhat unsafe because we must allow traffic to pass through the firewall. By disabling telnet, ftp, or other daemons that listen at ports on your gateway you can avert much of the danger, and fully understanding IP firewall chains is also valuable. A port forwarder such as <a href="ftp://ftp.ox.compsoc.org.uk/pub/users/steve/ipsubs/">ipportfw</a>
can also be used to redirect incoming requests for connections to other machines on your network (which would then be running the requested service), directing the danger away from your gateway.
<p>
You can prevent access to your DNS server by moving it to another machine on your network or by simply giving an appropriate listen-on directive to named (see the named.conf man page) to keep it from binding to a port on your external interface. If you would like higher security but need login capabilities from the outside, look into <a href="http://www.openssh.com/">
openssh</a>,
which allows telnet-like logins over an encrypted connection. It is also advisable to install an advanced logger such as
<a href="http://www.tigerteam.net/linuxgroup/tcplogd/">tcplogd</a> which can detect and inform you of most portscans and malicious activity.
<p>
Lastly, in many cases you can simply turn off the interface to the outside world when not using your connection, thereby lessening the chances of someone gaining unauthorized access. Simply issue 'ifdown eth0' on your gateway machine to disable your connection and 'ifup eth0' when you need to use it again.
<p><font size=+1 color=green> Summary of Security</font>
<ol>
<li> The only service on your firewall computer should <A href="http://www.openssh.com/">openssh</a>.
Ideally, you shouldn't have your DNS on your gateway computer. Although our server configuration has DNS on it, again, ideally,
you should put the DNS service on another internal computer.
If you must, keep it firewalled at least so that the outside can't use it.
<li> All other services (like a webserver) that you want available to the outside
should be port forwarded using <a href="ftp://ftp.ox.compsoc.org.uk/pub/users/steve/ipsubs/">ipportfw</a>
to another computer on the inside of your network.
<li> Do NOT NOT NOT NOT have any services under /etc/inetd.conf turned on, or just don't have inet running.
<br> chkconfig inet off ### for RedHat users
<br> /etc/rc.d/init.d/inet stop
<li> Have all other internal services on a separate computer (printing, filesharing, database, etc).
<li> Install <a href="http://www.tigerteam.net/linuxgroup/tcplogd/">tcplogd</a> and post the people who have scanned your computer -- hey, it is public information isn't it?
<li> There are ways to tunnel VNC, mail, ftp, and other programs through <a href="http://www.openssh.com/">OpenSSH</a>.
This can keep things secure.
<li> Check out <a href="http://www.psionic.com//abacus/">
Abacus Project - The Intrusion Prevention System</a>
</ol>
<p>
<a name="nine"><h2>Dynamic DNS</h2></a>
Unless you asked for a fixed IP address, RoadRunner gives you a different ip address every time you log in. Dynamic DNS gives you
an alias so that you can find your computer at home when you are at work or let other people know where it is.
<p>
<a href="http://www.dyndns.org">Dyndns.org</a> can provide for you a static domain name despite your dynamic IP address, giving others on the internet an easy to remember and constant name for your gateway machine. Once you have registered with dyndns, a utility called <a href="http://www.gandy.dyndns.org/~thomas/ddup.php3">'ddup'</a> can contact dyndns.org and update your nameserver record when your IP address changes. Appending <a href="#ddup">this</a> shell script fragment to our /etc/rc.d/rc.local will update your dyndns record at boot time, but only if your IP address has changed (dyndns doesn't like you to update your record for no reason.) This assumes that you have 'ddup' installed properly.
<p>
I tend to reboot the gateway machine every day or two and haven't had any problems with my assigned IP changing while it was up, though this is technically possible. If you plan on leaving your gateway up for weeks at a time, you might want to have cron run this script occasionally to make sure your dyndns record is always current. This will take a little reworking -- experiment and see what you can do.
<hr>
<a name="comments"><h2>Comments and Other Notes</h2></a>
<ol>
<li> For even more security, you may want to buy a network switch where you can isolate traffic on the inside on your network.
They are expensive, but worth it for the serious networker.
<li> There are more advanced things you can do once you get your internal network setup. You can have fetchmail download all email
from a domain and match up email addresses to your local users, use a proxy server to save bandwith (which may not
be necessary, set VPN set tunneling of services through openssh, etc.
</ol>
<EM> <a href="http://tcu-inc.com"> Mark Nielsen</a> works as a book binder for <a href="http://www.genericbooks.com">ZING</a>
and <a href="http://www.tcu-inc.com">TCU</a>
and Andrew is a Linux consultant.</EM>
<hr>
<a name="ten"><h2>Example Files</h2></a>
(these are just syntactic examples, you will probably have to modify domain names, etc. for your own use)
<br><br>
<a name="rclocal"><h3>/etc/rc.d/rc.local (gateway)</h3></a>
<pre>
# Firewall config - Should be appended to the end of /etc/rc.d/rc.local to run on boot.
# Adapted from examples in the IP Masquerading HOWTO and IPChains HOTWO. See the original
# documents to learn more. These examples should provide a fairly safe masquerading
# firewall.
echo "Loading IP masquerading modules..."
# load modules to handle masquerading some tricky but common protocols
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_irc
echo "Turning IP forwarding on..."
# make sure the forwarding is turned on
echo "1" > /proc/sys/net/ipv4/ip_forward
# Get the dynamic IP address assigned via DHCP
# and external interface name, save them to variables for easy use
extip="`/sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
extint="eth0"
# Do the same for internal network name and interface
intint="eth1"
intnet="10.0.0.0/8"
echo "Configuring firewall chains:"
echo -n "input..."
#############################################################################
# Input chain: flush and set default policy of reject. Actually the default policy
# is irrelevant because there is a catch all rule with deny and log.
ipchains -F input
ipchains -P input REJECT
# local interface, local machines, going anywhere is valid
ipchains -A input -i $intint -s $intnet -d 0.0.0.0/0 -j ACCEPT
# remote interface, claiming to be local machines, IP spoofing, get lost
ipchains -A input -i $extint -s $intnet -d 0.0.0.0/0 -l -j REJECT
# remote interface, bounce anything trying to open a connection to us
# this should keep anyone from opening TCP connections to this machine from
# the outside world. Just an example of what we can do with IPChains, and not
# a bad idea unless you have a reason for letting people connect to your firewall.
# ipchains -A input ! -f -i $extint -p TCP -y -j REJECT
# remote interface, any source, going to roadrunner dhcp address is ok
ipchains -A input -i $extint -s 0.0.0.0/0 -d $extip/32 -j ACCEPT
# loopback interface is valid.
ipchains -A input -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# catch all rule, all other incoming is denied and logged.
ipchains -A input -s 0.0.0.0/0 -d 0.0.0.0/0 -l -j REJECT
echo -n "output..."
#############################################################################
# Output chain: flush and set default policy of reject. Actually the default policy
# is irrelevant because there is a catch all rule with deny and log.
ipchains -F output
ipchains -P output REJECT
# local interface, any source going to local net is valid
ipchains -A output -i $intint -s 0.0.0.0/0 -d $intnet -j ACCEPT
# outgoing to local net on remote interface, stuffed routing, deny
ipchains -A output -i $extint -s 0.0.0.0/0 -d $intnet -l -j REJECT
# outgoing from local net on remote interface, stuffed masquerading, deny
ipchains -A output -i $extint -s $intnet -d 0.0.0.0/0 -l -j REJECT
# anything else outgoing on remote interface is valid
ipchains -A output -i $extint -s $extip/32 -d 0.0.0.0/0 -j ACCEPT
# loopback interface is valid.
ipchains -A output -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# catch all rule, all other outgoing is denied and logged.
ipchains -A output -s 0.0.0.0/0 -d 0.0.0.0/0 -l -j REJECT
echo -n "forward..."
#############################################################################
# Forward chain: flush and set default policy of deny. Actually the default policy
# is irrelevant because there is a catch all rule with deny and log.
#
ipchains -F forward
ipchains -P forward DENY
# Masquerade from local net on local interface to anywhere.
# This is the line that does all the work, most of the rest if the lines
# in this file are just for security reasons.
ipchains -A forward -i $extint -s $intnet -d 0.0.0.0/0 -j MASQ
# catch all rule, all other forwarding is denied and logged. pity there is no
# log option on the policy but this does the job instead.
ipchains -A forward -s 0.0.0.0/0 -d 0.0.0.0/0 -l -j REJECT
echo "done."
</pre>
<br>
<br>
<a name="networkg"><h3>/etc/sysconfig/network (gateway)</h3></a>
<pre>
NETWORKING="yes"
FORWARD_IPV4="yes"
HOSTNAME="main.local"
DOMAINNAME="local"
GATEWAY="10.0.0.1"
GATEWAYDEV="eth0"
</pre>
<br>
<br>
<a name="networkw"><h3>/etc/sysconfig/network (workstations)</h3></a>
<pre>
NETWORKING="yes"
FORWARD_IPV4="no"
# change hostname on each machine
HOSTNAME="w1.local"
DOMAINNAME="local"
GATEWAY="10.0.0.1"
GATEWAYDEV="eth0"
</pre>
<br>
<br>
<a name="hosts"><h3>/etc/hosts (gateway and workstations)</h3></a>
<pre>
127.0.0.1 localhost localhost.localdomain
10.0.0.1 main main.local
10.0.0.10 w1 w1.local
10.0.0.20 w2 w2.local
10.0.0.30 w3 w3.local
</pre>
<br>
<br>
<a name="resolvconf"><h3>/etc/resolv.conf (gateway and workstations)</h3></a>
<pre>
search local columbus.rr.com
nameserver 10.0.0.1 #our local nameserver
nameserver 128.146.1.7 #fill in a backup server. do not use this one, it is for OSU students only.
</pre>
<br>
<br>
<a name="pumpconf"><h3>/etc/pump.conf (on gateway only)</h3></a>
<pre>
device eth0 {
nodns
}
</pre>
<br>
<br>
<a name="namedconf"><h3>/etc/named.conf (on gateway only)</h3></a>
<pre>
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "local"{
type master;
file "local.zone";
notify no;
};
zone "0.0.10.in-addr.arpa"{
type master;
file "local.reverse";
notify no;
};
zone "0.0.127.in-addr.arpa"{
type master;
file "named.local";
};
</pre>
<br>
<br>
<a name="varnamed"><h3>/var/named/local.zone (on gateway only)</h3></a>
<pre>
@ IN SOA main.local. root.main.local. (
200001151 ; serial
8 ; refresh
2 ; retry
1 ; expire
1 ; default_ttl
)
@ IN NS main.local.
localhost IN A 127.0.0.1
main IN A 10.0.0.1
w1 IN A 10.0.0.10
w2 IN A 10.0.0.20
w3 IN A 10.0.0.30
</pre>
<br>
<br>
<h3>/var/named/local.reverse (on gateway only)</h3>
<pre>
0.0.10.in-addr.arpa. IN SOA main.local. root.main.local. (
1997022700 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
1.0.0.10.in-addr.arpa. IN PTR main.local.
10.0.0.10.in-addr.arpa. IN PTR w1.local.
20.0.0.10.in-addr.arpa. IN PTR w2.local.
30.0.0.10.in-addr.apra. IN PTR w3.local.
</pre>
<br>
<br>
<a name="ddup"><h3>append to /etc/rc.d/rc.local (dyndns support with ddup)</h3></a>
<pre>
# Update dyndns.org entry with crafty abuse prevention
# This will not work unless you have a dyndns account and the ddup package installed.
# This requires some variables that are set in the firewall config script,
# so this should be appended to the end of the firewall script.
# replace dummy.hostname with your registered hostname
reghost="dummy.hostname"
regip="`nslookup $reghost main.dyndns.org | tail -n 3 | grep 'ddress' | awk '{print $2}'`"
echo -e "\n Dyndns.org abuse prevention IP address check:"
echo "$reghost registered: $regip"
echo -e "$extint has IP address: $extip \n"
if [ "$regip" = "$extip" ]; then
echo "Address has not changed. DDUP not run.";
else
echo "Address has changed. Updating your record.";
ddup --host $reghost;
fi
</pre>
<br>
<br>
<a name="confmod"><h3>/etc/conf.modules (gateway; only 'alias ethx' lines are relevant)</h3></a>
<pre>
alias eth0 3c509
alias parport_lowlevel parport_pc
pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start
alias eth1 tulip
</pre>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Mark Nielsen, Andrew oyd<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Static checking of C programs with LCLint</font></H1>
<H4>By <a href="mailto:iclabs@vsnl.com">Pramode C E and Gopakumar C E</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<BLOCKQUOTE>
<p> "Thou shalt run lint frequently and study its pronouncements with
care, for verily its perception and judgment oft exceed thine."
<DIV ALIGN="right"><cite>-Henry Spencer, "The Ten Commandments for C Programmers"</cite></DIV>
</BLOCKQUOTE>
<p> C programmers take pride in thinking(and often proclaiming to the
world) that they know what they are doing. This supreme self confidence
(or shall we say arrogance?) is not a bad thing - but a little caution
is always judicious as C is a language with many dark corners(why
should people write books like "C Traps and Pitfalls"?). Taking Lint as
a companion with you in your journey into the dark woods of C will
always be worthwhile - though this companion is at times a bit noisy
and tiring!
<H2><b>What is Lint?</b></H2>
<p>In the good old days(it is said), a decision was made to take out
full semantic checking from the C compiler and put it in a stand alone
program called <b>lint</b>(the usual reasons - making the compiler
smaller, simpler and faster - worshiping at the altar of the little
Tin God of efficiency). The C programmer, so sure of himself,
never took the trouble to run lint on his code - with the extremely
gratifying result that he got buggy code which compiled very fast! Lint
is a tool which shows you how your smart C compiler may spring
surprises on you - ignore him at your own peril.
<H2><b>Which Lint should I use?</b></H2>
<p>You can give LCLint a try. LCLint is a powerful tool which is available for free in source form from <a href="http://lclint.cs.virginia.edu/ftp/lclint/lclint-2.4b.src.tar.gz">http://lclint.cs.virginia.edu/ftp/lclint/lclint-2.4b.src.tar.gz</a>
LCLint, as we will see later, is much
more than a lint.</p>
<H2><b>What can LCLint do?</b></H2>
<p>LCLint does the traditional lint checks like detecting:
<ol>
<li>Unused declarations
<li>Type inconsistencies
<li>Unreachable code
<li>Use before definition
<li>Likely infinite loops and fall through cases
<li>Ignored return values and execution paths with no return
</ol>
But the specialty of LCLint is that it can do much more powerful and extensive checks by making use of
annotations (in the form of special comments) in your source program.
<H2><b>Show me LCLint in action</b></H2>
<p>Here is a small C program:
<PRE>
main()
{
int a[10];
if (sizeof(a)/sizeof(a[0]) &gt; -1)
printf("hello\n");
}
</PRE>
We expected this to print hello, but it did not. gcc did not give us any hint. Let us see what lint has to say
about this beauty. Here is the output from running 'lclint a.c':
<PRE>
LCLint 2.4b --- 18 Apr 98
a.c: (in function main)
a.c:4:15: Operands of &gt; have incompatible types (arbitrary unsigned integral
type, int): sizeof((a)) / sizeof((a[0])) &gt; -1
To ignore signs in type comparisons use +ignoresigns
a.c:6:2: Path with no return in function declared to return int
There is a path through a function declared to return a value on which there
is no return statement. This means the execution may fall through without
returning a meaningful result to the caller. (-noret will suppress message)
Finished LCLint checking --- 2 code errors found
</PRE>
Oh, oh, sizeof gives you the size as an unsigned value. We are comparing this to -1, which when interpreted
as an unsigned yields a big number.</p>
<p> The output of LCLint is verbose, but it is in a form readable by ordinary mortals, and not ANSI (or ISO or
whatever) legalese. The output also displays enough of context to help us immediately locate the trouble spot.
Note that we are also told how to turn off such errors, ie, use +ignoresigns as an option when invoking LCLint.
You may call LCLint a program with a very 'helping mentality'.
<p> Let us see another example, a goof-up which any C programmer worth his name should have made when he was a
toddler:
<PRE>
main()
{
int a=0;
while (a=1)
printf("hello\n");
return 0;
}
</PRE>
LCLint is justifiably angry at such amateurish use of C, but he is gentle in his admonishments:
<PRE>
LCLint 2.4b --- 18 Apr 98
c.c: (in function main)
c.c:4:14: Test expression for while is assignment expression: a = 1
The condition test is an assignment expression. Probably, you mean to use ==
instead of =. If an assignment is intended, add an extra parentheses nesting
(e.g., if ((a = b)) ...) to suppress this message. (-predassign will suppress
message)
c.c:4:14: Test expression for while not boolean, type int: a = 1
Test expression type is not boolean or int. (-predboolint will suppress
message)
Finished LCLint checking --- 2 code errors found
</PRE>
<H2><b>Memory management pitfalls</b></H2>
<p> LCLint is capable of detecting many memory management gotchas. Here is one:
<PRE>
#include &lt;stdlib.h&gt;
int main()
{
int *p = malloc(5*sizeof(int));
*p = 1;
free(p);
return 0;
}
</PRE>
If you thought LCLint would be fooled, you are mistaken:
<PRE>
LCLint 2.4b --- 18 Apr 98
d.c: (in function main)
d.c:5:7: Dereference of possibly null pointer p: *p
A possibly null pointer is dereferenced. Value is either the result of a
function which may return null (in which case, code should check it is not
null), or a global, parameter or structure field declared with the null
qualifier. (-nullderef will suppress message)
d.c:4:14: Storage p may become null
Finished LCLint checking --- 1 code error found
</PRE>
When the program is rewritten as follows:
<PRE>
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
int main()
{
int *p = malloc(5*sizeof(int));
if (p == NULL) {
fprintf(stderr, "error in malloc");
exit(EXIT_FAILURE);
} else *p = 1;
free(p);
return 0;
}
</PRE>
LCLint is perfectly happy.
<p> Here is an example of code which tries to free a block twice:
<PRE>
#include &lt;stdlib.h&gt;
main()
{
int *p = malloc(5*sizeof(int));
int *q;
q = p;
free(q); free(p);
return 0;
}
</PRE>
This is how LCLint responds:
<PRE>
LCLint 2.4b --- 18 Apr 98
f.c: (in function main)
f.c:7:19: Dead storage p passed as out parameter: p
Memory is used after it has been released (either by passing as an only param
or assigning to and only global. (-usereleased will suppress message)
f.c:7:10: Storage p is released
Finished LCLint checking --- 1 code error found
</PRE>
<H2><b>Checking macros</b></H2>
<p>One can write perfectly horrible C programs without any assistance from the macro preprocessor and yet
some people are not satisfied. They forget that the C macro preprocessor is a simple program designed to
do simple things and proceed to build grandiose designs with dancing #defines, #ifdef's , #endif's and so
on. The result is utter chaos. The designers of LCLint are very much aware of the C programmer's passion
for macros and they have built into their program the ability to detect many kinds of macro programming
errors.
<p>Here is a typical instance of how a macro defined to work like a function does not work like one.
<PRE>
#define sqr(p) p * p
main()
{
int i=2, j;
j = sqr(i+1);
printf("%d", j); /* prints 5 */
return 0;
}
</PRE>
LCLint is quick to point out the error. Please note that when you run lclint, you must specify that you expect
your macros (with parameters) to behave like functions by using the flag +fcn-macros. Thus, we would invoke the
above program as 'lclint i.c +fcn-macros'. Here is the output from LCLint:
<PRE>
LCLint 2.4b --- 18 Apr 98
i.c:1: Parameterized macro has no prototype or specification: sqr
Function macro has no declaration. (-macrofcndecl will suppress message)
i.c: (in macro sqr)
i.c:1:13: Macro parameter p used more than once
A macro parameter is not used exactly once in all possible invocations of the
macro. To behave like a function, each macro parameter must be used exactly
once on all invocations of the macro so that parameters with side-effects are
evaluated exactly once. Use /*@sef@*/ to denote parameters that must be
side-effect free. (-macroparams will suppress message)
i.c:1:16: Macro parameter used without parentheses: p
A macro parameter is used without parentheses. This could be dangerous if the
macro is invoked with a complex expression and precedence rules will change
the evaluation inside the macro. (-macroparens will suppress message)
i.c:1:20: Macro parameter used without parentheses: p
Finished LCLint checking --- 4 code errors found
</PRE>
The third error message clearly tells you that you need to use parenthesis.
<H2><b>Annotations - the key to LCLint's power</b></H2>
<p>What does a function prototype do? Well, the prototype tells you what all arguments the function accepts - the type
and number of the arguments and the return type of the function. It acts as a sort of interface between the
function and its caller. The caller is required to abide by the interface if he wishes peace for himself, his
program and the world at large. The prototype might also be thought of as placing some sort of constraint on
the legal use of the function.
<p>The provision of constraints on functions comes to your aid when you start building large systems. You
are sure that your function foo_bar() is always called with the right number and type arguments if you
ensure that all your function calls take place in the presence of prototypes. There are several other
constraints which you would like to place on your function, like defining the list of globals which the function
is allowed to modify. The C language does not permit any such constraints, so the only option you have
is to use tools like LCLint.
<p>Here is an example of the use of an annotation.
<PRE>
static void foo(int *a, int *b) /*@modifies *a@*/
{
*a=1, *b=2;
}
main()
{
int p=10, q=20;
foo(&p, &q);
return 0;
}
</PRE>
Note the comment(a stylized comment) /*@modifies *a@/. This is a hint to LCLint that
function foo is constrained to modify the value of *a only. Let us see what output LCLint
produces:
<PRE>
LCLint 2.4b --- 18 Apr 98
j.c: (in function foo)
j.c:3:11: Undocumented modification of *b: *b = 2
An externally-visible object is modified by a function, but not listed in its
modifies clause. (-mods will suppress message)
Finished LCLint checking --- 1 code error found
</PRE>
Here is another example:
<PRE>
static void foo(int *a, int *b) /*@modifies nothing@*/
{
*a=1, *b=2;
}
main()
{
int p=10, q=20;
foo(&p, &q);
return 0;
}
</PRE>
LCLint tells you:
<PRE>
LCLint 2.4b --- 18 Apr 98
k.c: (in function foo)
k.c:3:5: Undocumented modification of *a: *a = 1
An externally-visible object is modified by a function, but not listed in its
modifies clause. (-mods will suppress message)
k.c:3:11: Undocumented modification of *b: *b = 2
k.c: (in function main)
k.c:8:5: Statement has no effect: foo(&p, &q)
Statement has no visible effect --- no values are modified. (-noeffect will
suppress message)
Finished LCLint checking --- 3 code errors found
</PRE>
Here is another one dealing with global variables:
<PRE>
/*@checkedstrict@*/ static int abc, def;
static void foo() /*@globals abc@*/
{
def = 1;
}
main()
{
int p=10, q=20;
foo(&p, &q);
return 0;
}
</PRE>
The annotation /*@checkedstrict@*/ tells LCLint to provide error messages on all undocumented accesses of
global variables, whether it be for reading or writing:
<PRE>
LCLint 2.4b --- 18 Apr 98
l.c: (in function foo)
l.c:5:5: Undocumented use of file static def
A checked global variable is used in the function, but not listed in its
globals clause. By default, only globals specified in .lcl files are checked.
To check all globals, use +allglobals. To check globals selectively use
/*@checked@*/ in the global declaration. (-globs will suppress message)
l.c:2:13: Global abc listed but not used
A global variable listed in the function's globals list is not used in the
body of the function. (-globuse will suppress message)
l.c: (in function main)
l.c:10:5: Called procedure foo may access file static abc
l.c:1:32: File static variable abc declared but not used
A variable is declared but never used. Use /*@unused@*/ in front of
declaration to suppress message. (-varuse will suppress message)
Finished LCLint checking --- 4 code errors found
</PRE>
<p>We have not even scratched the surface of LCLint's capabilities. If you feel that you wish to explore
more, go over to <a href="http://www.sds.lcs.mit.edu/lclint/">http://www.sds.lcs.mit.edu/lclint/</a>.
<H2><b>Concluding remarks</b></H2>
<p>Here is an advice, not from us, but from people who have learned it the hard way - if you wish to use lint
in your project, start from the word go, or risk insanity (Peter van der Linden, in his book 'Expert C programming - Deep C secrets',
talks of a 'lint party' he had at Sun Microsystems. He must have got a kick out of it!).
<p>Lint, especially a very powerful version like LCLint, can be used to learn more about C programming. Just
thinking about the error messages and trying to make them go away will give you a lot of insight.</p>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Pramode C E and Gopakumar C E<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Making Smalltalk with the Penguin</font></H1>
<h3>A quick tour of Smalltalk</h3>
<H4>By <a href="mailto:jagwar@magma.ca">Jason Steffler</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<img SRC="gx/steffler/penguinInBalloon.gif" height=230 width=200 ALIGN="right">
<h2>
<a NAME="abstract"></a>Abstract</h2>
Since VisualWorks Non Commercial (VWNC) has been freely released for Linux,
there's been an increased interest in the Linux community about Smalltalk.&nbsp;
The purpose of this article is to give an introduction to Smalltalk for&nbsp;
Linux enthusiasts who aren't familiar with it, and to share some of the
characteristics of this language that endears itself to so many programmers.
There's lots of <a href="#furtherReferences">tutorials and references</a>
to Smalltalk out there already.&nbsp; This article isn't intended to be
a tutorial or reference for OO programming or Smalltalk, but just a quick
tour to whet the palate.&nbsp; General OO knowledge isn't assumed, and
the article can be read standalone&nbsp; or while coding-along.
<p>Much of the examples here apply equally well to all implementations
of Smalltalk. Though all implementations of Smalltalk share the same basic
characteristics, there are differences among them - especially when GUI
code comes into play. There's a number of freely available<sup><a href="#footnotes">1</a></sup>&nbsp;
Smalltalk implementations available for Linux: <a href="http://www.qpsf.edu.au/software/GNU/smalltalk.html">GNU
Smalltalk</a>, <a href="http://www.informatik.uni-stuttgart.de/stx/stx.html">Smalltalk/X</a>,
<a href="http://minnow.cc.gatech.edu/squeak.1">Squeak</a>,
and <a href="http://www.cincom.com/visualworks/downloads.html">VisualWorks
Non Commercial</a><sup><a href="#footnotes">2</a></sup>.&nbsp; Squeak in
particular is doing some really cool stuff lately, but the examples here
are written in VWNC, since this is the flavour that I'm most familiar with.&nbsp;
Also, even though there's a later version available, I'm going to use VWNC
v3.0 for illustrative purposes since that is the version with the most
freely available tools/extensions available.
<p>This article covers some background information on Smalltalk, getting
and installing VWNC3, characteristics of Smalltalk (with examples), and
further references. The characteristics of Smalltalk that are covered here
are that it:
<ul>
<li>
is a pure OO environment, encourages OO programming</li>
<li>
can save exact state of the IDE</li>
<li>
is a literate language</li>
<li>
is incrementally byte-compiled</li>
<li>
is a portable environment; write once, run anywhere (virtual machine/ GUI)</li>
<li>
can inspect and manipulate objects in real time</li>
<li>
has a large degree of reflectiveness (start with running app, extensions)</li>
<li>
has garbage collection, no explicit pointers</li>
</ul>
<h2>
<a NAME="backgroundInfo"></a>1.0 Background Information</h2>
<u>Little known Java/Smalltalk factoid</u>: the original Oak team wanted
to use VisualWorks Smalltalk for their purposes, but ended up inventing
Java when the licensing of VisualWorks at that time proved to be too costly
for them<sup><a href="#footnotes">3</a></sup>.
<p>Smalltalk has been around for quite a while, it originated at the Xerox
Palo Alto Research Center (PARC) in the early 70s, and its original intention
was to provide an environment for children to start learning how to program
in.&nbsp; Accordingly, its syntax is very simple and it's a very mature
environment.&nbsp; Smalltalk's power is rooted in its large <a href="#glossary">class</a>
library, which can be a double-edged sword.&nbsp; You don't have to keep
reinventing the wheel to get any work done, but on the other hand you spend
a lot of time looking for the right wheel to reuse when you're first learning
it<sup><a href="#footnotes">4</a></sup>.
<p>Another double-edged sword is that it's a pure OO environment, and thus
encourages people to make the paradigm shift to OO much more strongly than
other Object Based (OB) languages<sup><a href="#footnotes">5</a></sup>&nbsp;
(more on this later).&nbsp; People who make the shift tend to become very
attached to Smalltalk and find it a very fun, productive<sup><a href="#footnotes">6</a></sup>,
and theoretically pure environment to work in.&nbsp; People who don't make
the shift tend to shun it, and stay in OB languages where it's easier to
get away with writing procedural code in the guise of writing OO code.
(No Dorothy, just because you're using a C++ compiler doesn't mean that
you're writing OO code).
<p>Though many people characterize Smalltalk as only being useful in large,
<a href="#glossary">vertical
markets</a>, Smalltalk is extremely flexible in that it is also used in
very small, <a href="#glossary">horizontal markets</a>.&nbsp; Smalltalk
has been used to write applications<sup><a href="#footnotes">7</a></sup>
for large network management systems, to hospital clinical systems, to
palm pilots, to micro controllers, to embedded firmware.
<p>But that's enough background information, let's get on with some real
examples.
<br>&nbsp;
<h2>
<a NAME="installationStuff"></a>2.0 Installation Stuff</h2>
VWNC3 can be obtained from a <a href="http://www.cincom.com/visualworks/vwv3beta-form.html">free
download site</a>. You need to fill in your name, address, city, state,
zip, and email address to proceed.&nbsp; After doing this, when you click
the <b>I Accept</b> button, a 20,594 KByte download immediately starts,
'vw.exe'.&nbsp; Not the most user-friendly download mechanism in the world,
especially making a Windoze &amp; Linux version both available in a Windoze
self-extracting archive, but it works.&nbsp; Download this to the parent
directory of where you want it to be, and unzip using <b>unzip vw.exe</b>.&nbsp;
The zip file will extract itself into Vwnc3.&nbsp; For myself, I'm running
dual-boot, so I downloaded into my /dos directory and unzipped from there
so I can also use it from Windoze, giving me a base directory of <b>/dos/vwnc3</b>.&nbsp;&nbsp;
(Alternatively, you can specify a VISUALWORKS environment variable with
the path).
<p>To start it up, I like to copy the virtual machine to the image directory,
or to make a symbolic link.&nbsp; Since I have it installed on my dos partition,
I'll make a copy:
<br><b>&nbsp;&nbsp;&nbsp; cp /dos/vwnc3/bin/linux86/visualnc /dos/vwnc3/image/visualnc</b>
<br>I noticed that the virtual machine isn't executable by default, so
let's make it that way:
<br><b>&nbsp;&nbsp;&nbsp; chmod 555 visualnc</b>
<br>Then to start the image, it's necessary to tell the virtual machine
what image to run, do:
<br><b>&nbsp;&nbsp;&nbsp; cd /dos/vwnc3/image</b>
<br><b>&nbsp;&nbsp;&nbsp; visualnc visualnc.im</b>
<br>A license reminder screen pops up every time you start VWNC, click
<b>I
accept</b>, and proceed through it.&nbsp; The window that appears on top
is called the <b><a href="#glossary">Transcript</a></b>, and the window
below it is called a <b><a href="#glossary">Workspace</a></b>.&nbsp; Next,
you need to inform the image where to find its needed system files.&nbsp;
To do this, click on <b>File>Set VisualWorks Home</b> from the Transcript.&nbsp;
In the dialog that appears, enter in the home directory:&nbsp; <b>/dos/vwnc3.</b>
<p>The Transcript and Workspace look like:
<blockquote><img SRC="gx/steffler/transcript01.jpg" height=158 width=421>
<br><b>Fig. 1 - VWNC Transcript</b>
<p><img SRC="gx/steffler/workspace01.jpg" height=308 width=423>
<br><b>Fig. 2 - Default VWNC transcript</b></blockquote>
<p><br>The startup workspace has some useful information that's worth reading,
but it isn't necessary to read it to continue through this article.
<p><u>A note on mice</u>:&nbsp; Smalltalk assumes that you have a three
button mouse.&nbsp; If this isn't the case, you can simulate a three button
mouse on a two button mouse by clicking both the left and right buttons
at the same time.
<h2>
<a NAME="notableCharacteristics"></a>3.0 Some Notable Characteristics of
Smalltalk</h2>
<h3>
<a NAME="savingYourWork"></a>3.1 Saving your work</h3>
Here's another double-edged sword:&nbsp; the great thing is that when you
save your IDE, <b>everything</b> is saved <b>exactly</b> in the state where
you left it.&nbsp; What windows you have open, where they were open, what
was highlighted, the <a href="#glossary">objects</a> that exist, everything.&nbsp;
A snapshot in time is taken and is saved in an image.&nbsp; There's no
need to reload a text file into a text editor, and find where you left
off.&nbsp; The other edge is that if you have a corrupted database connection
or have overwritten some objects you shouldn't have, that's also saved
with the image.&nbsp;&nbsp; So there's a need to be cognizant of the state
of your environment when saving it.&nbsp; Having said that though, you
can save your code separate from the image, and reload it into a clean
image if you do run into problems (a good idea to do anyway).&nbsp; A simple
way to save your code is in a fileout.
<p>Lets give saving a try (might as well save the system file location
you just specified). Move your windows around until they're where you like
them, then save your image, select<b> File>Save As...</b> It's a good idea
to save your image as something other than the virgin image, so if you
run into problems you can always return to the clean image and reload your
code.&nbsp; I'll save the image as <b>testingImage</b>. After saving, try
closing the image <b>File>Exit VisualWorks...>Exit.&nbsp; </b>Then to restart,
be sure to pass the new image name to the virtual machine.&nbsp; Note,
that when you save your image, the date and time are printed on the transcript,
like so:
<blockquote><img SRC="gx/steffler/transcript02.jpg" height=158 width=421>
<br><b>Fig. 3 - Transcript after saving as 'testingImage'</b></blockquote>
There's a lot more I could say here on saving your work (Perm Save As,
filing out, change log, Envy), but I'll digress in the interests of brevity.
<br>&nbsp;
<h3>
<a NAME="everythingIsAnObject"></a>3.2 Everything is an object</h3>
...this was my mantra for the first 6 months when I was learning Smalltalk.&nbsp;
Like most programmers back then, I had a background in procedural programming
and it was very difficult to shake that mindset.&nbsp; Here's where the
infamous paradigm shift comes into play.&nbsp; The Transcript is an object,
the menus on the transcript are objects, the buttons on the transcript
are objects, the Workspace is an object, etc.&nbsp; But before we get into
that, let's start with the venerable 'Hello World' example:
<p><a NAME="ex1"></a><b><u>Ex 1</u>: Hello World</b>
<ul>
<li>
Open a new workspace (click on <b>Tools>Workspace)</b></li>
<li>
In the workspace, type: <b>Transcript cr.&nbsp; Transcript show: 'Hello
World.'</b></li>
<li>
Congratulations, you just wrote your first Smalltalk code.&nbsp; Now let's
see it work:</li>
<li>
Highlight that line of code, middle click and select <b>do it</b> (This
evaluates the Smalltalk code you just wrote)</li>
<li>
You should see the 'Hello World' text be printed in the Transcript:</li>
<br><img SRC="gx/steffler/transcript03.jpg" height=158 width=421>
<br><b>Fig. 4 - Hello World example</b>
<li>
Let's examine the Smalltalk code:</li>
</ul>
<ul>&nbsp;
<table BORDER COLS=2 WIDTH="90%" NOSAVE >
<tr NOSAVE>
<td NOSAVE><b>Transcript cr.</b></td>
<td>This code gets a hold of the Transcript object, and asks it to show
a carriage return on itself.</td>
</tr>
<tr>
<td><b>Transcript show: 'Hello World.'</b></td>
<td>Gets a hold of the Transcript object, and asks it to show 'Hello World'
on itself</td>
</tr>
</table>
<li>
You can also print 'Hello World' to the command line, open a new window
and print 'Hello World' on it, or design a GUI and put 'Hello World' on
it.&nbsp; But again for the sake of brevity, we'll move on.</li>
<li>
<b>cr</b> is a message to Transcript, just as <b>show:</b> is a message
to Transcript too.&nbsp; They're just messages that Transcript knows how
to respond to.&nbsp; They're not part of Smalltalk syntax.</li>
<li>
The above point is important to remember for the non-OO programmers out
there, <i>we send messages to objects to ask them to do something</i>.</li>
</ul>
Realize that you just executed your first Smalltalk code <i>without compiling.
</i>You
didn't have to save your code, compile and link it, and then run it.&nbsp;
"So what, it's an interpretive language" you say.&nbsp; Well, not really.&nbsp;
To be more precise, it's an <i>incrementally byte-compiled language</i>.&nbsp;
I'll come back to this <a href="#incrementalByteCompiling">in a bit</a>.&nbsp;
For now, just be aware that you're coding and executing in Smalltalk seamlessly.&nbsp;
Now, on to the next example:
<p><a NAME="ex2"></a><b><u>Ex 2</u>: Displaying current date</b>
<ul>
<li>
In your opened workspace, type:&nbsp; <b>Date today</b></li>
<li>
Highlight that line of code, middle click and select <b>print it </b>(This
evaluates the Smalltalk code you just wrote, and prints out the result.)</li>
<li>
You should see the current date printed, like:</li>
<br><img SRC="gx/steffler/workspace02.jpg" height=180 width=346>
<br><b>Fig. 5 - Printing Date today</b></ul>
<ul>&nbsp;
<table BORDER COLS=2 WIDTH="90%" NOSAVE >
<tr>
<td><b>Date today</b></td>
<td>Asks the class Date what the date today is</td>
</tr>
</table>
<li>
Ok, let's get a better look at what <b>Date today</b> is evaluating to.&nbsp;
Highlight that line of code (without the date that was printed), middle
click and select <b>inspect it</b>.&nbsp; You should see:</li>
<br><img SRC="gx/steffler/aDate01.jpg" height=116 width=264>
<br><b>Fig. 6 - An inspector on a date</b>
<li>
This is called an <a href="#glossary">inspector</a> (This too is an object
BTW).&nbsp; Inspectors are objects that allow you to have a peek at objects.&nbsp;
If you click on <b>self</b> in the inspector, you'll see a textual representation
of the date:</li>
<br><img SRC="gx/steffler/aDate02.jpg" height=116 width=264>
<br><b>Fig. 7 - Inspector showing textual representation of the date</b>
<li>
Look familiar?&nbsp; That's because in Fig. 5, when you printed the <b>Date
today</b>, you were really printing a <i>textual representation</i> of
the Date object.&nbsp; If you click on the two other attributes of this
date, you'll see that <b>day</b> keeps what day number it is within the
year (1->365, usually), and <b>year </b>keeps what year the date is for.</li>
<li>
All objects have a textual representation, even if it's just the type of
object it is (though that isn't very useful).</li>
<li>
The inspector is a very powerful concept.&nbsp; Realize that you just asked
Date for the current date, and you got a hold of a date object.&nbsp; You
can not only peek around this date, but you can also work with it and modify
it.&nbsp; For example, click on <b>day</b>, and enter in n+1 for what is
there.&nbsp; In Fig 7, Feb 6 is the 37th day of the year, so I'll enter
in 38.&nbsp; Then middle click, and choose <b>accept</b>.&nbsp; You'll
notice that it appears that nothing has changed.&nbsp; But what you've
done is to now set the object to represent the date for the n+1th day of
the year.&nbsp; Now, if you click back to the <b>self</b> on the date,
you'll see it's now showing a date for one day later than what the current
date is:</li>
<br><img SRC="gx/steffler/aDate03.jpg" height=116 width=264>
<br><b>Fig. 8 - Inspector showing date after current date</b></ul>
So, not only can we write code and immediately execute it, but we can grab
hold of objects, and manipulate them directly with immediate effect.&nbsp;
These two abilities is part of what makes Smalltalk such a productive environment.&nbsp;
You can code-n-test in real time. If you don't understand what's going
on, you can just grab an object to see what its state is, and manipulate
it to see how it behaves.&nbsp; After a build, if there's a bug in testing,
you can quickly code in a fix and just load it into the testing environment
- no need to recompile.
<p>Another thing to notice is the <a href="#glossary">literateness</a>
of Smalltalk.&nbsp; To get the date today we just asked <b>Date</b> for
<b>today</b>.&nbsp;
Though Smalltalk is a very literate language, it obviously has to break
down somewhere, for example, we can't ask <b>Date</b> for
<b>tomorrow</b>.&nbsp;
That being said though, the general syntax of Smalltalk is very simple
and easy to read.&nbsp; Keep this in mind while looking through the upcoming
code examples.
<p>Let's move on to the third example of this section then, and get into
the paradigm shift aspect of OO:
<p><a NAME="ex3"></a><b><u>Ex 3</u>: Illustrating the paradigm shift</b>
<ul>
<li>
In your workspace, type: <b>1 + 2 * 3</b></li>
<li>
Now, before you evaluate this code, think about what the answer is going
to be.&nbsp; You're probably thinking 7.&nbsp; Well, highlight the line
of code and <b>print it</b></li>
<li>
You'll notice the answer is 9:</li>
<br><img SRC="gx/steffler/workspace03.jpg" height=180 width=346>
<br><b>Fig. 9 - Result of message send</b>
<li>
It's funny how many non-OO programmers go running in tears after I show
them this.&nbsp; "What!&nbsp; No operator precedence, what a foul language!&nbsp;
I'm going to stick to C++ because I can understand it!"&nbsp; Seriously,
I've had it happen many times.</li>
<li>
However, reality depends on the blinders you're wearing; when I wrote the
answer above, I first thought of writing 9, because I was thinking in an
OO mindset, not a procedural mindset.</li>
<li>
The reason this is the case, is because (repeat after me) <b>everything
is an object</b>.&nbsp; In this example, the numbers 1, 2, and 3 are all
objects.&nbsp; The operators: + and * are just <i>messages</i> that are
being sent to objects.&nbsp; The reasoning is that if + and * are just
messages, why should they have precedence over other types of messages?&nbsp;
All messages of the same type are treated equal in Smalltalk.</li>
<li>
To see for yourself, highlight <b>1</b>, middle click, and choose <b>inspect</b>.&nbsp;
You'll get an inspector on SmallInteger, which is the type of object that
the object 1 is.</li>
<br><img SRC="gx/steffler/aSmallInt01.jpg" height=120 width=231>
<br><b>Fig. 10 - Inspecting the object 1</b>
<li>
So, the code is evaluated as:</li>
<ul>
<li>
(the number 1) is asked to do (+) with (the number 2)</li>
<li>
(the number 1) does this, answers the object: (the number 3)</li>
<li>
(the number 3) is asked to do (*) with (the number 3)</li>
<li>
(the number 3) does this, answers the object: (the number 9)</li>
</ul>
<li>
To get the code to evaluate as a procedural mindset would expect, you can
use brackets: <b>1 + (2 * 3)</b></li>
<li>
"OK, why can't I highlight the date I printed, <b>February 6, 2000</b>,
and inspect that to see the date object?"&nbsp; Good question.&nbsp; The
simple answer is that there are certain types of objects that can be brought
into being (instantiated) by just inspecting a textual representation of
them, and there are certain types of objects that can't.&nbsp; Integers
are one of those types of objects that can be instantiated by inspecting
a textual representation of them.</li>
</ul>
<h2>
<a NAME="incrementalByteCompiling"></a>4.0 Incremental byte compiling</h2>
As I mentioned before, Smalltalk is an incremental byte compiled environment.&nbsp;
Some people describe it as being a cross between compiled and interpretive
languages.&nbsp; What happens when you do or print something, is:
<ol>
<li>
the Smalltalk compiler translates the Smalltalk code into byte codes</li>
<li>
the byte codes are passed to the virtual machine for execution</li>
<li>
the byte codes are executed, and the result is returned</li>
</ol>
Well, this sounds rather interpretive, doesn't it?&nbsp; The difference
is that what we've been doing so far isn't normal Smalltalk programming.&nbsp;
Recall that Workspaces are just a temporary sandbox.&nbsp; Normally, when
you're programming, you accept Smalltalk code (save it in the image), and
the code <i>stays byte-compiled</i>.&nbsp; Normally, when you're programming,
you accept Smalltalk code in <a href="#glossary">methods</a> for a class,
and:
<ol>
<li>
the Smalltalk compiler translates the Smalltalk code into byte codes</li>
<li>
the byte codes are kept with that class</li>
<li>
when a message is sent to a class, the appropriate byte codes for the method
are sent to the virtual machine for execution</li>
<li>
the byte codes are executed, and the result is returned</li>
</ol>
The net result is that every time you make a change to your classes, that
small change is semantically&nbsp; checked, is&nbsp; compiled, and takes
effect immediately.&nbsp; It's pretty cool to make a tiny change, then
see it immediately reflected in your program's behaviour.
<p>Java is similar in the respect that it is byte compiled, but different
in the respect that it isn't <i>incrementally</i> byte compiled.&nbsp;
So when Java programming, you need to recompile all of it (or parts of
it if you're using make), and relink all of it every time you want a change
to take effect.
<br>&nbsp;
<h2>
<a NAME="virtualMachine"></a>5.0 Virtual Machine/Portability</h2>
The virtual machine is just what it sounds like - a virtual computer that
knows how to execute Smalltalk bytecodes.&nbsp; The virtual machine is
usually implemented in C (squeak is the notable exception to this, even
its virtual machine is implemented in Smalltalk - then exported to C programmatically).&nbsp;
It's the virtual machine that allows for such portability across different
machine types.&nbsp; Smalltalk has had the write once, run everywhere paradigm
for <b>decades</b>!&nbsp; To give you a quick taste of this, select <b>File>Settings</b>.&nbsp;
In the Dialog that pops up, select the <b>Look Selection</b> of <b>Macintosh,
</b>then
select <b>Accept.</b>
<blockquote><img SRC="gx/steffler/settings01.jpg" height=365 width=439>
<br><b>Fig. 11- Selecting a Mac look-n-feel</b></blockquote>
Now you'll notice that your entire system is running with a Mac look-n-feel!&nbsp;
The first time I saw this back in '95, it blew me out of my chair.&nbsp;
I had just spent a year doing a very painful port of&nbsp; OpenWindows
to Motif for parts of a C based application.&nbsp; Then, here somebody
showed me how they could 'port' their application from SunOS to Solaris
to MacOS with a click of a button!
<blockquote><img SRC="gx/steffler/transcript04.jpg" height=158 width=421>
<br><b>Fig. 12 - Transcript with Mac look-n-feel</b></blockquote>
Keep in mind that the above window is running on a Linux box!&nbsp; I commonly
use this feature at work when my employer is developing in Windoze, because
I prefer the Motif look-n-feel.
<h2>
<a NAME="reflectiveness"></a><b>6.0 Reflectiveness</b></h2>
Here's where I think the real power of Smalltalk comes to play:&nbsp; in
its <a href="#glossary">reflectiveness</a>.&nbsp; In Smalltalk, 98% of
Smalltalk is written in Smalltalk, which makes it easy to customize, enhance,
or tweak the environment.&nbsp; (Squeak is the notable exception here,
100% of it is written in Smalltalk).&nbsp; So it's very easy to see how
Smalltalk is written, and to extend it for your needs.&nbsp; In fact, this
is the whole basis of development in Smalltalk.&nbsp; You <i>start with
a running application</i>, you add business-specific extensions to it,
strip out the parts you don't need, and then deliver the running application.&nbsp;
Here's a simple example to show how to extend Smalltalk:
<p><a NAME="ex4"></a><b><u>Ex 4</u>: Adding inspect menus to all windows</b>
<ul>
<li>
Remember when I said that the Transcript and default workspace were objects?&nbsp;
We should be able to inspect them then right?&nbsp; Right.&nbsp; However,
it's not that easy in the environment as it comes to grab hold of an arbitrary
window to inspect it.&nbsp; We're going to add a simple extension that
allows for this.</li>
<li>
Open a class browser <b>Browse>All Classes</b></li>
<li>
You now see what is called the class browser, or System Browser.</li>
<br><img SRC="gx/steffler/classBrowser01.jpg" height=352 width=644>
<br><b>Fig. 13 - Empty class browser</b>
<li>
Going through the panes from left to right, top to bottom, you see: <a href="#glossary">categories</a>,
<a href="#glossary">classes</a>,
<a href="#glossary">protocols</a>,
<a href="#glossary">methods</a>,
and method code.&nbsp; Additionally, you'll see two radio buttons: one
sets the browser to look at the instance side of a class, the other sets
the browser to look at the class side.&nbsp; (We're going to do one instance
method and one class method.)</li>
<li>
Middle click on the category pane, and select <b>Find Class...</b>, then
enter <b>StandardSystemController</b> in the dialog that pops up</li>
<li>
After the browser highlights the <b>StandardSystemController</b> class,
click on the <b>menu messages</b> protocol in the protocol pane, and on
the <b>back</b> method in the method pane.&nbsp; You should now see:</li>
<br><img SRC="gx/steffler/classBrowser03.jpg" height=352 width=644>
<br><b>Fig. 14 - Class browser with method selected.</b>
<li>
Briefly, categories are groups of classes, we have the <b>Interface-Framework</b>
category selected.&nbsp; We also have the <b>StandardSystemController</b>
class selected.&nbsp; Protocols are groups of methods, and we currently
have the
<b>menu messages</b> protocol selected.&nbsp; Methods are where
the code is implemented, and we have the <b>back</b> method selected.</li>
<li>
We're going to add a method to the <b>menu messages</b> protocol. To do
this, just highlight all of the current method and delete it.&nbsp; Don't
worry, the method isn't gone and won't be deleted by doing this.&nbsp;
It's just an easy way to create a new method in the currently selected
protocol.</li>
<li>
Then type in the text:</li>
<br><b>inspectView</b>
<p><b>&nbsp;&nbsp;&nbsp; self view model inspect.</b>
<li>
Then to save the method, middle click and choose <b>accept</b>.</li>
<li>
You'll notice that the method you just entered is now showing in the browser.&nbsp;
It's already been compiled and is ready to be executed.&nbsp; You should
see:</li>
<br><img SRC="gx/steffler/classBrowser04.jpg" height=352 width=644>
<br><b>Fig. 15 - Added inspectView method</b>
<li>
Next, we need to add a class side method.&nbsp; Click on the <b>class</b>
radio button in the class browser.</li>
<li>
Then click on the <b>class initialization</b> protocol, and on the <b>flushMenus</b>
method.</li>
<li>
Just as before, delete all of the text for the method, (the <b>flushMenus</b>
method won't be deleted), and type:</li>
<br><b>initializeForAdditions</b>
<br><b>&nbsp;"Initialize the menu."</b>
<br><b>&nbsp;"self initializeForAdditions"</b>
<p><b>&nbsp;ScheduledBlueButtonMenu :=</b>
<br><b>&nbsp; Menu</b>
<br><b>&nbsp;&nbsp; labels: 'relabel as...\refresh\move\resize\front\back\collapse\close\inspect'
withCRs</b>
<br><b>&nbsp;&nbsp; lines: #(1 7 8)</b>
<br><b>&nbsp;&nbsp; values: #( #newLabel #display #move #resize #front
#back #collapse #close #inspectView).</b>
<li>
After you're done typing this, middle click and <b>accept</b> the method.&nbsp;
Now you should see:</li>
<br><img SRC="gx/steffler/classBrowser05.jpg" height=352 width=644>
<br><b>Fig. 16 - Added initializeForAdditions method</b>
<li>
OK, now comes the neat part.&nbsp; Right click over the method code pane,
you should see the window menu:</li>
<br><img SRC="gx/steffler/classBrowserWindowMenu01.jpg" height=192 width=101>
<li>
At this point, the code has been byte-compiled.&nbsp; But, since it's initialization
code, it hasn't been run yet.&nbsp; We can run this code right from the
browser; just highlight the <b>self initializeForAdditions</b> text, middle
click, and <b>do it</b>.</li>
<li>
Now that the code has been run, you should see <b>inspect</b> added to
the bottom of the window menu:</li>
<br><img SRC="gx/steffler/classBrowserWindowMenu02.jpg" height=217 width=101>
<li>
Now we can inspect any window that has this menu window defined on it.&nbsp;
Try it out by inspecting this class browser we've been using.&nbsp; Just
right click, and choose <b>inspect</b>.&nbsp; You'll see an inspector on
the class browser, selecting the <b>className</b> attribute, you'll see
the class there matches the current class selected:</li>
<br><img SRC="gx/steffler/aClassBrowser01.jpg" height=282 width=324></ul>
Note: What we just did here was a base image extension.&nbsp; This is a
type of coding change that should be done and tracked carefully.
<h2>
<a NAME="garbageCollection"></a>7.0 Garbage Collection</h2>
Yea, though I walk through the valley of doomed schedules, I shall fear
no deallocating...
<p>Garbage collection: AKA the sanity saver.&nbsp; Smalltalk has garbage
collection, which means objects that are no longer referenced are cleaned
up to free up memory.&nbsp; I remember pulling out my hair many a time
when programming in C++ trying to find memory leaks.&nbsp; This is because
in C++ it's up to the developer to manage your memory.&nbsp; If you didn't
deallocate the memory you're using, your application would continually
take up more memory until your machine ran out of memory and crashed.
<p>Speaking of machines crashing, you'll note that we never had to do any
pointer manipulation.&nbsp; This is because Smalltalk has no pointers.&nbsp;
(Well, this is technically incorrect.&nbsp; Every variable reference is
actually a pointer to an object, it's just that in Smalltalk the developer
is relieved of the burden of manually maintaining pointers).
<br>&nbsp;
<h2>
<a NAME="summary"></a>8.0 Summary</h2>
I hope that I've been able to give a concise, meaningful tour of Smalltalk
that has been approachable by non OO programmers.&nbsp; I've shown that
Smalltalk:
<ul>
<li>
is a pure OO environment, encourages OO programming</li>
<li>
can save exact state of the IDE</li>
<li>
is a literate language</li>
<li>
is incrementally byte-compiled</li>
<li>
is a portable environment; write once, run anywhere (virtual machine/ GUI)</li>
<li>
can inspect and manipulate objects in real time</li>
<li>
has a large degree of reflectiveness (start with running app, extensions)</li>
<li>
has garbage collection, no explicit pointers</li>
</ul>
There's lots of other cool things I would liked to have touched upon in
this article, but space constraints just don't allow for them:
<ul>
<li>
the online help</li>
<li>
debugger</li>
<li>
numbers - (try printing <b>100000 factorial </b>in a workspace (if you
have the time for crunching - number size is only limited by your memory),
or try inspecting <b>12/7</b>)</li>
<li>
parcels - a code sharing mechanism</li>
<li>
Refactoring Browser - my favourite programming tool</li>
<li>
HotDraw - a reusable draing framework</li>
<li>
testing frameworks - automate your testing</li>
<li>
dynamic changing of widgets at runtime</li>
</ul>
<h2>
<a NAME="glossary"></a>Glossary</h2>
<table BORDER COLS=2 WIDTH="100%" NOSAVE >
<tr NOSAVE>
<td WIDTH="10%" NOSAVE><b>Category</b></td>
<td>A group of classes</td>
</tr>
<tr>
<td><b>Class</b></td>
<td>A type of an object</td>
</tr>
<tr>
<td><b>Horizontal market</b></td>
<td>A market that tends to have a very large audience and has a very small
impact on that audience.&nbsp; Shinkwrapped software addresses a horizontal
market. For example, a word processing package - if it crashes, just reload
your last saved snapshot.</td>
</tr>
<tr>
<td><b>Inspector</b></td>
<td>A GUI type of object that allows you to look at and work with objects.</td>
</tr>
<tr>
<td><b>Literateness</b></td>
<td>A simple definition of literateness is how readible/simple the syntax
of a language is.&nbsp; Literate programming is programming for readability
for the programmer who comes after you.</td>
</tr>
<tr>
<td><b>Method</b></td>
<td>A piece of Smalltalk code for an object.</td>
</tr>
<tr>
<td><b>Object</b></td>
<td>A grouping of related data and operations.&nbsp; It exhibits behaviour
through its operations on its data.</td>
</tr>
<tr>
<td><b>Protocol</b></td>
<td>A group of methods.</td>
</tr>
<tr>
<td><b>Reflectiveness</b></td>
<td>How much of an environment can be manipulated within itself.&nbsp;
In Smalltalk, 98% of Smalltalk is written in Smalltalk, which makes it
easy to customize, enhance, or tweak the environment.&nbsp; (Squeak is
the notable exception here, 100% of it is written in Smalltalk).</td>
</tr>
<tr>
<td><b>Transcript</b></td>
<td>The main window of the IDE, where other windows (browsers, workspaces,
etc) are opened from.&nbsp; Also keeps a running list of system messages.</td>
</tr>
<tr>
<td><b>Workspace</b></td>
<td>A scratchpad where developers can experiment with code.</td>
</tr>
<tr>
<td><b>Vertical market</b></td>
<td>A market that tends to have a very small audience and has a very large
impact on that audience.&nbsp; For example, a network management system
for a telecommunications company - if it crashes the company loses a million
dollars a minute.</td>
</tr>
</table>
<h2>
<a NAME="furtherReferences"></a>Further References</h2>
<ol>
<li>
A <a href="http://max.cs.kzoo.edu/~eatkins/smtlk/smhist.html">history of
Smalltalk</a></li>
<li>
A <a href="http://www.qks.com/Information_Desk/history.asp">brief history
of Smalltalk</a></li>
<li>
<a href="http://www.goodstart.com">GoodStart</a></li>
<li>
WikiWikis:</li>
<ol>
<li>
<a href="http://www.iam.unibe.ch/~scg/cgi-bin/Smalltalk.cgi">Smalltalk</a></li>
<li>
<a href="http://minnow.cc.gatech.edu/squeak.1">Squeak</a></li>
<li>
<a href="http://wiki.cs.uiuc.edu/VisualWorks/">VisualWorks</a></li>
</ol>
<li>
Newsgroup:&nbsp; comp.lang.smalltalk</li>
<li>
Free Smalltalk archives:</li>
<ol>
<li>
<a href="http://st-www.cs.uiuc.edu/">Smalltalk</a> <i>(UIUC - the granddaddy
of Smalltalk archives)</i></li>
<li>
<a href="http://www.squeak.org/">Squeak</a></li>
<li>
<a href="http://www.listserv.gmd.de/archives/vswe-l.html">VSE</a> <i>(in
German)</i></li>
</ol>
<li>
Tutorials:</li>
<ol>
<li>
<a href="http://www.squeak.org/#tutorials">Squeak</a></li>
<li>
<a href="http://cyclone.cs.clemson.edu/~lab428/VW/VWTableOfContents.html">VisualWorks</a></li>
</ol>
<li>
<a href="http://www.panasoft.com/stlinks/">Lots 'o Smalltalk Links</a></li>
<li>
<a href="http://www.dnsmith.com/SmallFAQ/">Dave's Smalltalk FAQ</a> <i>(There's
a number of ones out there, but even though it's dated, this is the best
IMHO.&nbsp; Dave - it'd be great if you ever got time to finish this.)</i></li>
<li>
<a href="http://www.extremeprogramming.org/">eXtreme Programming</a><i>
(Which originated in a Smalltalk project)</i></li>
</ol>
<h2>
<a NAME="footnotes"></a>Footnotes</h2>
<ol>
<li>
Every implementation has different license restrictions.&nbsp; To my knowledge,
only GNU Smalltalk&nbsp; and Squeak have GNU copyleft types of licenses.</li>
<li>
The last two implementations are the newer ones.</li>
<li>
In <a href="http://x37.deja.com/getdoc.xp?AN=564595555&CONTEXT=949863157.89849870&hitnum=0">article</a>:
<i>http://x37.deja.com/getdoc.xp?AN=564595555&amp;CONTEXT=949863157.89849870&amp;hitnum=0</i></li>
<br><i>&nbsp;Author:</i>
<br><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Eric Clayberg</i>
<br><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;clayberg@instantiations.com></i>
<p><i>&nbsp;Patrick Logan &lt;patrick@c837917-a.potlnd1.or.home.com></i>
<br><i>&nbsp;wrote in message</i>
<br><i>&nbsp;news:hTN84.453$HT1.6388@news.rdc1.wa.home.com...</i>
<br><i>&nbsp;></i>
<br><i>&nbsp;> I wish the original Oak team had chosen to adopt Smalltalk</i>
<br><i>&nbsp;> rather than invent Java</i>
<p><i>They tried to, but ParcPlace wanted too much on a per-copy royalty
basis...sigh</i>
<br>&nbsp;
<li>
Bah!&nbsp; Real programmers reinvent the wheel all the time, it puts hair
on your chest!&nbsp; ...sigh, I've run into that far too many times over
the years.&nbsp; More often than not, the wheels that are reinvented tend
to be rather square.&nbsp; Too bad that schools often encourage this mentality
during formal training.&nbsp; [End soapbox]</li>
<li>
This is some loose terminology that shifts depending on who you're speaking
with.&nbsp; For my purposes, an Object based (OB) language is a non-OO
language that has been evolved towards Object-orientedness.&nbsp; (C++,
OO-COBAL, etc).&nbsp; Some people call these bastardized OO languages.</li>
<li>
Some productivity numbers from <a href="http://www.spr.com/library/0langtbl.htm#Smalltalk">Software
Productivity Research</a>. (A sample of ave. source statements/function
point: Smalltalk: 21, C: 128, C++: 53, Visual Basic 5: 29)</li>
<li>
<a href="http://www.goodstart.com/whoswho.html">GoodStart - who's using
Smalltalk</a><i> - http://www.goodstart.com/whoswho.html</i></li>
</ol>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Jason Steffler<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Process Cloning in C</font></H1>
<H4>By <a href="mailto:Alex.Vrenios@motorola.com">Alex Vrenios</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P> <B>Introduction:</B> </P>
<P>Software mobility means different things to different people. <I>Mobile computing</I> is often used to mean email access from a laptop, <I>process migration</I> refers to the automatic redistribution of active processes within a cluster system, and <I>agent migration</I> describes processes on a mission, gathering data for a full report upon returning home. The first example is an extension of the client-server paradigm of the 1980s while the other examples, self-directed movement of a process from one networked machine to another, is the subject of leading edge research [1]. </P>
<P>Cluster systems are multi-computers, a network of machines that present a single-server image to a client. There are many different processes running on a cluster system, some of which may self-replicate in order to handle a suddenly higher client request load. A cluster operating system may direct one or more of its processes to migrate to other machines on its network, redistributing the overall system resource load. </P>
<P>Autonomous agents are single processes that are best described by example. Consider wanting to collect the cheapest possible prices on all the components needed to build your "dream computer" system. Imagine having to visit or call all those parts stores to compare prices of system boards, disk and CD-ROM drives, etc. Now imagine sending your intelligent agent software out to do web searches, examining each site, and returning with the complete list of parts, including prices and URLs. If you give it your credit card number, all those parts could be shipped to your door! You get the idea. </P>
<P>The very first step toward implementing any process migration system is to figure out how to get a duplicate process started on some other machine from within your active process. This isn't quite a remote-fork operation because the new process can be started from its beginning. This isn't just a remote-shell operation, either, because there is no guarantee that a copy of the binary executable exists on the remote machine. What techniques do you use? What system file modifications must be made to a remote machine in order to make it amenable to your request to run a copy of your active process? Let's examine the issues surrounding what we call <B>process cloning</B>. </P>
<P>&nbsp;</P>
<P><B>Background:</B> </P>
<P>The approach is to develop a <I>service</I> and an associated function interface. Your process calls the function with the name of a remote host. The function connects to a well-known port on the remote machine to invoke the cloned service through the inter-networking daemon, inetd. </P>
<P>Early Unix systems ran daemons for every service that waited for a remote connection. When you used telnet, for example, there was a telnet daemon named telnetd waiting for your connection to port number 23 on the remote machine. (Port 23 is always used for telnet. It is one of many so-called well-known ports defined in /etc/services.) There came to be so many daemon processes waiting for connections that the amount of available swap space and the number of user processes became limited. </P>
<P>The super-server solved these problems by waiting for a connection to one of a list of its well-known ports, automatically starting associated servers when connections were made. One need only add a line entry to two files to register a new service. You must be root to edit these files or to request that inetd reinitialize itself and reread them [2]. </P>
<P>Keep in mind that when you allow a process on some remote machine to start a copy of itself on your machine, you bare a significant <U>security risk</U> of that new process being hostile. All of the computers on my network are completely under my control so security is not a concern of mine. That issue will not be discussed further.</P>
<P>&nbsp;</P>
<P><B>How It Works:</B> </P>
<P>The service needs to be defined in /etc/services. Add an entry as follows:</P>
<PRE>&#9;clone&#9;5050/tcp&#9;# automatically starts cloned</PRE>
<P>&nbsp;</P>
<P>where clone is the service name, 5050 is the well-known port number, and tcp is the communications socket's transport protocol. We picked the 5050 port because it was higher than the reserved system port numbers, and it wasn't already in use. (The 50-50, half-and-half connotation will make this port number easy to remember.) </P>
<P>The clone service needs to be defined to inetd in /etc/inetd.conf as follows: </P>
<PRE>
&#9;clone&#9;stream&#9;tcp&#9;nowait&#9;root&#9;/user/bin/cloned&#9;cloned</PRE>
<P>&nbsp;</P>
<P>where clone is the service name, a match to the /etc/services entry. (See the man pages for inetd.conf for descriptions of other parameters [2].) Note that inetd will not know about these new entries until the system is rebooted, or unless you issue a command to force it to reread its configuration file. Issue </P>
<PRE>
&#9;&gt;killall -HUP inetd</PRE>
<P>&nbsp;</P>
<P>as the root user to make inetd reread its service definition file. </P>
<P>&nbsp;</P>
<P><B>How It's Used:</P>
</B><P>Your application makes a function call to clone() with the name of the remote host where the new copy of your process is to be started. The clone() function determines the name of the active process by searching for its own process id in a ps command output listing. It uses which command output to find the path to the executable. </P>
<P>When clone() connects to port 5050, inetd accepts the connection and does the plumbing necessary to set cloned's stdin to the socket receive stream and its stdout to the socket send stream. The cloned service gets control from inetd via fork() and execl() calls [3]. </P>
<P>When cloned gets control on the remote machine, it reads the name of the executable that is sent in the first packet. The received executable data will be written to the local /tmp area using the same executable name.</P>
<P>&nbsp;</P>
<P><B>Summary:</P>
</B><P>The local application calls clone() with the name of the remote host. The clone() function connects to the clone service port, causing cloned to be started on the remote machine. It then copies the executable over the socket connection to the remote machine, where it is written into the local /tmp area by the cloned daemon, activating it via fork() and execl().</P>
<P>What happens next depends on the needs of your application. You may wish to open a new connection to your remote clone so both copies remain active. You may wish to terminate the local version to effect agent migration. You might even have the remote copy start another remote copy somewhere else, forming a daisy-chain peer-to-peer network.</P>
<P>How it all works is ultimately up to you, but the first step is to get that process active on a remote machine. An application named <A HREF="misc/vrenios/test.c.txt">test.c</A> and the clone daemon, <A HREF="misc/vrenios/cloned.c.txt">cloned.c</A> along with its interface function, <A HREF="misc/vrenios/clone.c.txt">clone.c</A> are included with this article. All are written in C and tested on Red Hat Linux version 4.2. </P>
<P>&nbsp;</P>
<P><B>References:</P>
</B><P>[1] Milojicic, D., Douglis, F. and Wheeler, R., Processes, Computers, and Agents, Association for Computing Machinery Press, 1998.</P>
<P>[2] See the Unix man pages for inetd and inetd.conf.</P>
<P>[3] Stevens, W. R., Unix Network Programming, Prentice-Hall, 1990.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Alex Vrenios<BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
<center><H2>
<A HREF="http://www.linuxgazette.com/">
<IMG SRC="../gx/newlogo.jpg" width=600 height=256 border=0
ALT="Linux Gazette... making Linux just a little more fun!"></a>
</H2>
<H4>Published by <A HREF="http://www.linuxjournal.com/"><I>Linux Journal</I></A></H4>
</center>
<P> <hr> <P>
<H1><font color="maroon">The Back Page</font></H1>
<ul>
<li><a HREF="#authors">About This Month's Authors</a>
<li><a HREF="#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>
<!--======================================================================-->
<!-- BEGIN bio -->
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Shane Collinge</H4>
Part computer programmer, part cartoonist, part Mars Bar. At night, he runs
around in a pair of colorful tights fighting criminals. During the day... well,
he just runs around. He eats when he's hungry and sleeps when he's sleepy.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Matteo Dell'Omodarme</H4>
I'm a student at the University of Pisa and a Linux user since 1994.
Now I'm working on
the administration of Linux boxes at the Astronomy section of the
Department of Physics, with special experience about security.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Edward Livingston-Blade</H4>
<A HREF="MAILTO:edward_leah@earthlink.net">Edward</A> is the netadmin and
webmaster at <A HREF="http://www.psadult.com">Palm Springs Adult School</A> in
Palm Springs, California. He also teaches some of their computers classes, and
when he's not working for the school, he does freelance consulting and
troubleshooting. In his free time, he hacks on Linux (of course) and maintains
<A HREF="http://home.earthlink.net/~edward_leah/linux">Edward's Linux
BrainDump</A>. He is thinking about joining a support group for computer geeks
who take on too many responsibilities. (And if there isn't such a group, maybe
he can start one? How much work could that be?)
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Wolfgang Mauerer</H4>
<A HREF="mailto:wolfgang@mynetix.de">Wolfgang</A>
wrote the German book <I>Textverarbeitung mit LaTeX unter Unix</I>.
he sometimes works for the German <I>Linux Magazin</I> as a technical writer,
and is an employee of the small German web company MyNetix, where he acts as
programmer and system administrator.
<p>
<h4><img align=bottom alt="" src="../gx/note.gif">Mark Nielsen</h4>
Mark founded The Computer Underground, Inc. in June of 1998. Since then,
he has been working on Linux solutions for his customers ranging from custom
computer hardware sales to programming and networking. Mark specializes in Perl,
SQL, and HTML programming along with Beowulf clusters. Mark believes in the
concept of contributing back to the Linux community which helped to start his
company. Mark and his employees are always looking for exciting projects to do.
<p>
<h4><img align=bottom alt="" src="../gx/note.gif">Krassimir Petrov</h4>
Krassimir has a PhD in Agricultural Economics from Ohio State University. He
also has an MA in Economics and a BA in Business (Finance, Accounting,
Management).
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Pramode C.E and Gopakumar C.E</H4>
Pramode works as a teacher and programmer while
Gopakumar is an engineering student who likes to play with Linux
and electronic circuits.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jason Steffler</H4>
<a href="http://www.magma.ca/~jagwar">Jason</a>
is a software engineer currently consulting at Sprint in KC.&nbsp; His
computer-related interests include: Object-Oriented programming &amp; design,
Smalltalking, software development methodologies, large industrial software
systems that often address 'wicked' problems, and of course, noodl'n around
with Linux.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Alex Vrenios</H4>
Alex is a Lead Software Engineer at Motorola. He is always taking some sort of
class. He just finished the class work toward a Ph.D. in computer science,
but only time will tell if it goes any further. His wife, Diane, is certainly
his best friend and biggest fan. He enjoys his two Schnauzers, Brutus and Cleo,
and his dozens of African Ciclids, too. He is a licensed amateur radio
operator, as is Diane, and they spend more than a few nights together observing
the skies through their 5-inch telescope. They like to get out and stay
active, to enjoy life together.
<!-- END bio -->
<a name="notlinux"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">Not Linux</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<P> This caricature of your humble editor is by Shane Collinge, who draws our <A HREF="collinge.html">HelpDex</A> series.
<IMG ALT="your editor" SRC="gx/backpage/MikeOrr.jpg" WIDTH="596" HEIGHT="500" VSPACE="20">
<P> The post-WTO protest to shut down Microsoft (or at least annoy them) took
place as scheduled, but your editor had a doctor's appointment and couldn't
attend. News coverage was scanty except for this
<A HREF="http://archives.seattletimes.com/cgi-bin/texis/web/vortex/display?storyID=38a091f3a4&query=microsoft+protest+dan"><I>Seattle Times</I> article</A>.
The <I>Seattle Weekly</I> later did an
<A HREF="http://www.seattleweekly.com/features/0008/features-howland.shtml">
analysis</A> of the event, although only the first part of the article is
direcly about Microsoft.
<P> Ironically, Microsoft Singapore sent the <I>Gazette</I> a nice piece of
spam about a "Windows 2000 Professional Sales Training"
seminar. "Come and learn all about Windows 2000 Professional, then take the
online test. Microsoft will award all who pass with a certificate you can
frame and show others your achievement." I can't wait. Not.
<P> Thanks for sending in your articles and 2-cent tips.
Remember to have fun with Linux this month!
<P> Michael Orr<br>
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
<BR CLEAR="all">
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.<BR>
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 51 of <i>Linux Gazette</i>, March 2000</H5>
<!-- *** END copyright *** -->
</BODY></HTML>