old-www/LDP/LG/issue95/TWDT.html

6363 lines
249 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD><TITLE> Linux Gazette Table of Contents LG #95</TITLE></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> -->
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.png"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<H2>October 2003, Issue 95 &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="../lg_faq.html">FAQ</A> &nbsp;|&nbsp;
<A HREF="../mirrors.html">Mirrors</A> <!-- &nbsp;|&nbsp; --><BR>
<A HREF="../tag-kb.html">The Answer Gang knowledge base</A> (your Linux questions here!) <!-- &nbsp;|&nbsp; --><BR>
<A HREF="http://www.linuxgazette.com/search.html">Search (www.linuxgazette.com)</A>
<!-- *** BEGIN mirror site search link *** -->
<!-- &nbsp; <A HREF="http://www.linuxgazette.com/search.html">(SITE.COM
mirror)</A> -->
<!-- *** END mirror site search link *** -->
</CENTER>
<HR NOSHADE>
<!--=================================================================-->
<!-- H1><font color="#BB0000">Table of Contents:</font></H1 -->
<!-- *** BEGIN toc *** -->
<UL>
<LI> <A HREF="lg_mail.html">The MailBag</A>
<LI> <A HREF="lg_tips.html">More 2-Cent Tips</A>
<LI> <A HREF="lg_answer.html">The Answer Gang</A>
<LI> <A HREF="lg_bytes.html">News Bytes</A>, <EM>by Michael Conry</EM>
<LI> <A HREF="ecol.html">Ecol</A>, <EM>by Javier Malonda</EM>
<LI> <A HREF="hughes.html">Quick and Dirty Data Extraction in AWK</A>, <EM>by Phil Hughes</EM>
<LI> <A HREF="millson.html">Integrating Tomcat and Apache on RedHat 9</A>, <EM>by Mike Millson</EM>
<LI> <A HREF="pramode.html">Linux Through an Oscilloscope</A>, <EM>by Pramode C.E</EM>
<LI> <A HREF="rondina.html">Software Engineering</A>, <EM>by Gustavo Rondina</EM>
<LI> <A HREF="vanheusden.html">An introduction to MultiTail</A>, <EM>by Folkert van Heusden</EM>
<LI> <A HREF="boue.html">Mexico is conquered by FLOSS</A>, <EM>by Felipe Barousse Boue</EM>
</UL>
<!-- *** END toc *** -->
<HR NOSHADE>
<!--=================================================================-->
<H3 ALIGN="center"><EM>Linux Gazette</EM> Staff and The Answer Gang</H3>
<BLOCKQUOTE>
<STRONG>TAG Editor:</STRONG> Heather Stern<BR>
<STRONG>Senior Contributing Editor:</STRONG> Jim Dennis<BR>
<STRONG>Contributing Editors:</STRONG>
Ben Okopnik, Dan Wilder, Don Marti
</BLOCKQUOTE>
<HR NOSHADE>
<!--=================================================================-->
<A HREF="TWDT.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="TWDT.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.
<HR NOSHADE>
<!--=================================================================-->
<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 Webmaster of <I>Linux Gazette</I>,
<A HREF="mailto: webmaster@linuxgazette.com"> webmaster@linuxgazette.com</A>
<P>
<H5>Copyright &copy; 1996-2003 Specialized Systems Consultants, Inc.</H5>
</center>
<HR NOSHADE>
<!--=================================================================-->
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">The MailBag</FONT></STRONG></BIG></BIG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<HR>
<center>
<BIG><STRONG><FONT COLOR="maroon">HELP WANTED : Article Ideas</FONT></STRONG></BIG>
<BR>
<STRONG>Submit comments about articles, or articles themselves (after reading <a href="../faq/author.html">our guidelines</a>) to <A HREF="mailto:articlesubmission@linuxgazette.com">The Editors of <i>Linux Gazette</I></A>, and technical answers and tips about Linux to <A HREF="mailto:linux-questions-only@ssc.com">The Answer Gang</A>.
</STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#wanted.1"
><strong>dual Booting xp @ suse8.2</strong></a>
<li><A HREF="#wanted.2"
><strong>webdialer using http</strong></a>
<li><A HREF="#wanted.3"
><strong>booting linux from flash memory!</strong></a>
<li><A HREF="#wanted.4"
><strong>minicom related - help required</strong></a>
<li><A HREF="#wanted.5"
><strong>Re:help with grub</strong></a>
<!-- index_text ends -->
</UL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted.1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">dual Booting xp @ suse8.2</FONT></H3>
Sat, 30 Aug 2003 15:44:39 -0700
<BR>Patrick B (<a href="mailto:linux-questions-only@ssc.com?cc=ironman616@hotmail.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%231">ironman616 from hotmail.com</a>)
<P>
I have two separate hard drives on my computer hda, hdb. Xp is on hda an
suse 8.2 is on hdb.Im booting suse with a floopy with lilo installed on
it.Do you know of a lilo configuration that will boot my system.I tried the
default installation that wrote the boot loader to the mbr .All I got when I
tried booting was a blinking curser in the upper left corner of the
screen.If you know of a lilo configuration that works I would be most
grateful.Any help is most appretiated.
</P>
<P>
ironman616
</P>
<P>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted.2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">webdialer using http</FONT></H3>
Sat, 9 Aug 2003 11:39:22 +0100
<BR>Aengus Walton (<a href="mailto:linux-questions-only@ssc.com?cc=smiley0@myrealbox.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%232">smiley0 from myrealbox.com</a>)
<P>
I have a server and workstation and when I use the workstation it's
masqueraded behind the server, but when the rest of the family needs to get
on the net i have to get the server to logoff the net and they logon
directly from the windows workstation. So what I need is a http interface
to wvdial (if possible) that's compatible with IE..
</P>
<P>
I've already spent time installing webdialer (a project which does just
this) but unfortunatly it doesn't work too well with IE as its client, and
changing the client isn't an option.
</P>
<P>
Any suggestions would be greatly appreciated
</P>
<P>
cheers
</P>
<P>
Aengus
</P>
<!-- sig -->
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted.3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">booting linux from flash memory!</FONT></H3>
Wed, 30 Jul 2003 02:27:18 +0000
<BR>Devi Priya (<a href="mailto:linux-questions-only@ssc.com?cc=ijpriya@hotmail.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%233">ijpriya from hotmail.com</a>)
<P>
Hello,
</P>
<P>
I am new to this list. I am involved in embedded project.
I have a system with linux as its operating system. My system has external
peripherals like SDRAM, Flash memory etc.
</P>
<P>
I have to boot my linux OS from Flash memory. I have a
BIOS programming which does the minimal hardware initialization. I would
like to know how to boot my OS from Flash memory?
</P>
<P>
Thanks in advance for any help!
</P>
<blockquote><font color="#000066">Well, this fellow's just getting started and a google search probably
helped him more than we could. But,
if someone has their own tale of burning their own flash-based startup,
and what they were really using it for, I think it'd make a great article.
-- Heather</font></blockquote>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted.4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">minicom related - help required</FONT></H3>
Tue, 5 Aug 2003 06:36:04 -0400 (EDT)
<BR>Sriram N.S. (<a href="mailto:linux-questions-only@ssc.com?cc=sriram_ns@hotvoice.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%234">sriram_ns from hotvoice.com</a>)
<P>
hi,
</P>
<P>
(1) I have been using minicom v2.00.0 on red-hat 7.3 to test
my serial-port driver. while doing file-transfers (with both
flow-controls disabled) i observe that minicom attempts to enable
software flow control automatically. this happens even when
hardware flow control has been enabled. i get to see the corresponding
ioctl being issued to the driver. how can i overcome this particular
problem??. i have been attempting the transfer operation at
baud-rates 230K, 115K using ZModem proto. Is there an undocumented
limitation with minicom with respect to speed??. This particular
problem also affects transfer of binary files as minicom mistakes
the content of the received file as control info.
</P>
<P>
(2) what are the possible causes for "Garbage Count exceeded"<TT>/</TT>"Bad
CRC" messages on minicom??
</P>
<P>
Your help in this regard will be highly appreciated
</P>
<P>
Rgds,
Sriram.
</P>
<blockquote><font color="#000066">If you have more juicy things to say than "there may be a new version out"
- any readers are welcome to chime in with real experiences on this one...
-- Heather</font></blockquote>
<!-- sig -->
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted.5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Re:help with grub</FONT></H3>
Fri, 8 Aug 2003 12:33:39 -0500
<BR>cnuccio (<a href="mailto:linux-questions-only@ssc.com?cc=cnuccio@ltpro.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%235">cnuccio from ltpro.com</a>)
<P>
hi
</P>
<P>
i saw your linux tips about grub and am in a bit of a pickle and i
thought you could help.
</P>
<P>
i got a new dell with xp preisntalled. i asked for fat32 but they gave
me NTFS. anyway, so i instralled partition magic, made a 5 gig partiion
and setup boot magic (prepare for new OS).
</P>
<P>
i activated the partition and then booted to the redhat 9 (shrike) CD
and installed. reboot, and all i see is grub, with only linux as a
choice.
</P>
<P>
dell was no help, so i tried for a few days to get some info on
editing grub.conf and getting xp back booting. i tweaked and trial and
errored and first got it to boot to xp, but there was a "unable to
validated license" or something. no dialog to login.
</P>
<P>
more tweaking, added inter partition mapping (i assume the license key
was on another partition and it seemed to work even if i am wrong) got
it to get to login box, but after typing in log and PW, it just sat
there unable to start the explorer. i know i am close, but can't seem to
get grub correct.i found a GUI grubconf utlity, but it assumes you know
what you are doing.
</P>
<P>
here is my grub conf as i left it when my brain melted. i did a thing
or 2 more to it and broke it again, but it was late:
</P>
<p align="center">See attached <tt><a
href="misc/wanted/melted.grub-conf.txt">melted.grub-conf.txt</a></tt></p>
<p>and here is the output of fdisk -l to show my drive info:</p>
<p align="center">See attached <tt><a
href="misc/wanted/melted.fdisk-l.txt">melted.fdisk-l.txt</a></tt></p>
<P>
can you help me? i didn;t make rescue floppies (xp nor partition magix)
and didn't back up my
data ( i have done this several times with no probs.) and i really hate
reinstalling (mainly losing lots of unread mail) but i know i am
close...
</P>
<P>
please help if you can. thanks very much for your time.
</P>
<P>
chris nuccio
</P>
<blockquote><font color="#000066">Anyone who's gotten their hands grubby with WinXP want to give it a shot?
-- Heather</font></blockquote>
<!-- sig -->
<!-- end 5 -->
<HR>
<center>
<BIG><STRONG><FONT COLOR="maroon">GENERAL MAIL</FONT></STRONG></BIG>
<BR>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#mailbag.1"
><strong>The Mailbag: Article Idea: "Windows Defectors" column</strong></a>
<!-- index_text ends -->
</UL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag.1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">The Mailbag: Article Idea: "Windows Defectors" column</FONT></H3>
Mon, 4 Aug 2003 12:45:15 -0400
<BR>grok (<a href="mailto:articlesubmission@linuxgazette.com?subject=%20Re%3A%20%5BLG%2095%5D%20mailbag%20%231">grok from sprint.ca</a>)
<P><STRONG>
Hi all:
</STRONG></P>
<P><STRONG><BLOCKQuote>
I'm glad I came across this 'polemic' now (being, sadly, only a sometime
reader of LG). My 2-cents'-worth:
</BLOCKQuote></STRONG></P>
<P><STRONG>
Some LG contributors seem to consistently miss the point as (for that
matter) do many GNU/Linux 'geeks': this isn't about what possible MS
defectors should or shouldn't be doing -- it's about what they <EM>will</EM>
do; and they WILL be staying away from GNU/Linux unnecessarily if they
anticipate the least complication in 'switching over' -- as is already
the case somewhat.
</STRONG></P>
<P><STRONG>
The original letter-writer has hit the nail on the head (again -- as
this is not the first time this has come up, by any means). 'Turn-key'
types need -- and should receive -- all the help and encouragement they
can possibly get to switch over. To quibble ahead of time over the
methodology or the feasibility or the desirability, even, of getting a
significant percentage of Windows users to 'defect' to us, is more about
confusing the <EM>politics</EM> of the matter with the <EM>mechanics</EM> of it all.
</STRONG></P>
<P><STRONG>
IMO 'geeks' seem to excel at being technically sophisticated about these
issues -- but politically naive in the extreme. It ain't rocket science
to understand that we simply are <EM>required</EM> to hold these people's hand
a bit in helping them over the hump, if we entertain any hopes of
freeing the planet from the thrall of Microsoft (and others). The
details will take care of themselves AFAIC -- discussion here of the
Knoppix solution being a case-in-point.
</STRONG></P>
<P><STRONG>
As a former long-time 'windows tips' reader and fairly experienced
political activist -- and small-time GNU/Linux advocate/user of some
years' experience (if not expertise) as well -- there is one thing that
is ABUNDANTLY clear to me: there is absolutely NO fundamental
contradiction between having a 'turn-key', 'idiot-proof' GNU/Linux
install over top of the preferred geek wet-dream OS we all desire. We
<EM>can</EM> have things both ways (when it comes to GNU/Linux, if not in
Life). Geeks who object to 'dumbing things down', (for whatever reasons)
are simply missing the Big (non-technical) Picture -- which does INDEED
matter in the long term. Many GNU/Linux users won't settle for Free
Software becoming yet another 'niche market'. Too many geeks have said
as much that they wouldn't mind/care about such a state of affairs. They
clearly do not understand that this attitude <EM>could</EM> (but I don't
believe <EM>would</EM>) lead to the downfall of Free Software. It certainly
doesn't help, and actually harms, IMO our 'Cause' [i.e. see my
postscript].
</STRONG></P>
<P><STRONG>
I am looking forward to reading a forthcoming regular 'Windows
Defectors' column monthly in Linux Gazette.
;&gt;
</STRONG></P>
<P><STRONG>
P.S.: LG should do an article about the insulting little 'cliques' of
geeks who inhabit the various #debian/#linux/#other channels on IRC,
terrorizing and driving away newbies in droves.
Clearly these 'experts' have <EM>one</EM> set of problems <EM>they</EM> themselves
haven't yet 'defined'...
</STRONG></P>
<blockquote><font color="red">The staff here at LG had a mixed reaction to this. I've formatted the
replies we got below in the format that TAG is laid out as, so that you,
the gentle reader can still see the context of the reply.
-- Thomas Adam</font></blockquote>
<HR width="10%" align="center"><P><STRONG>
Some LG contributors seem to consistently miss the point as (for that
matter) do many GNU/Linux 'geeks': this isn't about what possible MS
defectors should or shouldn't be doing -- it's about what they <EM>will</EM>
do; and they WILL be staying away from GNU/Linux unnecessarily if they
anticipate the least complication in 'switching over' -- as is already
the case somewhat.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Sigh, I think you're being too idealistic. I agree with you, but you
have to remember that "will do" is the operative phrase in your sentence.
Many people that write in asking questions such as "is Linux better than
Windows" often don't know themselves whether or not it would be a viable
alternative for them to switch, and so we ('we' as in the staff at LG) try
and extrapilate what they <EM>might</EM> want to do, based on the really poor
information that the querents send in.
</BLOCKQUOTE>
<BLOCKQUOTE>
Many people that want to run Linux though often have a
pre-conceived notion as to what they want to use it for, i.e. a webserver,
fileserver, mailserver, etc., and more often is the case that they've
heard
that Linux can do this, and so they concentrate their efforts in finding
out how Linux can do <EM>that</EM> specific task -- which is great. This then
usually gives them the insentive to explore Linux's capabilties further and
to get Linux to do Other Things (tm).
</BLOCKQUOTE>
<P><STRONG>
The original letter-writer has hit the nail on the head (again -- as
this is not the first time this has come up, by any means). 'Turn-key'
types need -- and should receive -- all the help and encouragement they
can possibly get to switch over.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Which we try as best we can to provide. You have to understand though that
we can only go so far as to help them only <EM>if</EM> they are willing to put the
effort in themselves. There is only so much effort we can put in to a
querent's answer, based on how far he/she is prepared to take out efforts.
This is why joining a local LUG can be hugely beneficial for those who are
just finding their feet, as it were.
</BLOCKQUOTE>
<BLOCKQUOTE>
I know of one querent (I shan't name names, although Heather will know who
I am talking about (Hi, Heather!)) who continually e-mails us questions.
This is great, since this is what we're here for in the first place, but it
seems to me as though very little to no effort is first put into researching
the question before it is sent. More often than not, we at the LG are a
front-end to google/linux.
</BLOCKQUOTE>
<P><STRONG>
To quibble ahead of time over the
methodology or the feasibility or the desirability, even, of getting a
significant percentage of Windows users to 'defect' to us, is more about
confusing the <EM>politics</EM> of the matter with the <EM>mechanics</EM> of it all.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Not at all, the two are virtually synonymous if you ask me, and often go
hand in hand, since it a) depends on <EM>what</EM> (if any specific task) person X
wants to do, and b) the mechanics are usually executed as a result of the
purpose for defecting. I use the term 'purpose' in the loose sense, since
there are some people who try Linux, just because they have heard a lot
about it.
</BLOCKQUOTE>
<P><STRONG>
IMO 'geeks' seem to excel at being technically sophisticated about these
issues -- but politically naive in the extreme. It ain't rocket science
to understand that we simply are <EM>required</EM> to hold these people's hand
a bit in helping them over the hump, if we entertain any hopes of
freeing the planet from the thrall of Microsoft (and others). The
details will take care of themselves AFAIC -- discussion here of the
Knoppix solution being a case-in-point.
</STRONG></P>
<BLOCKQUOTE>
I believe you are creating a stereotype, to say nothing of making a
sweeping generalisation. Granted there are a small minority who have
the attitude of: RTFM each and everytime a person asks a question (this is
<EM>very</EM> common in IRC rooms), but then most people are genuinely trying to help.
Again, I stress the importance of LUG's here as a means of "holding their
hands".
</BLOCKQUOTE>
<BLOCKQUOTE>
I disagree with the way you have phrased your sentence: "freeing the
planet from the thrall of Microsoft (and others)." Remember that
switching over is down to the individual choice, <EM>or</EM> to the choice of the
organisation/business/etc that a person may well work for. In the latter
case though, training ought to be given, but for the former, it is again
dependant on his/her needs from Linux.
</BLOCKQUOTE>
<BLOCKQUOTE>
There are some people who I recommend should stick to using MS-Windows
based upon their requirements. My parents for example would really not get on
with Linux one bit, due to their needs, and still at this time, Linux does not
satisfy them.
</BLOCKQUOTE>
<P><STRONG>
As a former long-time 'windows tips' reader and fairly experienced
political activist -- and small-time GNU/Linux advocate/user of some
years' experience (if not expertise) as well -- there is one thing that
is ABUNDANTLY clear to me: there is absolutely NO fundamental
contradiction between having a 'turn-key', 'idiot-proof' GNU/Linux
install over top of the preferred geek wet-dream OS we all desire.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Are you saying that Linux is a source of sexual satisfaction? I also
completely refute your stereotype of "geek" (whatever you mean by that).
No OS is idiot-proof', since it all comes down to how <EM>you</EM> as a user of
the OS decide to manage it.
</BLOCKQUOTE>
<P><STRONG>
We <EM>can</EM> have things both ways (when it comes to GNU/Linux, if not in
Life). Geeks who object to 'dumbing things down', (for whatever reasons)
are simply missing the Big (non-technical) Picture -- which does INDEED
matter in the long term.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Which is what?
</BLOCKQUOTE>
<P><STRONG>
Many GNU/Linux users won't settle for Free
Software becoming yet another 'niche market'. Too many geeks have said
as much that they wouldn't mind/care about such a state of affairs. They
clearly do not understand that this attitude <EM>could</EM> (but I don't
believe <EM>would</EM>) lead to the downfall of Free Software. It certainly
doesn't help, and actually harms, IMO our 'Cause' [i.e. see my
postscript].
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
We can perhaps thank RMS for his continual devotion to the FS cause here.
</BLOCKQUOTE>
<P><STRONG>
I am looking forward to reading a forthcoming regular 'Windows
Defectors' column monthly in Linux Gazette.
;&gt;
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Assuming you would write one, but expect a lot of flame e-mails!
</BLOCKQUOTE>
<HR width="10%" align="center"><P><STRONG>
I am looking forward to reading a forthcoming regular 'Windows
Defectors' column monthly in Linux Gazette.
;&gt;
</STRONG></P>
<BLOCKQUOTE>
[Jimmy O'Regan]
I volunteered to write about Wingate (it's still on my todo list,
there's just one or two things I haven't gotten working the right way
yet), I still have to use Windows to browse the net (winmodem), and most
of the answers I've given have been on windows related subjects, so I
volunteer to write a column about windows stuff. Now, I'm not the most
confident person in the world, so (to the rest of the Answer Gang
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> is
there someone I can send draft articles to for constructive criticism?
To Jim/grok, are there any specific topics you think should be covered?
</BLOCKQUOTE>
<BLOCKQUOTE>
I had been thinking of starting with articles which showed how Windows
users could begin the transition by using free software under windows,
to lower the learning curve: cygwin, open office (.org), mozilla &amp;c. (I
also have a couple of short scripts and aliases to convert (<EM>really</EM>)
obscure windows file formats to something useful, though I might just
group a few and sent them as 2c tips).
</BLOCKQUOTE>
<BLOCKQUOTE>
The quickest idea I could roll off is an article about Cygwin; how the
standard tools are actually really useful, even if you can't just point
and click to use them
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> - I could roll a couple of the obscure file
formats into that, by way of demonstration (using awk for CSV etc)
</BLOCKQUOTE>
<BLOCKQUOTE>
I could probably do an introduction to Open Office from the MS Office
user's POV at the same time; provided I get enough time around my
parents (my mother is/was an ECDL instructor, my Dad had to train the
rest of the office staff at his last job), and having once been forced
to use ASP, I'm pretty interested in trying out Arrowhead and giving my
impressions.
</BLOCKQUOTE>
<BLOCKQUOTE>
On a level which leans more towards my personal interests, I've got some
video editing to do in the next week, and I want to try out Ardour as a
home studio solution, and as a guitarist, I want to see if Songwrite
comes anywhere near GuitarPro as a way of representing tablature; but
since on the distro I'm forced to use (Mandrake bloody 9.0) both gcc and
python are broken, this may take a while.
</BLOCKQUOTE>
<BLOCKQUOTE>
Plus, the helicopter never came after the last time I volunteered
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</BLOCKQUOTE>
<P><STRONG>
Some LG contributors seem to consistently miss the point as (for that
matter) do many GNU/Linux 'geeks': this isn't about what possible MS
defectors should or shouldn't be doing -- it's about what they <EM>will</EM>
do; and they WILL be staying away from GNU/Linux unnecessarily if they
anticipate the least complication in 'switching over' -- as is already
the case somewhat.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
Och, that tired old refrain again. Why are you assuming that people are
"missing" something here? What if, after sober and careful
consideration, they have decided that the cons of doing what you ask for
outweigh the pros? I am among the Linux "geeks" that have done so; many
other people that I know are as well. Your assumption is poorly
considered and rather offensive.
</BLOCKQUOTE>
<P><STRONG>
The original letter-writer has hit the nail on the head (again -- as
this is not the first time this has come up, by any means). 'Turn-key'
types need -- and should receive -- all the help and encouragement they
can possibly get to switch over. To quibble ahead of time over the
methodology or the feasibility or the desirability, even, of getting a
significant percentage of Windows users to 'defect' to us, is more about
confusing the <EM>politics</EM> of the matter with the <EM>mechanics</EM> of it all.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
Answer me one simple question here, if you would. Who pays? Conversely,
who is it that owes the hundreds of thousands of hours of careful,
exacting, difficult labor necessary to "convert" (quoted due to many
unmerited assumptions behind the word) those would-be Wind0ws-to-Linux
'defectors'?
</BLOCKQUOTE>
<P><STRONG>
IMO 'geeks' seem to excel at being technically sophisticated about these
issues -- but politically naive in the extreme.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
To put it plainly, you don't know what you're talking about. This myth
has been propagated for so long that even people who should know better
are affected by it - but a tiny bit of research would show you the cold,
hard truth in just moments. Take a look at Kuroshin, <A HREF="http://www.slashdot.org/">Slashdot</A>,
Linux.org, EFF.org, etc.; there are many, many highly politically-savvy
folks there if you look for them.
</BLOCKQUOTE>
<P><STRONG>
It ain't rocket science
to understand that we simply are <EM>required</EM> to hold these people's hand
a bit in helping them over the hump, if we entertain any hopes of
freeing the planet from the thrall of Microsoft (and others).
</STRONG></P>
<BLOCKQUOTE>
[Ben]
Who are "we"? If you are willing to do the job - if you manage to hold
up for even a week of providing the level of support you're talking
about without any remuneration - kudos and my respects to you. I have no
doubt that LG would be more than happy to advertise your services.
</BLOCKQUOTE>
<BLOCKQUOTE>
Until you're willing to do this, please don't assume that you can co-opt
other people's services without any return. You don't own anyone else's
efforts. If we're speaking of extreme political naivete, it is exactly
this, often displayed by those who spend too much time in political bull
sessions and not enough time in the real world - people are <EM>not</EM> pawns,
their labor is <EM>not</EM> to be taken for granted.
</BLOCKQUOTE>
<P><STRONG>
The
details will take care of themselves AFAIC -- discussion here of the
Knoppix solution being a case-in-point.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
For those details to "take care of themselves", a fellow named Klaus
Knopper had to put in a few thousand hours (my best guess) of hard work.
I doubt that he'd appreciate his efforts being so dismissively
classified; I certainly don't.
</BLOCKQUOTE>
<P><STRONG>
As a former long-time 'windows tips' reader and fairly experienced
political activist -- and small-time GNU/Linux advocate/user of some
years' experience (if not expertise) as well -- there is one thing that
is ABUNDANTLY clear to me: there is absolutely NO fundamental
contradiction between having a 'turn-key', 'idiot-proof' GNU/Linux
install over top of the preferred geek wet-dream OS we all desire.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
As Thomas noted, I do not use OSes for my sexual satisfaction. Besides,
there's no such thing as idiot-proof; idiots are far too ingenuous. The
point that you're missing is that using a computer requires
intelligence, skill, and effort - and by its nature, always will. It's a
*tool*: one that, in this respect, is no different from, say, a lathe...
although a lathe is perhaps a little less <EM>physically</EM> forgiving. Idiots
will never use either one well.
</BLOCKQUOTE>
<BLOCKQUOTE>
[Jason]
The only way we could have a "idiot-proof", "turn-key" would be for
someone other than the users to make choices for the users. Sounds kind
of like what a distribution does, doesn't it?
</BLOCKQUOTE>
<P><STRONG>
We
<EM>can</EM> have things both ways (when it comes to GNU/Linux, if not in
Life). Geeks who object to 'dumbing things down', (for whatever reasons)
are simply missing the Big (non-technical) Picture -- which does INDEED
matter in the long term.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
The Big Picture, in your perception, being that the skilled and the
knowledgeable are the servants of the idiots and the clueless? Please...
try that somewhere else. I grew up under a political system that was
based on that premise (the former USSR); the current state of that
entity, and the amount of suffering it created in this world, should
give you a clue as to the success of that idea.
</BLOCKQUOTE>
<BLOCKQUOTE>
[Jason]
You should read "In the Beginning was the Command Line", an essay by
Neal Stephenson. (I don't have a link handy: Google for it.) It's about
user interfaces, and how GUIs rely upon other people making choices for
you.
</BLOCKQUOTE>
<BLOCKQUOTE>
Oh yes, it's Linus Skywalker vs. the death star!
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)"
height="24" width="20" align="middle">
</BLOCKQUOTE>
<BLOCKQUOTE>
Okay, this is going to harsh, but how will clueless Windows users help
free software? They can't code. Bug reporting takes a certian skill.
</BLOCKQUOTE>
<blockquote><font color="red">That is highly inaccurate. Windows users' <EM>can</EM> write software, it is
just that they'll probably be used to a different language.
-- Thomas Adam</font></blockquote>
<BLOCKQUOTE>
How exactly is it that we can't live without these people?
</BLOCKQUOTE>
<BLOCKQUOTE>
But really, I wan't to see Linux popular as much as the next guy, but if
I have to do by making Linux look just like Windows, what's the point?
Distros such as Mandrake, IMHO, are doing a <EM>great</EM> job of providing
alternate configuration interfaces (ie, a GUI) and leveraging automatic
hardware detection.
</BLOCKQUOTE>
<blockquote><font color="red">Mandrake and RedHat are trying to be too much like Windows, IMHO. The
whole point about Linux should be that it is another alternative from
using it...not: "How can we make Linux look more like Windows"
-- Thomas Adam</font></blockquote>
<!-- end 1 -->
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, .
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">More 2-Cent Tips</FONT></STRONG></BIG></BIG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<center><STRONG>See also: The Answer Gang's
<a href="../tag/kb.html">Knowledge Base</a>
and the <i>LG</i>
<a href="http://www.linuxgazette.com/search.html">Search Engine</a></STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#tips.1"
><strong>cinelerra & libstdc++so.3</strong></a>
<li><A HREF="#tips.2"
><strong>problem in dns setting up</strong></a>
<li><A HREF="#tips.3"
><strong>Home LAN setup question</strong></a>
<li><A HREF="#tips.4"
><strong>Anyone for winRAID?</strong></a>
<li><A HREF="#tips.5"
><strong>up2date SSL error</strong></a>
<li><A HREF="#tips.6"
><strong>Snapshot fo current window or desktop</strong></a>
<li><A HREF="#tips.7"
><strong>Errors while using rpm extension.....Cygwin</strong></a>
<li><A HREF="#tips.8"
><strong>Cool tool of the week: nntp//rss</strong></a>
<li><A HREF="#tips.9"
><strong>mult headeddsplay</strong></a>
<!-- index_text ends -->
</UL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">cinelerra & libstdc++so.3</FONT></H3>
Fri, 08 Aug 2003 23:54:45 -0700
<BR>Thomas Adam (<a
href="mailto:linux-questions-only@ssc.com?cc=linux-questions-only@linuxgazette.com&cc=bbertsch@surfside.net&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%231">The <em>LG</em> Weekend Mechanic</a>)
<BR>Question by Brian
<P><STRONG>
Well, i installed the SuSe 8.2 pro, and it's really nice. Found Kino
and got my firewire DV video camera to download some AVI files. wow! To
get a final product SVCD of my little princess riding horses, i decided
to use Cinelerra.it won't install, because libstdc++so.3 isn't found.
I have all the C++ from SuSe, but, not this.
</STRONG></P>
<P><STRONG>
My Questions:
1 i have the files from a Linux Format DVD "essentials" section. It
looks "involved" to install. Do i need the one file libstdc++so.3, or
the whole group?
</STRONG></P>
<P><STRONG>
2 Could you recommend a course of action. I would like to do some video
editing again. I'm 1/2 way there and real excited. Dang! i'm getting
all shaky again!
</STRONG></P>
<BLOCKQUOTE>
This looks like a classic case of "I cannot find the symlink". I usually
get annoyed at programs that do this, but the solution is simple:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
1. Find "libstdc++" (possibly in <TT>/usr/lib/</TT>)
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
2. ln -s /usr/lib/libstdc++ /usr/lib/libstdc++so.3
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
(What you may find is that a file called "libstdc++so.so" exists, and
should that point of a library file, symlink it as appropriate).
</BLOCKQUOTE>
<BLOCKQUOTE>
3. run "ldconfig -X" (as root)
</BLOCKQUOTE>
<BLOCKQUOTE>
(Step 3 is there to keep the cache happy, although it is usually not
needed).
</BLOCKQUOTE>
<BLOCKQUOTE>
HTH,
</BLOCKQUOTE>
<P><STRONG>
Thank you very much. Cinelerra is working, the frame rate is up w/ my
NVIDIA driver, and i have 2 week's vacation starting today!. whoo hoo!
</STRONG></P>
<P><STRONG>
I am requesting your permission to post your suggestion to the web -
chat sites where a few are experiencing similar difficulties.
</STRONG></P>
<P><STRONG>
thanks a 1 EE6.
</STRONG></P>
<P><STRONG>
brian
</STRONG></P>
<blockquote><font color="red">You're more than welcome to do so
-- Thomas Adam</font></blockquote>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">problem in dns setting up</FONT></H3>
Wed, 6 Aug 2003 02:51:16 -0700 (PDT)
<BR>Kapil Hari Paranjape (<a
href="mailto:linux-questions-only@ssc.com?cc=anilksd@yahoo.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%232">The
Answer Gnag</a>)
<br>Question by Anil KP
<P><STRONG>
Hi,
We have leaseline from our isp and they have given us
8 ethernet ipz(public ip) for our internal servers.
The problem is that our ispz dns doesnt work properly.
so i thought of setting up my own dns.
</STRONG></P>
<P><STRONG>
I was able to setup the dns on the private
</STRONG></P>
<P><STRONG>
network(192.168.1.1-first ethernet card) successfully
but was not able to setup the dns properly on the
public ip(another ethernet card). What wud be reverse
lookup zone file in the case of public ip?(I was
given by my isp only 8 pulic ipz ).
Anticipating ur reply
</STRONG></P>
<BLOCKQUOTE>
[Kapil]
This can only be done by subnet assignment. The ISP needs to
create entries for your in their reverse zone file which point
to your server. Look for CIDR or Classless Internet Domain Routing
on google.
</BLOCKQUOTE>
<BLOCKQUOTE>
I think this is only applicable if bot hyou and the ISP use "bind".
If you use DJBernstein's domain name server programs then things are
different.
</BLOCKQUOTE>
<BLOCKQUOTE>
To repeat, this is only possible through co-operation with the entity
(presumably your ISP) who has been authorised to provide reverse lookup
to the entire Class C net to which your eight addresses belong.
</BLOCKQUOTE>
<BLOCKQUOTE>
As an example you can get for our domain:
</BLOCKQUOTE>
<blockquote><pre>$ host -t PTR 81.209.199.203.in-addr.arpa.
81.209.199.203.in-addr.arpa CNAME 81.imsc.209.199.203.in-addr.arpa
81.imsc.209.199.203.in-addr.arpa PTR proxy.imsc.res.in
$ host -t NS 209.199.203.in-addr.arpa.
209.199.203.in-addr.arpa NS md3.vsnl.net.in
209.199.203.in-addr.arpa NS md2.vsnl.net.in
$ host -t NS imsc.209.199.203.in-addr.arpa.
imsc.209.199.203.in-addr.arpa NS ns1.imsc.res.in
imsc.209.199.203.in-addr.arpa NS ns2.imsc.res.in
</pre></blockquote>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Home LAN setup question</FONT></H3>
Sat, 09 Aug 2003 00:50:59 -0600
<BR>Faber Fedor (<a href="mailto:linux-questions-only@ssc.com?cc=xgen@softhome.net&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%233">xgen from softhome.net</a>)
<br>Question by xgen
<P>
Hi there dude,
</P>
<P>
i have a general question regarding Home LAN setup on Linux
</P>
<P>
I have 2 PCs to be networked and sharing a connection. Do i need 2 network
cards, 1 leading out to the outside world, another leading to my internal
LAN? Is this setup common? Will it help in LAN security?
</P>
<P>
Thanks a mil
</P>
<P>
-Xgen
</P>
<BLOCKQUOTE>
[Faber]
These days, the Dude has been upgraded to Dudes and a Dudette. We're
now known as The Answer Gang. The Answer Guy is still around , but he's
got help these days.
</BLOCKQUOTE>
<BLOCKQUOTE>
Generally speaking, if you're using one of the Linux boxes as a
router/firewall. If you're using, say a LInksys router/firewall, then
no, you don't need two NICS in one Linux box.
</BLOCKQUOTE>
<BLOCKQUOTE>
Check out www.tldp.org for various documents on setting up networks and
routers using Linux.
</BLOCKQUOTE>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Anyone for winRAID?</FONT></H3>
Mon Sep 29 16:39:55 BST 2003
<br>Hugo Mills (<a
href="mailto:linux-questions-only@ssc.com?cc=linux-questions-only@linuxgazette.com&cc=Hugo@carfax.org.uk&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%234">Hugo@carfax.org.uk</a>)
<p><strong><font color="#000099">[hugo]</font><font color="#000066"> I seem to be getting a small but steady flow of people</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> asking me
about the Adaptec Serial ATA RAID card and Linux.</font></strong>
<br><font color="#006699">[editorgal]</font> hrmmmm
<br><font color="#006699">[editorgal]</font> is there a distro being buggy about it?
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
No, it just doesn't work right.</font></strong>
<br><font color="#006699">[editorgal]</font> a pal tells me that aacraid code is busted in some of the
gentoo kernel kits but is safe to use in their vanilla source kit
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> It's not AAC at all.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> It's the
AAR-1210SA.</font></strong>
<br><font color="#006699">[editorgal]</font> is theer a secret handshake for it or is it just Being Evil right now?
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> It's based on the SiI3112 chip, but Adaptec mangled it.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> You can
write stuff to the disk drive and read it back again,</font></strong>
<br><font color="#006699">[editorgal]</font> since I'm working on the tips section anyway.... <img src="" alt=":D">
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
but every disk access just causes a DMA timeout,</font></strong>
<br><font color="#006699">[editorgal]</font> ouch
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
which takes anything up to about 45 seconds to clear.</font></strong>
<br><font color="#006699">[editorgal]</font> urgh
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> So
it's basically worthless.</font></strong>
<br><font color="#006699">[editorgal]</font> that's millenia in computer time
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> I wrote a patch to the kernel to recognise the PCI ID of the card,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> which works (I've got code in the kernel! Woohoo!)</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> but it has
the unfortunate effect above.</font></strong>
<br><font color="#006699">[editorgal]</font> this a private patch or submitted?
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> Submitted.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> It went in 2.4.21-ac1, and 2.4.22 I think.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> (Or was it
2.4.20-ac1 and 2.4.21? I can't remember)</font></strong>
<br><font color="#006699">[editorgal]</font> ok, it wasn't handled at all, but you provided code which tries to handle it, only DMA is still wicked?
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> Yes, that's about the size of it.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> Adaptec provide Linux drivers for the card,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> but they're only for certain stock Red Hat kernel packages.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> and
they're binary-only.</font></strong>
<br><font color="#000066">* Editorgal</font> avoids ranting about RH's concept of "stock"
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> I've tried asking moderately noisily on LKML about the problems with this card,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> but nobody seems to be able to give me any information at all.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> All I've achieved is having several email threads archived where I appear to be</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> the font
of all knowledge about getting the 1210SA working under Linux.
</font></strong>
<br><font color="#006600">[tonytiger]</font> heh
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> As soon as this month's pay cheque clears, I'm buying an SIIG card instead,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> and
selling the Adaptec on eBay.</font></strong>
<br><font color="#006699">[editorgal]</font> what's the info you want to get, I could post a wanted note for you in LG?
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
Why isn't it working, and how do you fix it? <img src=""
alt=":)"></font>
<br><font color="#000099">[hugo]</font><font color="#000066"> TBH, I
can't be arsed at this point.</font></strong>
<br><font color="#006699">[editorgal]</font> it isn't working because adaptec's too lame to cough up a source module instead of a binary for RH's heavily mangled kernels.
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
Well, yes, that's about the size of it. <img src=""
alt=":)"></font></strong>
<br><font color="#000066">* Editorgal</font> captures this thread for the 2c Tips column
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> Also, I think they want to hide the fact that the RAID (0, 1, 0+1) part of the card is effectively done in software.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> (Or so it
is rumoured)</font></strong>
</p>
<p><em>That "rumor" is per a Linux Kernel Mailing List (LKML) post by Sam Flory. It's probably mirrored lots of places, but here's a pointer:
<br><a href="http://marc.theaimsgroup.com/?l=linux-kernel&m=105484662322837&w=2">http://marc.theaimsgroup.com/?l=linux-kernel&m=105484662322837&w=2</a>
<br>In the rest of the thread, Hugo notes that he's only looking for
basic drive-access features, but above, he notes that he hasn't managed to code them
up himself, and is giving up (his main contribution having been patching
the PCI ID recognition). For fairness sake they have binary modules for a few other stock boxed-linux kernels but as soon as you stray off the beaten path - and possibly as soon as you upgrade even if staying within the distro's offered kernels - someone else will have to figure out why the SiI3112 chip hates Seagate SATA drives.<em></p>
<p><em>Meanwhile, if you're the sort who bristles about binary-only drivers going into your otherwise trustable kernel, look out for VIA's "support" for the MPEG2 hardware on their EPIA boards, too. -- Heather</em></p>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">up2date SSL error</FONT></H3>
Fri, 26 Sep 2003 10:24:42 -0400
<BR>Greg Anderson (<a href="mailto:linux-questions-only@ssc.com?cc=linux-questions-only@linuxgazette.com&cc=Greg@FutureRealms.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%231">Greg from FutureRealms.com</a>)
<P><STRONG>
In Redhat 7.1 thru 9 running up2date fails with this message:
</STRONG></P>
<pre><strong>SSL.Error: [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')]
</strong></pre>
<P><STRONG>
Then it tells you your system's clock may be so wrong it is causing the
problem. What is
really going on is the certificate and the up2date program is out of
date. You need to
download the lateest up2date from Redhat.
</STRONG></P>
<TABLE WIDTH="95%" BORDER="1" BGCOLOR="#FFFFCC"><TR><TD>
<p align="center">...............</p>
<P><STRONG>
"The certificate used by up2date and rhn_register to communicate with the
<A HREF="http://www.redhat.com/">Red Hat</A> Network reached its end of life on August 28th 2003. Users
attempting to connect to Red Hat Network will see SSL connection or
certificate verification failures."
</STRONG></P>
<P><STRONG>
"New versions of the up2date and rhn_register clients are now available
which are required for continued access to Red Hat Network."
</STRONG></P><p align="center">...............</p>
</TD></TR></TABLE>
<P><STRONG>
RHSA-2003:267 for Red Hat Linux:
https://rhn.redhat.com/errata/RHSA-2003-267.html
</STRONG></P>
<P><STRONG>
This solved it for me.
--
Greg Anderson
</STRONG></P>
<BLOCKQUOTE>
[JimD]
Might be good to try an rpm --rebuilddb command, too. Just in case
rpm segfaults on a corrupted dbm/database.
</BLOCKQUOTE>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.6"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Snapshot fo current window or desktop</FONT></H3>
24 Sep 2003 12:30:54 -0500
<BR>Dan Wilder, Thomas Adam, Ashwin N (<a href="mailto:linux-questions-only@ssc.com?cc=whegge@signalblast.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%232">the <em>LG</em> Answer Gang</a>)
<BR>Question by Wes Hegge
<P><STRONG>
How do I get a snapshot (preferably in gif or jpg format) of the current
window in <A HREF="http://www.kde.org/">KDE</A>? What I am looking for is the equivalent to MS's
Alt-PrtScn then paste to paintbrush and then save to a file.
</STRONG></P>
<P><STRONG>
TIA
--
Wes Hegge
</STRONG></P>
<BLOCKQUOTE>
[Dan]
ksnapshot
</BLOCKQUOTE>
<P><STRONG>
Thanks,
</STRONG></P>
<P><STRONG>
I Guess, I am blind as a bat. Right in the "Graphics" submenu is
"Screen Capture Program" (aka ksnapshot).
</STRONG></P>
<P><STRONG>
Thanks for the help.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
I haven't run KDE for years
(I'm an FVWM fan), but I do know that "ImageMagick" offers the "import"
utility which does the same thing, as does "xwd".
</BLOCKQUOTE>
<BLOCKQUOTE>
[Ashwin N]
Can be done using Gimp. From the menu choose,
</BLOCKQUOTE>
<blockquote><pre>File -&gt; Acquire -&gt; Screenshot
</pre></blockquote>
<BLOCKQUOTE>
[Heather]
For the ImageMagick method I keep a directory named prn and if I like
what I captured I rename this image. This happens to also be where I
keep documents I only have around to be printed. Here's my bash alias
I've been using for awhile:
</BLOCKQUOTE>
<blockquote><pre># capture an X display
# with thanks to the lazy folks at
# http://www.troubleshooters.com/linux/scrshot.htm
# who were kind enough to document how they do 'em.
screenshot ()
{
import -window root ~/prn/screendump.png
}
</pre></blockquote>
<BLOCKQUOTE>
Note that the man page for import is actually readable - you can take
shots of specific things, not just the whole screen.
</BLOCKQUOTE>
<BLOCKQUOTE>
There's also an enlightenment epplet that will make screenshots.
</BLOCKQUOTE>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.7"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Errors while using rpm extension..... Cygwin</FONT></H3>
Sun, 28 Sep 2003 17:34:49 +0530
<BR>Ashwin N (<a href="mailto:linux-questions-only@ssc.com?cc=atiya.azim@niit.edu.pk&cc=yodha8@yahoo.co.uk&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%233">yodha8 from yahoo.co.uk</a>)
<BR>Question by Atiya Azim
<P><STRONG>
Actually i am not using red hat, although it is insalled on my pc.
Rather
i am using cygwin (<A HREF="http://cygwin.com"
>http://cygwin.com</A> which is linus-like environment for
windows platform - my OS is Windows 2000) for these rpms. It is working
fine with .tar and .gz files..but giving problems with all the files of
rpm format.
</STRONG></P>
<BLOCKQUOTE>
[Ashwin]
That is the problem! I have used Cygwin before, but I didn't know that
they
had even ported over RPM! In any case, if your need is just for a Java
SDK,
you can download the one available for Windows from the Sun website.
Install
it and the java, javac and other commandline tools will be available to
you
under Cygwin. Just remember to update the PATH variable with the directory
where the Java binaries are located.
</BLOCKQUOTE>
<P><STRONG>
Thanks for the help.........it is working this way.......
</STRONG></P>
<BLOCKQUOTE>
[Ashwin]
For other Linux utilities that are not available from the Cygwin mirrors,
you will have the best chance with the .tar.gz or .tar.bz2 files of those
applications.
</BLOCKQUOTE>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.8"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Cool tool of the week: nntp//rss</FONT></H3>
Mon, 15 Sep 2003 11:17:32 -0600
<BR>Jason Creighton (<a
href="mailto:linux-questions-only@ssc.com?cc=androflux@softhome.net&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%234">The
<em>LG</em> Answer Gang</a>)
<P>
Hi,
</P>
<P>
nntp//rss (<A HREF="http://www.methodize.org/nntprss"
>http://www.methodize.org/nntprss</A>) is a RSS to NNTP so you
can read RSS feeds in your favorite newsreaders. Very nice.
</P>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.9"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">mult headeddsplay</FONT></H3>
Sun, 14 Sep 2003 20:08:16 +0100
<BR>Neil Youngman (<a href="mailto:linux-questions-only@ssc.com?cc=intiha@yahoo.com&cc=n.youngman@ntlworld.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%235">n.youngman from ntlworld.com</a>)
<BR>Question by Affan Ahmed
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
I have a NVIDA GForce 2 Go 100 card that supports
multiheaded display easily in Windows. Now i want to
do the same in Linux. I have RedHat 8.0. What do you
suggest that I do?
</STRONG></P>
<BLOCKQUOTE>
[Neil]
I suggest using Google
<A HREF="http://www.google.com/search?q=nvidia+linux+%22multiple+display%22&amp;sourceid=opera&amp;num=0&amp;ie=utf-8&amp;oe=utf-8"
>http://www.google.com/search?q=nvidia+linux+%22multiple+display%22&amp;sourceid=opera&amp;num=0&amp;ie=utf-8&amp;oe=utf-8</A>
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
It throws up potentially useful stuff like
<DD><A HREF="http://lists.suse.com/archive/suse-linux-e/2001-Jun/att-3012/01-TWINVIEW_README"
>http://lists.suse.com/archive/suse-linux-e/2001-Jun/att-3012/01-TWINVIEW_README</A>
</DL></BLOCKQUOTE>
<blockquote><font color="#000066">I suppose you could try the Gentoo Unreal Tournament demo CD, which
won't replace anything on your computer. At the very least it's tuned
up for NVidia. Find it by typing "unreal" into the search gadget at
Freshmeat.Net.
-- Heather</font></blockquote>
<!-- end 5 -->
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, .
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<H3>Contents:</H3>
<dl>
<dt><a href="#tag/greeting"
><strong>&para;: Greetings From Heather Stern</strong></A></dl>
<DL>
<!-- index_text begins -->
<dt><A HREF="#tag.1"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Efficiency regards running script in a subshell () and a seperate shell</strong></a>
<dt><A HREF="#tag.2"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>force unmounting of CDROM</strong></a>
<dt><A HREF="#tag.3"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>IP config files on Red Hat 9</strong></a>
<dt><A HREF="#tag.4"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>a linux solution for the office</strong></a>
<dt><A HREF="#tag.5"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Simple DNS solution with Red Hat 9</strong></a>
<dt><A HREF="#tag.6"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Creating RAMDISK</strong></a>
<dt><A HREF="#tag.7"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>X server crash when starting up RH9 for the first time</strong></a>
<dt><A HREF="#tag.8"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Converting from Win2k to Linux</strong></a>
<!-- index_text ends -->
</DL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/greeting"><HR WIDTH="75%" ALIGN="center"></A>
<H3 align="left"><img src="../gx/dennis/hbubble.gif"
height="50" width="60" alt="(&para;) " border="0"
>Greetings from Heather Stern</H3>
<!-- begin hgreeting -->
<p>Greetings everyone and welcome again to the world of The Answer Gang.
It's been quite hectic for me and not all fun and games... among other
things, I was ill last month around submission time
<img src="../gx/dennis/unsmily.gif" alt=":("> and that meant that
the TAG column wasn't submitted at all, as I missed the deadline,
feeling a little too "dead" at the time. Oh
well, I guess we all need a break now and then...</p>
<p>Thomas Adam valiantly threw a hand in to help out, and I have to
admit he did more than half the work this time around. He says he's
learning an awful lot about perl, too.</p>
<p>
The peeve of this month is without a doubt a lack of information and
extremely poor descriptions in the compositions of the e-mails sent in to
TAG. As a positive note, there have been a record number of hits to:</p>
<blockquote>
<a href="http://www.linuxgazette.com/tag/ask-the-gang.html"
>http://www.linuxgazette.com/tag/ask-the-gang.html</a>
</blockquote>
<p>Please, everyone - if you're thinking about asking a question, read
that, and ask us what you need as clearly as you can.
We understand it is difficult for those who do not speak English very
well, but that's rarely been a problem - folks who are so carefully
aware of their poor language skills also take a free moment, and only
ask what they need to ask, and say what they've tried so far. The point
is, if you can't be bothered to ask a clear question, there's far too
many messages for us to try to detangle yours.</p>
<p>Regular and attentive readers will note some of the messy messages
we <em>have</em> answered. Yes, there's been worse. With a question
such as</p>
<blockquote><strong>d00z, cn u h3lp me</strong></blockquote>
<p> ... maybe you'll get some chuckles, but you sure won't get an
answer. The same goes for you students out there with a take home
light quiz. We can spot those a handful of kilometers away, give or take
a mile. Maybe you should cc: your professor when you ask us the
question, and he can give <em>us</em> the passing marks in your class.
The point is to learn a few research skills - so for such questions,
search google. Search our KnowedgeBase - it's part of what it's here
for. Search TLDP.org and freshmeat if the problem is really about
Linux.</p>
<p>And now for what I'd really planned to say last month. I attended
Linux World Expo, as I do every year here in the Silicon Valley area,
with the prospect of meeting again friends in the open source world
from all over the place. But this year, I was also taking a step back
and a look around at how the trade show world has changed in its view of
Linux. Now I get to write this with the additional perspective of
having been invited to PC Expo - a more generic computer trade show.</p>
<h4 align="center">The View From The Trade Show Floor</h4>
<p>I can't comment on the view from the press room since all that's in
there is pamphlets, a couple of spare computers, and coffee. Maybe a
sandwich tray. The seminars are still seminars and the halls still
suck your cellphone dry.</p>
<p>However, out in the exhibit hall, the world has changed a lot.</p>
<p>My first Linux World Expo was in San Jose. IDG had just taken
over the project from a local group who wanted to create a Linux
conference on the same order as regional conventions run for and by
science fiction fans. IDG is a big player who runs a lot of trade
shows. They invited big names and posted sponsor banners and the whole
nine yards. Jim Dennis (our very own Answer Guy) was invited to speak
about security for a half day class, and if the next speaker hadn't shown
up, the audience would have kept them from cleaning the room so Jim
could continue to talk. The hall was filled with a bunch of booths,
many of them small companies, but a few names like Intel spring to mind.
I recognized about half the listed speakers by face and about a third
of them total would surely recognize me back. Geeks were everywhere,
confused managerial and business types were too. T-shirts were plentiful.
</p>
<p>They also made quite a splash by having a platinum sponsor pay for
a bunch of floor space outright and donate it to be used as a Dot Org
pavilion, where projects and linux user groups could have small kiosks
and generally have a good time. Dot Org was much better laid out the
second time I saw it.
</p>
<p>As shows pressed on, toys were on the increase, but shirts
amd CDs with products on them were certainly around, too. we saw an
increase of booths and as more "generic" presence grew the amount of
total IQ in the booths could be seen to be being split evenly, because
individually talking to vendors, it was definitely going down. Toys
were getting insanely cool - drawings for VW Bugs and motorcycles. I
volunteered for the FSF booth. I helped out the Gnome guys. When I
worked at Tuxtops I went to both LWE/SF and LWE/NY in that year and had
a great time at both places. But Dot Org was becoming a ghetto with
hardly any color and the main floor felt increasingly like any other
computer show. Something was about to break down.</p>
<p>
And it did. A lot of companies had picked up starter capital on the
magic of the word Linux. Heck, some of them even were trying to be
Linux companies. But VC enthusiasm is no excuse for a poor business
plan and when something in the economy turned sour - I'm not sure what,
but we'll start at asian money difficulties and work our way up from
there - anyone who did not have their hand tightly on the finances
watched it all start to head down the drain at tornado speed, and the
VCs clamp down their pocketbooks. No more toys. T-shirts only if
you sit through the spiel. (Booths that still had IQ points left around
would also give them to people who seemed genuinely interested in their
products, which if you ask me, is the way it should have always been.)
More feet hurt because companies watching their dimes only used a single
layer of carpet and not the nice padded layer under it which you can
pay extra for. Lots of pamphlets though.</p>
<p>
I'm pleased to say that I'm seeing winter's end. There are still
insipidly blank faces to be foudn at some booths. And there are what
I'll call the "barely Linux" booths - hardware vendors selling server
racks, RAID arrays, GPS, scanning printers, and other weird peripherals.
But Linux products are getting their own booths and that means they're
affording them, I hope. The flavors of products are spreading around,
and that's part of why it feels like a normal trade show to me - financial,
games, diet plan calculators. Backup programs optimized for Linux, like
Storix, are not only around but have competitors. All those things I'd
see at a Windows oriented show, I'm seeing.
<p>
The Dot Org space still looks plain but it's not hiding
so much anymore. There are a lot more projects than there used to be
and projects were sharing booths - I recommend a little more platinum
get spilled on this next time. It's rather cool to see MBNA America (a
large VISA card vendor) hanging out in Dot Org plugging their LinuxFund
card. They give away big beach towels if you can sign up for a card.</p>
<p>It's hilarious to see Microsoft booths in "the rookery" as if
they're newly born open sourcerors. "Well we do let WinCE developers
see some sources." Really? Can they compile Windows from scratch and
pour it onto a handheld, then run WinCE office binaries out of the OEM
private packages to test their build? "Um, no. They can look at
selected drivers and structures." I see. Well, it's better
than nothing <img src="../gx/dennis/smily.gif" alt=":)"></p>
<p>Yes, I like what I'm seeing. The frost is melting off the ground and
not every seed has sprouted again - but things are getting good.</p>
<p>
Over at the more ordinary trade show, PC Expo - for the second year running
they had a "Linux Boot Camp" track. For the first year running it's
calling itself "TechX>NY" instead and I wonder if they are thinking that
the PC is on its way out as the only platform to run desktops or
servers. Last year "the Linux track" was one lonely guy
presenting nonstop between water cups and snack breaks. This year they
invited LPI, Novell (well okay Ximian, and maybe they invited themselves
since they're a sponsor for the show), and a few of the Answer Gang.
Maybe in a few years they'll have the brass of various "Big Linux"
companies knocking down their door trying to be on the speaker's list.
I'm advised that our presentations were very well recieved, indeed.
</p>
<p>On the show floor itself there was only a little of Linux. Local
computing groups knew about it and chatted merrily. Product vendors
knew what it was and generally whether they supported it or hadn't
tested. I didn't really get "We don't support that! Our customers
don't ask for that kind of stuff!" flamage which I'd
been seeing a few years ago - in fact quite the opposite, one vendor
told me that he'd had requests for support and they were working on it,
and he kind of hoped for BSD support too, if it wasn't too hard, though
it wasn't on the official roadmap. Outsourcing World (sic) mostly didn't
know or care what "A Linux" was though there were a few "outsourced
programming" firms I didn't think much of. Okay, the computing sector
overall may still be heading downhill in places. But Linux is indeed,
looking up.</p>
<!-- end hgreeting -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.1"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Efficiency regards running script in a subshell () and a seperate shell</H3>
<p><strong>From Nimish kamerkar
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Thomas Adam
</strong></p>
<P><STRONG>
Hi Answer Gang,
</STRONG></P>
<P><STRONG>
Which method is more efficient;
Running a command in () or running it in a seperate shell?
Can the answer include differences in how the processes
are spawned? (i.e. fork exec etc)
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
OK. This is usually application/situation dependant. If you have something
like:
</blockQuote>
<blockquote><pre>#!/bin/bash
echo $(whereis xterm)
</pre></blockquote>
<blockQuote>
What you are doing there is forcing the command "whereis xterm" to run in
a subshell (denoted between ()'s). A "subshell" is just another instance
of the command-line interpreter, running your program. Thus, a "subshell"
in this instance means that the main shell script is its parent, i.e.
assume that we called the script above "parent.sh" then when the subshell
executed you'd get:
</blockQuote>
<blockquote><pre>|-parent.sh
|-----subshell
</pre></blockquote>
<blockQuote>
This is also known as forking -- i.e. where the process breaks off from
the main caller, to form another.
</blockQuote>
<blockQuote>
<TT>"exec()</TT>"'ing a process however, means that the currently running process
is replaced by the program that is to be exec'ed. Thus unlike above
where-by the subshell ran under a new instance, the following script
exec's itself:
</blockQuote>
<p align="center">See attached <tt><a href="misc/tag/exec-anything.bash.txt">exec-anything.bash.txt</a></tt></p>
<blockQuote>
What this is doing is it will echo the first two lines, sleep for a second
and then re-spawn itself. What you'll see is the same message above. The
echo line will NEVER show, because it is after the program ($0 denotes the
program's name) that is being (re)exec'ed.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
My question is how are invoking a program in a <TT> subshell()</TT> and
invoking it in a seperate shell different, as regards fork &amp; exec. I am asking
this as the environment inherited by both is different. I started thinking
of this really because I remembered reading somewhere sometime that invoking
it in () is more efficient than in a seperate shell. But as far as I can see,
both processes should need fork and exec.
</STRONG></P>
<P><STRONG>
Only difference is in (), both the
local and global environment variables are initialised, and in a seperate shell,
only global environment variables are initialised. By that logic actually, the
seperate process should be more efficient than the one in ()!
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Those variables that are exported are "global" anyway, so you don't need
to describe them in this way.
</blockQuote>
<blockQuote>
It depends. A subshell can be efficient if you want to ensure that a task
running under another shell script is carried out to completion before the
next one is executed (a good example of this would be tarring files over
ssh on a pipe).
</blockQuote>
<blockQuote>
Of course, invoking a subshell program means that if the parent dies or is
kill -9'ed, whatever, then the child process is also killed along with it.
That is something you might want to consider.
</blockQuote>
<blockQuote>
Normally, when you write a shell script, and you want to end the script
by calling another one then you would "exec" the program name, since
there is no need for the shell process to <TT> fork()</TT>.
</blockQuote>
<blockQuote>
If you need two independant processes to communicate concurrently then
using a <TT> fork()</TT> would be best.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hello Thomas/Answer Gang,
</STRONG></P>
<P><STRONG>
Thanks for the patient unravelling of the intricacies!
</STRONG></P>
<P><STRONG>
With Warm Regards
-Nimish.
</STRONG></P>
<!-- 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"
>force unmounting of CDROM</H3>
<p><strong>From Chady Kassouf
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Thomas Adam, Mike Martin, Karl-Heinz Herrmann
</strong></p>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hello Answer Gang,
</STRONG></P>
<P><STRONG>
I backed up most of my files on CD-Rs that later on appeared to be of very
low quality, now none of my CD-ROM of CD-Writer drives manage to read from
them, but that's not where the problem is.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
As long as you have (hopefully) learnt from the exercise, that's all the
matters
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The fact that mounting a CDROM in linux locks the drive is making a problem
with these CDs.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
How so? The whole idea of locking the drive is to do with the way the
mount command works.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
OK, the CDs are bad, there's no way to read them, but there's the problem of
not being able to unmount them, linux will just keep on trying to chew on
the bad CD, and killing `cp' will not make it give up. `umount' will either
hang forever waiting for system to finish reading from the drive, or it will
return but the drive will not be released. same thing will happen with
`eject'
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
If you're trying to umount a <TT>/cdrom</TT> that is currently being read/write to,
then what you should do is:
</blockQuote>
<blockquote><pre>ps waxf
</pre></blockquote>
<blockQuote>
to see the upper program that is being called below "mount <TT>/cdrom</TT>", and
do:
</blockQuote>
<blockquote><pre>kill -9 $(pidof &lt;program_name&gt;)
</pre></blockquote>
<blockQuote>
(rude, I know). Then you'll be able to do:
</blockQuote>
<blockquote><pre>umount /cdrom
</pre></blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I'm using RedHat 7.3, and the guilty drives are a TEAC 40X CDROM and an HP
8200Plus CD-Writer.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
What you're describing here is not really a problem with the hardware per
se but merely a gripe with the way the kernel and mount mounts a cdrom
drive. Locking the drive is there to prevent the FS from screwing up, and
allowing a clean change of disks via umount.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It's good to note that while rebooting the machine, init will try to unmount
the filesystems but will fail on the drive that's stuck trying to read,
`umount2' will kick in and retry for three times before finally giving up
and letting the reboot continue.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Umounting drives is done for a reason. I suspect the reason why you cannot
unmount <TT>/cdrom</TT> is due to Zombie processes clogging up your kernel buffer,
and the kernel doesn't realised that these have effectively stopped.
Usually, I have found in situations like this that a lengthy wait of 30
mins or so, does allow the kernel time to flush itself, and the locked
drive is then accessible via an 'eject'.
</blockQuote>
<blockquote><pre>fuser mount /cdrom
</pre></blockquote>
<blockQuote>
will also help you ascertain this information, as well as the classic:
</blockQuote>
<blockquote><pre>ps wax
</pre></blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
My question is twofold; first, is there a way to tell linux to give up
reading and force unmounting a CDROM drive without having to use the safety
pin and, hence, lose access to the drive, OR reboot he machine?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Yes, there is. I have done this on some severe occassions. The first thing
I would try is to:
</blockQuote>
<blockquote><pre>umount -f /cdrom
</pre></blockquote>
<blockQuote>
The "-f" flag says to mount to force umounting of it. If that does not
work, then edit "<TT>/etc/mtab</TT>" and remove the entry pertaining to your cdrom
drive. In case you are wondering, "<TT>/etc/fstab</TT>" holds information about
drives that <EM>can</EM> and <EM>might be</EM> mounted, and "<TT>/etc/mtab</TT>" is there as a
state file for those drives that <EM>are</EM> currently mounted. Editing the file
in this instance is perhaps a good idea.
</blockQuote>
<blockQuote>
If you find that this is happening to you on each and <EM>every</EM> mount, try
doing something like:
</blockQuote>
<blockquote><pre>mount -n /cdrom
</pre></blockquote>
<blockQuote>
which will tell mount NOT to write to <TT>/etc/mtab.</TT> Typically I have used
this on drives whereby "<TT>/</TT>" has been mounted ro, but I cannot see why it
wont work here.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Second, anyone happened to have a similar situation? or might that be a
hardware problem?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Reading my answer here will not doubt confirm that I have had experience
in this sort of thing. I doubt this is hardware related, but it could be.
I would need to know more information about which aspects of your cdrw
work/don't work in order to help you further.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [K.-H.]
Better use some of the suggestions by Thomas but it seems cdrecord
does not care for the "lock" state of a CD. If you issue:
</blockQuote>
<blockquote><pre>cdrecord -eject
</pre></blockquote>
<blockQuote>
it will simply eject the CD -- regardless if it's locked or mounted. In the
best case the kernel recognises the media is gone and the errors given back
to "cp" causes all concerned processes to stop. Then a umount should also be
possible. Worst case you get a kernel panic for a "damaged" filesystem on the
now nonexistant CD (didn't happen here, mostly it's recovering gracefully).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
final issue could be a process called fam locking the drive -
sometimes if you kill fam, you can then umount the drive.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Indeed, Mike. I had considered this, but then I realised that FAM isn't
always loaded on some machines.
</blockQuote>
<blockQuote>
FAM (File Alteration Monitor), is also debian package and an absolute cow
to compile. It is not distro specific, no. It is used to monitor
directory/file changes, so I can see how it <EM>might</EM> be used in this
instance but it is unlikely.
</blockQuote>
<font color="red"><blockquote><em>The querent reported back....
-- Thomas Adam</em></blockquote></font>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I tried all the options presented by the kind people in this list, the only
one that worked though was the cdrecord -eject although it took
about 3 minutes to succeed.
Thanx for K.H for the solution.
</STRONG></P>
<P><STRONG>
I was able to capture the error that was printed out after a file copy in
<A HREF="http://www.kde.org/">KDE</A> started to choke:
</STRONG></P>
<pre><strong>scsi0: ERROR on channel 0, id 0, lun 0, CDB: Request Sense 00 00 00 40 00
Info fld=0x1a4f7, Current sd0b:00: sense key Medium Error
Additional sense indicates No seek complete
I/O error: dev 0b:00, sector 431068
</strong></pre>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [K.-H.]
read error from the CD, "Medium error" as you already assumed in your
original mail. Probably nothing to save anymore. I too had some CD's which
came through the file comparison right after burning. Some time later they
gave me plenty of read errors. In my case the read attempts at some point
broke off but as I tried to get as much data back as possible I made
the reading process to try harder.
</blockQuote>
<!-- 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"
>IP config files on Red Hat 9</H3>
<p><strong>From - E J -
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Mike Martin, Jay R. Ashworth, Jim Dennis, David Mandala, Kapil Hari
Paranjape, Ben Okopnik, Thomas Adam
</strong></p>
<P><STRONG>
Please note I am trying to configure IP on a <A HREF="http://www.redhat.com/">Red Hat</A> 9
system. I would like to see about changing from the
default DHCP configuration to a STATIC configuration.
</STRONG></P>
<P><STRONG>
I have tried a couple of things only to trash a test
system, in one case I got the system up - but X no
longer worked.
</STRONG></P>
<P><STRONG>
I know the hostname is saved in
/etc/sysconfig/network.
</STRONG></P>
<P><STRONG>
What are the other files necessary to changing the
configuration?
</STRONG></P>
<P><STRONG>
Thanks in Advance.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
first of all, for any problem try to do it manually so
</blockQuote>
<blockQuote>
once logged in (as root) do
</blockQuote>
<blockQuote>
ifdown eth0
ifconfig eth0 address &lt;your ip address&gt;
then if you access a router directly do
route add gw &lt;name of your default gateway&gt;
</blockQuote>
<blockQuote>
If this works add to <TT>/etc/hosts</TT> a line
&lt;your hostname (machie name)&gt; &lt;your machines IP address&gt;
</blockQuote>
<blockQuote>
also this may be useful
</blockQuote>
<blockQuote>
<A HREF="http://www.faqs.org/docs/linux_network"
>http://www.faqs.org/docs/linux_network</A>
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [jra]
But don't worry about that.
</blockQuote>
<blockQuote>
Use the RedHat program netconfig, which has a button for DHCP. Turn it off,
and fill in the blanks.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Breen]
That'll work, Jay. If EJ wants to know what's going on behind the
curtain, the documentation is in
</blockQuote>
<blockQuote>
/usr/share/doc/initscripts-&lt;version&gt;/sysconfig.txt
</blockQuote>
<HR width="10%" align="left">
<blockquote><em><font color="#000066">The subject of this thread then changes....
-- Heather</font></em></blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Breen]
/usr/share/doc/initscripts-&lt;version&gt;/sysconfig.txt
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I felt stupid reading that, too. I've complained for years at the lack
of documentation for those. Sometimes I just read through the rc
scripts that source the <TT>/etc/sysconfig</TT> files to figure how which names
they want to use. Sometimes I just run the silly GUI config tool
(when I can remember which name it goes by in which versions of Red
Hat). I had never found this particular file.
</blockQuote>
<blockQuote>
I still think it's a bug. Red Hat should include a set of comments in
each <TT>/etc/sysconfig</TT> file that list all of the valid variable names and
show examples of the valid values.
</blockQuote>
<blockQuote>
Now that the "Red Hat Distribution" is a "community maintained project"
rather than a shrink wrapped product ... heck with it; I'll still
recommend that advanced Linux users switch to <A HREF="http://www.debian.org/">Debian</A> and that
businesses pressure Oracle and other ISVs to support Debian.
</blockQuote>
<blockQuote>
I think the "Red Hat community project" should set a goal for itself --
to provide a transition to Debian over the next several releases. They
can write rpm command wrappers around apt-get/dpkg, add or help Debian
add the -V and -K (verification and GnuPG key package signing) features
to the .deb package format and the <TT>/var/lib/dpkg</TT> "database"), etc.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
Gack, I hope that never happens, I dislike Debian intensely. I use it on
some of my servers and I grate my teeth every time I need to do
something with it. Debian needs a lot more then just a rpm wrapper. I'll
try not to start a religious war here and simply say you stick with
Debian and I'll stick with Red Hat and I hope they get more compatible
but I hope that happens by Debian getting closer to Red Hat and not the
reverse (except apt-get, that is quite nice).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Yeeew. I sure hope that never happens either. I really hate the "papa
knows best, just watch the blinkenlights" approach of RedHat, and money
is what it takes to get me to play with it these days.
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockQuote>
<blockQuote>
Fortunately, none of this is an issue since we <em> _do</em> have both of these
distros plus a whole lot of others, which seems to satisfy a broad range
of us picky techie types (say <em> _that</em> 3 times fast with a mouth full of
marbles, and your dental problems will be a thing of the past.)
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
In other words, I think a convergence is in order. Let's have both
major "community projects" try to consolidate (improving both).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
I strongly disagree here. The beauty of Linux and the various projects
is there is no "one true way" and those who like it different can have
it that way. Otherwise you are just like Microsoft and Apple each having
a single "true way".
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I have similar opinions on gentoo; why create a new distibution when
they could have poured that energy into creating a Debian build system
that could build your entire distribution from sources, with locally
defined optimization and other flags). (BTW: the argument that this
results in significant performance gains seems to have been somewhat
refuted:
</blockQuote>
<blockquote><pre> http://articles.linmagau.org/modules.php?op=modload&amp;name=Sections&amp;file=index&amp;req=viewarticle&amp;artid=227
</pre></blockquote>
<blockQuote>
... though it's possible that this test was flawed.
</blockQuote>
<blockQuote>
(That said I've been thinking of installing gentoo on a machine just
to see what it's like).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I knew my statement was likely to rankle. However, without it
degenerating into a religous war, what specific things do you dislike
about debian? <TT>/etc/sysconfig/network-scripts/ifcfg-*</TT> versus
<TT>/etc/network/interfaces?</TT> The installer? Lack of Kickstart? The
dpkg commant? dpkg-reconfigure or dpkg-repack? The fact that many
packages ask configuration questions during pre-install or
post-install? The fact that you can't tell the package manager to
exclude the docs during installation?
</blockQuote>
<blockQuote>
I want to know because I'd like to see Debian make the necessary
changes or options available to make Red Hat users happier.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
This is important in the business world where you need 50 machines
exactly the same, not close but exactly the same. Also unless you make
your own Debian depository the changes in the Debian tree make it all
but impossible to do this if you are installing machines over the course
of several months.
</blockQuote>
<blockQuote>
Another irritant is that Debian package
maintainers patch the packages to run in funny places and have odd
patches on them. We were running SAMBA on one machine and we were having
a major problem that we could not explain. As luck would have it I was
able to get tridge to take a look and even he was mystified for several
hours. As it turned out the package maintainer had really messed up the
package. There is not enough testing done on the edge cases by the
Debian developers, so either leave the source alone or truly understand
it and test all possible uses of the package which in the case of SAMBA
is impossible, the SAMBA developers have spent a huge amount of time
getting donated machines available to be able to test the edge cases,
there is no way a Debian developer is going to have access to the same
resources that the SAMBA developers have.
</blockQuote>
<blockQuote>
At tridge's advice and this is advice I've been given many times from
others as well. "Use Debian as a base install but for packages you
really care about make your own from source as you never quite know what
they've done to them." The problem with this of course is if I can't
trust what I'm installing then why am I installing it at all?
</blockQuote>
<blockQuote>
Followed by the fact that stable is most always too old thus forcing me
to use testing which gets broken at times.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Odd. I agree that sometimes, stable can have packages that are a little
to out of date, but then that won't stop you from doing a "dist-upgrade"
at any point. And as for "testing" being a little too unstable, I am
going to have to refute that and ask for you to give an example.
</blockquote>
<blockquote>While the Debain BTS (Bug tracking System): <A HREF="http://bugs.debian.org"
>http://bugs.debian.org</A> does
a good job at fixing loose ends in Sarge, many of the problems that I have
seen people encounter is compilation of programs. I have been running
Sarge (Debian testing) for ages now with absolutely no problems
whatsoever.
</blockquote>
<blockquote>I'm therefore going to guess that David was meaning to say the
"Unstable" causes problems.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
I don't think it's possible for Debian developers to make Red Hat users
happier, they like to do things their way and the hell with the rest of
the folks. An example, change the init levels to match Red Hats, make
init 3 the normal run level sans X and level 5 with X. Virtually every
other Linux distro is the same as Red Hat very very few are different.
But as a business software developer I need to know that if my package
it to be installed on both Red Hat and Debian I need to install my
startup scripts in different run levels or bad things happen. That is
silly.
</blockQuote>
<blockQuote>
I agree that one does need to minimize <EM>gratuitous</EM> differences so
tackle the run level differences first, if you can get that changed
(which I strongly doubt) perhaps there is a possibility that Debian can
become a stronger player in the Corporate market place. What I think you
will get is many reasons why Debian is correct but that is irrelevant,
it's not about being technically correct it's about minimizing
<EM>gratuitous</EM> differences, and I don't think it's possible for the Debian
community to change.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Well "funny places" is the main sort of gratuitous change I also object
too. FHS was supposed to reduce this (and probably has, somewhat).
</blockQuote>
<blockQuote>
We could argue that Red Hat and <A HREF="http://www.suse.com/">SuSE</A> put their stuff in "funny"
places; then we could both reach for copies of the FHS to bolster
our arguments.
</blockQuote>
<blockQuote>
I agree about the runlevels and the way the run xdm as an rc script
rather than in inittab. Those are gratuitous and Debian should bow
to the more widespread convention in both cases.
</blockQuote>
<blockQuote>
As for the Samba anecdote: so what. Red Hat applies over a 100 patches
to their kernels and they apply patches to many packages, including
core packages like Samba. We could exchange package maintainer horror
stories for hours. <EM>Usually</EM> the Debian packaging is better than
Red Hat packaging. Debian has a published policy that is derived from
the consensus of it's maintainers/developers. There are ongoing
discussions on how to change that policy. Maintainers that don't
conform to the policy see NMUs (non-maintainer uploads) of their
packages and are eventually replaced by new maintainers.
</blockQuote>
<blockQuote>
Of course it's possible for them to change. It is easier for us to
change Debian than it would be for us to change Red Hat Inc.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
Jim, here again we differ, I feel it's easier to change Red Hat all it
takes is cash, nothing more nothing less. Changing Debian is akin to
herding cats you have to get a large portion of the entire development
community into agreement which is damned hard if not impossible to do.
You need to join them in overwhelming force in order to out vote them on
policy. Any single person is doomed to failure, it was designed that way
and it works quite well. Debian is a hackers play land, it was designed
to be that and that it will stay, the bylaws they live by are
specifically designed to keep it that way and human inertia and apathy
will tend to keep it that way.
</blockQuote>
<blockQuote>
How long did it take to fix the networking init script that would only
start networking and not stop or reset it take? More then 3 years by my
count, if you can't fix something like a simple init script how you
expect to fix a fundamental difference in philosophy?
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] That's not quite the point. It is my belief that Debian is very much a
"hands-on" distribution -- that allows one to get one's hands dirty. If
you thought that there was a problem, you should have submitted a patch
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
To effectively change Red Hat Inc. we have to either buy them, or
represent a large enough portion of their revenues that they'll listen.
To change Debian all we have to do is join them, work on the project and
explain our reasons for recommending the change.
</blockQuote>
<blockQuote>
My problem with the Red Hat "distribution" is that it's been
essentially abandoned by Red Hat Inc. Now, the community will maintain
it; RH Inc. will take parts that they like and fold them into their
proprietary AS/ES products. However, RH will also make changes that
may make AS/ES diverge somewhat from the RH distro.
</blockQuote>
<blockQuote>
My comments are mostly intended to discourage people from create
<EM>yet another</EM> distro for broad consumer use.
</blockQuote>
<blockQuote>
I'm not saying everyone should just abandon the RH distro -- just
try to transition <EM>some</EM> parts to the Debian base (where that makes
sense) <EM>and</EM> to join Debian in sufficient numbers and quality to effect
changes there.
</blockQuote>
<blockQuote>
Notice that I'm mostly a proponent of changing Debian in many of the
specifics. The one thing that I would push on the other distros
is the use of the same package/dependency infrastructure and
granularity. I'm not talking about the commands used to manipulate
the packages (apt-get, dpkg, aptitude, rpm, etc) --- I personally
would prefer to see a command named 'pkg' taking arguments somewhat
like the rpm command (except for that idiocy of -U being "upgrade"
<EM>and</EM> install thus necessitating the odd -F --freshen switch to mean
just "upgrade"). The difference would be that pkg -i foo would
look at your local policy file (<TT>/etc/apt/sources.list</TT>) and know how
to fetch the foo from your preferred location or media.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
That is not the only problem, as far as I can tell, when a package
changes (is updated) there is no history, the old package is removed and
the new inserted replacing it. I could be wrong but the gents I used at
my last place were dedicated Debian devotees and they could not find
where "outdated" packages were stored. Thus if a package was "updated"
you were screwed and could not make an identical from that point forward
unless you went to the extreme of maintaining your own Debian
depository.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
If it happens at all I expect it to take several years and releases
of each of the two distributions. We've already seen lots of people
implementing apt on RPM based distributions. The problem with that
superficial approach is that the underlying granularity and dependency
cycle problems remain. The real value of Debian in in that
acyclic dependency tree.
</blockQuote>
<HR width="10%" align="left"><blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
Joining the distro wars once more ...
</blockQuote>
<blockQuote>
Just some random points.
</blockQuote>
<blockQuote>
1. While Kickstart is a great idea, systemimager is not a bad
replacement. For the more hardcore debian-ers, Kickstart seems too
complicated when compared with "dpkg --get-selections" in combination with
"dpkg --set-selections".
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I have to agree here. I have used RH's kickstart one when I first setup
my little 386 server. It was a pain to begin with.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
2. When comparing "rpm" with "dpkg" (or deb) what is lacking in dpkg is
the automated signature/md5sum checking. On the other hand try to unpack
an "rpm" on a non-RedHat machine...not all that automatic (you need to
install "alien"). To unpack a "deb"...you will (most likely) find "ar" on
any machine and so can unpack deb's quite easily.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I have to disagree slightly here. If one does not care for the "install"
script that is inherent in either a .deb or .rpm (depending on which
distro it is) then using "mc" is an efficient alternative to view the
package in question and manually copy the files across to the specific
directories. I don't recommend this for hugely dependent packages, but
it is an effective means for smaller packages, where there are no
dependencies
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
3. I don't dislike RedHat as intensely as David seems to dislike Debian!
However, the choice was made for me by RedHat when they decided to exclude
text-mode tools for installation and management. Even "dselect" is
better than nothing except "rpm". I used "purp" on RedHat systems for
a while but it was always in "contrib" and often out-of-date.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Using "dselect" under Debian is NOT a good idea -- it is extremely
clunky, not to mention it has a terrible UI. I would always recommend
people to use "aptitude"; both as a replacement for "dselect" AND
"apt-get". It functions as both dselect (without any arguments) and as
apt-get on invocation. It also handles dependencies and logging much
better, in my opinion.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
4. Re: xdm. I think all daemons were "meant to be" started from rc scripts
so in fact the RedHat policy of starting "xdm" from inittab is strange.
For example, in the old days it was possible for the console user
to somehow "kill" the xdm/gdm/kdm on RedHat (possibly by killing the
X server or something) causing all external Xterminal users to be
logged out!
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Exactly! I have had this very gripe with RH and even tried e-mailing
them to ask them why they did not move xdm et al to rc scripts. They
never did reply to me. As Kapil notes, if something goes wrong with xdm
then it can be of consequences to other processes.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
5. Finally, about building things from source. To some extent I agree. It
would be nice if we had the following set-up:
</blockQuote>
<blockQuote><BLOCKQuote>
A. All the system administrator had to do to was install a base system.
</BLOCKQuote></blockQuote>
<blockQuote>
B. Most utility/application packages could be installed
by <EM>users</EM> in (say) <TT>/opt/username/packagename/{bin</TT>,lib,...}.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I disagree with this suggestion. Instead installing applications to
$HOME is still an acceptable solution as $PATH usually includes
$HOME/bin anyhow.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
C. There would be a user-level package management system that would
allow users to mix and match their requirements by creating symlink
farms in <TT>/home/username/{bin</TT>,lib,...} that point to different packages
under <TT>/opt</TT> possibly installed by different users.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Hmmm, installing applications system-wide and then allowing users to
have custom settings in $HOME is no more different than the
suggestion above.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
This way, those users who need "cutting edge" or even "bleeding edge"
tools could install them. The system could remain "stable" and
(hopefully) "secure". Such a setup may even be useful on single-user
systems as the user could play with upgrades without messing up the
running system. Disk space is not really an issue any more unless you
use "<A HREF="http://www.kde.org/">KDE</A>" or "Gnome" or "Openoffice"
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)"
height="24" width="20" align="middle">
</blockQuote>
<!-- 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"
>a linux solution for the office</H3>
<p><strong>From amitava maity
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Ben Okopnik, Kapil Hari Paranjape, Heather Stern, Thomas Adam
</strong></p>
<P><STRONG>
Hello all!
</STRONG></P>
<P><STRONG>
We have three Windows machines at our office. These are shared by 10 to
12 persons. I am trying to find out if one of these machines could be
converted into a Linux box. Hopefully this Linux box can then be
configured to meet the demands of 8 terminals connected via serial
cables and an appropriate 8 terminal serial adaptor.GUI is necessary at
all the terminals. Is this a feasible configuration? Can a Pentium-II,
233MHz machine with an IDE hard disk be used for this purpose?
</STRONG></P>
<P><STRONG>
Linux Gazette, you are doing a great job.
</STRONG></P>
<P><STRONG>
A Maity.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Take a look at the Linux Terminal Server Project &lt;<A HREF="http://ltsp.org/&gt"
>http://ltsp.org/&gt</A>;. It
sounds like they'll fit your needs just fine.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Is this a feasible configuration?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
There are two possible configurations:
</blockQuote>
<blockQuote><ol>
<LI>A server with a multi-port serial adapter which is connected via
<LI>A server connected to an ethernet hub to which GUI terminals (such
</ol></blockQuote>
<blockQuote>
In modern times, (2) is the way to go unless you already have the full
infrastructure of (1). (Where will you find vt100 terminals nowadays?).
</blockQuote>
<blockQuote>
If you are going to buy some PC's you can anyway buy them with ethernet
cards built-in and a small 16-port ethernet hub. In fact, you can buy
"thin clients" if you use a server---in particular, you can save on
disk costs.
</blockQuote>
<blockQuote>
I would suggest that you do not buy 8 vt100 terminals! This is not
cost effective nowadays. Second-hand vt100 terminals are likely to be a
hardware headache (since it would appear from your message that you are
not a seasoned sysadmin of the unix days) and (more importantly) will
not satisfy those of your users who are used to the colorful graphical
interface of Windows.
</blockQuote>
<blockQuote>
Instead, you can "share" the use of the GNU/Linux machine as you have
been sharing the use of the Windows machines---in fact this is a more
shareable system!
</blockQuote>
<blockQuote>
Advantages over your existing configuration:
</blockQuote>
<blockQuote><ol>
<LI>Users will be able to customize their desktop without interfering
<LI>Users will be able to run jobs that can run unattended in the
<LI>You can find and use a lot of useful software without attracting
<LI>When you get some funds you can add some more Linux machines very
</ol></blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Probably, esp. if you use something a bit on the lightweight side for
basic window management details (such as fvwm instead of more weighty
desktops, abiword with gnumeric instead of staroffice, etc.)
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Siag office (<A HREF="http://www.siag.org"
>http://www.siag.org</A>) isn't too bad.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Ben's right, LTSP is a good place to look. If these "terminals" are
PCs but you'd reather they stay hard-diskless, consider keeping them
having CD bays and run knoppix (a live CD distro). Or maybe another
liveCD distro (for instance <A HREF="http://www.suse.com/">SuSE</A> has a free one) but I'm advised, most
of them ask a few sysadminly questions during bootup, and Knoppix doesn't.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Linux Gazette, you are doing a great job.
A Maity.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Thanks, we love to hear that sort of thing!
</blockQuote>
<!-- 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"
>Simple DNS solution with Red Hat 9</H3>
<p><strong>From - E J -
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Faber Fedor, Kapil Hari Paranjape, Jim Dennis
</strong></p>
<pre><strong>[root@localhost sbin]# ./ifconfig eth0 address
192.168.1.103
address: Unknown host
ifconfig: `--help' gives usage information.
[root@localhost sbin]#
</strong></pre>
<P><STRONG>
Please note I believe I need a DNS server (solution)
for my home <A HREF="http://www.redhat.com/">Red Hat</A> Network. Is there a simple DNS
solution I can establish?
</STRONG></P>
<P><STRONG>
I have checked some books - this does not seem to be
as simple as editing <TT>/etc/host.conf</TT>
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Okay, so? You mis-typed a command. I do it all the time.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Hopefully though, Faber doesn't mis-type too often while as "root"
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
What are you attempting to do? What is "address"? Is it supposed to be
an actual (IP) address? Is it an enviromant variable? What?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I'm going out on a limb here to guess that this was supposed
to be rendered as:
</blockQuote>
<blockquote><pre>[root@localhost sbin]# ./ifconfig eth0 address 192.168.1.103
address: Unknown host
ifconfig: `--help' gives usage information.
[root@localhost sbin]#
</pre></blockquote>
<blockQuote>
... cut and pasted from a root shell session.
</blockQuote>
<blockQuote>
You wanted to type:
</blockQuote>
<blockquote><pre>[root@localhost sbin]# ./ifconfig eth0 192.168.1.103
</pre></blockquote>
<blockQuote>
... which would seet your eth0 address to 192.168.1.103
That would also implicitly set the netmask to 255.255.255.0 and
the broadcast address to 192.168.1.255. That netmask is the
default for the traditional "Class C" network address blocks
(all of 192.*.*.* among many others). The broadcast address is
then calculated by masking off the high order bit using the netmask
then setting that many bits to "on" (1). Then replacing the bits
at the end original addresses with the broadcast.
</blockQuote>
<blockQuote>
In other words you can often just specify the address without spelling
out the other settings. You only have to specify the others when
you're network isn't following the "Classical" parameters and defaults.
</blockQuote>
<blockQuote>
The problem with your command was that the word "address" was parsed
as the <EM>name</EM> of a host. The ifconfig command then tried to resolve
that name into an IP address (presumably via your <TT>/etc/hosts</TT> file,
then DNS --- though that depends on the settings in your nsswitch.conf)
</blockQuote>
<blockQuote>
Here's a couple of other examples of ifconfig commands:
</blockQuote>
<blockquote><pre># ifconfig eth1 10.0.1.10 netmask 255.255.255.0 broadcast 10.0.1.255 up
# ifconfig eth2 123.45.67.8 netmask 255.255.255.224 broadcast 123.45.67.31
</pre></blockquote>
<blockQuote>
Notice that the address is the one argument that is not prefixed by
a literal/keyword or label. It's usually the first argument, though
it might work even if you don't follow that convention.
</blockQuote>
<blockQuote>
Notice in my last example that we're using a smaller netmask, like
the kind you might get from an ISP that was only giving you a block
of 30 IP addresses. Long ago I wrote and article on "subnetting and
routing" which is still one of the most popular article in LG/TAG
history. I've been told it's used for some college TCP/IP fundamentals
classes.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Please note I believe I need a DNS server (solution)
for my home Red Hat Network. Is there a simple DNS
solution I can establish?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Perhaps you will need a DNS or other directory service (NIS or LDAP).
However, in this case you just needed to look at the error and read
the usage section of the --help and/or man page a little more
carefully.
</blockQuote>
<blockQuote>
It also helps to think about the problem your trying to solve.
You're trying to configure a network interface. DNS and other
directory services need to use that interface (or <EM>some</EM> interface)
in order to resolve names into IP addresses. That would create a
chicken &amp; egg problem if the ifconfig command truly depended on
the name resolution. It would be unreasonable to assume that everyone
has to run a network directory services daemon on localhost --- and
you'd still need it to ifconfig the lo (localhost/loopback) interface.
</blockQuote>
<blockQuote>
(That line of reasoning should alert you to the fact that their
was something wrong with your premise --- that your conclusion was
dubious).
</blockQuote>
<blockQuote>
You almost certainly don't want to play with your <TT>/etc/host.conf</TT>
</blockQuote>
<blockQuote>
However, it could be as simple (in this case) as editing
/etc/hosts
</blockQuote>
<blockQuote>
If you'd put an entry "192.168.1.103 address" as a line in
your etc host file then your command would have <EM>almost</EM> worked.
It would complain about extra arguments --- the lookup/resolution
of the <EM>hostname</EM> "address" would have succeeded (assuming you have
a normal <TT>/etc/nsswitch.conf</TT>).
</blockQuote>
<blockQuote>
If you put more reasonable address/name pairs in <TT>/etc/hosts</TT> and you
securely distribute those (rsync -e ssh) to your other machines
--- you have a working system of host name resolution without DNS
NIS or LDAP.
</blockQuote>
<blockQuote>
<TT>/etc/nsswitch.conf</TT> defines the list of services and methods used by
glibc (C library) functions to resolve names (hostnames, network
names, netgroup, user, group, and service) into numbers (IP addresses,
lists of hosts, UIDs, GIDs, and TCP/UDP port numbers). Almost all of
the programs on your system are dynamically linked against glibc
(a.k.a. just libc). glibc implements resolvers that read
<TT>/etc/nsswitch.conf</TT> and dynamically load <TT>/lib/libnss*</TT> modules as listed.
</blockQuote>
<blockQuote>
Such run-time linkage uses the <TT> dlopen()</TT> interface. There are two
types of dynamic linking in Linux. Link/compile time, such as the
way that almost all programs are linked to libc and many programs are
linked to libm (the C math functions library). These are listed by
the ldd (ld dump --- ld is a non-intuitive mnemonic for "linker").
Run-time linking is done via the <TT> dlopen()</TT> interface. Any time a
program must read a configuration file, command line option or
environment setting, or any other run-time source of information
to determine which modules to load --- it uses <TT> dlopen()</TT> Obviously
this would be true of the NSS modules since any program that uses
any of these name services it has to read <TT>/etc/nsswitch.conf</TT>
to determine which libraries to load (NSS == "name services selection"
or "name services subsystem" or something like that).
</blockQuote>
<blockQuote>
<TT>dlopen()</TT> (run-time dynamic linking) is also used by PAM, for PERL and
Python binary modules, <A HREF="http://www.apache.org/">Apache</A> modules, and XFree86 version 4 and later.
You can think of these as being a way to implement some object oriented
features in normal C programs. The primary uses of these modules are
to extend and/or modularize the functionality of a base binary program.
</blockQuote>
<blockQuote>
Thus you can get a custom authentication module (say one of those
little electronic credit card PIN tokens) and drop it into your system;
add one configuration line and all of the PAM linked programs have been
extended to use this module. All without recompiling anything.
</blockQuote>
<blockQuote>
As another example you can install XFree86, as compiled by your
distribution vendor, and you can install a driver module for your
video card from some third party (perhaps even the manufacturer of
the card).
</blockQuote>
<blockQuote>
I realize I've delved deeply under the hood here --- into details
that you won't understand at first reading (and probably don't
care about).
</blockQuote>
<blockQuote>
My point is that you don't need to run a <EM>network</EM> name service.
Most of the NSS linked programs check local config files <TT>/etc/hosts</TT>,
<TT>/etc/passwd</TT>, <TT>/etc/groups</TT>, <TT>/etc/services</TT>, etc. first. They then check
with other services as listed in the <TT>/etc/nsswitch.conf.</TT> <TT>/etc/host.conf</TT>
is still used, but its usage is somewhat superceded by <TT>/etc/nsswitch.conf.</TT>
</blockQuote>
<blockQuote>
(I'd love to see a good explanation of why we have both nsswitch.conf
and host.conf on modern systems --- something at a higher level than
their respective man pages).
</blockQuote>
<!-- 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"
>Creating RAMDISK</H3>
<p><strong>From Jose Nathaniel G. Nengasca
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Ben Okopnik, Kapil Hari Paranjape, Thomas Adam
</strong></p>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hi there,
</STRONG></P>
<P><STRONG>
I just want to create a RAMDISK of 100MB to use as temporary storage for
squid cache files, I am using redhat 8.0, using grub bootloader, with 750MB
of RAM, the one on linux focus site is rather old (november 1999) howto.
Can someone help me with this?
</STRONG></P>
<P><STRONG>
Respectfully yours,
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
I think you have something confused here. As I understand it:
</blockQuote>
<blockQuote><BLOCKQuote>
Squid creates an object cache in memory <EM>and</EM> periodically saves
objects to disk when it runs out of space in memory.
</BLOCKQuote></blockQuote>
<blockQuote>
You want to create a virtual (RAM) disk for squid to use as its
disk. Instead why don't you increase the amount of memory
available to its in-memory object cache?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
If you have the kernel sources installed, take a look at
"<TT>/usr/src/kernel-source-&lt;version&gt;/Documentation/filesystems/tmpfs</TT>". It's
a memory-based file system, and is created (by root) with "mount".
Here's an example:
</blockQuote>
<p align="center">See attached <tt><a href="misc/tag/ben-fstab.txt">ben-fstab.txt</a></tt></p>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
I think Ben has missed the point. Squid doesn't care for the <EM>type</EM> of
RAM being used. Sure, it needs physical RAM, but this is accessed
on-disk by squid's "object cache". It is this that determines how much
RAM is being used (see Kapil's answer above).
</blockQuote>
<blockQuote>
In <TT>/etc/squid.conf</TT> you can adjust this by changing:
</blockQuote>
<blockquote><pre>cache_mem=50MB
</pre></blockquote>
<blockQuote>
to something more appropriate. Don't forget to issue:
</blockQuote>
<blockquote><pre>squid -k reconfigure
</pre></blockquote>
<blockQuote>
once changes have been made to the file.
</blockQuote>
<!-- 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"
>X server crash when starting up RH9 for the first time</H3>
<p><strong>From Claudiu Spataru
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Mike Martin, Ben Okopnik, Thomas Adam, Heather Stern
</strong></p>
<P><STRONG>
This is a multi-part message in MIME format.
</STRONG></P>
<font color="red"><blockquote><em>This is naughty, please send e-mails in plain-text ONLY.
-- Thomas Adam</em></blockquote></font>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hello
</STRONG></P>
<P><STRONG>
My X server crashes with the following error messages (see attached
log).
</STRONG></P>
<P><STRONG>
My system is an Athlon 2500+, GeForce FX 5200 graphic card, A7N8X deluxe
mainboard (not sure how relevant this info is, but added it anyway).
</STRONG></P>
<P><STRONG>
The font server can be stopped and restarted by using '<TT>/etc/init.d/xfs</TT>
start|stop' without any problems. When eliminating the Fontpath line
that points to unix/:7100 from the XF86Config file, it complains about a
different fontpath that it cannot find and crashes once again. (There is
also either no path set to run Xconfigurator or there is no such thing
in my installation of RH9.)
</STRONG></P>
<P><STRONG>
Any known solution to the above problem?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
dont do this - put it back. If you dont use the xfs server then you
need to hardcode the fontpath into <TT>/etc/X11/XF86Config</TT>
</blockQuote>
<blockQuote>
X wont start without xfs running, when X fails to start, is xfs
running?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
That's inaccurate. Either a font server <em> _or</em> a hard-coded font set is
sufficient, and there's no advantage that I know of to a server if
you're not doing X over a network. My system has run without "xfs" for
years now.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
I know this is generally true, however the querent is using <A HREF="http://www.redhat.com/">Red Hat</A> 9
</blockQuote>
<blockQuote>
Red Hat does a fair bit with the font server, including dealing with
easy adding of fonts, TTF fonts etc.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] That's inaccurate -- TrueType fonts are handled by the xtt
server, NOT by xfs itself. There are two different servers. I still fail
to see how RH find running another process to handle fonts an
<EM>advantage</EM>
</blockquote></font>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] Smaller part to kick if it needs a restart? But within X this is often
false economy, yanking live font servers is rather like pulling the rug
out from under you. It can be done - I've done it (read the 'xset' man
page if you're crazy enough to mess with this) - but I think the
split is a holdover from an earlier time (only a year or two ago) when
the X server did not speak Truetype on its own. You needed an external
fontserver for it, and that was usually xfs patched for freetype access
(the way I did it) but there was a competitor from the asian countries,
who had a real need for readable letters.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
So to avoid other problems/questions IMHO, it is safe to say that the
querent is better off using the installed font server. (ie: dont add
unnecesary complications), especially as it sounds like it is actually
working.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I disagree with this -- X11 and fonts is rarely, if at all, distro
specific. Just because RH uses a font server initially, doesn't mean to
say that you have to continue using it. That is one of the ideals of
Linux -- it is <EM>your</EM> OS. Do whatever you like
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
just did a quick google - its possible that the card is not recognised
properly
</blockQuote>
<blockQuote>
so try this (as root)
</blockQuote>
<blockQuote>
edit the file <TT>/etc/X11/XF86Config</TT>
look for the device section eg:
</blockQuote>
<blockquote><pre>Section "Device"
Identifier "Videocard0"
Driver "nv"
VendorName "Videocard vendor"
BoardName "NVIDIA GeForce 4 (generic)"
BUSID "PCI:1:0:0"
EndSection
</pre></blockquote>
<blockQuote>
and experiment changing the Driver entry to vesa or nv, depending what
is there already
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thank you very much for the replies! It was indeed the fact that my graphic
card did not get recognized properly and the generic vesa driver did not
work in my case.
After changing the values for 'BoardName' and 'Driver' as per Mike's
suggestion, I was able to start X Windows.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
Generic X error problem solving
</blockQuote>
<blockQuote>
There are a few very common reasons for X not starting
</blockQuote>
<blockQuote>
1. Not enough disk space in <TT>/</TT> or <TT>/var</TT>
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] If this is the case, then I doubt one would be able to login anyhow,
since /var/log/wtmp would have to be written to so that the "last(1)"
command can keep a log of who has logged in.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
2. Font server not starting (can be caused by 1.)
</blockQuote>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] More accurately, "fixed" or some font needed by your window manager
isn't available, so the session manager dies -- taking X with it.
</blockquote>
<blockquote>This may be a dead font server, or some other buggy FontPath.
</blockquote></font>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] RedHat like to use xfs/xfs-xtt to issue fonts. The truth is that a font
server is NOT necessary, no matter which distribution one uses. The only
time I can think when you might want to use it is when one is having to
share fonts over the network.
</blockquote>
<blockquote>In anycase, if the font server fails to load, the default fonts listed
in /etc/XF86Config (under other distros: /etc/X11/XF86Config-4) are used
as the "fallback".
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
3. Mouse not being initialised
</blockQuote>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] This is actually quite rare, much more common is it being <EM>incorrectly</EM>
initialized, due to incorrect protocol being specified for the input
device -- which will get you into X, but with a mouse that doesn't move,
or does something crazy as soon as you touch it, like race to one edge
of the screen and flutter there like a trapped moth.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
4. If you use the Nvidia binary module, the kernel module not being
loaded.
</blockQuote>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] i810s and other "memory sharing with CPU" video cards can have this
problem too. It may also matter to embedded designers. In short if you
can't see the video without kernel help - it needs to be loaded.
</blockquote></font>
<blockQuote>
5. Generic error "No screens", often a problem with the video driver.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Yes, either that or the <EM>wrong</EM> video driver has been selected. In that
instance, a new one should be chosen. Under <A HREF="http://www.debian.org/">Debian</A>, the fix for that
would be to run:
</blockQuote>
<blockquote><pre>dpkg-reconfigure xserver-xfree86
</pre></blockquote>
<blockQuote>
Commonly, the "no screens" error can also be caused by FrameBuffer
options turned on. If one comments these out, the problem may also go
away.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
points 3,4 and 5 will show an error in the X error log (or on the
terminal that starts X)
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] They'll only show a message assuming point 1 above is false, otherwise,
how is it to write to the log file?
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
It will show the same message on the controlling terminal, if you launch
X as a command at a shell prompt instead of allowing anything automatic
to try it. And while we're at it, <EM>disable</EM> any attempt whatever to
launch X automatically if X isn't tuned up and happy. The infamous
message "ID x respawning too fast" is a common symptom of that. The
"ID" in that case is an <TT>/etc/inittab</TT> entry for your GUI login prompt.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
What can often work as a quick fix is to run the script xf86config
(all lower case)
</blockQuote>
<blockQuote>
This will wipe out the config for the font server though.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
In any case, adding the line:
</blockQuote>
<blockquote><pre>FontPath "Unix/:7100"
</pre></blockquote>
<blockQuote>
as the first line under: Section "Files" should work.
</blockQuote>
<!-- 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"
>Converting from Win2k to Linux</H3>
<p><strong>From Tim Grossenbacher
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Faber Fedor, Jim Dennis
</strong></p>
<P><STRONG>
Gradually converting from a Windows 2000 server to Linux running Redhat 7.2.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
First off, kudos on converting, but hy 7.2? You should at least be
doing 7.3 (although I've found 9 to be nice and stable). You have
patched the 7.2 box, haven't you?
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
For many years, we have used social security numbers as login names within
the Win2k domain to login.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
My gawd, man! Are you mad! I certainly hope this domain is nowhere
near the Internet! &lt
<IMG SRC="../gx/dennis/smily.gif" ALT=";D"
height="24" width="20" align="middle">r. Evil&gt; But if it is, how do you translate
between the login of the employee's SSN and his email name? Can you tell
me the name of that file and which machine it is on??&lt;/Dr. Evil&gt;
</blockQuote>
<blockQuote>
And you've never had a problem with identity theft? Amazing.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Linux does not appear to allow me to create a
user with numbers only as the user.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Correct. Linux (and every *nix I've seen) won't allow login names to
start with a number. &lt;Turns to the audience&gt; Why is that? Anyone know?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Because any place in the code that's expecting a user toke looks at
the first character to determine if it's a UID or a name; then it
looks up <TT>(getpwnam()</TT>) the username and translates it into a UID.
</blockQuote>
<blockQuote>
In other words "names" beginning with digits create an ambiguity between
different representations of the same object (UID vs. name).
</blockQuote>
<blockQuote>
Now, granted this could be changed. Programs could search the entire
string for any non-digit and declare it to be a name rather than a
UID. However, even then there'd be an ambiguity when the "name"
consisted entirely of digits. Also changing this would entail finding
<EM>every</EM> piece of code that was parsing UIDs and user names <EM>anywhere</EM>
(precisely the sort of change that is nearly impossible for an
operating system that's been in use in hundreds of implementions for
over thirty years).
</blockQuote>
<blockQuote>
You could certainly just use a letter prefix to your SSN as your
user naming scheme. u1234567890 (123-45-7890) would work just as
well as 1234567890.
</blockQuote>
<blockQuote>
As Faber as said, using SSN's in ANY visible way is an incredibly bad
idea. Perusing the Privacy SSN FAQ:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="http://www.faqs.org/faqs/privacy/ssn-faq/index.html"
>http://www.faqs.org/faqs/privacy/ssn-faq/index.html</A>
</BLOCKQuote></blockQuote>
<blockQuote>
... would be a good idea.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have created test users with both alpha and numeric characters, and all
works perfectly. Is there a work around?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Re-think your policy.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Well, you could always hack the source, of course, of course. But I
assume there's a Good Reason why they don't allow it, I just don't know
what it is.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Think ambiguity. Then think, millions of lines of code in thousands
of programs. Then think 30 years of books, education and programmer
experience --- hundreds of thousands of programmers who already <EM>know</EM>
that usernames like most identifiers in most languages must start with
an alpha or some suitable punctuation and that leading digits signify
a UID.
</blockQuote>
<blockQuote>
Sounds like a bad idea all around.
</blockQuote>
<blockQuote>
I suppose you could just modify the login programs to accept numerics
and prefix them with some letter or even an _ (underscore) before
logging the user in. This would keep the change focused just to a few
programs and libraries (basically just the PAM and login suite).
</blockQuote>
<blockQuote>
However, this sort of hack has a way of causing more confusion later.
Everyone at your site will then be "logging in" one way and getting a
username that doesn't quite match the string they use to log in ---
could cause lots of confusion.
</blockQuote>
<!-- end 8 -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
<h5>
<br>Copyright &copy; 2003
<br>Copying license <A HREF="">http://www.linuxgazette.com/copying.html</A>
<BR>Published in Issue 95 of <i>Linux Gazette</i>, October 2003</H5>
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<SMALL><CENTER><H6 ALIGN="center">HTML script maintained by
<A HREF="mailto:star@starshine.org">Heather Stern</a> of
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H6></SMALL></CENTER>
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">News Bytes</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/conry.html">Michael Conry</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
</p><center>
<table cellpadding="7"><tbody><tr><td>
<img src="../gx/bytes.gif" border="1" alt="News Bytes">
</td><td>
<h3>Contents:</h3>
<ul>
<li><a href="#leg">Legislation and More Legislation</a>
</li><li><a href="#links">Linux Links</a>
</li><li><a href="#conferences">Conferences and Events</a>
</li><li><a href="#general">News in General</a>
</li><li><a href="#distro">Distro News</a>
</li><li><a href="#commercial">Software and Product News</a>
</li></ul>
</td></tr></tbody></table>
<strong>Selected and formatted by <a href="mailto:michael.conry@softhome.net">Michael Conry</a></strong>
</center>
<p> Submitters, send your News Bytes items in
<font size="+2"><strong>PLAIN TEXT</strong></font>
format. Other formats may be rejected without reading. You have been
warned! A one- or two-paragraph summary plus URL gets you a better
announcement than an entire press release. Submit items to
<a href="mailto:bytes@linuxgazette.com">bytes@linuxgazette.com</a>
</p><hr> <p>
<!-- =================================================================== -->
</p><h3><img alt=" " src="../gx/bolt.gif">
<font color="green">
November 2003 <i>Linux Journal</i>
</font>
</h3>
<img alt="[issue 114 cover image]" src="misc/bytes/lj-cover114.png" width="200" height="268" align="left" hspace="20">
The November issue of <a href="http://www.linuxjournal.com/"><i>Linux
Journal</i></a> is on newsstands now.
This issue focuses on System Administration. Click
<a href="http://www.linuxjournal.com/modules.php?op=modload&amp;name=NS-lj-issues/issue114&amp;file=index">here</a>
to view the table of contents, or
<a href="http://www.linuxjournal.com/subscribe/">here</a>
to subscribe.
<p>
<font color="green">All articles in issues 1-102 are available for public reading at
<a href="http://www.linuxjournal.com/magazine.php">
http://www.linuxjournal.com/magazine.php</a></font>.
Recent articles are available on-line for subscribers only at
<a href="http://interactive.linuxjournal.com/">http://interactive.linuxjournal.com/</a>.
<BR CLEAR="all">
<!-- =================================================================== -->
<a name="leg"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Legislation and More Legislation</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">European Patents
</FONT>
</H3>
<P>
Last month we reported on an upcoming vote in the European Parliament
regarding the future of software patents in Europe. According to many
Free and Open Software advocates, the proposals in front of the
parliament would, probably permanently, establish the practice of
software patenting in Europe. This, they argued, would lead to a
reduction in innovation and give an unnecessary and crushing advantage
to large software companies who could use their greater resources to
legally elbow smaller competitors out of the market.
You can read a cogent and well-argued discussion of these views in the
<a href="http://newsforge.com/article.pl?sid=03/09/22/1311217">
open letter addressed by Linux Torvalds and Alan Cox</a> to the
members of the European Parliament
<P>
There are many people out there who were not content simply to
complain about the direction events were taking. Instead, they lobbied,
and lobbied hard, to get the concerns of financially small (though
numerically large) interest groups onto the agenda. An initial sign
that these efforts might be having an effect was the
<a href="http://promote-opensource.org/modules/news/article.php?storyid=262">
announcement of a further postponement</a>
of the vote on the proposed directive. Though no reason was given for
the delay, the first postponement was the result of widespread confusion
regarding the issues at stake, and a feeling that the directive was
being forced through with undue haste. It seems likely that similar
sentiments lead to this second deferment.
<P>
The ultimate, and welcome, result of this concerted lobbying process was
that amendments were proposed to the directive which removed many of the
most objectionable proposals. This
<a href="http://www.theregister.co.uk/content/4/33016.html">
amended directive was approved</a> by the parliament with a margin of
364 votes to 153 with 33 abstentions.
LWN have helpfully <a href="http://lwn.net/Articles/50722/">
reproduced the directive online</a> in a readable HTML format.
<P>
It is important to learn lessons from this success and to apply them in
future struggles. Many Free Software enthusiasts have learnt valuable
lobbying skills in the course of their advocacy, and these skills must
be developed and shared. A particularly
<a href="http://newsforge.com/newsforge/03/09/16/1428222.shtml?tid=17">
interesting account of this lobbying process</a> has been published by
NewsForge, and it gives useful information both on how to lobby, and on
what level of understanding can be expected of politicians and their
staff. Additionally, it is important to follow up on politicians who
have been lobbied and to check how they actually voted. As
<a href="http://www.ntk.net/2003/09/26/">
pointed out by NTKnow</a>, the UK Liberal Democrats made very positive
noises, but ultimately voted in favour of patents. Of the UK parties,
only the Greens and the UK Independence Party voted against software
patents. If politicians realise that Free software advocates pay
attention (and draw attention) to their voting records, they will be far
more likely to heed future representations.
These skills will be especially important since pro-patent interests are
likely to try to get their way through the alternative route of national
parliaments.
<P>
For more information on this story, if you are interested in an
anti-patents, pro-free-software point of view you should look at
<a href="http://www.ffii.org/">FFII.org</a>.
Their
<a href="http://swpat.ffii.org/news/03/plen0924/index.en.html">
account of the final amendments and vote</a> is worth reading.
<a name="links"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Linux Links</font></H3></center>
<P>
A <a href="http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=55">
comparison of four Linux Office suites</a>
and how well they handle random MS Word/Excel/PowerPoint doucments.
<P>
Some links from NewsForge:
<ul>
<li>
<a href="http://newsforge.com/article.pl?sid=03/08/29/1948223">
How to retrain yourself for embedded Linux</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/05/1958235">
Open source in East Timor and India</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/03/2053203">
The indispensable GPL</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/13/1538208">
Iran's First GNU/Linux Seminar</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/12/1544240">
Opportunities for Open Source software in the publishing industry</a>
</li>
<li>
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/22/2037238">
Linux on the AMD Opteron: Are We Ready?</a>
</li>
</ul>
<P>
Bellevue's Linare sees Linux future,
<a href="http://seattletimes.nwsource.com/text/2001739669_btinterface22.html">
launches $19.95 operating system</a>.
<P>
<a href="http://acmqueue.org/modules.php?name=Content&pa=showpage&pid=54&page=1">
The age of corporate open source enlightenment</a>
<P>
Some links from Linux Weekly News:
<ul>
<li>
<a href="http://lwn.net/Articles/47699/">
Is Taiwan is falling behind China in Linux adoption.</a>
</li>
<li>
US Library of Congress is
<a href="http://lwn.net/Articles/47497/">
using Linux for an online video archive</a>
</li>
</ul>
<P>
And since they generate so much media noise, lets list a few relating to
SCO:
<ul>
<li>
<a href="http://www.linuxjournal.com/article.php?sid=7117">
What does SCO v. IBM mean for users?</a>, a view from Linux Journal.
</li>
<li>
Dee-Ann LeBlanc at O'Reilly provides
<a href="http://www.oreillynet.com/pub/wlg/3702">
A SCO-Fighting Press Kit</a>
</li>
<li>
<a href="http://www.eweek.com/article2/0,4149,1257617,00.asp">
ESR and SCO:</a>
"But [Raymond] did admit that 'I am grinning a grin that should
frighten the thieves and liars at SCO out of a week's sleep...'"
</li>
<li>
Novell 'puts entire ecosystem behind Linux'
<a href="http://www.theregister.co.uk/content/53/32708.html">
and CEO downplays SCO derailment risk</a>
</li>
<li>
Linux Torvalds, in open letter to Darl McBride says
<a href="http://newsforge.com/article.pl?sid=03/09/10/2321224">
pLease grow up</a>.
</li>
</ul>
<P>
Some links from O'Reilly:
<ul>
<li>
<a href="http://linux.oreillynet.com/pub/a/linux/2003/09/04/oracle_install.html">
Running Oracle on Red Hat</a>
</li>
<li>
<a href="http://linux.oreillynet.com/pub/a/linux/2003/09/04/email_pki.html">
Encrypted Email Cookbook</a>
</li>
<li>
<a href="http://www.onlamp.com/pub/a/onlamp/2003/09/18/prelude.html">
The Prelude open source intrusion detection system</a>
</li>
</ul>
<P>
Some links via LinuxToday:
<ul>
<li>
<a href="http://www-106.ibm.com/developerworks/linux/library/l-datavis/?ca=dgr-lnxw02UsingPerl/Tk">
Data visualization using perl/TK</a>
</li>
<li>
<a href="http://www.bayarea.com/mld/mercurynews/business/6769286.htm">
Open source helps education effort in third world</a>
</li>
<li>
<a href="http://www.ofb.biz/modules.php?name=News&file=article&sid=263&mode=&order=0&thold=0">
A free desktop for free people</a>
</li>
<li>
The Indian government is
<a href="http://economictimes.indiatimes.com/cms.dll/html/uncomp/articleshow?msid=185058">
releasing GNU/Linux in 11 Indian languages</a>
by the end of the year
</li>
<li>
<a href="http://articles.linmagau.org/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=295&page=1">
Setting up an ADSL connection under Linux</a>
</li>
<li>
<a href="http://www.thejemreport.com/software/wordprocessors.htm">
Comparison of word processors</a> on Linux.
</li>
</ul>
<P>
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/27/1444237">
IRC Linux Help for beginners</a>.
<a name="conferences"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Upcoming conferences and events</font></H3></center>
<P> Listings courtesy <EM>Linux Journal</EM>. See <EM>LJ</EM>'s
<A HREF="http://www.linuxjournal.com/events.php">Events</A> page for the
latest goings-on.
<table cellpadding=5 border=0 width=100%>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>IDUG 2003 - Europe</b><BR></TD>
<td valign=top>October 7-10, 2003<BR>Nice, France<BR>
<a href="http://www.idug.org" target="_blank">
http://www.idug.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Clusters Institute Workshops</b><BR></TD>
<td valign=top>October 13-18, 2003<BR>Montpellier, France<BR>
<a href="http://www.linuxclustersinstitute.org/"
target="_blank">
http://www.linuxclustersinstitute.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Coast Open Source Software Technology (COSST) Symposium</b><BR></TD>
<td valign=top>October 18, 2003<BR>Newport Beach, CA<BR>
<a href="http://cosst.ieee-occs.org" target="_blank">
http://cosst.ieee-occs.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Enterprise Linux Forum</b><BR></TD>
<td valign=top>October 22-23, 2003<BR>Washington, DC<BR>
<a href="http://www.enterpriselinuxforum.com/" target="_blank">
http://www.enterpriselinuxforum.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Media Advisory/Open Source Software Chicago Forum</b><BR></TD>
<td valign=top>October 23, 2003<BR>Chicago, IL<BR>
<a href="http://www.osschicago.com" target="_blank">
http://www.osschicago.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>PhreakNic</b><BR></TD>
<td valign=top>October 24-26, 2003<BR>Nasheville, TN<BR>
<a href="http://www.phreaknic.info/" target="_blank">
http://www.phreaknic.info/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LISA (17th USENIX Systems Administration Conference)</b><BR></TD>
<td valign=top>October 26-30, 2003<BR>San Diego, CA<BR>
<a href="http://www.usenix.org/events/lisa03/" target="_blank">
http://www.usenix.org/events/lisa03/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Open Alternative Days</b><BR></TD>
<td valign=top>October 30-31, 2003<BR>Bucharest, Romania<BR>
<a href="http://www.load.ro/" target="_blank">
http://www.load.ro/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>O'Reilly Mac OS X Conference</b><BR></TD>
<td valign=top>October 27-30, 2003<BR>Santa Clara, CA<BR>
<a href="http://conferences.oreillynet.com/macosx2003/" target="_blank">
http://conferences.oreillynet.com/macosx2003/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>HiverCon 2003</b><BR></TD>
<td valign=top>November 6-7, 2003<BR>Dublin, Ireland<BR>
<a href="http://www.hivercon.com/" target="_blank">
http://www.hivercon.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>COMDEX Fall</b><BR></TD>
<td valign=top>November 17-21, 2003<BR>Las Vegas, NV<BR>
<a href="http://www.comdex.com/fall2003/" target="_blank">
http://www.comdex.com/fall2003/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Southern California Linux Expo (SCALE)</b><BR></TD>
<td valign=top>November 22, 2003<BR>Los Angeles, CA<BR>
<a href="http://socallinuxexpo.com/" target="_blank">
http://socallinuxexpo.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Annual Computer Security Applications Conference (ACSAC)</b><BR></TD>
<td valign=top>December 8-12, 2003<BR>Las Vegas, NV<BR>
<a href="http://www.acsac.org/" target="_blank">
http://www.acsac.org/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Clusters Institute Workshops</b><BR></TD>
<td valign=top>December 8-12, 2003<BR>Albuquerque, NM<BR>
<a href="http://www.linuxclustersinstitute.org/"
target="_blank">
http://www.linuxclustersinstitute.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Storage Expo 2003, co-located with Infosecurity 2003</b><BR></TD>
<td valign=top>December 9-11, 2003<BR>New York, NY<BR>
<a href="http://www.infosecurityevent.com/" target="_blank">
http://www.infosecurityevent.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Consumer Electronics Show</b><BR></TD>
<td valign=top>January 8-11, 2004<BR>Las Vegas, NV<BR>
<a href="http://www.cesweb.org/" target="_blank">
http://www.cesweb.org/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux.Conf.AU</b><BR></TD>
<td valign=top>January 12-17, 2004<BR>Australia<BR>
<a href="http://conf.linux.org.au/" target="_blank">
http://conf.linux.org.au/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxWorld Conference & Expo</b><BR></TD>
<td valign=top>January 20-23, 2004<BR>New York, NY<BR>
<a href="http://linuxworldexpo.com/" target="_blank">
http://linuxworldexpo.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>O'Reilly Emerging Technology Conference</b><BR></TD>
<td valign=top>February 9-12, 2004<BR>San Diego, CA<BR>
<a href="http://conferences.oreillynet.com/etcon/" target="_blank">
http://conferences.oreillynet.com/etcon/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SXSW</b><BR></TD>
<td valign=top>March 12-21, 2004<BR>Austin, TX<BR>
<a href="http://sxsw.com/" target="_blank">
http://sxsw.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SD West</b><BR></TD>
<td valign=top>March 15-19, 2004<BR>Santa Clara, CA<BR>
<a href="http://www.sdexpo.com" target="_blank">
http://www.sdexpo.com</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>CeBit Hannover</b><BR></TD>
<td valign=top>March 18-24, 2004<BR>Hannover, Germany<BR>
<a href="http://www.cebit.de" target="_blank">
http://www.cebit.de</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>COMDEX Canada</b><BR></TD>
<td valign=top>March 24-26, 2004<BR>Toronto, Ontario<BR>
<a href="http://www.comdex.com" target="_blank">
http://www.comdex.com</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>2004 USENIX/ACM Symposium on Networked Systems Design and
Implementation (NSDI)</b><BR></TD>
<td valign=top>March 29-31, 2004<BR>San Francisco, CA<BR>
<a href="http://www.usenix.org/events/nsdi04/" target="_blank">
http://www.usenix.org/events/nsdi04/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>RealWorld Linux</b><BR></TD>
<td valign=top>April 13-15, 2004<BR>Toronto, Ontario<BR>
<a href="http://www.realworldlinux.com" target="_blank">
http://www.realworldlinux.com</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>CeBit America</b><BR></TD>
<td valign=top>May 25-27, 2004<BR>New York, NY<BR>
<a href="http://www.cebit-america.com/" target="_blank">
http://www.cebit-america.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Strictly Business Solutions Expo</b><BR></TD>
<td valign=top>June 9-10, 2004<BR>Minneapolis, MN<BR>
<a href="http://www.strictlyebusiness.net/sb/mpls/index.po"
target="_blank">
http://www.strictlyebusiness.net/sb/mpls/index.po</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>USENIX Annual Technical Conference</b><BR></TD>
<td valign=top>June 27 - July 2, 2004<BR>Boston, MA<BR>
<a href="http://www.usenix.com/events/usenix04/" target="_blank">
http://www.usenix.com/events/usenix04/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>O'Reilly Open Source Convention</b><BR></TD>
<td valign=top>July 26-30, 2004<BR>Portland, OR<BR>
<a href="http://conferences.oreillynet.com/" target="_blank">
http://conferences.oreillynet.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxWorld Conference & Expo</b><BR></TD>
<td valign=top>August 3-5, 2004<BR>San Francisco, CA<BR>
<a href="http://www.linuxworldexpo.com/" target="_blank">
http://www.linuxworldexpo.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>USENIX Security Symposium</b><BR></TD>
<td valign=top>August 9-13, 2004<BR>San Diego, CA<BR>
<a href="http://www.usenix.com/events/sec04/" target="_blank">
http://www.usenix.com/events/sec04/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>USENIX Systems Administration Conference (LISA)</b><BR></TD>
<td valign=top>November 14-19, 2004<BR>Atlanta, GA<BR>
<a href="http://www.usenix.com/events/" target="_blank">
http://www.usenix.com/events/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
</table>
<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">Mobilix
</FONT>
</H3>
<P>
In the final roll of the dice for Mobilix, (a site providing information
on mobile Linux systems), the highest German civil court
<a href="http://linuxtoday.com/news/2003090600226NWCYLL">
has found in favour of Les Edition Albert Rene</a> and has dismissed the
appeal brought by Werner Heuser.
The work that formerly took place under the Mobilix banner will still
continue, thankfully, under the new name
<a href="http://tuxmobil.org/">
Tuxmobil</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">Debian
</FONT>
</H3>
<P>
<a href="http://www.debian.org/News/weekly/2003/35/">
Debian Weekly News reported</a>
that
The Debian project has
<a href="http://lists.debian.org/debian-amd64-0308/msg00035.html">
received full access</a>
to a Dual Opteron machine for
<a href="http://www.debian.org/ports/amd64/">
porting efforts</a> to the new amd64 architecture.
<P>
<hr width="20%" noshade>
<P>
Also
<a href="http://www.debian.org/News/weekly/2003/37/">
from Debian Weekly News</a>
debian-installer team have put together
<a href="http://cvs.debian.org/debian-installer/doc/INSTALLATION-HOWTO?rev=HEAD&content-type=text/vnd.viewcvs-markup">
a HOWTO which guides through the process of installing sarge</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Morphix
</FONT>
</H3>
<P>
Prakash Advani conducted
<a href="http://newsforge.com/newsforge/03/08/19/1518217.shtml">
an interview with Alex de Landgraaf</a>, the founder and the lead
maintainer of the Morphix project.
[<a href="http://www.debian.org/News/weekly/2003/35/">via DWN</a>]
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Mandrake
</FONT>
</H3>
Mandrake Linux is planning to
<a href="http://www.mandrakesoft.com/partners/advertising">
sell advertising space</a>
in the upcoming release of Mandrake Linux 9.2.
There is further information in the
<a href="http://newsforge.com/article.pl?sid=03/09/12/157237">
NewsForge story</a>.
<a name="commercial"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Software and Product News</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Python 2.3.1
</FONT>
</H3>
<P>
The Python Software Foundation
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/24/1726203">
has announced the release of version 2.3.1</a>
of the Python programming
language. This minor release introduces a number of enhancements based
on two months of experience since release of version 2.3.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Scribus 1.1.0
</FONT>
</H3>
<P>
Franz Schmid
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/14/1629236">
has announced the release of Scribus 1.1.0 - Linux Desktop Publishing</a>,
which builds upon the recently released Scribus 1.0, as well as the
launching of an integrated Scribus Web site at
<a href="http://www.scribus.org.uk">
www.scribus.org.uk</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">GNOME-Office 1.0 Released
</FONT>
</H3>
<P>
The GNOME-Office team
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/16/2228225">
has announced the immediate availability of GNOME-Office 1.0</a>.
GNOME-Office is a suite of
Free Software productivity applications that seamlessly blend with the
GNOME Desktop Environment. GNOME-Office includes the AbiWord-2.0 Word
Processor, GNOME-DB-1.0 Database Interface and Gnumeric-1.2.0
Spreadsheet."
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">MuNAS
</FONT>
</H3>
<a href="http://www.advancedthintech.com">
MuNAS</a> is a piece of software which addresses the problem that the X
Window system does not support the handling of audio data. It allows the
thin-client/server computing model in Linux to handle multimedia
applications: the audio data generated by Open Sound System (OSS/Free)
compatible audio applications which are executed in the terminal server can
be transferred to X-terminals. Thus, with MuNAS installed, you can execute
multimedia applications in the terminal server and listen to the sound from
your X-terminal. Currently, several manufactures of windows terminal are
planning to install the MuNAS in their X-terminals.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">XFce 4.0
</FONT>
</H3>
<P>
The XFce Project
<a href="http://www.xfce.org/en/press_release_en.html">
has announced the release of version 4.0</a> of their desktop environment
and development platform.
<!-- =================================================================== -->
<!-- =================================================================== -->
<!-- *** BEGIN bio *** -->
<!-- *** END bio *** -->
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<P> Mick is LG's News Bytes Editor.
<!-- *** BEGIN bio *** -->
<P>
<IMG ALIGN="LEFT" VALIGN="top" ALT="[Picture]" SRC="../gx/2002/tagbio/conry.jpg"
WIDTH="128" HEIGHT="158">
<em>Born some time ago in Ireland, Michael is currently working on
a PhD thesis in the Department of Mechanical Engineering, University
College Dublin. The topic of this work is the use of Lamb waves in
nondestructive testing. GNU/Linux has been very useful in this work, and
Michael has a strong interest in applying free software solutions to
other problems in engineering. When his thesis is completed, Michael
plans to take a long walk.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Michael Conry.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Ecol</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/malonda.html">Javier Malonda</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
The Ecol comic strip is written for <A
HREF="http://escomposlinux.org">escomposlinux.org</A> (ECOL), the web site tha
t supports, es.comp.os.linux, the Spanish USENET newsgroup for Linux. The
strips are drawn in Spanish and then translated to English by the author.
<P>
<EM>These images are scaled down to minimize horizontal scrolling.
To see a panel in all its clarity, click on it.</EM>
<P>
<A HREF="misc/ecol/ecol-126-e-as.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-126-e-as.png"
WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">
<A HREF="misc/ecol/ecol-127-e-as.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-127-e-as.png"
WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">
<A HREF="misc/ecol/ecol-125-e-as.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-125-e-as.png"
WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">
<P>
All Ecol cartoons are at
<A HREF="http://tira.escomposlinux.org/">tira.escomposlinux.org</A> (Spanish),
<A HREF="http://comic.escomposlinux.org/">comic.escomposlinux.org</A> (English)
and
<A HREF="http://tira.puntbarra.com/">http://tira.puntbarra.com/</A> (Catalan).
The Catalan version is translated by the people who run the site; only a few
episodes are currently available.
<P> <SMALL>These cartoons are copyright Javier Malonda. They may be copied,
linked or distributed by any means. However, you may not distribute
modifications. If you link to a cartoon, please <A
HREF="mailto:jmr@escomposlinux.org">notify</A> Javier, who would appreciate
hearing from you.
</SMALL>
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<!-- P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all" -->
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Javier Malonda.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Quick and Dirty Data Extraction in AWK</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/hughes.html">Phil Hughes</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<html>
<head>
<title>CC: Quick and Dirty Data Extraction in AWK</title>
</head>
<body>
<p>
Many years ago, probably close to 20, there was a regular point made on
the comp Usenet newsgroups about using the minimum tool to get the job
done.
That is, someone would ask for a quick and dirty way to do something
and the followups could include a C solution followed by an AWK
solution, followed by a sed solution and so on.
<p>
Today, I still try to use this philosophy when addressing a problem.
In this particular case, I picked AWK but if any of you old-timers are
reading this I expect you will come up with a sed-based solution.
<h2>The Problem: Extracting Data from E-mail Messages</h2>
<p>
I signed up for a daily summary of currency exchange rates. It's free
and you can subscribe too--just go <a
href="http://www.xe.com/cus" target="_blank">here</a>.
Most days I take a quick look at how the $ is doing against the Euro
and then save the e-mail. Some days I just save it.
I have always thought that, someday, I would write a program to show me
the trend but it has always been low priority.
<p>
Yesterday, as I was looking at a few of the save mail messages, I
realized that while writing a fancy graphing program was low-priority,
writing a quick and dirty hack would take less time than the random
sampling I was doing.
What I wanted was dates and numbers along with a minimalist graphical
display of the trend.
<p>First step was to look at the data.
Here is an extract of part of a message.
<pre>
>From list@en.ucc.xe.net Wed Sep 10 12:22:53 2003
...
XE.com's Currency Update Service writes:
Here is today's Currency Update, a service of XE.com. Please read the
copyright, terms of use agreement, and information sections at the
end of this message. CUS5D0B3D5C16D9
____________________________________________________________________________
If you find our free currency e-mail updates useful, please forward this
message to a friend! Subscribe for free at: http://www.xe.com/cus/
____________________________________________________________________________
&lt;PRE>
Rates as of 2003.09.09 20:46:35 UTC (GMT). Base currency is EUR.
Currency Unit EUR per Unit Units per EUR
================================ =================== ===================
USD United States Dollars 0.890585 1.12286
EUR Euro 1.00000 1.00000
GBP United Kingdom Pounds 1.41659 0.705920
CAD Canada Dollars 0.651411 1.53513
...
&lt;/PRE>
For help reading this mailout, refer to: http://www.xe.com/cus/sample.htm
...
</pre>
The ... lines just indicate that I tossed a lot of uninteresting lines.
<p>
There are three things I use to produce the report:
<ul>
<li> The "Rates as of" line to get the date
<li> The "USD" line to get the actual conversion rate
<li> The &lt;/PRE> line to tell me to print the info and clear my variables.
Note that I don't really have to clear them if the data is good
but it just seemed like a good way to detect bad data. Quick
hack yes, but not disgustingly quick hack.
</ul>
<h2>The Solution</h2>
<p>
The numeric part of the solution is really easy. Just grab the date
info and the rate info. When I get the &lt;/PRE> line, print it out.
<p>
The graphical part is just done by printing a number of plus signs that
corresponds to the rate.
To get decent resolution I would either need a very wide printout or
some sort of offset. I went for the offset assuming the Euro will not
drop below $.90 which is pretty safe considering the direction it is
going.
<p>
Finally, I wanted a heading. Using AWK's BEGIN block, I put in a couple
of print statements. Not liking to count characters, I defined the
variable <code>over</code> to be the number of spaces that needed to be
placed before the title info to align everything.
This just meant that I had to run the program, see how far I was off
and adjust the variable.
<p>
Here is the code.
<pre>
BEGIN {
over = " "
print over, " Cost of Euros in $ by date"
print over, ".9 1.0 1.1 1.2 1.3"
print over, "| | | | |"
}
/Rates as of/ { date = $4 }
/^USD/ { rate = $6 }
/^&lt;\/PRE>/ {
printf "%s %6.3f ", date, rate
rc = (rate - .895) * 100
for (i=0; i < rc; i++) printf "+"
printf "\n"
date = "xxx"
rate = 0
}
</pre>
<p>
Just running the program with the mail file as input prints all the
result lines but the order is that of the data in the mail file.
The sort program to the rescue. The first field in the output is the
date and some careful choice of the first character of the title lines
means everything sorts just right with no options.
Thus, to run, use:
<pre>
awk -f cc.as messages | sort
</pre>
and you get your fancy report. Pipe the result thru <code>more</code>
if you have a lot of lines to look at.
<p>
Here is a sample of the output:
<pre>
Cost of Euros in $ by date
.9 1.0 1.1 1.2 1.3
| | | | |
2003.01.02 1.036 +++++++++++++++
...
2003.08.28 1.087 ++++++++++++++++++++
2003.08.29 1.098 +++++++++++++++++++++
2003.08.31 1.099 +++++++++++++++++++++
2003.09.01 1.097 +++++++++++++++++++++
2003.09.02 1.081 +++++++++++++++++++
2003.09.04 1.094 ++++++++++++++++++++
2003.09.05 1.110 ++++++++++++++++++++++
2003.09.07 1.110 ++++++++++++++++++++++
2003.09.08 1.107 ++++++++++++++++++++++
2003.09.09 1.123 +++++++++++++++++++++++
2003.09.10 1.121 +++++++++++++++++++++++
2003.09.11 1.120 +++++++++++++++++++++++
2003.09.12 1.129 ++++++++++++++++++++++++
2003.09.14 1.127 ++++++++++++++++++++++++
2003.09.15 1.128 ++++++++++++++++++++++++
2003.09.16 1.117 +++++++++++++++++++++++
2003.09.17 1.129 ++++++++++++++++++++++++
2003.09.18 1.124 +++++++++++++++++++++++
2003.09.19 1.138 +++++++++++++++++++++++++
</pre>
<p>Ok sed experts, have at it.
--
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
Phil Hughes is the publisher of <I>Linux Journal</I>, and thereby <I>Linux
Gazette</I>. He dreams of permanently tele-commuting from his home on the
Pacific coast of the Olympic Peninsula.
As an employer, he is &quot;Vicious, Evil,
Mean, & Nasty, but kind of mellow&quot; as a boss should be.
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Phil Hughes.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Integrating Tomcat and Apache on RedHat 9</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/millson.html">Mike Millson</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Integrating Tomcat and Apache on RedHat 9.0</title>
</head>
<body>
<h1>Integrating Tomcat and Apache on RedHat 9.0</h1>
<hr>
<table width="100%" summary="byline">
<tr>
<td>Mike Millson<br>Web Systems Engineer<br><a href="mailto:mmillson@meritonlinesystems.com">mmillson@meritonlinesystems.com</a></td>
<td align="right">August 26, 2003<br>Merit Online Systems, Inc.<br><a href="http://www.meritonlinesystems.com/" target="_blank">www.meritonlinesystems.com</a></td>
</tr>
</table>
<hr>
<h2>Introduction</h2>
<p>Java servlets are a powerful tool for building websites and web based applications. One skill that every Java web developer should have is the ability to install and configure the Tomcat servlet engine. Many thanks to the <a href="http://www.apache.org/" target="_blank">Apache Software Foundation</a> for providing this mature, stable, open source software. It was recently voted the <a href="http://www.infoworld.com/article/03/07/25/29FErcamain_1.html?s=feature" target="_blank">Best Application Server of 2003</a> by InfoWorld readers.</p>
<p>This article discusses how to integrate Tomcat with the Apache web server on RedHat 9.0. The goal is to provide a simple, stable configuration that will allow users to gain confidence using Tomcat.</p>
<p>Please note all commands are issued as root unless otherwise noted.</p>
<h2>Installing Apache</h2>
<p>I chose to install Apache using the RedHat RPM. Using the RPM instead of compiling Apache from source simplifies system administration in the following ways:</p>
<ul>
<li>Updates and bug fixes can be installed automatically from the <a href="http://rhn.redhat.com/" target="_blank">RedHat Network</a>.</li>
<li>Startup and shutdown scripts are already configured and available.</li>
</ul>
<p>I recommend using the RedHat up2date command line utility to install RedHat RPMs. Although up2date can be used without purchasing a RedHat Network subscription, a basic subscription is a great value. It eliminates a multitude of headaches by ensuring the software you install is the correct version and you have the right dependencies installed on your system.</p>
<p>RedHat RPMs that must be installed:</p>
<ul>
<li>httpd: the Apache web server</li>
<li>httpd-devel: development tools that will be needed to create the mod_jk connector</li>
</ul>
<p>To install these packages using up2date, make sure you are connected to the Internet, and enter the following:</p>
<div class="code">
<pre>
up2date -i httpd
up2date -i httpd-devel
</pre>
</div>
<p>You should now be able to start/stop/restart Apache as follows:</p>
<div class="code">
<pre>
service httpd start
service httpd stop
service httpd restart
</pre>
</div>
<p>Verify that Apache is working by starting Apache and typing http://localhost/ into your browser. You should see the default Apache install page with links to documentation.</p>
<h2>Installing Tomcat</h2>
<p>The only requirements to run Tomcat are that a Java Development Kit (JDK), also called a Java Software Developement Kit (SDK), be installed and the JAVA_HOME environment variable be set.</p>
<h3>Java SDK</h3>
<p>I chose to install Sun's Java 2 Platform, Standard Edition, which can be downloaded from <a href="http://java.sun.com/j2se/" target="_blank">http://java.sun.com/j2se/)</a>. I chose the J2SE v1.4.2 SDK Linux self-extracting binary file.</p>
<p>Change to the directory where you downloaded the SDK and make the self-extracting binary executable:</p>
<div class="code">
<pre>
chmod +x j2sdk-1_4_2-linux-i586.bin
</pre>
</div>
<p>Run the self-extracting binary:</p>
<div class="code">
<pre>
./j2sdk-1_4_2-linux-i586.bin
</pre>
</div>
<p>There should now be a directory called j2sdk1.4.2 in the download directory. Move the SDK directory to where you want it to be installed. I chose to install it in /usr/java. Create /usr/java if it doesn't exist. Here is the command I used from inside the download directory:</p>
<div class="code">
<pre>
mv j2sdk1.4.2 /usr/java
</pre>
</div>
<p>Set the JAVA_HOME environment variable, by modifying /etc/profile so it includes the following:</p>
<div class="code">
<pre>
JAVA_HOME=&quot;usr/java/j2sdk1.4.2&quot;
export JAVA_HOME
</pre>
</div>
<p>There will be other environment variables being set in /etc/profile, so you will probably be adding JAVA_HOME to an existing export command. /etc/profile is run at startup and when a user logs into a system.</p>
<h3>Tomcat Account</h3>
<p>You will install and configure Tomcat as root; however, you should create a group and user account for Tomcat to run under as follows:</p>
<div class="code">
<pre>
groupadd tomcat
useradd -g tomcat tomcat
</pre>
</div>
<p>This will create the /home/tomcat directory, where I will install my Tomcat applications.</p>
<h3>Download Tomcat</h3>
<p>Download the latest release build from <a href="http://www.apache.org/dist/jakarta/tomcat-4/binaries/" target="_blank">http://www.apache.org/dist/jakarta/tomcat-4/binaries/</a>. Since Tomcat runs directly on top of a standard JDK, I cannot think of any reason to building it from source.</p>
<p>The Tomcat binary is available in two different flavors:</p>
<ol>
<li>non-LE
<ul>
<li>Full binary distribution</li>
<li>Includes all optional libraries and an XML parser (Xerces)</li>
<li>Can be run on JDK 1.2+</li>
</ul>
<li>LE
<ul>
<li>Lightweight binary distribution</li>
<li>Designed to be run on JDK 1.4</li>
<li>Does not include an XML parser because one is included in JDK 1.4</li>
<li>Can be run on JDK 1.2 by adding an XML parser</li>
<li>All the components of this distribution are open source software</li>
<li>Does not include any of the following optional binaries: JavaMail, Java Activation Framework, Xerces, JNDI, or the JDBC Standard Extension</li>
</ul>
</ol>
<p>There are a number of different download formats. I chose the LE version gnu zipped tar file (jakarta-tomcat-4.1.27-LE-jdk14.tar.gz).</p>
<h3>Tomcat Standalone</h3>
<p>Unzip Tomcat by issuing the following command from your download directory:</p>
<div class="code">
<pre>
tar xvzf tomcat-4.1.27-LE-jdk14.tar.gz
</pre>
</div>
<p>This will create a directory called jakarta-tomcat-4.1.27-LE-jdk14. Move this directory to wherever you would like to install Tomcat. I chose /usr/local. Here is the command I issued from inside the download directory:</p>
<div class="code">
<pre>
mv jakarta-tomcat-4.1.27-LE-jdk14 /usr/local/
</pre>
</div>
<p>The directory where Tomcat is installed is referred to as CATALINA_HOME in the Tomcat documentation. In this case CATALINA_HOME=/usr/local/jakarta-tomcat-4.1.27-LE-jdk14.</p>
<p>I recommend setting up a symbolic link to point to your current Tomcat version. This will save you from having to change your startup and shutdown scripts each time you upgrade Tomcat or set a CATALINA_HOME environment variable. It also allows you to keep several versions of Tomcat on your system and easily switch amongst them. Here is the command I issued from inside /usr/local to create a symbolic link called /usr/local/jakarta-tomcat that points to /usr/local/jakarta-tomcat-4.1.27-LE-jdk14:</p>
<div class="code">
<pre>
ln -s jakarta-tomcat-4.1.27-LE-jdk14 jakarta-tomcat
</pre>
</div>
<p>Change the group and owner of the /usr/local/jakarta-tomcat and /usr/local/jakarta-tomcat-4.1.27-LE-jdk14 directories to tomcat:</p>
<div class="code">
<pre>
chown tomcat.tomcat /usr/local/jakarta-tomcat
chown -R tomcat.tomcat /usr/local/jakarta-tomcat-4.1.27-LE-jdk14
</pre>
</div>
<p>It is not necessary to set the CATALINA_HOME environment variable. Tomcat is smart enough to figure out CATALINA_HOME on its own.</p>
<p>You should now be able to start and stop Tomcat from the CATALINA_HOME/bin directory by typing ./startup.sh and ./shutdown.sh respectively. Test that Tomcat is working by starting it and typing http://localhost:8080 into your browser. You should see the Tomcat welcome page with links to documentation and sample code. Verify Tomcat is working by clicking on some of the examples links.</p>
<h3>Selecting A Connector</h3>
<p>At this point, Apache and Tomcat should be working separately in standalone mode. You can run Tomcat in standalone mode as an alternative to Apache. In fact, in some cases, it is said that Tomcat standalone is faster than serving static content from Apache and dynamic content from Tomcat. However, there are compelling reasons to use Apache as the front end. If you run Tomcat standalone:</p>
<ol>
<li>You will have to run Tomcat as root on port 80. This is a security concern.</li>
<li>You will not be able to use a connector such as mod_jk to load balance amongst several Tomcat instances.</li>
<li>You will not be able to take advantage of Apache features such as cgi and PHP.</li>
<li>You will not be able to take advantage of Apache modules such as mod_rewrite.</li>
<li>You will not be able to isolate virtual hosts in their own Tomcat instances.</li>
</ol>
<p>I think the increased functionality obtained by using Apache on the front end far outweighs the effort required to install and configure a connector. With that said, I selected the tried and true mod_jk connector. It has been around a long while and is very stable. mod_jk2 is the wave of the future, but I'm holding off on that for now. In early 2002 I invested a considerable amount of time on the &quot;wave of the future&quot; connector at that time, mod_webapp, which is now no longer being developed. For that reason, I am being cautious about migrating to mod_jk2.</p>
<h3>Building the mod_jk Connector</h3>
<p>The mod_jk connector is the communication link between Apache and Tomcat. It listens on port 8009 for requests from Apache.</p>
<p>In my experience, it's safest to think of connectors as being version dependent. If you upgrade Tomcat and you have a connector issue, try compiling the connector using the version-specific connector source.</p>
<p>Download the connector source for your version of Tomcat from <a href="http://www.apache.org/dist/jakarta/tomcat-4/source/" target="_blank">http://www.apache.org/dist/jakarta/tomcat-4/source/</a>. I used jakarta-tomcat-connectors-4.1.27-src.tar.gz. The source for all the different connectors (mod_jk, mod_jk2, coyote, etc.) is distributed in this one file.</p>
<p>Unzip the contents of the file into your download directory as follows:</p>
<div class="code">
<pre>
tar xvzf jakarta-tomcat-connectors-4.1.27-src.tar.gz
</pre>
</div>
<p>This will create a folder called jakarta-tomcat-connectors-4.1.27-src. Move this folder to wherever you store source files on your system. I chose /usr/src. Here is the command I issued from inside the download directory:</p>
<div class="code">
<pre>
mv jakarta-tomcat-connectors-4.1.27-src /usr/src/
</pre>
</div>
<p>I refer to the folder where the connector source is installed as CONN_SRC_HOME. In my case CONN_SRC_HOME = /usr/src/jakarta-tomcat-connectors-4.1.27-src.</p>
<p>Run the buildconf script to to create the CONN_SRC_HOME/jk/native/configure file.</p>
<div class="code">
<pre>
CONN_SRC_HOME/jk/native/buildconf.sh
</pre>
</div>
<p>Run the configure script with the path to the apxs file on your system and the options below:</p>
<div class="code">
<pre>
./configure --with-apxs=/usr/sbin/apxs
</pre>
</div>
<p>Build mod_jk with the following command:</p>
<div class="code">
<pre>
make
</pre>
</div>
<p>If all went well, the mod_jk.so file was successfully created. Manually copy it to Apache's shared object files directory:</p>
<div class="code">
<pre>
cp CONN_SRC_HOME/jk/native/apache-2.0/mod_jk.so /etc/httpd/modules
</pre>
</div>
<h2>Configuring Tomcat</h2>
<h3>workers.properties</h3>
<p>The workers.properties file contains information so mod_jk can connect to the Tomcat worker processes.</p>
<p>Create a directory called CATALINA_HOME/conf/jk and place the workers.properties file found in the <a href="#wp">Appendix</a> in this directory.</p>
<h3>server.xml</h3>
<p>The server.xml file contains Tomcat server configuration information. The default CATALINA_HOME/conf/server.xml file that comes with Tomcat contains so much information that I recommend saving it for future reference (e.g. server.xml.bak) and starting from scratch. The default server.xml is great for verifying that Tomcat works in standalone mode and for viewing the examples that come with the application, but I have found it is not the best starting point when you want to integrate Apache with Tomcat. Instead, create a bare bones server.xml file as follows:</p>
<div class="code">
<pre>
&lt;Server port="8005" shutdown="SHUTDOWN" debug="0"&gt;
&lt;Service name="Tomcat-Apache"&gt;
&lt;Connector className="org.apache.ajp.tomcat.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/&gt;
&lt;Engine name="your_engine" debug="0" defaultHost="your_domain.com"&gt;
&lt;Logger className="org.apache.catalina.logger.FileLogger"
prefix="apache_log." suffix=".txt"
timestamp="true"/&gt;
&lt;Host name="your_domain" debug="0" appBase="webapps"
unpackWARs="true"&gt;
&lt;Context path="" docBase="/home/tomcat/your_application"
debug="0" reloadable="true" /&gt;
&lt;/Host&gt;
&lt;/Engine&gt;
&lt;/Service&gt;
&lt;/Server&gt;
</pre>
</div>
Notes:
<ol>
<li>The setup assumes you will put your Tomcat applications in /home/tomcat, not CATALINA_HOME/webapps. This will allow you to easily upgrade Tomcat and back up your Tomcat applications.</li>
<li>If you do keep the default server.xml, make sure you comment out any other connectors besides mod_jk that are listening on port 8009. The default file comes with the Coyote/JK2 connector enabled for the Tomcat-Standalone service. This will conflict with the mod_jk connector in your Tomcat-Apache service. You should comment this connector out. It isn't needed when you connect directly to Tomcat in standalone mode (port 8080), so I'm not sure why this connector is enabled by default.</li>
</ol>
<h2>Configuring Apache</h2>
<h3>httpd.conf</h3>
<p>Apache is configured with directives placed in the Apache configuration file, /etc/httpd/conf/httpd.conf. You will notice that there are three sections labeled in the httpd.conf file supplied by RedHat: (1) Global Environment, (2) Main Server Configuration, and (3) Virtual Hosts.</p>
<p>Add the following to the bottom of the existing LoadModule directives in the Global Environment section:</p>
<div class="code">
<pre>
LoadModule jk_module modules/mod_jk.so
</pre>
</div>
<p>Add the following to the bottom of the existing AddModule directives in the Global Environment section:</p>
<div class="code">
<pre>
AddModule mod_jk.c
</pre>
</div>
<p>Add the following to the bottom of the Main Server Configuration section:</p>
<div class="code">
<pre>
JkWorkersFile &quot;/usr/local/jakarta-tomcat/conf/jk/workers.properties&quot;
JkLogFile &quot;/usr/local/jakarta-tomcat/logs/mod_jk.log&quot;
JkLogLevel info
JkLogStampFormat &quot;[%a %b %d %H:%M:%S %Y]&quot;
</pre>
</div>
<p>The configuration above assumes you created a symbolic link /usr/jakarta-tomcat that points to the directory where your version of Tomcat is installed.</p>
<p>Set up a Virtual Host directive in the Virtual Hosts section of httpd.conf. Below is an example of how to set up the your_domain website to forward all URLs with &quot;servlet&quot; in the path to Tomcat:</p>
<div class="code">
<pre>
NameVirtualHost *:80
&lt;VirtualHost 192.168.1.1&gt;
ServerAdmin webmaster@your_domain
ServerName your_domain
DocumentRoot /home/www/your_domain/html
ErrorLog /home/www/your_domain/logs/error_log
CustomLog /home/www/your_domain/logs/access_log common
JkMount /servlet/* ajp13
&lt;/VirtualHost&gt;
</pre>
</div>
<p>The configuration above assumes that your application's static html files will be served from the /home/www/your_domain/html directory.</p>
<p>You can test your Apache configuration by typing the following:</p>
<div class="code">
<pre>
apachectl configtest
</pre>
</div>
<p>You will receive the response &quot;Syntax OK&quot; if there are no errors in httpd.conf.</p>
<h2>Setting Up your_domain</h2>
<p>your_domain.com does not need to be a domain name with a DNS entry. For testing purposes, you can set up any domain you want in the /etc/hosts file of the machine that you will be using to access your_application.</p>
<p>The example below shows the entry for your_domain when running Apache and Tomcat on a single machine, typical for a development computer.</p>
<div class="code">
<pre>
127.0.0.1 your_domain
</pre>
</div>
<h2>Testing</h2>
<p>We will now create and install a simple Hello World servlet so we can test our setup.</p>
<h3>Hello World Servlet</h3>
<p>Copy the following into a file called HelloWorld.java:</p>
<div class="code">
<pre>
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld
extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType(&quot;text/html&quot;);
PrintWriter out = response.getWriter();
out.println(&quot;Hello World&quot;);
}
}
</pre>
</div>
<p>Compile the source into a class file as follows:</p>
<div class="code">
<pre>
javac -classpath /usr/java/jakarta-tomcat/common/lib/servlet.jar HelloWorld.java
</pre>
</div>
<p>This will create a file called HelloWorld.class.</p>
<h3>Tomcat Application</h3>
<p>Create the following directories and files in /home/tomcat/your_application:</p>
<div class="code">
<pre>
/home/tomcat/your_application/WEB_INF
/home/tomcat/your_application/WEB_INF/classes
/home/tomcat/your_application/WEB_INF/web.xml
</pre>
</div>
<p>The web.xml file is where you map the name of your servlet to a URL pattern so Tomcat can run your servlet when requested. Below is the web.xml file that runs the HelloWorld servlet whenever the URL http://your_domain/servlet/HelloWorld is entered in the browser:</p>
<div class="code">
<pre>
&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"&gt;
&lt;web-app&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt;
&lt;servlet-class&gt;HelloWorld&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt;
&lt;url-pattern&gt;/servlet/HelloWorld&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;/web-app&gt;
</pre>
</div>
<p>Copy the HelloWorld.class file to the /tomcat/home/your_application/WEB-INF/classes directory.</p>
<p>Restart Tomcat as follows:</p>
<div class="code">
<pre>
/CATALINA_HOME/bin/shutdown.sh
/CATALINA_HOME/bin/startup.sh
</pre>
</div>
<p>Restart Apache as follows:</p>
<div class="code">
<pre>
service httpd restart
</pre>
</div>
<p>You should now be able to type http://your_domain/servlet/HelloWorld into your browser and see the always-exciting &quot;Hello World&quot; message.</p>
<h2>Advanced Configuration</h2>
<p>The following steps are not mandatory, but are suggested for a better, tighter Tomcat installation.</p>
<h3>Tomcat Startup Script</h3>
<p>If you want to automatically start Tomcat when your system boots and manage it using the service command as we do Apache, you must create an initialization script.</p>
<p>Create the following Tomcat initialization script as /etc/rc.d/init.d/tomcat</p>
<div class="code">
<pre>
#!/bin/sh
#
# Startup script for Tomcat, the Apache Servlet Engine
#
# chkconfig: 345 80 20
# description: Tomcat is the Apache Servlet Engine
# processname: tomcat
# pidfile: /var/run/tomcat.pid
#
# Mike Millson &lt;mmillson@meritonlinesystems.com&gt;
#
# version 1.02 - Clear work directory on shutdown per John Turner suggestion.
# version 1.01 - Cross between RedHat Tomcat RPM and Chris Bush scripts
# Tomcat name :)
TOMCAT_PROG=tomcat
# if TOMCAT_USER is not set, use tomcat like Apache HTTP server
if [ -z "$TOMCAT_USER" ]; then
TOMCAT_USER="tomcat"
fi
RETVAL=0
# start and stop functions
start() {
echo -n "Starting tomcat: "
chown -R $TOMCAT_USER:$TOMCAT_USER /usr/local/jakarta-tomcat/*
chown -R $TOMCAT_USER:$TOMCAT_USER /home/tomcat/*
su -l $TOMCAT_USER -c '/usr/local/jakarta-tomcat/bin/startup.sh'
RETVAL=$?
echo
[ $RETVAL = 0 ] &amp;&amp; touch /var/lock/subsys/tomcat
return $RETVAL
}
stop() {
echo -n "Stopping tomcat: "
su -l $TOMCAT_USER -c '/usr/local/jakarta-tomcat/bin/shutdown.sh'
RETVAL=$?
Echo
[ $RETVAL = 0 ] &amp;&amp; rm -f /var/lock/subsys/tomcat /var/run/tomcat.pid
rm -rf /usr/local/jakarta-tomcat/work/*
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
# Ugly hack
# We should really make sure tomcat
# is stopped before leaving stop
sleep 2
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $RETVAL
</pre>
</div>
<p>Add the startup script to your system as follows:
</p>
<div class="code">
<pre>
chkconfig --add tomcat
</pre>
</div>
<p>You will be able to start/stop/restart it using the following commands:</p>
<div class="code">
<pre>
service tomcat start
service tomcat stop
service tomcat restart
</pre>
</div>
<p>If you want Tomcat to start automatically when your system boots, you need to add tomcat to your runlevel as follows:</p>
<div class="code">
<pre>
chkconfig --level 5 tomcat on
</pre>
</div>
<p>Runlevel 5 is the X Window System, typical for a development computer. Runlevel 3 is typical for a dedicated web server.</p>
<p>The start order of Apache and Tomcat is very important. Tomcat must be started before you start Apache so Apache can attach itself to the Tomcat processes.</p>
<h3>Development Setup</h3>
<p>During development, you will need access to your tomcat application directory. Add the user account under which you will be doing development to the tomcat group in /etc/group. For example, this is what the tomcat entry might look like in /etc/group if you do development under the <pre>yourname</pre> account:</p>
<div class="code">
<pre>
tomcat:x:502:yourname
</pre>
</div>
<p>Make sure the tomcat group has write permission to /home/tomcat so you can publish files (e.g. using ant) to your Tomcat application in /home/tomcat/your_application. Issue the following command as root:</p>
<div class="code">
<pre>
chmod g+w /home/tomcat
</pre>
</div>
<hr>
<h2><a name="wp">Appendix</a></h2>
<h3>workers.properties</h3>
<div class="code">
<pre>
# workers.properties
#
# This file provides jk derived plugins with the needed information to
# connect to the different tomcat workers. Note that the distributed
# version of this file requires modification before it is usable by a
# plugin.
#
# As a general note, the characters $( and ) are used internally to define
# macros. Do not use them in your own configuration!!!
#
# Whenever you see a set of lines such as:
# x=value
# y=$(x)\something
#
# the final value for y will be value\something
#
# Normaly all you will need to do is un-comment and modify the first three
# properties, i.e. workers.tomcat_home, workers.java_home and ps.
# Most of the configuration is derived from these.
#
# When you are done updating workers.tomcat_home, workers.java_home and ps
# you should have 3 workers configured:
#
# - An ajp12 worker that connects to localhost:8007
# - An ajp13 worker that connects to localhost:8009
# - A jni inprocess worker.
# - A load balancer worker
#
# However by default the plugins will only use the ajp12 worker. To have
# the plugins use other workers you should modify the worker.list property.
#
# OPTIONS ( very important for jni mode )
#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
workers.tomcat_home=/usr/local/jakarta-tomcat
#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
workers.java_home=$(JAVA_HOME)
#
# You should configure your environment slash... ps=\ on NT and / on UNIX
# and maybe something different elsewhere.
#
ps=/
#
#------ ADVANCED MODE ------------------------------------------------
#---------------------------------------------------------------------
#
#------ DEFAULT worket list ------------------------------------------
#---------------------------------------------------------------------
#
# The workers that your plugins should create and work with
#
worker.list=ajp12, ajp13
#
#------ DEFAULT ajp12 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#
#
# Defining a worker named ajp12 and of type ajp12
# Note that the name and the type do not have to match.
#
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.ajp12.lbfactor=1
#
#------ DEFAULT ajp13 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.ajp13.lbfactor=1
#
# Specify the size of the open connection cache.
#worker.ajp13.cachesize
#
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------
#---------------------------------------------------------------------
#
# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
# ----> If a worker dies, the load balancer will check its state
# once in a while. Until then all work is redirected to peer
# workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
#
#------ DEFAULT JNI WORKER DEFINITION---------------------------------
#---------------------------------------------------------------------
#
# Defining a worker named inprocess and of type jni
# Note that the name and the type do not have to match.
#
worker.inprocess.type=jni
#
#------ CLASSPATH DEFINITION -----------------------------------------
#---------------------------------------------------------------------
#
# Additional class path components.
#
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
#
# Setting the command line for tomcat.
# Note: The cmd_line string may not contain spaces.
#
worker.inprocess.cmd_line=start
#
# Not needed, but can be customized.
# worker.inprocess.cmd_line=-config
# worker.inprocess.cmd_line=$(workers.tomcat_home)$(ps)conf$(ps)server.xml
# worker.inprocess.cmd_line=-home
# worker.inprocess.cmd_line=$(workers.tomcat_home)
#
# The JVM that we are about to use
#
# This is for Java2
#
# Windows
# #worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
# IBM JDK1.3
# worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)libjvm.so
# Unix - Sun VM or blackdown
#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so
# RH + JDK1.4
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)server$(ps)libjvm.so
#
# And this is for jdk1.1.X
#
# worker.inprocess.jvm_lib=$(workers.java_home)$(ps)bin$(ps)javai.dll
#
# Setting the place for the stdout and stderr of tomcat
#
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
#
# Setting the tomcat.home Java property
#
# worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)
#
# Java system properties
#
# worker.inprocess.sysprops=java.compiler=NONE
# worker.inprocess.sysprops=myprop=mypropvalue
#
# Additional path components.
#
# worker.inprocess.ld_path=d:$(ps)SQLLIB$(ps)bin
</pre>
</div>
<hr>
<h2>Related Linux Gazette Articles</h2>
<p><a href="http://www.linuxgazette.com/issue69/peda.html" target="_blank">Installing Tomcat on Linux</a> by Allan Peda, August 2001</p>
<hr>
<h2>Bio</h2>
<p>Mike is a Web Systems Engineer with <a href="http://www.meritonlinesystems.com/" target="_blank">Merit Online Systems</a> in Atlanta, GA. His first computer experience came programming BASIC on an IBM PC in 1981. When he isn't wearing his propeller cap, he enjoys spending time with his wife, Debora, and spoiling his Golden Retriever, Belle.</p>
<hr>
&copy; 2003 Merit Online Systems, Inc.
</body>
</html>
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
Mike is a Web Systems Engineer with <a href="http://www.meritonlinesystems.com/" target="_blank">Merit Online Systems</a> in Atlanta, GA. His first computer experience came programming BASIC on an IBM PC in 1981. When he isn't wearing his propeller cap, he enjoys spending time with his wife, Debora, and spoiling his Golden Retriever, Belle.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Mike Millson.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Linux Through an Oscilloscope</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/pramode.html">Pramode C.E</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<html>
<head>
<title>Linux Through an Oscilloscope</title>
</head>
<body>
<h2>Introduction</h2>
<p>
It was some time since I had wired up a few
circuits and watched them on my old 20MHz
Oscilloscope. I thought it might be interesting
to observe how the complex, dynamic nature of
a multitasking operating system influences the
working of timing sensitive code by viewing
signals generated by such programs
on the scope. This article
describes a few experiments which I did, first
with a `normal' 2.4.18 kernel and then with a
kernel patched with `real time extensions'
provided by the RTAI project. The reader is assumed
to have some background in simple kernel programming.
<h2>Experimental setup</h2>
<p>
I converted an old Cyrix CPU based system which was lying
around unused to my `embedded linux' experimentation platform.
The motherboard was taken out of the cabinet - HDD, monitor,
keyboard etc were removed - only the Ethernet card with a boot
ROM remained - together with an ISA protoboard. This machine boots
from a full fledged Linux system situated just a few feet away.
This way, I can conduct hardware experiments without worrying
too much about damaging expensive hardware. I have the option of
booting either a plain 2.4.18 kernel or an RTAI patched one.
<h2>Simple waveform generation</h2>
<p>
Here is a little user space program which, when executed as the superuser,
generates a waveform on the parallel port output pins - I can view this
on the scope.
<pre>
#include &lt;asm/io.h&gt;
#define ON 100000
#define OFF ON*10
delay(unsigned int i)
{
while(i--);
}
main()
{
iopl(3);
while(1) {
outb(0xff, 0x378);
delay(ON);
outb(0x0, 0x378);
delay(OFF);
}
}
</pre>
The working of the program is simple. Parallel port pins 2 to 9 act as output
pins - they can be accessed through an i/o port whose address is 0x378. You write
0xff to 0x378, you are turning on (ie, putting about 5V) on all these pins, you
write 0x0 and your are turning off the voltage on these pins. The program has to be
compiled with the -O2 option and executed as super user (if the outb is to work, the
iopl call, which is concerned with setting some privilege levels, should work. For
iopl to work, you have to be the superuser).
<p>
On my system, I observe a waveform with an on time of about 2.5 to 2.7ms with
my scope set at 1ms/division. The result will
surely vary depending on the speed of your processor.
<h2>Why simple things are not so simple</h2>
<p>
Anybody who has done a basic course in microprocessors will know how
to generate `delays' by writing loops. That's exactly what we have
done here - absolute kids stuff.
<p>
Just being curious, I log on to another console and run the `yes'
command, which generates a continuous stream of the character `y'
on the screen. I watch the scope and see that my nice looking signal
has gone haywire. The ON and OFF periods have been so lengthened that
what I see is mostly a continuos line which keeps on jumping from 0V
to 5V.
<p>
I do another experiment. I `flood ping' (the ping command with the -f
option) the sytem from a faster machine - again, I notice that the signal
on the scope gets wildly disturbed.
<p>
The reason behind this behaviour is not at all difficult to see. My
program is now contesting with another one for CPU cycles. In between
executing the delay loop, control can switch to the other program, thereby
lengthening the delay perceived by the first program. Flood pinging
results in lots of activity within the OS kernel, this too has a
detrimental effect on the timing of my program.
<p>
The solution to the problem is simple - just don't disturb the program
which generates the waveform. Let it have full control of the CPU. Then
the question is why have a complex multitasking OS at all? Let's see.
<p>
I call the program which generates the signal a `realtime' program.
Let's visualize the program as a `task' whose job is to `toggle' the
parallel port pins at specified intervals. If the generated waveform
is used to control a physical appliance like, say, a servo motor (the
rotation of the servo is controlled by the length of the `on period'
of a pulse whose total on+off period is somewhere around 20ms. When the
ON period varies from 1ms to 2ms, the servo rotates by about 180 degree),
variation in pulse length can have dramatic effects. My Futaba S2003
servo swings wildly when it is controlled by a program like the one
above, if it is perturbed by some other process. A real time program has
timing deadlines which it HAS to meet, for correct operation. The
classical solution to designing control applications has been to use
dedicated microcontrollers and digital signal processors. But with PC
hardware becoming so cheap, a very wide range of applications are cropping
up where we require the ability to run programs with
sensitive timing requirements correctly, and, at the same time, also
do things like communicate over the network, visualize data with
graphical interfaces, log data on to secondary storage etc, jobs
where timing deadlines are not an issue, so called `non-realtime' jobs.
<p>
If it is possible to modify the Linux kernel in some way so that
the timing constraints imposed on some tasks (which are created and executed
in some special manner) are always met, even under the prescence of
other `non-realtime' tasks, then we have an ideal situation. We will
see a bit later in this article that not one, but many such solutions
are available.
<h2>Sleeping Vs Looping</h2>
<p>
Besides the fact that the timing of the program depends a lot on
other activities going on in the system, we are burning up CPU
cycles by executing a tight loop (also, on a complex microprocessor
like the Pentium, it is difficult to compute delays by counting
instructions). Why not let the program sleep?
<p>
By using functions like `nanosleep', we instruct the Operating System
to put our process to sleep, to be woken up at a specified time. But,
here again, there is a possibility that our process does not wake up
and execute at the desired time because the Operating System was too
busy executing some action in kernel mode (say, processing TCP/IP packets,
or doing disk I/O) or another process got scheduled just before the
kernel woke up our process.
<h2>Doing it in kernel space</h2>
<p>
What if we implement our signal generation code as a kernel space
module?
<pre>
#include &lt;linux/module.h&gt;
#include &lt;linux/fs.h&gt;
#include &lt;linux/param.h&gt;
#include &lt;asm/uaccess.h&gt;
#include &lt;asm/io.h&gt;
static char *name = "foo";
static int major;
#define ON 100000
#define OFF ON*10
void delay(unsigned int i)
{
while(i--);
}
static int
foo_read(struct file* filp, char *buf, size_t count, loff_t *f_pos)
{
while(1) {
outb(0xff, 0x378);
delay(ON);
outb(0x0, 0x378);
delay(OFF);
}
return 0;
}
static struct file_operations fops = {
read: foo_read,
};
int init_module(void)
{
major = register_chrdev(0, name, &amp;fops);
printk("Registered, got major = %d\n", major);
return 0;
}
void cleanup_module(void)
{
printk("Cleaning up...\n");
unregister_chrdev(major, name);
}
</pre>
Executing an infinte loop in the kernel has disastrous consequences - as far
as user processes are concerned. No user process would be able to execute
until control comes out of kernel mode (this is the way the OS is designed).
What we would like to have is a situation where realtime as well as nonrealtime
processes coexist.
<p>
Although user space processes now can't disturb our program, it is still
possible to generate interrupts on the network card by flood pinging. As
interrupts are serviced even when kernel code is executing, the waveform
displayed on the scope starts jumping around as usual.
<p>
It is possible to go to sleep within the kernel - this prevents the system
from getting locked up - but then it does not solve our problem of peaceful
coexistence of realtime as well as non realtime code.
<h2>Enter Real Time Linux</h2>
<p>
What if we slide in a `nano kernel' between Linux and our hardware? This
kernel would be in control of both Linux as well as a set of `real time
tasks'. Linux will be treated as a very low priority task which will be
executed only when no other higher priority `real time' tasks are
executing. The control of interrupts would be in the hands of this
specialized kernel - requests by Linux to disable interrupts will be
treated in such a way that interrupts don't really get disabled - only
Linux won't be able to see those interrupts - the real time tasks will
still be able to execute their interrupt handlers without too much delay.
<p>
This novel concept, introduced by Dr.Victor Yodaiken, lead to the birth of
RTLinux. Many other universities and research instituitions have attempted
their own implementations - one of the most promising (and completely
non proprietary) being RTAI, developed by researchers at Dipartimento
di Ingegneria Aerospaziale - Politecnico di Milano (DIAPM).
<h2>Getting and Installing RTAI</h2>
<p>
RTAI can be obtained from <a href="http://www.aero.polimi.it/~rtai">here</a>. There are two
major components:
<ul>
<li>An HAL (hardware abstraction layer) patch to the Linux kernel.
<li>A set of modules for performing scheduling, interprocess communication,
synchronization etc.
</ul>
Before patching and installing the new kernel, the instructions given in
the README.INSTALL file should be read carefully (especially those regarding
certain kernel configuration options. "Set version information on
loadable modules" should be disabled. You are most probably using a uni
processor system - so don't forget to disable SMP support (maybe, disable
power management also)). Once you reboot with the new kernel, you can
compile the main RTAI modules and examples. Before running any programs,
you will need to load the three modules - rtai.o, rtai_fifos.o and
rtai_sched.o.
<h2>Generating waveforms with RTAI tasks</h2>
<p>
Let's look at an RTAI program which creates a waveform on the parallel
port output pins:
<pre>
#include &lt;linux/module.h&gt;
#include &lt;rtai.h&gt;
#include &lt;rtai_sched.h&gt;
#define LPT1_BASE 0x378
#define STACK_SIZE 4096
#define TIMERTICKS 1000000 /* 1 milli second */
static RT_TASK my_task;
static void fun(int t)
{
unsigned char c = 0x0;
while(1) {
outb(c, LPT1_BASE);
c = ~c;
rt_task_wait_period();
}
}
int init_module(void)
{
RTIME tick_period, now;
rt_set_periodic_mode();
rt_task_init(&amp;my_task, fun, 0, STACK_SIZE, 0, 0, 0);
tick_period = start_rt_timer(nano2count(TIMERTICKS));
now = rt_get_time();
rt_task_make_periodic(&amp;my_task, now + tick_period, 2*tick_period);
return 0;
}
void cleanup_module(void)
{
stop_rt_timer();
rt_busy_sleep(10000000);
rt_task_delete(&amp;my_task);
}
</pre>
<p>
Let's look at the general idea before we examine specific
details. First, we need a `task' to do anything useful. The `task'
is simply a C function. The structure of most of our tasks would
be something like this - perform some action, sleep for some time,
perform some action again, repeat. One way to sleep is to call
`rt_task_wait_period' - the question is how long do we sleep? We
sleep for a certain fixed `period', which will be a multiple of
a base `tick'. The system 8254 timer can be programmed to generate
interrupts at a rate of say 1KHz (ie, 1000 times a second). The RTAI
scheduler takes scheduling decisions at each tick - if we set the
period of our task to be `2 ticks' and if the interval between each
tick is 1ms, then the scheduler will wake up our task after 2ms.
<p>
We start with `init_module'. We first configure the timer as a
`periodic timer' (another mode is available). The `rt_task_init'
function accepts the address of an object of type RT_TASK, the
address of our function and a stack size, besides some other
values. Some kind of `initialization' is performed and information
is stored in the object of type RT_TASK which can be later used
for identifying this particular task.
<p>
Our TICK_PERIOD is 1000000 nano seconds (1 milli second). The
nano2count function converts this time into internal `count
units'. The timer is started with a tick period equal to 1ms
(which is what the `start_rt_timer' function does).
<p>
What remains is to start our task and set its period (remeber,
the period is used by rt_task_wait_period to set the time at
which the task is to be awakened). We set the period to 2 ticks
and instruct the scheduler to start it at the next tick itself.
<p>
The body of our task is very simple - it simply writes a value
to the parallel port output pins, complements the variable which
stores that value and waits for the next period (which will be
2ms). After waking up, it performs the same sequence. Again and
again and again... The end result is we observe a waveform on
the scope whose on time is 2ms and off time also is 2ms.
<p>
I observed the waveform first on an unloaded system. I then
resorted to flood pinging the system. The waveform on the
scope remained steady. The promise that RTAI gives us is that
it will always run Linux as a very low priority task - Linux will
execute only when no real time tasks are to be serviced. A
real time task waking up will result in control getting transferred
to it immediately (of course, there are delays involved in
preempting whatever is being done now, activating the real time
scheduler and transferring control back to the task which just
woke up - these delays also need not be constant). That is
why we are able to observe a fairly steady signal even under
load.
<p>
Here is a code segment which demonstrates the use of a
function - `rt_sleep':
<pre>
#define LPT1_BASE 0x378
#define STACK_SIZE 4096
#define TIMERTICKS 1000000 /* 1 milli second */
#define ON_TIME 3000000 /* 3 milli seconds */
#define OFF_TIME 1000000 /* 1 milli second */
static RT_TASK my_task;
RTIME on_time, off_time;
static void fun(int t)
{
while(1) {
outb(0xff, LPT1_BASE);
rt_sleep(on_time);
outb(0x0, LPT1_BASE);
rt_sleep(off_time);
}
}
int init_module(void)
{
RTIME tick_period, now;
rt_set_periodic_mode();
rt_task_init(&amp;my_task, fun, 0, STACK_SIZE, 0, 0, 0);
tick_period = start_rt_timer(nano2count(TIMERTICKS));
on_time = nano2count(ON_TIME);
off_time = nano2count(OFF_TIME);
now = rt_get_time();
rt_task_make_periodic(&amp;my_task, now + tick_period, 2*tick_period);
return 0;
}
</pre>
The basic tick period is 1ms. Our on and off times are
integral multiples of this period (3ms and 1ms each).
An invocation of `rt_sleep(on_time)' will put the task
to sleep - it gets woken up after 3 tick periods. It does
some action and again goes to sleep for one tick period.
<h2>Using FIFO's to communicate between real time
and non real time tasks</h2>
<p>
It may be required to transmit data from a user space
non realtime program to an RTAI task (and back). This
is very easily done with the use of fifo's. For example,
an RTAI task may be generating a PWM (pulse width modulated)
signal and you may have to control the width from user
space.
The RTAI
installation creates several device files under /dev/
going by the name rtf0, rtf1 etc. The user program
identifies each fifo by its name while the RTAI task
does it with numbers 0, 1, 2 etc.
<pre>
#include &lt;linux/module.h&gt;
#include &lt;linux/errno.h&gt;
#include &lt;rtai.h&gt;
#include &lt;rtai_sched.h&gt;
#include &lt;rtai_fifos.h&gt;
#define STACK_SIZE 4096
#define COMMAND_FIFO 0
#define FIFO_SIZE 1024
int fifo_handler(unsigned int fifo)
{
char buf[100];
int r;
r = rtf_get(COMMAND_FIFO, buf, sizeof(buf)-1);
if (r &lt;= 0) return r;
rt_printk("handler called for fifo %d, get = %d\n", fifo, r);
buf[r] = 0;
rt_printk("data = %s\n", buf);
return 0;
}
int init_module(void)
{
/* Create fifo, set handler */
rtf_create(COMMAND_FIFO, FIFO_SIZE);
rtf_create_handler(COMMAND_FIFO, fifo_handler);
return 0;
}
void cleanup_module(void)
{
printk("cleaning up...\n");
}
</pre>
In `init_module', we create a fifo and set `fifo_handler' as
a function to be invoked when somebody writes to the fifo. The
`rtf_get' function reads data from the fifo. After compiling and
loading the module, if we do something like:
<pre>
echo hello &gt; /dev/rtf0
</pre>
we will see the handler getting invoked and reading data from the
fifo.
<h2>Further Reading</h2>
<p>
If you are interested in general real time programming
issues, you should start with the excellent <a href="http://people.mech.kuleuven.ac.be/~bruyninc/rthowto/">Real Time and Embedded Guide</a> written
by <b>Herman Bruyninckx</b>. RTAI programming is explained in
detail in the <b>RTAI manual</b> and <b>RTAI programming guide</b>
available for download from the project home page.
<h2>Conclusion</h2>
<p>
An Operating System which provides support for deterministic execution
of tasks with stringent timing requirements is just one part of
the realtime system design landscape. After playing with RTAI for a few
days, I realized that this (realtime design) is something which can't
be done as a hobby by a novice like me - you have to invest a lot of
time, effort and patience in understanding your system thoroughly (hardware
as well as software) and using the tools well. But then, that shouldn't
stop you from experimenting and having a little bit of fun!
</body>
</html>
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am an instructor working for IC Software in Kerala, India. I would have loved
becoming an organic chemist, but I do the second best thing possible, which is
play with Linux and teach programming!
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Pramode C.E.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Software Engineering</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/rondina.html">Gustavo Rondina</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<H2>Abstract</H2>
The so called software crisis can generate several and serious consequences to computing and IT in the future, mainly on
issues that refers to the free software. This article intends to quickly introduce the reader to some of the problems which
can contribute with this crisis and maybe encouraje users and programmers to adopt the necessary measures to avoid it.
<H2>1. Introduction</H2>
<P>Nowdays the hardware devces are becaming more powerfull and are expanding its capacities and features every day.
But those devices are useless if there are not software that are able to explore those features as much as possible,
thus it is appropriate to say that the software development process, called software engineering, is one of the most
important areas of computing.</P>
<P>To catch up with the rapidly technological advance at the hardware industry, the programmers and software engineers,
whose job is develop the core of the softwares, must keep the idea that it is necessary not just create and develop
a product that works, but a product that implements good software engineering practices, assuring that no computer or
programmer's efforts will be wasted.</P>
<H2>2. Linux, free software and software engineering</H2>
<P>You might be asking yourselves: where does Linux fit on that scenario ? Well, the free software movement can answer
that question. The Linux OS have been one great and successfull project that helped to spread the free software principles,
concepts and philosophy.</P>
<P>In the last decade we can note a significant increasing if we look at the number of Linux users. Users that have
adopted the system at home, at work or even at school. Many of these users had joined to Linux due its source code
availability: any person over the world can get the source, read it, make modifications, copy and redistribute this
code. Most of those users have had already a previous knowledge of computer programming and OSes based on Unix.</P>
<P>However there were users that have adopted Linux just to fill their curiosity, to know and explore a new and different
system and have an idea of how a Unix-like system works; some of them didn't like or didn't get used to Linux and droped
it soon, but most of them have adopted Linux as a way of life and a philosophy.</P>
<P>This new Linux's enthusiastics wanted to learn as much as possible about the system, so, with the source code open
to anyone and built under C and assembler programming languages, they have decided that learning how to programm
would be a good way to start understanting Linux. And this was what happened, a lot of new users have started to programm
and hack codes volunteerly, giving their time and efforts to projects aimming to contribute with the open source community.
Today there are a lot of successfull projects which show to the world that the free software development philosofy really
works.</P>
<H2>3. So, where is the problem ?</H2>
<P>These new programmers had learned the programming languages that are necessary to software development and had put in
practice their knowledge developing software that fits their needs, producing the expected results. However, there are
no warranty that those products are totally realiable and the ideas have been implemented at the best way possible.</P>
<P>This happens due the lack of knowledge at the software engineering area. There are many projects that are developed
by people who don't have much experience at the software development and production, so there are a lack of concepts and
theory to these programmers. To programm isn't just about launching a text editor and start to hack some code and then
compile it, even getting the expected results.</P>
<P>To know the syntax of a programming language doesn't mean to know how to programm and develop good and quality software.
The software development is complex process, since the first algorithm design until the debugging and testing phase. A
programmer who doesn't have the conecpts os language paradigms and their differences (i.e. oriented object programming and
procedural programming); who doesn't know deeply the several types os data structures, such as stacks, queues, lists and
binary trees; or the programmer who doesn't know how a hardware achitecture does arithmetic operations and how their
logical circuits works, can develop a software that, even working, have not been implemented at it must have.</P>
<P>A software that isn't implemented at the right way may cause wast of hardware resources such as processing time of the CPU
or how the memory is managed; waste the programmer's efforts as well, once he can solve trivial problems using a complex and
expensive methods, since he doesn't know an easier way; waste also the features of the language by using it poorly or even
incorrectly. All this things increases the final cost of the project.</P>
<H2>4. How to solve this problem ?</H2>
<P>This kind of problem is know as "the software crisis". Each person who starts to hack and produce new codes without
the right knowledges of good software engineering contributes to the increasement of this crisis.</P>
<P>In the future that can be very dangerous, mainly to the free software community since, in some cases, there is no one in
charge of monitoring and moderating the development phase of the project, once that several projects are developed by
volunteers programmers.</P>
<P>The solution of this problem may be clear: the users and the programmers must study deeply software engineering and
modeling, algorithms analisys, software testing and each paradigms and languages' details. The developers should read more
scientific papers and tecnical books about software engineering. Many programmers just want their software producting the
expected results, but if a programmer wants to be a successfull developer and have high quality and reliable software, it
is essential to know all the theorycal bases that is hide under the practice. Theorycal knowledge is the base to everything.
</P>
<P>A lot of programs and projects starts in the paper, it is not a shame to make some rough draft of the algorithm. Some
times an idea can achieve a high abstraction level which can be more understantable trought a draw. To test the software
before it get into the consumer hands is also important, and there are many different tecnics and issues related to
software testing. To know several programming languages and languages paradigms give the programmer more flexibility
while choosing the best way to solve a problem, since each language has its own limitations. Even the source code
identation is important to increase the readability of the sources. All this things are related with the good software
engineering and improves the quality of your product.</P>
<H2>5. Conclusion</H2>
<P>This article does not intend to criticize neither to discourage hobbyst programmers, but encourage them to know
further and deeply the issues related with the software development process. Only that way we will have good and realiable
software at the next generations.</P>
<P>I hope you have enjoyed this article. Please forgive my really poor english, this is not my native language. Maybe on
a future article it will be improved a bit. Comments, questions and suggestions are always welcome. Feel free to email me
at <a href="mailto:gustavorondina@uol.com.br">gustavorondina at uol dot com dot br</a></P>
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am Gustavo Rondina, and I am from Brazil. I am a graduation
student taking the 4th semester of Computer Science course,
but I have been in touch with computers and Linux for about 5
years.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Gustavo Rondina.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">An introduction to MultiTail</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/vanheusden.html">Folkert van Heusden</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<HTML>
<HEAD>
<TITLE>An introduction to MultiTail</TITLE>
<!-- Written by Folkert van Heusden - www.vanheusden.com -->
</HEAD>
<BODY>
<H2>An introduction to MultiTail</H2>
<H3>Introduction</H3>
<H4>What is MultiTail?</H4>
MultiTail lets you view one or multiple files like the original tail
program. The difference is that it creates multiple windows on your
console (with ncurses). Merging of 2 or even more logfiles is possible. It
can also use colors while displaying the logfiles (through regular
expressions), for faster recognition of what is important and what not. It
can also filter lines (again with regular expressions). It has interactive
menus for editing given regular expressions and deleting and adding
windows. One can also have windows with the output of shell scripts and
other software. When viewing the output of external software, MultiTail
can mimic the functionality of tools like 'watch' and such.
<H4>Why this text?</H4>
When you start multitail without any parameters, it clears the screen and
shows a couple of keys you can press together with a short explanation what
they do. You can then press any of those keys or 'x', 'q' or 'CTRL'+'C' to
exit the program. If you like to know what commandlineparameters can be
given, start multitail with the '-h' parameter.<BR>
The "help" that is given with the methods described above might not be
sufficient, that's why this text was written. If there is still anything
not clear after reading this, do not hesitate to contact me at the
following e-mail address: folkert@vanheusden.com<BR>
<H3>The Basics</H3>
The most trivial use of MultiTail is as follows:
<PRE>
multitail [-i] file
</PRE>
This shows the file 'file' in your terminal-window. At the bottom, a line
(the statusline) is displayed with the name of the file, its size and the
date/time of when the last time the file changed. You can make this status-
line static (not updated) with the '-d' commandline parameter. With '-D' no
statusline is displayed at all.<BR>
You only need to specify the '-i' when the filename starts with a dash ('-').
Something a little more complex is this:
<PRE>
multitail [-i] file1 [-i] file2
</PRE>
This splits your terminalwindow in two windows. In each window, one file is
displayed. Both windows have a statusline giving info. The window with
'file1' is displayed above the window with 'file2'. Instead of above each
other, you can also have them displayed side by side. For that, you can
enter the parameter '-s' on the commandline or press the 'v' key while the
program is running.<BR>
<H3>Scrolling</H3>
Of course you can scroll in the shown files. For that, press the 'b' key.
When you're viewing multiple files, you'll first get a fileselector. Then a
window is displayed with the buffered contents of the selected file
(=window). You can then scroll with the cursorkeys and the page-up and
pagedown key. Press 'x' or 'q' to exit this window. You cannot scroll the
whole file, only the last 100 lines. To reset this limit to something
bigger (or smaller), press the 'm' key. You will then be asked to enter a
new value, e.g. 1000. This parameter can also be set from the commandline
with the '-m <B>value</B>' parameter. With '-m' you set the limit for the next
file, with '-M <B>value</B>' you'll set this parameter for all following files
on the commandline. When you press the 'm'-key, the current buffer is
cleared. So it is also a replacement for pressing the enter key a few times
when using 'tail -f' to view a file.<BR>
<H3>Merging Files</H3>
Then there's the '-I' commandline parameter. It is the same as '-i', only
'-I' merges two or more files together. For example:
<PRE>
multitail [-i] file1 -I file2
</PRE>
a reallife example:
<PRE>
multitail /var/log/apache/access.log -I /var/log/apache/error.log
</PRE>
These two examples will merge the output of the given files into one
window. This can be usefull with, for example, the files given in the
second example: with this example you see what happend just before an
error appeared in the Apache errorlog.
<H3>Viewing Output of External Programs</H3>
As I mentioned in the foreword, one can not only view files with
MultiTail, also the output of other programs (scripts/executables/etc.)
can be put inside one or more windows. To make this happen, you need to
use the '-l' switch. For example:
<PRE>
multitail -l ls
</PRE>
another example:
<PRE>
multitail -l "ping localhost"
</PRE>
As you can see, you need to add doublequotes around the command when it
needs parameters, otherwhise MultiTail would not be able to recognize
what parameters are intended for the selected program or for MultiTail
itself.<BR>
You might have tried the example with the ls-command. You then saw that
MultiTail automatically closes the window when the external command has
finished. There are a few options you can use to control this behaviour.
For example the '-z' parameter: when given, the window is just closed,
the screen redrawed and MultiTail goes on without the popup window
telling you that the program ended.<BR>
Another option is: '-r <B>interval</B>': this will cause the command to be
run every 'interval' seconds. Instead of '-r <B>interval</B>' also the '-R <B>interval</B>'
option is available: when fed to MultiTail, it makes it run the next
command with an interval of 'interval' seconds displaying only the
difference with the previous run of the command! So if you run MultiTail
like this:
<PRE>
multitail -R 3 -l "netstat -p tcp"
</PRE>
you will see state-changes for every TCP-connection: new connections
and connections getting closed.<BR>
As with '-I <B>file</B>', '-L <B>command</B>' also merges the output of the
external command to the previous file or command. Yes: output of
commands can be safely merged with logfiles. Multiple commands, multiple
logfiles, most things you can think of are possible.<BR>
<H3>Colors</H3>
When you have been watching logfiles scrolling by, it can get a little
though after a while to still recognize what is important and what not.
Because of that, MultiTail has the ability to display logfiles in color.
When you give the '-c' parameter, the next given file or command is
showed in color. It decides what color to use by looking at the whole
log-line. If you want it to only use at the programname causing that
logline (when monitoring syslog logfiles for example), you can use the
'-cs' switch. The last option is the '-cS <B>colorscheme</B>' switch. As
parameter it needs the name of a colorscheme. The colorschemes are read
from multitail.conf. In multitail.conf you set by entering regular
expressions what color to use for what "patterns". By default, MultiTail
looks for multitail.conf in the current directory and in the /etc directory.
With the '-z' parameter you can explicitly define what file it should use.<BR>
An example:
<PRE>
colorscheme:postfix
cs_re:yellow:status=sent
cs_re:magenta:queue active
</PRE>
The first line names the current colorscheme. The 'cs_re'-lines define
combinations of regular expressions and a color. With the first 'cs_re'-
line you define that if MultiTail encounters the string 'status=sent' in
a logline that it should print it in the color yellow. The next line
defines that the string 'queue active' must be printed in magenta.
Another example, a little more complex:
<PRE>
colorscheme:syslog
cs_re:green:\[|\]
cs_re:blue:^... .. ..:..:..
</PRE>
The first 'cs_re'-line sets all occurences of '[' or ']' to green and
all lines starting with a date in the format 'Mon DD HH:MM:SS' in blue.
For more details on regular expressions: o'Reilly has <A HREF="http://www.oreillynet.com/search/index.ncsp?sp-q=regular+expressions&sp-k=all&search=search" TARGET="_new">few books</A> on this topic.<BR>
One last thing on colors: if you use '-C' (uppercase 'C') instead of '-c', <I>all</I> following
files will use the parameters you specify at that time, unless you override them with a new
'-c<FONT SIZE=-1>x</FONT>' or '-C<FONT SIZE=-1>x</FONT>' parameter.
<H3>Filtering using regular expressions</H3>
For filtering MultiTail uses regular expressions. To keep things simple, it uses them the
exact same way as 'grep' does: '-e' says: a regular expression follows and '-v' says: invert
it.<BR>
Examples:
<PRE>
multitail -e "gnu-pop3d" /var/log/messages
multitail -v -e "ssh" -v -e "gnu-pop3d" -e "localhost" /var/log/messages
</PRE>
The first example shows only lines from /var/log/messages which have the string "gnu-pop3d" somewhere in them. The second example only shows lines which do <I>not</I> have the string "ssh" and <I>not</I> have the string "gnu-pop3d" and <I>DO HAVE</I> the string "localhost" in them.
<H3>Miscellaneous Options</H3>
There are a few other options not fitting elsewhere, these are:
<TABLE BORDER=1 WIDTH=75%>
<TR><TD WIDTH=75>-f</TD><TD>This makes MultiTail follow the file. In case the original file
gets renamed and a new file is created with the original filename, MultiTail will start
watching the file with the original filename (the one you entered).</TD></TR>
<TR><TD WIDTH=75>-u <B>seconds</B></TD><TD>When using MultiTail over a slow link (a modem connection or
maybe even over HAM) you might want to have a little less frequent updates. With this parameter you
set how frequently MultiTail updates the screen. The default is immediately.</TD></TR>
<TR><TD WIDTH=75>-H <B>interval</B></TD><TD>If you have a connection to some host (on which
you're using MultiTail) which gets automatically disconnected when nothing happens for a
while, you can use '-H'. When used, MultiTail moves the cursor around the screen generating
traffic, keeping your line up.</TD></TR>
<TR><TD WIDTH=75>-V</TD><TD>In case you're wondering what version of MultiTail you're using,
you can start it with the '-V' option. It'll then display its version and exit. You can
also press the 'i' key while it is running.</TD></TR>
</TABLE>
<H3>Is that all?</H3>
<I>Not everything</I> was covered in this manual. For a complete list of options and keys
you can press while MultiTail runs, have a look at the man-page, the output of the '-h'
commandline parameter and the help when you press 'h'-key while the program runs.<BR>
And let's not forget the sourcecode!
<BR>
<BR>
<BR>
<BR>
<FONT SIZE=-1>The latest version of MultiTail can always be found here: <A HREF="http://www.vanheusden.com/multitail/">http://www.vanheusden.com/multitail/</A></FONT>
</BODY>
</HTML>
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Folkert van Heusden.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Mexico is conquered by FLOSS</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/boue.html">Felipe Barousse Boue</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<CENTER>
<TABLE WIDTH=580 BORDER=1 CELLPADDING=5 CELLSPACING=2 STYLE="page-break-before: always">
<TR BGCOLOR="#7788aa">
<TD>
<P ALIGN=CENTER><FONT SIZE=4><FONT COLOR="#ffffff">G A C E T A &nbsp;
D E &nbsp; L I N U X</FONT></FONT> <FONT SIZE=2>...<I>Making
Linux just a little more fun!</I></FONT>
</P>
</TD>
</TR>
<TR>
<TD>
<P ALIGN=CENTER><STRONG><FONT SIZE=5><FONT COLOR="#800000">Veracruz,
M&eacute;xico is conquered by FLOSS</FONT></FONT></STRONG><BR><STRONG>By:
<A HREF="mailto:editor@gacetadelinux.com">La Gaceta de Linux</A></STRONG>
</P>
</TD>
</TR>
</TABLE>
</CENTER>
<P ALIGN=RIGHT>&nbsp;</P>
<P>During the past week (17-19 Sept, 2003) an international crowd of free/libre and Open
Source Software experts gathered at the Mexican port of Veracruz
during the celebration of the third edition of the <A HREF="http://congreso.gulev.org.mx/">GULEV
Linux Congress</A>. (GULEV = Veracruz LUG)</P>
<P>Names such as Bruce Momjian from the <A HREF="http://www.postgresql.org/">PostgreSQL</A>
project, Miguel de Icaza from <A HREF="http://www.ximian.com/">Novell/Ximian</A>,
Felipe Barousse from <A HREF="http://www.piensa.com/">Piensa
Technologies</A>, Bdale Garbee from <A HREF="http://www.debian.org/">Debian</A>,
Gunnar Wolf a <A HREF="http://www.gwolf.cx/"><SPAN LANG="en-US">leading
Mexican software engineer</SPAN></A> and contributor to Debian and
many many more <A HREF="http://congreso.gulev.org.mx/invitado.php">top
stars</A> of the worldwide FLOSS community gave conferences,
tutorials and personal chat sessions during the three day event in
Veracruz.</P>
<P>Weather was warn,<SPAN LANG="en-US"> attendees </SPAN>were excited
and you could even look in everyone's faces the joy of being able to
share experiences, ideas and learn more about the new libre
technologies.
</P>
<P>I could tell that most of the<SPAN LANG="en-US"> attendees </SPAN>were
actually students and young programmers -in the twenties or early
thirties-<SPAN LANG="en-US"> although </SPAN>you could see in each
session a couple of business people and even some... lets say;
seniors, interested in Linux when they stood up to ask a question or
express a comment or idea. I was glad to see this mix in the various
audiences.</P>
<P>In this third year of the GULEV Congress, the scenario was nothing
less than the <A HREF="http://www.wtcveracruz.com.mx/Page_English.htm">World
Trade Center in Veracruz, M&eacute;xico</A>... What other place could
Linux, free software and open source ask for to host an event like
this ? The place was indeed superb.</P>
<P>The first year the Congress was held at a University's premises,
the second year at the ball rooms in a hotel within the city. The
main organizers of the event, Miguel Angel L&oacute;pez and Lucy
Guzm&aacute;n Mijangos made a great job in making this year's show
run smoothly, making everyone feel satisfied with the Congress'
programme and returning home with an enhanced sensation that the
FLOSS movement in Mexico is really growing up, getting mature and
ready to compete with any other technologies out there. &ldquo;We
need to improve a lot more...&rdquo; said Miguel Angel, I couldn't
agree more, there is always room to improve an event like this, but I
can also tell that we have come a long way since the first time, two
years ago.</P>
<P>Some of the anecdotes about conferences and topics I have and that
you could hear people commenting while on the hallways just after a
conference and while waiting for the next are:</P>
<P>Bruce Momjian, who came with his son Mathew gave a session about
Mastering PostgreSQL administration. The room was full and everyone
attentive to all tips, hints and recipes that Bruce had to say. On a
fun side of the Congress, I had a chance to briefly chat with Mathew
who said he really likes &ldquo;...<SPAN LANG="en-US"> traveling </SPAN>with
dad and liked<SPAN LANG="en-US"> Mexican </SPAN>food a lot... yummy!&rdquo;
he said.</P>
<P>The second Bruce's conference was a bit more in the visionary side
of PostgreSQL and what to<SPAN LANG="en-US"> expecting </SPAN>the
next versions.</P>
<P>Larry Wall was expected to be in Veracruz with all of us,
unfortunately he got ill and couldn't make it. We hope that by the
time you are reading this, he is well up again.</P>
<P>Miguel de Icaza spoke about Mono and how it<SPAN LANG="en-US">
accelerated </SPAN>the productivity for software<SPAN LANG="en-US">
development </SPAN>in Linux. He is clearly concerned in providing the
most powerful tools and<SPAN LANG="en-US"> technologies </SPAN>to
Linux programmers as to keep and enhance their competitiveness while
developing software.</P>
<P>Bdale Garbee on the other hand spoke about where is Debian
standing now; meanwhile the well known technology research engineer
Francisco de Urquijo Niembro gave a lecture regarding the current
status of Mexico in relation to the ongoing digital revolution. &ldquo;Open
and Free technologies are the<SPAN LANG="en-US"> future..... we </SPAN>will
have open specifications and standards in cars, home building, and
everything else....&rdquo; he said.</P>
<P>Felipe Barousse conference was about the Zope Corporation's Zope
framework and how he has been using it to develop powerful business
applications which are already being used by large companies; he
concluded: &ldquo;Zope is very <SPAN LANG="en-US">inexpensive</SPAN>,
great,powerful, easy to use and extremely scalable.... in short an
ideal platform for web based business applications.&rdquo;</P>
<P>Federico Mena Quintero participation was about the concepts and
ideas used for programming applications in GTK+ where Drag and Drop
features are required.
</P>
<P>During his conference, Fernando Romo talked about the concepts of
constructing application's logic within the data base itself rather
than leaving all logic at the application level. A nice collection of
suggestions and experiences where discussed in Fernando's conference.</P>
<P>On another hand of topics, Gunnar Wolf talked about Object
Oriented Perl.</P>
<P>There were many more topics addressed in Veracruz, actually 53
conferences took place with themes ranging from building clusters, to
designing and installing a WiFi networks, to programming in Perl and
Python.
</P>
<P>More than 500 confirmed persons went to Veracruz just to
participate in this great FLOSS show in Mexico. A great touch to the
event was that there was free WiFi internet connectivity in all
conference rooms and during all conference times.</P>
<P>At the end of the event, the following day, there was a small trip
to the prehispanic ruins site called the &ldquo;Tajin&rdquo;, about a
4 hours drive from Veracruz.<SPAN LANG="en-US"> Although </SPAN>I was
supposed to get a phone call and or note advising me of the meeting
point and time to leave, somehow I never got that note so I missed
the excursion which I really regret since I bet it for sure was fun
to be in the bus with all my fellow speakers..... maybe next time,
now I have a great excuse for going next year.
</P>
<P>I really expect next year's congress to be even better and to see
it grow in many more aspects as it has been doing during these<SPAN LANG="en-US">
three editions. </SPAN>I can't wait to my 2004 trip to Veracruz.</P>
<P>In the mean time what we can say is that the port of Veracruz,
M&eacute;xico was indeed conquered by the penguins and by FLOSS
enthusiasts just as it was taken by the conquistadores many centuries
ago.</P>
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Felipe Barousse Boue.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
</BODY></HTML>