10863 lines
417 KiB
HTML
10863 lines
417 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
||
<HTML>
|
||
<HEAD>
|
||
<TITLE> Linux Gazette Front Page </TITLE>
|
||
<META NAME="robots" CONTENT="noindex, nofollow">
|
||
</HEAD>
|
||
|
||
<BODY BGCOLOR="#EEE1CC" TEXT="#000000" LINK="#0000FF" VLINK="#0020F0"
|
||
ALINK="#FF0000" >
|
||
<center><H2>
|
||
<IMG SRC="../gx/banner.gif"
|
||
ALT="Linux Gazette... making Linux just a little more fun!">
|
||
</H2>
|
||
|
||
<H5>Copyright © 1996-97 Specialized Systems Consultants, Inc.
|
||
<A HREF="mailto:linux@ssc.com"><I>linux@ssc.com</I></A></H5>
|
||
</center>
|
||
|
||
<P> <HR> <P>
|
||
<!--==================================================================-->
|
||
<center>
|
||
<H1>Welcome to Linux Gazette!<img src="../gx/tm.gif" alt="(tm)"></H1>
|
||
</center>
|
||
<P>
|
||
Sponsored by:
|
||
<center>
|
||
<H1><A HREF="http://www.infomagic.com/"><img src=../gx/infologo.gif alt="InfoMagic"></A></H1>
|
||
</center>
|
||
<P>
|
||
Our sponsors make financial contributions toward the costs of
|
||
publishing <I>Linux Gazette</I>. If you would like to become a sponsor
|
||
of <I>LG</I>, e-mail us at <A
|
||
HREF="mailto:sponsor@ssc.com">sponsor@ssc.com</A>.
|
||
|
||
<center>
|
||
<H1><IMG SRC="../gx/banner.gif" ALT="Linux Gazette"></H1>
|
||
|
||
<H5>Copyright © 1997 Specialized Systems Consultants, Inc. <BR>
|
||
For information regarding copying and distribution of this material see the
|
||
<A HREF="../copying.html">Copying License</A>.</H5>
|
||
</center>
|
||
|
||
<P> <HR> <P>
|
||
<!--=================================================================-->
|
||
<center><H1>Table of Contents <BR> May 1997 Issue #17</H1></center>
|
||
|
||
<P> <HR> <P>
|
||
<table><tr>
|
||
<td rowspan=3>
|
||
<UL>
|
||
<LI><A HREF="../index.html">The Front Page</A>
|
||
<LI><A HREF="./lg_mail17.html">The MailBag</A>
|
||
<ul>
|
||
<li><a HREF="./lg_mail17.html#help">Help Wanted -- Article Ideas</a>
|
||
<li><a HREF="./lg_mail17.html#gen">General Mail</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_tips17.html">More 2 Cent Tips</A>
|
||
<ul>
|
||
<li><a HREF="./lg_tips17.html#Xlimitation">X Limitation to 8 Bit Color</a>
|
||
<li><a HREF="./lg_tips17.html#blank">Screen Blanking Under X</a>
|
||
<li><a HREF="./lg_tips17.html#double">Doubleclick Internet User
|
||
Profiles</a>
|
||
<li><a HREF="./lg_tips17.html#mount">How to Mount/Unmount For Users</a>
|
||
<li><a HREF="./lg_tips17.html#zprotocol">File Transfer With the z Protocol
|
||
<li><a HREF="./lg_tips17.html#commands">Using ftp Commands in Shellscript</a>
|
||
<li><a HREF="./lg_tips17.html#asciiart">ASCII-Artwork Translator</a>
|
||
<li><a HREF="./lg_tips17.html#graphic">Including Graphics in Linuxdoc SGML</a>
|
||
<li><a HREF="./lg_tips17.html#xconfig">X Configuration Issues</a>
|
||
<li><a HREF="./lg_tips17.html#display">Multiple X Displays</a>
|
||
<li><a HREF="./lg_tips17.html#colordp">Color Depths with X</a>
|
||
<li><a HREF="./lg_tips17.html#boot">Figuring Out the Boot Process</a>
|
||
<li><a HREF="./lg_tips17.html#ftp">ftping Home</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_bytes17.html">News Bytes</A>
|
||
<ul>
|
||
<li><a HREF="./lg_bytes17.html#general">News in General</a>
|
||
<li><a HREF="./lg_bytes17.html#software">Software Announcements</a>
|
||
</ul>
|
||
<LI><A HREF="./answer.html">The Answer Guy</A>, by James T. Dennis
|
||
<ul>
|
||
<li><a HREF="./answer.html#fs">fs's</a>
|
||
<li><a HREF="./answer.html#unix">Linux/Unix Emulator</a>
|
||
<li><a HREF="./answer.html#vidX">Using X With 2 Monitors and 2 Video
|
||
Cards</a>
|
||
<li><a HREF="./answer.html#host">Virtual Hosting</a>
|
||
<li><a HREF="./answer.html#response">Response from Weitse Venema</a>
|
||
<li><a HREF="./answer.html#file">Automatic File Transfer</a>
|
||
<li><a HREF="./answer.html#ftpd">Installing wu-ftpd on a Linux Box</a>
|
||
<li><a HREF="./answer.html#boot">Trying to Boot a Laptop</a>
|
||
<li><a HREF="./answer.html#zmode">zmodem Reply</a>
|
||
<li><a HREF="./answer.html#start">StartX</a>
|
||
<li><a HREF="./answer.html#imap">IMAP and Linux</a>
|
||
<li><a HREF="./answer.html#imap2">IMAP Again</a>
|
||
<li><a HREF="./answer.html#uucp">UUCP Questions</a>
|
||
<li><a HREF="./answer.html#flops">Using MS-DOS Floppies</a>
|
||
<li><a HREF="./answer.html#inetd">inetd Questions</a>
|
||
<li><a HREF="./answer.html#modem">Navas Modem FAQ</a>
|
||
<li><a HREF="./answer.html#modem2">Setting Up a Modem</a>
|
||
<li><a HREF="./answer.html#userid">User Identification</a>
|
||
<li><a HREF="./answer.html#duplic">Duplicating a Linux Installed HD</a>
|
||
</ul>
|
||
<LI><A HREF="./clueless.html">Clueless at the Prompt: A Column for
|
||
New Users</A>, by Mike List
|
||
<LI><A HREF="./dotfile.html">The Dotfile Generator</A>, by Jesper Pedersen
|
||
<LI><A HREF="./gm.html">Graphics Muse</A>, by Michael J. Hammel
|
||
<LI><A HREF="./kandinsky.html">Kandinsky</A>, by Jeff Hohensee
|
||
<LI><A HREF="./expo.html">Linux Expo 1997</A>, by Jon "maddog" Hall
|
||
<LI><A HREF="./raid.html">Linux Raid Functions</A>, by Jay Painter
|
||
<LI><A HREF="./enl.html">New Release Reviews</A>, by Larry Ayers
|
||
<ul>
|
||
<LI><A HREF="./enl.html">A Fresh Beginning: The Enlightment Window Manager</A>
|
||
<LI><A HREF="./cthugha.html">Visual Music: The Linux Port of Cthugha</A>
|
||
<LI><A HREF="./updates_17.html">Updates & Corrections</A>
|
||
</ul>
|
||
<LI><A HREF="./slackware.html">Slackware Linux Installation & Getting Started</A>, by
|
||
Sean Dreilinger
|
||
<LI><A HREF="./texas.html">Texas Linux Installation Project</A>, by
|
||
Kendall G. Clark
|
||
<LI><A HREF="./lg_backpage17.html">The Back Page</A>
|
||
<ul>
|
||
<li><a HREF="./lg_backpage17.html#authors">About This Month's Authors</a>
|
||
<li><a HREF="./lg_backpage17.html#notlinux">Not Linux</a>
|
||
</ul>
|
||
</UL>
|
||
|
||
</td>
|
||
<td align=center>
|
||
<A HREF="gm.html">
|
||
<IMG SRC="../gx/hammel/banner-3.gif" border=0 alt="">
|
||
</a>
|
||
</td>
|
||
</tr><tr>
|
||
<td align=center>
|
||
<A HREF="answer.html">
|
||
<img src="../gx/wizard2.gif" border=0 alt="">
|
||
</a>
|
||
<p>
|
||
<A HREF="answer.html"><i>The Answer Guy</i></a> <BR>
|
||
</td>
|
||
</tr><tr>
|
||
<td align=center>
|
||
<!--<A HREF="wkndmech.html"> -->
|
||
<img src="../gx/fisk/attndant.gif" border=0 alt="">
|
||
<!--</a> -->
|
||
<p>
|
||
<!--<A HREF="wkndmech.html"><i>Weekend Mechanic</i></a> <BR> -->
|
||
Weekend Mechanic will return next month.
|
||
</td>
|
||
</tr></table>
|
||
|
||
<P> <HR><P>
|
||
<!--=============================================================-->
|
||
<A HREF="./issue17.txt">TWDT 1 (text)</A><BR>
|
||
<A HREF="./issue17.html">TWDT 2 (HTML)</A><BR>
|
||
are files containing the entire issue: one in text format, one in HTML.
|
||
They are provided
|
||
strictly as a way to save the contents as one file for later printing in
|
||
the format of your choice;
|
||
there is no guarantee of working links in the HTML version.
|
||
|
||
<!--=============================================================-->
|
||
<P> <HR><P>
|
||
Got any <I>great</I> ideas for improvements! Send your
|
||
<A HREF="mailto:gazette@ssc.com">comments, criticisms, suggestions
|
||
and ideas.</A>
|
||
|
||
<P><hr><p>
|
||
This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
|
||
|
||
|
||
<P> <HR> <P>
|
||
<!--==================================================================-->
|
||
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
|
||
<HR>
|
||
<center>
|
||
<table width="100%" cellpadding=7><tr><td>
|
||
<H2><a NAME="mail"><IMG SRC="../gx/mailbox.gif" ALIGN=MIDDLE ALT=" ">
|
||
The Mailbag!</a> </H2>
|
||
Write the Gazette at <A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
|
||
</td><td>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_mail17.html#help">Help Wanted -- Article Ideas</a>
|
||
<li><a HREF="./lg_mail17.html#gen">General Mail</a>
|
||
</ul>
|
||
</td></tr></table>
|
||
</center>
|
||
|
||
<a name="help"></a>
|
||
<p><hr><p>
|
||
<!-- =================================================================== -->
|
||
<center><H3> Help Wanted -- Article Ideas </H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<center><IMG ALT=" " SRC="./gx/iwantyou.gif"></center>
|
||
<P>
|
||
The last couple of months have been rather light on articles. It's been
|
||
helpful to have the new chapters for <I>Linux Installation and Getting Starting</I>
|
||
to include. So all you budding authors and Linux users out there,
|
||
send me your stuff. Don't depend on our regular authors to fill the gap. We
|
||
want to hear about all the neat tips and tricks you've found, as well as
|
||
all the neat applications your are writing or working with. --Editor
|
||
<P> <P> <P> <P>
|
||
|
||
<P> <HR> <P>
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Sat Apr 19 07:29:14 1997<br>
|
||
Subject: <b>Searching for Information On Newsgroups</b><br>
|
||
From: Roman, <a href="mailto:Roman@pussycat.ping.de">Roman@pussycat.ping.de</a><br>
|
||
|
||
<p>Hi folks!
|
||
|
||
<p>I'm installing a very small news- and email system at my local
|
||
university (peolpe there are studying arts, so there's no one to help me
|
||
with this). I set up one computer with Linux 2.0.29 which is permanently
|
||
connected to the 'internet' via ethernet. Then I want to connect a
|
||
second PC which is installed in the hallway via nullmodem-cable for all
|
||
the students to write and receive eMail. But the problem now is, that
|
||
the provider (another part of the university) doesn't give us access to
|
||
the newsgroups, so I want to set up at least some local newsgroups on
|
||
this Linux-station.
|
||
|
||
<p>But I just can't seem to find any documentation explaining how to set up
|
||
local newsgroups. smtpd and nntpd are running, but the manpages won't
|
||
tell anything about how to set up ng's (forgive me if I'm just too blind
|
||
or stupid to find the obvious source of information).
|
||
|
||
<p>So I don't want to bother you explaining me how to accomplish this task,
|
||
but perhaps someone can at least tell me where to find the desired
|
||
information.
|
||
|
||
<p>Best regards,
|
||
Roman.
|
||
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Thu Apr 24 11:44:40 1997 <br>
|
||
Subject: <b>VGA_16 Server</b><br>
|
||
From: Javier Viscain
|
||
|
||
<p> Congratulations for the aim and contents of the Gazette.
|
||
Here is an issue I've never seen addressed: the VGA_16
|
||
server maintains two monitors (the second monochrome with an
|
||
Hercules card) but what only works is the mouse movement, which
|
||
moves out of left and right to the other monitor, and console
|
||
switching. No window on the monochrome gets focus. Things that
|
||
moreless appear on the monochrome but don't work:
|
||
<ul>
|
||
|
||
<li> Xeyes: both eyes are displayed, but the inner dots
|
||
appear as moving diagonal lines out of the eyes.
|
||
<li> Xterm: an useless box appears.
|
||
Xterm with exec: say "xterm -display xxx:0.1 -exec top &"
|
||
appears as an xterm box with the letters from "top" without any
|
||
order, in and out from the xterm box.
|
||
<li> Xload: the "load" and letters appear out of the box.
|
||
</ul>
|
||
|
||
<p> I think that the hardware absolute addressing is the
|
||
normal VGA one (0A0000 to 0AFFFF) and 64K for the Hercules
|
||
(0B0000 to 0BFFFF), which is correct.
|
||
In adition, this server and the mono server are very
|
||
buggy when with only the Hercules.
|
||
<p> Any easy solution, or is it that this configuration has not
|
||
been debugged?
|
||
|
||
<p>
|
||
TIA, Javier Vizcaino, Madrid, Spain.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Sun 6 Apr 1997 11:54:42 -0400<br>
|
||
Subject: <b>Initilation Files</b><br>
|
||
From Karl Easterly <a
|
||
href="mailto:bigtexan@mindspring.com">bigtexan@mindspring.com</a><br>
|
||
|
||
As an article Idea, I think an overview of the major boot scripts would =
|
||
be helpful. The overview could include an objective view of the =
|
||
locations, functions, and nifty "tips and tricks" or such. Also, links =
|
||
to how-toos for each script would future simplify the learning curve for =
|
||
new users.
|
||
|
||
<p>Another idea would be to do a chronological installations and =
|
||
customization series of articles. Granted, hardware diversity might be =
|
||
a problem and could possibly be subverted by starting the series as =
|
||
though a working installation of Linux has already been installed. It =
|
||
would proceed as a rough idea like this.
|
||
<ol>
|
||
<li>Booting customization and kernel rebuilding.
|
||
<li>Xwin customization, to include the type of activities one =
|
||
would do in Win95 desktop setup.
|
||
<li>Getting dialup connectivity to work.
|
||
<li>Getting network connectivity to work.
|
||
</ol>
|
||
<p>These are just stabs at a scheme, the actual order would have to be =
|
||
hammered out before the series started, but in general, would be helpful =
|
||
to have a step by step issue oriented series of articles concerning the =
|
||
setup and customization of any linux installation.
|
||
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Sat, 1 Mar 1997 15:39:10 -0500<br>
|
||
Subject: <b>Ideas for Beginners</b><br>
|
||
From: stephen jarvis <a href="mailto:106363.2642@compuserve.com">106363.2642@compuserve.com</a>
|
||
|
||
|
||
<p>Hello
|
||
<p> I am 'the' absolute beginner.I have had a copy of Linux Slackware
|
||
and a copy of "Linux configuration and installation " by P Volkerding et al
|
||
for about two weeks.Prior to this I had dabbled at dos and wondered(?) at
|
||
windows.But when I heard about Linux in a magazine it occured to me that it
|
||
might be fun to have a go.And indeed it has been.
|
||
<p> The only problem I have had is with regard to the man pages. In
|
||
general they are technical to a degree that while appropriate for those who
|
||
can follow the argument from end to end,are pretty debilitating for the
|
||
newbie like me.Indeed I don't always get to the end.
|
||
<p> Perseverence will no doubt pay off and I have expanded my
|
||
collection of books already,to take advantage of the possibility of
|
||
learning something about programming on Linux.But then I have always had
|
||
the kind of curiousity that,while not enough to kill the cat,is enough to
|
||
keep me in the book shop.The point I think is that the man pages themselves
|
||
are a bit of a barrier to the wider useage of Linux.
|
||
<p> No doubt others would say the detail and technical clout of this
|
||
source of information is needed for those who want to make serious use of
|
||
Linux.But not everyone who wants to escape from the soporific influence of
|
||
Microsoft is that demanding or that knowledgeable.I think someone needs to
|
||
pitch things at the introductory level.In the realms of 'this will get it
|
||
going'and 'try this out'.Merely a more chatty approach would help remove
|
||
the shiney armour of incomprehensibilty some pages deploy.
|
||
<p> If this sounds a little unfair to the many people who have compiled
|
||
,man pages it is most definitley not meant to be.There is a need for
|
||
accurate and complete information especially as Linux is a cooperative
|
||
venture and everyone needs to have a common root of information.The
|
||
question is how can the benefits of Linux be made widely known to people
|
||
outside the existing network.What will grab their attention and take the
|
||
gleam off Windows 95?Something more open to a wider audience perhaps.
|
||
<p> This does not have to be completely bland and overly simple just in
|
||
the range of every day usage.An approach that does not assume that everyone
|
||
reading knows the meaning of every term on the page.People need an
|
||
introduction to the language of Linux in the way that you might learn
|
||
French or English.Start with very basic things and build up in stages.Don't
|
||
launch straight into 'How To Compile Your Kernal '.Ok thats important ,but
|
||
I am sure most people still think a kernal is what you find inside a nut.I
|
||
hope you are getting the general idea.
|
||
<p> What us new people need is probably a collection of basic texts
|
||
each about the length of a several page magazine article.Hopefully they
|
||
would cover the things that a hardend Linux user would be embarrassed to
|
||
ask about.'The kernal for beginners'.'Great now I can ask what it really
|
||
is'.If this undertaking was started then I am sure that the end product of
|
||
a few months could be published as a small book.Maybe you could publish
|
||
it.I think there is a potential market.Many magazines recently covered the
|
||
subject of Linux.That's how I got the bug.
|
||
<p> Now it's true there are books already that cover Linux but there
|
||
are not many on line man pages or magazine articles that give the beginner
|
||
the feeling that they can actually get their system up and running
|
||
easily.So if you really want to publish articles for absolute beginners
|
||
bear in mind the kind of language that is used.
|
||
|
||
<p> Regards
|
||
Steve Jarvis
|
||
|
||
<p>ps.. here's some ideas ' What is the kernal','The basic commands to get
|
||
around bash','What are disk partitions and why bother',' To Umsdos or not.
|
||
That's the question','Midnight Commander-an introduction','This is the
|
||
easiest editor anybody ever used(insert your choice)','A glossary of
|
||
general terms you'll find on a man page','These books are a good
|
||
read(assorted titles)'.'How to get around an info text with less than 20
|
||
pages of instructions','Why the idea of a free and open o/s matters','X is
|
||
not a horror film'.
|
||
|
||
<p>Maybe these are a bit daft but they'd get my attention.They are the sort of
|
||
things I'd like to know about.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: 04 Apr 97 19:02:21 EST<br>
|
||
Subject: <b>Technical Support</b><br>
|
||
From: Dani Fricker <a href="mailto:101550.3160@CompuServe.COM">101550.3160@CompuServe.COM</a>
|
||
|
||
<p>first i wanna say thanx for the lj! great work and fun not even for linuxers!
|
||
i need your help. for some reasons i have to identify a user on my webserver by
|
||
his/her
|
||
ip-address. fact is that users logon comes from different physical machines.
|
||
that means
|
||
that i have to assign something like a virtual ip-address to a users log name.
|
||
something
|
||
like a reversal masquerading.
|
||
my ip-gateway connects my inner lan over two token ring network cards
|
||
(sorry, not my idea!) with the internet (lan <-> tr0 <-> tr1 <-> internet). the
|
||
masquerading forward roule of ipfwadm gives me the possibility to indicate a
|
||
source and
|
||
a destination address.
|
||
do you see a possibility for an 'address assignment' between the two interfaces?
|
||
if you
|
||
do please let me know.
|
||
|
||
<p>
|
||
dani fricker<br>
|
||
programmer<br>
|
||
zurich-switzerland
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Mon, 07 Apr 1997 03:01:17 -0500<br>
|
||
Subject:<b>HELP with Man Pages</b>
|
||
From: "Mauricio Naranjo N." <a href="mailto:davasgut@col2.telecom.com.co">davasgut@col2.telecom.com.co</a><br>
|
||
|
||
<p>Well, I have installed the linux toolkit / october 1996 and I have not
|
||
been able to install the man pages for commonly used commands like cat,
|
||
ls, and so on; instead I have installed the man pages for packages like,
|
||
fvwm, midnight commander, ....
|
||
<p> So, I installed man2.tgz, man3.tgz, manpgs.tgz, but I still have not
|
||
been able to get installed the whole support for man;
|
||
Can you tell me please, what's the matter????
|
||
|
||
Any kind of help would be great appreciated, and excuses for ignorance
|
||
but I am new at this OS (finally I found a true one)
|
||
<p>
|
||
Mao
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Mon, 7 Apr 1997 15:43:21 -0400 (EDT)<br>
|
||
Subject: <b>Port Mouse</b><br>
|
||
From: Jose, <a href="mailto:notDefined@novagate.com">notDefined@novagate.com</a><br>
|
||
|
||
<p>Hi,
|
||
Maybe you can help me with this. (I hope)
|
||
I switched motherboards, from a zeos pentium 90 that used a serial mouse to a
|
||
asus p/i-p55tvp4 motherboard that uses a port mouse.
|
||
And now I can't get x-windows to run.
|
||
Any ideas?
|
||
|
||
<p>
|
||
Jose
|
||
|
||
|
||
<a name="gen"></a>
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
<center><H3> General Mail </H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Tue, 01 Apr 1997 04:26:04 -0600<br>
|
||
Subject: <b>Linux</b><br>
|
||
From: Tred Riggs <a href="mailto:tred@oak.sfasu.edu">tred@oak.sfasu.edu</a>
|
||
|
||
<p>I am a college student attending Stephen F. Austin State University. I
|
||
work in a Geographic Information Systems Laboratory (GIS) and we have
|
||
been just using AIX machines. Howerver we do have a full blown linux pc
|
||
and it is great. {Since then I stripped DOS off my PC and made me a
|
||
full blown linux box, which works wonderful. We were considering to
|
||
upgrade to all linux PC's in out lab because they were cheaper and
|
||
faster than the AIX boxes, but we ran into a problem. The Software we
|
||
need to run to make our GIS maps is not supported by ESRI, so we gave
|
||
them a call. This is what they told us:
|
||
|
||
<p>"Linux will not be a supported platform. They told me that product
|
||
ports are user driven and there is not enough users wanting this OS."
|
||
|
||
<p>I could not figure out how they could even say this when all you have to
|
||
do is get on the web and see millions of people using linux. So here is
|
||
what I want to happen. I need linux users to E-mail ESRI at
|
||
buspartners@esri.com and tell them that you use linux and that there are
|
||
many more people using linux too. ESRI needs to get there head out of
|
||
Microsofts world and see what is going on in the real world.
|
||
|
||
<p>Thanks for your time Linux Gazette,
|
||
|
||
<p>Tred Riggs
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Thu, 3 Apr 97 22:40:23 BST<br>
|
||
Subject:<b>http://www.ssc.com/lg/index.html</b><br>
|
||
From: Duncan Simpson <a href="mailto:dps@duncan.telstar.net">dps@duncan.telstar.net</a><br>
|
||
|
||
|
||
<p>Given Micro$oft's tag line of "Yet another Web server powered by NT" maybe we should
|
||
collect a list of people doing this sort of stuff on Linux. I can add 3 items myself
|
||
|
||
<a href="http://mail.telstar.net">http://mail.telstar.net</a> is powered by Linux
|
||
The telstar mail service described there is also powered by the same linux box
|
||
Astra has switch from NT to Linux for its radius server. (NT was just too expensive
|
||
and no better than Linux (Un*x)---the price diffrernece was *1000s* of pounds, each
|
||
about 1.5 $ US).
|
||
|
||
Both astra (and telstar.net) DNS servers are linux.
|
||
|
||
<p>If the stats show that Linux is more popular for comercial web servers than NT, this would
|
||
be something nice to be able to point out...
|
||
|
||
<p>Duncan (-:
|
||
<p>P.S. Any bets when Truetype fonts can be used for proper typesetiing. At present they
|
||
lack litagures (fl and various other items that are tradionally rendered as single
|
||
characters)?
|
||
<p>P.P.S. The use of the present tense (switch) is apt because the change is happening
|
||
now. (Despite a bug that is now not being exercised due to an attempt to eradicate it
|
||
mail.telstar.net is more reliable than any of various NT machines at handling mail).
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Fri, 04 Apr 1997 15:57:12 -0600<br>
|
||
Subject: <b>Re: How to ftp Back Home</b><br>
|
||
From: James Stansell <a href="mailto:james.stansell@wcom.com">james.stansell@wcom.com</a><br>
|
||
|
||
<p>The ifconfig command works, and may be the most authoritative on the
|
||
subject (except I believe the PPP log also contains your current IP),
|
||
but the ifconfig command returns a ton more information than I want.
|
||
|
||
<p>So I ask my machine at work who I am:
|
||
|
||
<pre>who am i
|
||
stansell ttyp6 Apr 4 15:51 (206.125.79.118)
|
||
</pre>
|
||
<p>I've inserted your example IP address where my actual address
|
||
showed up. If the DNS at work does happen to know a name for my
|
||
address, then it shows up instead of the IP.
|
||
|
||
<p>
|
||
--james
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Thu, 10 Apr 1997 17:08:38 -0500<br>
|
||
Subject: <b>Re:GV article</b><br>
|
||
From: Larry Ayers <a href="mailto:ayers@vax2.rainis.net">ayers@vax2.rainis.net</a><br>
|
||
To: Geoffrey Leach <a href="mailto:geoffrey@iname.com">geoffrey@iname.com</a><br>
|
||
|
||
Sorry the URL didn't work for you; I recently got an email
|
||
message from Helmut Geyer, the maintainer of the Debian GV
|
||
version and he included a URL for a new GV home-page:
|
||
|
||
<a href="http://wwwthep.physik.uni-mainz.de/~plass/gv/">http://wwwthep.physik.uni-mainz.de/~plass/gv/</a>
|
||
|
||
|
||
<p> The Debian version is in the /text section of the /i386 binary
|
||
directory of any Debian mirror. Shouldn't be too hard to find.
|
||
|
||
<p>Good luck!
|
||
|
||
<p> Larry Ayers
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in Linux Gazette Issue 17, May 1997</center>
|
||
<!--====================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
||
PAGE ]"></A>
|
||
<A HREF="./lg_tips17.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P>
|
||
<h5>This page written and maintained by the Assistant Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
||
Copyright © 1997 Specialized Systems Consultants, Inc. </H5>
|
||
<P>
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>
|
||
"</H4>
|
||
<P> <hr> <P>
|
||
|
||
<!-- QUICK TIPS SECTION ================================================== -->
|
||
<center>
|
||
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.gif">
|
||
More 2¢ Tips!</A></H1> <BR>
|
||
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">
|
||
gazette@ssc.com
|
||
</A></center>
|
||
|
||
<p><hr><p>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_tips17.html#Xlimitation">X Limitation to 8 Bit Color</a>
|
||
<li><a HREF="./lg_tips17.html#blank">Screen Blanking Under X</a>
|
||
<li><a HREF="./lg_tips17.html#double">Doubleclick Internet User
|
||
Profiles</a>
|
||
<li><a HREF="./lg_tips17.html#mount">How to Mount/Unmount For Users</a>
|
||
<li><a HREF="./lg_tips17.html#zprotocol">File Transfer With the z Protocol
|
||
<li><a HREF="./lg_tips17.html#commands">Using ftp Commands in Shellscript</a>
|
||
<li><a HREF="./lg_tips17.html#asciiart">ASCII-Artwork Translator</a>
|
||
<li><a HREF="./lg_tips17.html#graphic">Including Graphics in Linuxdoc SGML</a>
|
||
<li><a HREF="./lg_tips17.html#xconfig">X Configuration Issues</a>
|
||
<li><a HREF="./lg_tips17.html#display">Multiple X Displays</a>
|
||
<li><a HREF="./lg_tips17.html#colordp">Color Depths with X</a>
|
||
<li><a HREF="./lg_tips17.html#boot">Figuring Out the Boot Process</a>
|
||
<li><a HREF="./lg_tips17.html#ftp">ftping Home</a>
|
||
</ul>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="Xlimitation"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
X Limitation to 8 Bit Color
|
||
</H3>
|
||
<P>
|
||
From: Gary Masters <a href="mailto:="mailto:gmasters@devcg.denver.co.us">gmasters@devcg.denver.co.us</a>
|
||
|
||
<p>I read your question in Linux Gazette regarding an X limitation to 8 bit
|
||
color when the system has more than 14 megs of RAM.
|
||
|
||
Where did you find that information? I ask because my system has 24 megs
|
||
of RAM, and I run 16 bit color all the time.
|
||
|
||
One difference between our systems is that I am using a Diamond Stealth 64
|
||
video card.
|
||
|
||
<p>The place I tell X to run in 16 bit mode is in the file
|
||
/usr/X11R6/bin/startx. There is a line in this file that begins with
|
||
<tt>serverargs</tt>. I get 16 bit mode by giving "-bpp 16" as an argument in
|
||
this line (e.g. serverargs="-bpp 16").
|
||
|
||
<p>One problem I did have was that the OpenLook Window Manager (olwm) did not
|
||
like 16 bpp mode. I solved this by switching to the OpenLook Virtual
|
||
Window Manager (olvwm)[1]. I also had success using the Tab and FV Window
|
||
Managers (twm & fvwm) in 16 bpp mode.
|
||
|
||
|
||
<p>Coming from a SunOS background, I'm used to OpenLook.
|
||
|
||
|
||
<p>Gary Masters
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="blank"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Screen Blanking Under X
|
||
</H3>
|
||
<P>
|
||
From: Gary Masters <a
|
||
href="mailto:gmasters@devcg.denver.co.us">gmasters@devcg.denver.co.us</a>
|
||
|
||
<p>I read your question in the Linux Gazette regarding unwanted screen
|
||
blanking under X after upgrading to a newer distribution of Linux. I had
|
||
the same frustration. Apparently the X servers included in the Xfree86
|
||
version distributed with current Linux distributions has screen blanking
|
||
compiled as a default behavior.
|
||
|
||
<p>This behavior can be controlled with the -s option to the server. Look in
|
||
the startx script for a line that begins with serverargs and add "-s 0".
|
||
This will disable the X screen blank.
|
||
|
||
|
||
<P>
|
||
Gary Masters
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="double"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Doubleclick Internet User Profiles
|
||
</H3>
|
||
<P>
|
||
From: Kragen Javier Sittler <a href="mailto:kragen@pobox.com">kragen@pobox.com</a>
|
||
|
||
<p>Check out the description of what doubleclick.net does at
|
||
<a href="http://www.doubleclick.net/frames/adinfo/dartset.htm">http://www.doubleclick.net/frames/adinfo/dartset.htm</a>
|
||
|
||
<p>Then decide whether you want to be added to their database of Internet
|
||
user profiles. If not, you can use the script below; I run it in my
|
||
<pre>/etc/rc.d/rc.inet1</pre>. It prevents any DoubleClick banners from being
|
||
displayed, prevents any cookies from being set, and prevents DoubleClick
|
||
from collecting any data on you.
|
||
|
||
<p>It also does the same thing with linkexchange.com, because I find their
|
||
constant banners and requests for cookies annoying. If you'd prefer,
|
||
you can take out the linkexchange lines.
|
||
|
||
<p>However, this will also keep you from receiving *any* information from
|
||
doubleclick or linkexchange directly... so you can't visit their web
|
||
sites either.
|
||
|
||
<p>On my machine, I put the script in <pre>/etc/rc.d/rc.doubleclick</pre> and run
|
||
it from <pre>/etc/rc.d/rc.inet1</pre> at boot time, so I'm always protected from
|
||
DoubleClick.
|
||
|
||
<pre>
|
||
# Script begins below:
|
||
|
||
#!/bin/sh
|
||
# By Kragen Sitaker, 21 April 1997.
|
||
|
||
# Prevent any packets from reaching doubleclick.net
|
||
/sbin/route add -net 199.95.207.0 netmask 255.255.255.0 lo
|
||
/sbin/route add -net 199.95.208.0 netmask 255.255.255.0 lo
|
||
|
||
# And ad.linkexchange.com too!
|
||
/sbin/route add -net 204.71.189.0 netmask 255.255.255.0 lo
|
||
</pre>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="mount"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
How to Mount/Unmount For Users
|
||
</H3>
|
||
<P>
|
||
From: Kidong Lee <a href="mailto:kidong@shinbiro.com">kidong@shinbiro.com</a>
|
||
|
||
|
||
<p>When I mount/umount file, I have to login as root.
|
||
It's not convenient for me & other users.
|
||
but, I found the solution that user who is not root can do mount/umount
|
||
in mount man page.
|
||
|
||
<p>Take a look at /etc/fstab.
|
||
<pre>
|
||
# <device> <mountpoint> <filesystemtype> <options> <dump>
|
||
<fsckorder>
|
||
/dev/hdb /cdrom iso9660 ro,user 0 0
|
||
</pre>
|
||
<p>Note "user" in options field.
|
||
In options field, if you add "user", users can do mount/umount.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="zprotocol"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
File Transfer With the z Protocol
|
||
</H3>
|
||
<P>
|
||
From: Gregor Gerstmann, <a href="mailto:gerstman@tfh-berlin.de">gerstman@tfh-berlin.de</a>
|
||
|
||
<p>Regarding Linux Gazette issue16, April 1997, I have some remarks
|
||
regarding the article on file transfer with the z protocol:
|
||
'I type sz <filename> things go along fine, until about 40K
|
||
then I get a couple of different error messages....'
|
||
We have an internal modem with a transfer rate of 2880 cps on
|
||
the telephone line. My son has an account at a Berlin university
|
||
with a limited capacity of 5MB. We found the same error but not
|
||
limited to a special file size! During the night hours, between 1
|
||
and 5h local time, when telephone costs are lowest, we sometimes
|
||
transfered files up to 100KB without errors!
|
||
To avoid any errors at all, I limited the packages to 20 * 1024
|
||
= 20480 bytes, if a CRC occurs, transfer begins once more but with-
|
||
out timeout error, because the parcels are small. I use two proce-
|
||
dures: the first, Chop, generates another procedure that chops the
|
||
file to be transfered with the help of dd into packages and regu-
|
||
lates the transfer and removing of transfered packages. At home we
|
||
concatenate the packages again with cat ... ... > ... and everything
|
||
is ok. The last step could be done by a procedure too.
|
||
Of course, it is rather simple software, but it works until we
|
||
will use ISDN.
|
||
<p>
|
||
<pre>
|
||
first parameter - number of bytes
|
||
second - begin of output names, e.g. p1
|
||
third - name of file to be chopped
|
||
#!/bin/bash
|
||
echo "* Begin of procedure Chop *"
|
||
date
|
||
# rm alte Datei
|
||
if test -e /usr/TFH/EXAMPLE
|
||
then rm /usr/TFH/EXAMPLE
|
||
fi
|
||
# Test auf Parameter
|
||
if test $# -lt 3
|
||
then echo "Incorrect number of parameters !
|
||
Please repeat procedure call !"
|
||
echo "* End of procedure Chop (error) *"
|
||
exit 1
|
||
else echo "Call was ok"
|
||
fi
|
||
#
|
||
BY=$1
|
||
ANZZ=$[(($BY / 20480) + 1)]
|
||
quantity=$ANZZ
|
||
i=1
|
||
recs=0
|
||
while test "$i" -lt "$quantity"
|
||
do
|
||
echo dd if=$3 of=$2_$i bs=1024 skip=$recs count=20 >> /usr/TFH/EXAMPLE
|
||
echo sz $2_$i >> /usr/TFH/EXAMPLE
|
||
echo rm $2_$i >> /usr/TFH/EXAMPLE
|
||
i="`expr $i + 1`"
|
||
recs="`expr $recs + 20`"
|
||
done
|
||
echo dd if=$3 of=$2_$i bs=1024 skip=$recs >> /usr/TFH/EXAMPLE
|
||
echo sz $2_$i >> /usr/TFH/EXAMPLE
|
||
echo rm $2_$i >> /usr/TFH/EXAMPLE
|
||
#
|
||
echo "* End of procedure Chop (ok) *"
|
||
#
|
||
</pre>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="commands"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Using ftp Commands in Shellscript
|
||
</H3>
|
||
<P>
|
||
From: Walter Harms, <a href="mailto:Walter.Harms@Informatik.Uni-Oldenburg.DE">Walter.Harms@Informatik.Uni-Oldenburg.DE</a><br>
|
||
|
||
|
||
Using FTP as a shell-command with ftplib<br>
|
||
<p>Working on several different networks means that you always
|
||
need to copy your data from net to net. Most ppl use rcp but like most SysOps
|
||
I found this to be a terrible security hole. So as I started this job my first
|
||
business was to rewrite several scripts that were using rsh,rcp etc.
|
||
I replaced them with an ftp based script ftp - <input> out 2> out.err.
|
||
It's easy to
|
||
see that this was not a good idea because ftp was not intended as shell-commando
|
||
like cp,mv and the other guys. So I was happy to find the ftplib on a
|
||
linux-CD. It's a nice lib that I used to build cmds like ftpmv, ftpcp, ftprm..
|
||
This made my scripts much slimmer and simpler. I have some terrible
|
||
copy-scripts running but no problems copying on different systems
|
||
like Ultrix or AIX.
|
||
|
||
<p>Example using ftpget (from the ftplib Author Thomas Pfau)
|
||
<pre>ftpget sunsite.unc.edu -r /pub/Linux ls-lR.gz</pre>
|
||
This command reads the file <pre>/pub/Linux/ls-lR.gz from sunsite.unc.edu</pre>
|
||
|
||
Likewise there are other commands with the lib: ftpdir ,ftpsend, ftprm
|
||
|
||
<p>Who needs ftplib?<br>
|
||
Everybody tired of typing ftp... every evening to
|
||
get the latest patches or whatever. Everyone who is regularly copying
|
||
with ftp the same Datafiles.
|
||
|
||
<p>Why use ftplib?<br>
|
||
Of course you can add it to you own application but more experienced users don't
|
||
have to use these r-commands anymore. An ftpd is available for the
|
||
majority of systems so it is easier to access more of them.
|
||
|
||
<p>Any drawbacks?<br>
|
||
Of course, for any ftp session you need a user/paswdr. I copy into
|
||
public area using anonymous/email@ others will need to surly a
|
||
password at login, what is not very useful for regular jobs or
|
||
you have to use some kind of public login but still I think it's
|
||
easier and better to use than the r-cmds.
|
||
<p>
|
||
-- walter
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="asciiart"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
ACSII-Artwork Translator
|
||
</H3>
|
||
<P>
|
||
|
||
Here is something interesting which you might consider for publication.
|
||
It is a short program written in LEX and C, which takes ASCII-Artwork
|
||
and translates it into HTML 3.0 compliant table data.
|
||
|
||
It is a pretty interesting idea, and as far as I know, I'm the first
|
||
person to try something like this, or automate the process.
|
||
|
||
The translator (a2t) has a few options:
|
||
<p>
|
||
<ul>
|
||
<li>-x : reverse the output
|
||
This is because some ASCII-Artwork is meant to be seen as
|
||
black on white and not white on black.
|
||
|
||
<li>-r value
|
||
<li>-g value
|
||
<li>-b value
|
||
Sets constant r,g, and or b, rgb values, so that the resulting
|
||
"grayscale" output can be altered to shades of a color.
|
||
|
||
<li>-w value
|
||
Sets the width of the resulting table.
|
||
</ul>
|
||
<p>The program was completed just today, so it is very new. I've
|
||
released it under the GNU license agreement.
|
||
|
||
<p>For some examples of the output generated by a2t, see:
|
||
<a href="http://wilkes.edu/~pkeane">http://wilkes.edu/~pkeane</a><br>
|
||
|
||
I think you'll find the results to be pretty amusing, and slightly
|
||
more interesting than the usual bag of HTML table-tricks.
|
||
<p>
|
||
Enjoy--
|
||
|
||
Patrick
|
||
<pre>
|
||
%{
|
||
|
||
/* Ascii-to-Table version 2.0
|
||
**
|
||
** A conversion utility to convert gifscii type ASCII-Artwork into
|
||
** grayscale HTML 3.0 compliant html documents using tables.
|
||
**
|
||
** Copyright(C) 1997 by Patrick J.M. Keane -- All rights reserved.
|
||
** (pkeane@wilkes.edu)
|
||
**
|
||
** This program is free software; you can redistribute it and/or modify
|
||
** it under the terms of the GNU General Public License as published by
|
||
** the Free Software Foundation; either version 2 of the License, or
|
||
** (at your option) any later version.
|
||
**
|
||
** This program is distributed in the hope that it will be useful,
|
||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
** GNU General Public License for more details.
|
||
**
|
||
** You should have received a copy of the GNU General Public License
|
||
** along with this program; if not, write to the Free Software
|
||
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
**
|
||
*/
|
||
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <unistd.h>
|
||
|
||
char shade1[4], shade2[4], shade3[4] ;
|
||
int reverse=0, widthset=0, width=0 ;
|
||
int shade1set=0, shade2set=0, shade3set=0 ;
|
||
|
||
void maketd(const char *value) {
|
||
printf("<td bgcolor=") ;
|
||
printf("#%s%s%s>",
|
||
((shade1set==0) ? value : shade1),
|
||
((shade2set==0) ? value : shade2),
|
||
((shade3set==0) ? value : shade3)) ;
|
||
printf("<font size=0> </font></td>") ;
|
||
}
|
||
|
||
main(int argc, char *argv[]) {
|
||
int c;
|
||
extern int optind;
|
||
extern char *optarg;
|
||
extern int opterr;
|
||
|
||
while ((c = getopt(argc, argv, "w:r:g:b:xh")) != EOF) {
|
||
switch (c) {
|
||
case 'x':
|
||
reverse = 1 ;
|
||
break;
|
||
case 'h':
|
||
fprintf(stderr, "Usage:\n\tcat asciifile | a2t [-h] [-x] [-[rgb] value] [-w width] > document.html\n\n") ;
|
||
fprintf(stderr, "\t-h : This help screen\n") ;
|
||
fprintf(stderr, "\t-x : Reverse output\n") ;
|
||
fprintf(stderr, "\t-r value : Constant R <R>GB value\n") ;
|
||
fprintf(stderr, "\t-g value : Constant G R<G>B value\n") ;
|
||
fprintf(stderr, "\t-b value : Constant B RG<B> value\n") ;
|
||
fprintf(stderr, "\t-w value : Set width of output table\n") ;
|
||
exit(0) ;
|
||
break;
|
||
case 'r':
|
||
shade1set = 1 ;
|
||
strcpy(shade1, optarg) ;
|
||
break ;
|
||
case 'g':
|
||
shade2set = 1 ;
|
||
strcpy(shade2, optarg) ;
|
||
break ;
|
||
case 'b':
|
||
shade3set = 1 ;
|
||
strcpy(shade3, optarg) ;
|
||
break ;
|
||
case 'w':
|
||
widthset = 1 ;
|
||
width = atoi(optarg) ;
|
||
break ;
|
||
default:
|
||
fprintf(stderr, "Bad option: %c\n", c);
|
||
exit(1) ;
|
||
break;
|
||
}
|
||
}
|
||
|
||
printf ("<title>Table Art!</title>\n") ;
|
||
printf ("<!---Generated by a2t version 2.0 by Patrick Keane--->\n") ;
|
||
printf ("<!---pkeane@wilkes.edu--->\n") ;
|
||
printf ("<body bgcolor=black text=white>\n") ;
|
||
printf ("<center>\n") ;
|
||
printf ("<table border=0 cellpadding=0 cellspacing=1") ;
|
||
if (widthset)
|
||
printf(" width=%d>", width) ;
|
||
else
|
||
printf(">") ;
|
||
printf ("<tr>\n") ;
|
||
yylex() ;
|
||
printf("</table></center>\n") ;
|
||
|
||
}
|
||
|
||
%}
|
||
|
||
%option yylineno
|
||
ws [ ]*
|
||
%%
|
||
|
||
"$"|"@" { (reverse) ? maketd("00") : maketd("ff") ; }
|
||
"W"|"M" { (reverse) ? maketd("20") : maketd("f7") ; }
|
||
"B"|"%"|"8"|"&" { (reverse) ? maketd("20") : maketd("f0") ; }
|
||
"#"|"*"|"9"|"6"|"H" { (reverse) ? maketd("20") : maketd("e7") ; }
|
||
"o"|"h"|"k" { (reverse) ? maketd("27") : maketd("e0") ; }
|
||
"4"|"5"|"S"|"K" { (reverse) ? maketd("30") : maketd("d7") ; }
|
||
"a"|"e"|"s" { (reverse) ? maketd("37") : maketd("d0") ; }
|
||
"b"|"d"|"p"|"q" { (reverse) ? maketd("40") : maketd("c7") ; }
|
||
"w"|"m"|"3" { (reverse) ? maketd("47") : maketd("b7") ; }
|
||
"z"|"O"|"0"|"Q" { (reverse) ? maketd("50") : maketd("b0") ; }
|
||
"L"|"G"|"D"|"C"|"2" { (reverse) ? maketd("57") : maketd("a7") ; }
|
||
"R"|"E"|"U"|"X" { (reverse) ? maketd("60") : maketd("a0") ; }
|
||
"N"|"A"|"Y"|"P" { (reverse) ? maketd("67") : maketd("97") ; }
|
||
"F"|"J"|"Z"|"z"|"c" { (reverse) ? maketd("70") : maketd("90") ; }
|
||
"g"|"y" { (reverse) ? maketd("77") : maketd("85") ; }
|
||
"x"|"v"|"u"|"n" { (reverse) ? maketd("80") : maketd("80") ; }
|
||
"="|"I"|"r"|"j"|"T" { (reverse) ? maketd("87") : maketd("77") ; }
|
||
"f"|"t" { (reverse) ? maketd("90") : maketd("70") ; }
|
||
"|"|"?"|"V"|"/"|"\\"|"7" { (reverse) ? maketd("97") : maketd("67") ; }
|
||
"["|"]"|"{"|"}" { (reverse) ? maketd("a0") : maketd("60") ; }
|
||
"<"|">"|"("|")" { (reverse) ? maketd("c5") : maketd("50") ; }
|
||
"i"|"l"|"1"|"|"|"!" { (reverse) ? maketd("d0") : maketd("40") ; }
|
||
":"|";"|"+"|"~" { (reverse) ? maketd("e0") : maketd("30") ; }
|
||
"^"|"\"" { (reverse) ? maketd("e7") : maketd("27") ; }
|
||
"-"|"_" { (reverse) ? maketd("ff") : maketd("20") ; }
|
||
"'"|"`" { (reverse) ? maketd("ff") : maketd("20") ; }
|
||
"."|"," { (reverse) ? maketd("ff") : maketd("20") ; }
|
||
{ws}"\n" { printf("<td bgcolor=black><font size=0> ") ;
|
||
printf("</font></td></tr>\n") ; }
|
||
" " { maketd("00") ; }
|
||
. { fprintf(stderr, "Warning: Character %s is not recognized.\n",
|
||
yytext) ;
|
||
fprintf(stderr, "Choosing a medium color!\n") ;
|
||
maketd("97") ; }
|
||
%%
|
||
|
||
void yyerror(char *msg) {
|
||
fprintf(stderr, "^GError :\tLine %d: %s at '%s'\n", yylineno, msg, yytext) ;
|
||
}
|
||
|
||
int yywrap() {
|
||
return (1);
|
||
}
|
||
</pre>
|
||
|
||
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="graphic"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Including Graphics in Linuxdoc SGML
|
||
</H3>
|
||
<P>
|
||
|
||
From: Martin Michlmayr<a href="mailto:tbm@cyrius.com">tbm@cyrius.com</a><br>
|
||
Date: Thu, Apr 17, 1997 at 07:48:19PM +0200<br>
|
||
|
||
You can already include PostScript images in Linuxdoc-SGML which
|
||
will get included in TeX output (and consequently in DVI and
|
||
PostScript). Linuxdoc-SGML doesn't support images for HTML,
|
||
however.
|
||
<p>
|
||
An example:
|
||
<pre>
|
||
<figure>
|
||
<eps file = "neuro">
|
||
<caption><label id = "decade">
|
||
Decade of the brain
|
||
</figure>
|
||
</pre>
|
||
|
||
<p>You can make references to the figure with <ref id="decade">
|
||
|
||
<p>PostScript is already supported and the developer version of SGML-Tools
|
||
(the successor of Linuxdoc-SGML) now supports HTML as well. You
|
||
can specify a PostScript and a GIF file and depending on the output
|
||
(TeX or HTML) the respective image will be included.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="xconfig"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
X Configuration Issues
|
||
</H3>
|
||
<P>
|
||
|
||
Date: Wed Apr 2 12:15:54 1997<BR>
|
||
From: Michael J. Hammel, <a href="mailto:mjhammel@emass.com">mjhammel@emass.com</a>
|
||
<p>If you get sufficiently tweaked by the X monitor config problems,
|
||
I
|
||
suggest X Inside's AcceleratedX package. Its much simpler to configure
|
||
than the XFree package for both cards and monitors. I used to work
|
||
for them, but haven't in over a year. I still use their package because
|
||
its the easiest to handle all the video card/monitor details.
|
||
|
||
<p>BTW, the monitor setup is menu based. If your monitor is not listed
|
||
you can just use one of the multisync if single frequency generic
|
||
configs. No dot clocks, but you do need to no your monitors frequency
|
||
capabilities. These should be listed in the monitors cdocumetntation.
|
||
|
||
<p>The package is a commercial distribution and runs about $100 (last time
|
||
I checked). They change their name to Xi Graphics recently and the domain
|
||
for xinside.com might not be working right now. Try <a
|
||
href="http://www.xig.com">http://www.xig.com</a>.
|
||
|
||
|
||
<p>--
|
||
Michael J. Hammel
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="display"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Multiple X Displays
|
||
</H3>
|
||
<P>
|
||
|
||
Date: Wed Apr 2 13:38:08 1997<br>
|
||
From: Michael J. Hammel <a href="mailto:mjhammel@emass.com">mjhammel@emass.com</a><BR>
|
||
|
||
<p>Setting up the software is probably fairly straight forward. I've
|
||
never used MetroX (I use AcceleratedX instead), however. Basically
|
||
you'll have two choices:
|
||
<ol>
|
||
<li> Multiple displays (host:0.0 and host:1.0)
|
||
<li> Multiple screens of the same display (host:0.0 and host:0.1)
|
||
</ol>
|
||
<p>The second choice is the one you need if you want to move the mouse
|
||
between the two monitors - like when the mouse goes past the right edge
|
||
of the first monitor it shows up on the left edge of the second monitor.
|
||
You'll have to check with Metro to find out which of these options is
|
||
supported and how to configure for it.
|
||
|
||
<p>The hardware problem is tougher. The problem lies in the fact that PC's
|
||
were not originally designed with the idea that multiple display
|
||
adapters would be installed. The BIOS looks for an adapter at certain
|
||
locations (IRQ, I/O address) and, unless the second card is configurable
|
||
to some other address, the system will find multiple cards. What
|
||
happens next is in-determinant. Some systems won't boot. Some do but
|
||
don't display to either monitor correctly.
|
||
|
||
<p>The trick is to find video adapters that were designed to be used
|
||
in conjunction with other video adapters. Many are not. The easiest
|
||
way for you to find out is check with Metro about what combinations of
|
||
video adapters they know work together. Chances are good the ones you
|
||
have don't. I know X Inside had a list of cards they knew work
|
||
together. You could search their web site (http://www.xinside.com or
|
||
http://www.xig.com) and see if that info is still there.
|
||
|
||
<p>Hope this helps.
|
||
<p>--
|
||
Michael J. Hammel
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="colordp"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Color Depths with X
|
||
</H3>
|
||
<P>
|
||
|
||
Date: Wed Apr 2 13:27:40 1997<br>
|
||
From: Michael J. Hammel <a href="mailto:mjhammel@emass.com">mjhammel@emass.com</a><BR>
|
||
|
||
After fiddling with the xf86config file in a concerted effort to coax X
|
||
into displaying 16 bit color, I was dismayed to learn that with my
|
||
current hardware (16 megs RAM and a Cirrus Logic GL-5426) 16 bit color
|
||
is *impossible*...not because of any hardware in-capability, but because
|
||
of a certain limitation of X Windows itself...a problem with linear
|
||
addressing. Seems that to have 16 bit color under X, one must have
|
||
linear addressing enabled, which only works if the system has *no more
|
||
than 14 megs RAM*.
|
||
|
||
<p>Horse hockeys. 16 bit color is a limitation of the video subsystem and
|
||
has nothing to do with the memory of your system. Linear addressing in
|
||
the XFree86 X servers might be tied to system memory amounts, but that
|
||
would be a limitation in the XFree86 server, not in X. X defines
|
||
"method without policy", so such limitations just aren't built into X.
|
||
|
||
<p>A couple of things you should note: The number of colors available
|
||
under 16bit displays is actually *less* than the number available to
|
||
8bit displays. Why this is true has to do with the way 16bit display
|
||
hardware works. The actual color palette for 8 bit displays can have
|
||
millions of colors - it can only display 256 colors at a time, however.
|
||
Frugal use of colormaps can allow you to have nearly exactly the right
|
||
colors for any given application. 16 bit displays only have a palette
|
||
of 65k (roughly) colors. Once those are used up, you're outta luck.
|
||
|
||
<p>I'm not completely clear on what makes this difference such a problem
|
||
but if you visit the Gimp User's mailing list (see the Linux Graphics
|
||
mini-howto: http://www.csn.net/~mjhammel/linux/lgh.html) and ask this
|
||
question you'll get similar replies. Its been discussed quite at length
|
||
on the developers list, and most of them read the User's list.
|
||
|
||
<p>BTW, if you want to see if Linear Addressing is the real problem, try
|
||
the X Inside AcceleratedX demo server and see if it works in 16 bit
|
||
color for you. Generally, your video card needs at least 1M of on board
|
||
RAM (not system memory - this is video memory on the video card) to
|
||
run in 16Bit mode, but then you'll probably only be able to run in
|
||
640x480 or (at most) 800x600 resolution. To run at higher resolutions
|
||
you'll need more video memory.
|
||
|
||
<p>Hope this helps.
|
||
<p>--
|
||
Michael J. Hammel
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="boot"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Figuring Out the Boot Process</BR>
|
||
</H3><P>
|
||
|
||
Date: Fri, 04 Apr 1997 13:20:40 -0600<br>
|
||
From: David Ishee <a href=mailto:dmi1@Ra.MsState.Edu">dmi1@ra.MsState.Edu</a><BR>
|
||
|
||
One of the things that is confusing about Linux at first is which files
|
||
Linux uses to load programs and get the system started at bootup. Once
|
||
you figure out which programs are run during the boot process, which
|
||
order are they run? Here is an easy solution.
|
||
|
||
<p>On my Red Hat 4.0 system, the /etc/rc.d directory tree is where
|
||
everything happens. There are a lot of shell scripts in this set of
|
||
directories that are run when the system boots. To give yourself a
|
||
little more info, add some echo statements to the files. For example:
|
||
<pre>
|
||
edit /etc/rc.d/rc.sysinit and add the following lines at the beginning
|
||
|
||
echo " "
|
||
echo "**** Running /etc/rc.d/rc.sysinit ****
|
||
echo " "
|
||
</pre>
|
||
<p>Now when the system is booting you can see exactly when rc.sysinit is
|
||
run, and what programs it launches. Repeat the above process for all the
|
||
scripts you find.
|
||
|
||
<p>Now if the system hangs or gives an error during bootup you have a
|
||
better idea of where to look. If you don't have any problems while
|
||
booting then at least you have more info about what Linux is doing.
|
||
<p>
|
||
David
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="ftp"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
ftping Home</BR>
|
||
</H3><P>
|
||
|
||
Date: Thu, 3 Apr 1997 20:38:02 +0300 (EET DST)<br>
|
||
From: Kaj J. Niemi, <a href="mailto:kajtzu@4u.net">kajtzu@4u.net</a><br>
|
||
|
||
|
||
I read your article about ftping home with dynamic IPs.. Here's
|
||
something you might need if you get tired of looking at the screen every
|
||
time you want to find out the IP.
|
||
<pre>
|
||
ADDRESS=`/sbin/ifconfig | awk 'BEGIN { pppok = 0}
|
||
/ppp.*/ { pppok = 1; next }
|
||
{if (pppok == 1 ) {pppok = 0; print} }'\
|
||
| awk -F: '{print $2 }'| awk '{print $1 }'`
|
||
|
||
</pre>
|
||
<p>Just replace the ppp.* with whatever you want (if you have multiple
|
||
ppps running). The easiest thing would to be write a script called ftphome
|
||
(or similar) and make it first assign the address and then doing ftp or
|
||
ncftp $ADDRESS. The snippet is originally from a local firewall, at the part
|
||
where it needs to know what its' own address is. :-)
|
||
A friend of mine at <a href=mailto:mstr@ntc.nokia.com">
|
||
mstr@ntc.nokia.com</a> wrote this for me.
|
||
<p>
|
||
--
|
||
Kaj J. Niemi
|
||
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in Linux Gazette Issue 17, May 1997</center>
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A> <A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A> <A HREF="./lg_mail17.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<A HREF="./lg_bytes17.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
|
||
<P> <hr> <P>
|
||
<h5>This page maintained by the Assistant Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
||
Copyright © 1997 Specialized Systems Consultants, Inc. </H5>
|
||
<P>
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
|
||
<HR>
|
||
<center>
|
||
<table cellpadding=7><tr><td>
|
||
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
|
||
</td><td>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_bytes17.html#general">News in General</a>
|
||
<li><a HREF="./lg_bytes17.html#software">Software Announcements</a>
|
||
</ul>
|
||
</td></tr></table>
|
||
</center>
|
||
|
||
<a name="general"></a>
|
||
<p><hr><p>
|
||
<!-- =================================================================== -->
|
||
<center><H3> News in General </H3></center>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
GLUE Announcement
|
||
</H3>
|
||
<p>
|
||
<h4>Every GLUE User Group To Receive Free Copy of BRU 2000 Backup And Restore
|
||
Utility</h4>
|
||
|
||
<P>
|
||
<i>Linux Expo, Research Triangle Park, NC (April 4, 1997)</i> -
|
||
Enhanced Software Technologies, Inc. announced today that Groups of Linux
|
||
Users Everywhere (GLUE) will provide a free copy of the new BRU 2000 backup
|
||
and restore utility to GLUE user groups.
|
||
<P>
|
||
Enhanced Software Technologies, Inc. has joined Linux International as a
|
||
corporate member and is also offering members of GLUE user groups a
|
||
10-percent discount on purchases of BRU 2000.
|
||
<P>
|
||
<A HREF="http://www.estinc.com/">
|
||
Enhanced Software Technologies, Inc.</A>, a privately held corporation based in
|
||
Tempe, Arizona, is a leading provider of high-reliability systems
|
||
|
||
<p>Additional information on <a href="./bru.html">BRU Giveaway</a>.
|
||
<p>
|
||
GLUE is a project of SSC
|
||
publishers of <i>Linux Journal</i>. GLUE was implemented
|
||
to provide a world-wide member group for Linux User Groups. GLUE member
|
||
groups receive a subscription, materials for promoting and developing
|
||
their group, a way of advertising their group in a global setting, list-serv
|
||
and Linux Group location services, and discounts and samples from SSC and
|
||
<i>Linux Journal</i>. Other vendors may also offer special services or
|
||
discounts to GLUE member groups.
|
||
|
||
<p>Additional information on <a href="http://www.ssc.com/glue/index.html">Glue</a>.
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
SOLID desktop for Linux offered free of charge to developers
|
||
</H3>
|
||
<P>
|
||
Solid Information Technology Ltd today announced a campaign
|
||
targeted at the community of Linux developers. Between March
|
||
and September 1997 Linux enthusiasts will be presented with
|
||
a free personal version of the robust SQL database engine
|
||
SOLID Server.
|
||
<P>
|
||
SOLID Server is a unique product by Solid Information Technology
|
||
Ltd, a privately held innovator of database
|
||
technologies.
|
||
<P>
|
||
To download your own copy of SOLID Desktop for Linux, access
|
||
<A HREF="http://www.solidtech.com/linuxfre.htm">http://www.solidtech.com/linuxfre.htm</A> to find a site near you.
|
||
<P>
|
||
<A HREF="./solid.html">Additional Information:</A><BR>
|
||
Solid Information Technology Ltd, <A HREF="http://www.solidtech.com.">http://www.solidtech.com.</A>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
The Elsop Webmaster Resource Center
|
||
</H3>
|
||
<P>
|
||
|
||
The Elsop Webmaster Resource Center<br>
|
||
<a href="http://www.elsop.com/wrc/">http:www.elsop.com/wrc/</a><br>
|
||
|
||
<p>Contains links and comprehensive
|
||
coverage of computer industry trade publications,
|
||
website development, HTML, servers, validators,
|
||
link checkers, and software for webmasters.
|
||
|
||
<p>Major sections include:
|
||
<ul>
|
||
<li>Computer Industry Publications
|
||
<li>Electronic Commerce Solutions
|
||
<li>High Technology Trade Shows & Conferences
|
||
<li>History of the Technology
|
||
<li>Internet, Cyberspace and Computer Law
|
||
<li>Internet Trade Associations and Societies
|
||
<li>Link Validators & Site Mappers
|
||
<li>Reference Room of Outstanding Resources for Webmasters
|
||
<li>Systems and Software Sources on the Web
|
||
<li>Website Development Services
|
||
</ul>
|
||
<p>Produced and Sponsored by the
|
||
Electronic Software Publishing Corporation
|
||
<a href="http://www.elsop.com/linkscan">http://www.elsop.com/linkscan</a>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux Jokes Wanted
|
||
</H3>
|
||
<p>
|
||
Do you consider yourself witty? Do you want to show your fabulous sense of
|
||
humor to the world? NOW IS YOUR CHANCE!
|
||
<P>
|
||
For several years now <I>Linux Journal</I> has been considering adding a monthly cartoon to
|
||
our magazine. We know who we could have "draw" the cartoons, but we really
|
||
don't have any idea what the jokes should be.
|
||
<P>
|
||
Please contribute any ideas you have for "Linux related" cartoons. The type
|
||
of cartoon we are imagining are one panel cartoons akin to what they have in
|
||
magazines like the New Yorker.
|
||
<P>
|
||
So <A HREF="mailto:linux@ssc.com">send</A> us your
|
||
favorite Linux jokes (one liners are best), and we will turn them into
|
||
cartoons.
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Too Good Not To Print
|
||
</H3>
|
||
<P>
|
||
For a good time, check out this website!
|
||
|
||
<a
|
||
href="http://www.lightlink.com/fors/press/net-history.txt">http://www.lightlink.com/fors/press/net-history.txt</a>
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
New User's Group in Knoxville
|
||
</H3>
|
||
<P>
|
||
|
||
There is a new user's group for Linux in Knoxvill, TN
|
||
|
||
They are called the Knoxville's Linux Users Base. Check out the web page
|
||
at
|
||
<a href="http://klub.ml.org">http://klub.ml.org</a>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
AfterStep Themes Page
|
||
</H3>
|
||
<P>
|
||
|
||
Take a look at the AfterStep Themes
|
||
page! Trae Mc Combs has been devoting some time to creating themes for
|
||
|
||
<a href="http://www.mindspring.com/~xwindow/as.html">http://www.mindspring.com/~xwindow/as.html</a><br>
|
||
or
|
||
<a href="http://www.mindspring.com/~xwindow/">http://www.mindspring.com/~xwindow</a>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Version 7 of Corel's WordPerfect for Linux
|
||
</H3>
|
||
<P>
|
||
|
||
<p>Software Development Corporation <a href="http://www.sdcorp.com">http://www.sdcorp.com</a> is working on
|
||
releasing version 7 of Corel's WordPerfect for Linux. It's expected to
|
||
ship sometime in April, with beta testing currently taking place.
|
||
|
||
<p>Their webpages seem to warn that only beta testers have access to the
|
||
software, but following the links takes you to the download area where
|
||
they're freely available.
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Computer Comparison
|
||
</H3>
|
||
<P>
|
||
|
||
Here is a URL that has some interesting data:
|
||
<a href="http://fampm201.tu-graz.ac.at/karl/timings30.html">http://fampm201.tu-graz.ac.at/karl/timings30.html</a><br>
|
||
This web site is maintained by Karl Unterkofler, and has comparisons of
|
||
various computers running the latest versions of Mathemetica. Karl and
|
||
others run a series of tests on the machines, that involve timing
|
||
mathematical problems.
|
||
|
||
<p>8 of the 10 fastest machines are running the Mac OS! the first windows
|
||
machine doesn't make a showing until 11th place( a pentium pro 200Mhz
|
||
running Windows NT 4.0) Incidently this ppro 200 is beat by a Mac 7500
|
||
150 Mhz!
|
||
|
||
<p>You might wonder how this can be when the SPECint95 for Pentium Pros and
|
||
for Power PC 604's are so close? Its the operating system dummy!
|
||
|
||
<p>What do I mean?
|
||
|
||
<p>The Intel machines and the Macs are pretty equal, its Windows that slows
|
||
things down. If you check out the URL you'll see that although 8 of the
|
||
top ten are Macs or Mac clones, 2 of them are Intel pentium Pro 200Mhz
|
||
machines. Sadly for the Mac, the number one spot is a Pentium Pro 200
|
||
with 64 Meg RAM and a 256kb L2 cache running LINUX 2.0.27.
|
||
|
||
<p>This barely beats the number 2 machine, a 225Mhz Power Tower Pro from
|
||
Power Computing with 256 Meg RAM and a 1Meg L2 cache.
|
||
|
||
The other Intel in the top 10 is a Pentium Pro 200Mhz with 128Meg Ram and
|
||
256Kb L2 cache, running NeXT STEP 3.3.
|
||
|
||
<p>I don't think that Mac owners should be ashamed of losing to a LINUX
|
||
machine. LINUX is the result of an amazing effort put forth by many
|
||
dedicated programmers to produce a state of the art 32bit operating
|
||
system that utilizes hardware to the fullest. Mac users should be happy
|
||
that they can go head to head with such an OS, and still maintain the
|
||
great human interface of the Mac!
|
||
|
||
<p>The only other contender is a NeXT machine! Wait'll your windows friends
|
||
see redbox!
|
||
|
||
Oh, BTW the first Win '95 machine doesn't make a showing until 15th
|
||
place. its a Pentium pro 200, 64 MB, 256kb, OS: Win95 and is just below a
|
||
PowerMac 7600/120, 48MB, 256kb, MacOS!
|
||
|
||
<p>So if a windows user tells you their machine is faster, tell them that
|
||
you know...if they switch to LINUX.
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Word Processor for the Linux Environment
|
||
</H3>
|
||
<P>
|
||
|
||
The development of 'wp', a word processor for the Linux environment has
|
||
recently been started. Although it's primary goal is a Linux-based word
|
||
processor, wp will eventually be available for many other platforms.
|
||
|
||
<p>WP is an open system, object orientated, and object driven; written mainly
|
||
using C++, although little code has of yet been written. The current
|
||
objective is a full design specification/mission statement and determining
|
||
the current products that can be used to help the development of the
|
||
product further.
|
||
|
||
<p>Because of this openness, it is proposed to have the user interface
|
||
seperate from the main program; the reason for this meaning that the user
|
||
can choose whichever interface suits them best, from a ncurses driven text
|
||
interface to an X-Windows display using different widget sets.
|
||
|
||
<p>The web site for Wp is at <a href="http://sunsite.unc.edu/paulc/wp">http://sunsite.unc.edu/paulc/wp</a>
|
||
|
||
<p>If you wish to obtain the design specification notes for wp, they are also
|
||
available at the above site.
|
||
|
||
<p>A FAQ is currently being prepared, if you have any questions or
|
||
suggestions, please send them to <a href="mailto:wp@squiznet.demon.co.uk">wp@squiznet.demon.co.uk</a>
|
||
|
||
<p>If you wish to contribute to the project in any form, please contact
|
||
<a href="mailto:paulc@sunsite.unc.edu">paulc@sunsite.unc.edu</a> and introduce yourself, a copy of which will be sent
|
||
to the wp-developers mailing list unless you specifically state that you
|
||
do not wish for this to happen.
|
||
|
||
|
||
<a name="software"></a>
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
<center><H3> Software Announcements </H3></center>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Xcoral 3.0
|
||
</H3>
|
||
<P>
|
||
|
||
Xcoral-3.0 has been released and now available on the Net.
|
||
<ul>
|
||
<li> EUROPE: <a href="ftp://ftp.inria.fr">X/contrib-R5/clients</a>
|
||
<li> USA: <a href="ftp://ftp.x.org">contrib/editors</a>
|
||
</ul>
|
||
|
||
<p>Xcoral is a multiwindow mouse-based text editor for
|
||
the X Window System. It contains a built-in browser that enables you to
|
||
navigate through C functions, C++ classes, Java classes, methods and files.
|
||
It also contains a SMall Ansi C Interpreter (Smac) which is also built-in
|
||
to extend the editor's possibilities
|
||
(user functions, key bindings, modes etc).
|
||
Xcoral provides variable width fonts, menus, toolbar,
|
||
scrollbars, buttons, search, regions, kill-buffers, macros and
|
||
undo. An on-line manual box, with a table of contents
|
||
and an index, helps you to use and customize the editor.
|
||
Xcoral also offers facilities to write Latex documents
|
||
and Html pages.
|
||
Xcoral is a direct Xlib client and runs on color/bw
|
||
X Display.
|
||
|
||
<p>OS: SunOS 4.1.x, Solaris 2.[45], LINUX, AIX, HPUX,
|
||
IRIX and OSF-1.
|
||
|
||
<p>Changes from xcoral-2.5:
|
||
<ul>
|
||
<li> New browser for C/C++ and Java.
|
||
<li> Standard X selection mecanism.
|
||
<li> Toolbar
|
||
<li> Some bugs fixed...
|
||
</ul>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Beta Version of EM86
|
||
</H3>
|
||
<P>
|
||
The Linux/Alpha team at Digital Equipment Corporation
|
||
today is releasing a developers' beta version of EM86, a Linux/x86
|
||
emulator for Linux/Alpha. Using components of the
|
||
DIGITAL FX!32 technology, EM86 is a software emulator that enables
|
||
Linux/Alpha systems to run Linux/x86 software without modification.
|
||
|
||
<p>EM86 currently supports statically linked and dynamically linked x86
|
||
ELF32 binaries under Linux/Alpha. Future enhancements will include
|
||
support for iBCS-2 compliant executables, improved emulator performance,
|
||
and interoperation with native Alpha code. A release incorporating
|
||
these features is anticipated in July, 1997.
|
||
|
||
<p>They are releasing a beta version of EM86 at this time to provide
|
||
Linux developers early access to the software, to aid in the
|
||
verification of software packages, and to provide feedback and bug
|
||
reports to the Linux/Alpha team.
|
||
|
||
<p>The following Linux/x86 software packages run successfully on this
|
||
beta version of EM86, with some qualifications as described in the
|
||
README file included in the distribution:
|
||
<ul>
|
||
<li> Netscape Navigator Gold 3.01
|
||
<li> Adobe Acrobat Reader 3.0
|
||
<li> Red Baron web browser 3.00
|
||
<li> Applixware 4.2
|
||
</ul>
|
||
<p> EM86 may be obtained via anonymous ftp from:
|
||
|
||
<a href="ftp://ftp.digital.com/pub/DEC/Linux-Alpha/em86">ftp://ftp.digital.com/pub/DEC/Linux-Alpha/em86</a>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
XForms V0.86
|
||
</H3>
|
||
<P>
|
||
|
||
|
||
XForms V0.86 is now available from:
|
||
<ul>
|
||
<li><a href="http://bragg.phys.uwm.edu/xforms">http://brigg.phys.uwm.edu/xforms</a>
|
||
<li><a href="ftp://einstein.phys.uwm.edu/pub/xforms">ftp://einstein.phys.uwm.edu/pub/xforms</a>
|
||
</ul>
|
||
for Linux/i386, Linux/alpha, Linux/sparc, and Linux/m68k.
|
||
|
||
<p>XForms is a graphical user interface toolkit and builder based on Xlib
|
||
for X Window Systems. XForms is a portable and efficient C library
|
||
that can be used in both C and C++ programs.
|
||
The library works in all visuals and all depths (1-24) and comes
|
||
with a rich set of objects such as buttons (of many flavors, including color
|
||
XPMs as labels) , browsers, sliders, and menus integrated into an
|
||
elegant event/object callback execution model that allows fast and
|
||
easy construction of X-applications. It also has OpenGL (on SGI) and
|
||
Mesa support.
|
||
|
||
<p>XForms comes bundled with
|
||
<ul>
|
||
<li>Precompiled library (static and shared) and header files.
|
||
<li>Source code for 50+ demonstration programs;
|
||
<li>Precompiled fdesign, an interactive GUI builder that can
|
||
be used to design dialogues in a WYSIWYG way and to output the
|
||
corresponding UI code for you.
|
||
<li>250+ pages of indexed documentation (tutorial and reference) in both
|
||
PostScript and html
|
||
</ul>
|
||
<p>perl, ada95, python and fortran bindings to xforms are in alpha/beta.
|
||
Please visit the xforms' home page for more info.
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Debian 1.3 Available for Beta Test
|
||
</H3>
|
||
<P>
|
||
|
||
Debian 1.3 is now in beta test. We are performing a month-long test
|
||
with an organized quality control team. If you'd like to be an official
|
||
beta tester, please contact Dale Scheetz <a href="mailto:dwarf@polaris.net">dwarf@polaris.net</a> .
|
||
|
||
<p>The Debian 1.3 files are under the "frozen" directory on most of the
|
||
Debian mirror sites. There are now 73 Debian mirrors worldwide! You can
|
||
find the mirror list at
|
||
<a href="ftp://ftp.debian.org/debian/README.mirrors">ftp://ftp.debian.org/debian/README.mirrors</a> or
|
||
<a href="ftp://debian.crosslink.net/pub/debian/README.mirrors">ftp://debian.crosslink.net/pub/debian/README.mirrors</a>. Please consider
|
||
that this is beta-quality software and there will be bugs. If you have
|
||
any problem, please see the information on our bug-tracking system
|
||
at <a href="http://www.debian.org/support.html">http://www.debian.org/support.html</a>, or write to Dale at the above
|
||
address.
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Freedom Desktop Lite Announced (1.01)
|
||
</H3>
|
||
<P>
|
||
|
||
Announcing the public availability of the Freedom
|
||
Desktop Lite. Freedom Desktop Lite is a
|
||
desktop environment/GUI integrated to the Unix
|
||
environment. It
|
||
helps users interact with Unix quickly and efficiently. Freedom
|
||
Desktop runs transparently in a variety of Unix environments,
|
||
from Desktop computers (i.e. Linux) to enterprise workstations.
|
||
|
||
<p>The Freedom Desktop Lite environment bundles the following
|
||
applications:
|
||
<ul>
|
||
<li>File Manager
|
||
<li>Program Manager
|
||
<li>Print Tool
|
||
<li>Find Tool
|
||
<li>Editor
|
||
<li>Terminal emulator
|
||
<li>Pixmap/Icon Editor
|
||
<li>Screen grabber
|
||
<li>Screen saver
|
||
<li>Rolodex
|
||
</ul>
|
||
|
||
For more information and the ftp site feel free to visit <a href="http://freedom.lm.com/desktop.html">http://freedom.lm.com/desktop.html</a>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in Linux Gazette Issue 17, May 1997</center>
|
||
<P> <HR> <P>
|
||
<!-- =================================================================== -->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
||
PAGE ]"></A>
|
||
<A HREF="./lg_tips17.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<A HREF="./answer.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
|
||
<P><HR><P>
|
||
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
||
Copyright © 1997 Specialized Systems Consultants, Inc. </H5>
|
||
<P>
|
||
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
<P> <hr> <P>
|
||
|
||
<!-- =============================================================== -->
|
||
<center>
|
||
<H1><A NAME="answer">
|
||
<img src="../gx/ans.gif" alt="" border=0 align=middle>
|
||
The Answer Guy
|
||
<img src="../gx/ans.gif" alt="" border=0 align=middle>
|
||
</A></H1> <BR>
|
||
<H4>By James T. Dennis
|
||
<a href="mailto:jimd@starshine.org">jimd@starshine.org</a><BR>
|
||
Starshine Technical Services, <A HREF="http://www.starshine.org/">
|
||
http://www.starshine.org/</A> </H4>
|
||
</center>
|
||
|
||
<p><hr><p>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./answer.html#fs">fs's</a>
|
||
<li><a HREF="./answer.html#unix">Linux/Unix Emulator</a>
|
||
<li><a HREF="./answer.html#vidX">Using X With 2 Monitors and 2 Video
|
||
Cards</a>
|
||
<li><a HREF="./answer.html#host">Virtual Hosting</a>
|
||
<li><a HREF="./answer.html#response">Response from Weitse Venema</a>
|
||
<li><a HREF="./answer.html#file">Automatic File Transfer</a>
|
||
<li><a HREF="./answer.html#ftpd">Installing wu-ftpd on a Linux Box</a>
|
||
<li><a HREF="./answer.html#boot">Trying to Boot a Laptop</a>
|
||
<li><a HREF="./answer.html#zmode">zmodem Reply</a>
|
||
<li><a HREF="./answer.html#start">StartX</a>
|
||
<li><a HREF="./answer.html#imap">IMAP and Linux</a>
|
||
<li><a HREF="./answer.html#imap2">IMAP Again</a>
|
||
<li><a HREF="./answer.html#uucp">UUCP Questions</a>
|
||
<li><a HREF="./answer.html#flops">Using MS-DOS Floppies</a>
|
||
<li><a HREF="./answer.html#inetd">inetd Questions</a>
|
||
<li><a HREF="./answer.html#modem">Navas Modem FAQ</a>
|
||
<li><a HREF="./answer.html#modem2">Setting Up a Modem</a>
|
||
<li><a HREF="./answer.html#userid">User Identification</a>
|
||
<li><a HREF="./answer.html#duplic">Duplicating a Linux Installed HD</a>
|
||
</ul>
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="fs"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
fs's
|
||
</h3>
|
||
<P><B>
|
||
From: Aaron M. Lee <a
|
||
href="mailto:aaron@shifty.adosea.com">aaron@shifty.adosea.com</a><br>
|
||
|
||
<p>Howdy Jim,
|
||
My name's Aaron and I am sysadmin Cybercom Corp., an ISP in
|
||
College Station, TX. We run nothing but Linux, and have been involved w/
|
||
a lot of hacking and development on a number of projects. I have an
|
||
unusual problem and have exhausted my resources for finding an answer- so
|
||
I thought you might be able to help me out, if you've got the time.
|
||
Anyway, here goes...
|
||
<p>I've got a scsi disk I was running under Sparclinux that has 3
|
||
partitions, 1 Sun wholedisk label, 2 ext2. That machine had a heart
|
||
attack, and we don't have any spare Hypersparcs around- but I _really_
|
||
need to be able to mount that drive to get some stuff off of it. I compiled
|
||
in UFS fs support w/ Sun disklabel support into the kernel of an i386 Linux
|
||
box, but the when I try to mount it, it complains that /dev/sd** isn't a
|
||
valid block device, w/ either the '-t ufs' or '-t ext2' options. Also,
|
||
fdisk thinks the fs is toast, and complains that the blocks don't end
|
||
in physical boundaries (which is probably the case for an fdisk that
|
||
doesn't know about Sun disklabels), and can't even tell that the
|
||
partitions are ext2 (it thinks one of them is AIX!). Any ideas?
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Consider the nascent state of Sparc support for Linux
|
||
I'm not terribly surprised that you're having problems.
|
||
|
||
You seem to be asking:
|
||
"How do I get Linux/Intel to see the fs on
|
||
this disk?"
|
||
|
||
<p> However I'm going to step back from the that question
|
||
and ask the broader question:
|
||
|
||
"How do you recover the (important) data off of
|
||
that disk in a usable form?"
|
||
|
||
<p> Then I'll step back even further and ask:
|
||
|
||
"How important is that data? (what is its
|
||
recovery worth to you)?"
|
||
|
||
<p> ... and<br>
|
||
|
||
"What were the disaster plans, and why
|
||
are those plans inadequate for this
|
||
situation?"
|
||
|
||
<p> If you are like most ISP's out there -- you have not
|
||
disaster or recovery plans, and little or no backup
|
||
strategy. Your boss essentially asks you to running
|
||
back and forth on the high wire at top speed -- without
|
||
a net.
|
||
|
||
<p> As a professional sysadmin you must resist the pressure
|
||
to perform in this manner -- or at least you owe it to
|
||
yourself to carefully spell out the risks.
|
||
|
||
<p> In this case you had a piece of equipment that was
|
||
unique the Sparc system -- so that any failure of
|
||
any of its components would result in the lack of
|
||
access to all data on that system.
|
||
|
||
<p> Your question makes it clear that you didn't have
|
||
sufficiently recent backups of the data on that
|
||
system (otherwise the obvious solution would be
|
||
to restore the data to some other system and
|
||
reformat the drive in question).
|
||
|
||
<p> My advice would be to rent (or even borrow) a
|
||
SPARC system for a couple of days (a week is a
|
||
common minimum rental period) -- and install
|
||
the disk into that.
|
||
|
||
<p> Before going to the expense of renting a system
|
||
(or buying a used one) you might want to ensure
|
||
that the drive is readable at the lowest physical
|
||
level. Try the dd command on that device. Something
|
||
like:
|
||
|
||
<pre> dd if=/dev/sda | od | less
|
||
</pre>
|
||
<p> ... should let you know if the hardware is operational.
|
||
If that doesn't work -- double and triple-check all of the
|
||
cabling, SCSI ID settings, termination and other hardware
|
||
compatibility issues. (You may be having some weird problem
|
||
with a SCSI II differential drive connecting to an
|
||
incompatible controller -- if this is an Adaptec 1542B
|
||
-- be sure to break it in half before throwing it away
|
||
to save someone else the temptation (the 1542C series is
|
||
fine but the B series is *BAD*)).
|
||
|
||
<p> Once you are reasonably confident that the hardware
|
||
is talking to your system I'd suggest doing a direct,
|
||
bitwise, dump of the disk to a tape drive. Just use a
|
||
command like:
|
||
|
||
<pre> dd if=/dev/sda of=/dev/st0
|
||
</pre>
|
||
<p> ... if you don't have a sufficiently large tape drive
|
||
(or at least a sufficiently large spare hard disk) *and
|
||
can't get one* than consider looking for a better
|
||
employer.
|
||
|
||
<p> Once you have a tape backup you can always get back
|
||
to where you are now. This might not seem so great
|
||
(since you're clearly not where you'd like to be) but
|
||
it might be infinitely preferable to where you'll be
|
||
if you have a catastrophic failure on mounting/fsck'ing
|
||
that disk.
|
||
|
||
<p> For the broader problem (the organizational ones rather
|
||
than the technical ones) -- you need to review
|
||
the requirements and expectations of your employer --
|
||
and match those against the resources that are being
|
||
provided.
|
||
|
||
<p> If they require/expect reliable access to their data --
|
||
they must provide resources towards that end. The most
|
||
often overlooked resource (in this case) is sysadmin
|
||
time and training. You need the time to develop
|
||
disaster/recovery plans -- and the resources to test
|
||
them. (You'd be truly horrified at the number of sites
|
||
that religiously "do backups" but have an entire staff that
|
||
has never restored a single file from those).
|
||
|
||
<p> Many organizations can't (or won't) afford a full spare
|
||
system -- particularly of their expensive Sparc stations.
|
||
They consider any system that's sitting on a shelf to be a
|
||
"waste." -- This is a perfectly valid point of view.
|
||
However -- if the production servers and systems are
|
||
contributing anything to the companies bottom line --
|
||
there should be a calculable cost for down time. If that's
|
||
the case then there is a basis for comparison to the costs of
|
||
rentals, and the costs of "spare" systems.
|
||
|
||
<p> Organizations that have been informed of this risks and
|
||
costs (by there IS staff) and continue to be unwilling or
|
||
unable to provide the necessary resources will probably
|
||
fail.
|
||
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
Thanks in advance for any possible help,
|
||
--Aaron
|
||
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
It's often the case that I respond with things that
|
||
I suspect my customer don't want to hear.
|
||
|
||
The loss of this data (or the time lost to recovering
|
||
it) is an opportunity to learn and plan -- you may
|
||
prevent the loss of much more important information
|
||
down the road if you now start planning for the
|
||
inevitable hardware and system failures.
|
||
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="unix"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Linux/Unix Emulator
|
||
</h3>
|
||
<P><B>
|
||
From:Steven W., <a href="mailto:steven@gator.net">steven@gator.net</a><br>
|
||
|
||
<p> Can you help me? Do you know of a Unix (preferably Linux) emulator
|
||
that runs under Windows95?
|
||
<p> -- Steven.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
Short Answer:
|
||
|
||
I don't know of one.
|
||
|
||
<p> Longer Answer:
|
||
|
||
<p> This is a tough question because it really doesn't
|
||
*mean* anything. An emulator is a piece of software
|
||
that provide equivalent functionality to other software
|
||
or hardware. Hopefully this software is indistinguishable
|
||
from the "real" thing in all ways that count.
|
||
|
||
<p> (Usually this isn't the case -- most VT100
|
||
terminal emulation packages have bugs in them
|
||
-- and that is one of the least complicated
|
||
and most widespread cases of emulation in the
|
||
world).
|
||
|
||
<p> A Unix "emulator" that ran under Win '95 would probably not be
|
||
of much use. However I have to ask what set of features
|
||
you want emulated?
|
||
|
||
<p> Do you want a Unix-like command shell (like
|
||
Korn or Bash)? This would give you some of the
|
||
"feel" of Unix.
|
||
|
||
<p> Do you want a program that emulates one of the
|
||
GUI's that's common on Unix? There are X Windows
|
||
"display servers" (sort of like "emulators") that
|
||
run under NT and '95. Quarterdeck's eXpertise
|
||
would be the first I would try.
|
||
|
||
<p> Do you want a program that allows you to run
|
||
some Unix programs under Win '95? There are
|
||
DOS, OS/2, and Windows (16 and 32 bit) ports of
|
||
many popular Unix programs -- including most of
|
||
the GNU utilities. Thus bash, perl, awk, sed,
|
||
vi, emacs, tar, and hundreds of other utilities
|
||
can be had -- most of them for free.
|
||
|
||
<p> Do you want to run pre-compiled Unix binaries
|
||
under Win '95? This would be a very odd request
|
||
since there are dozens of implementations of
|
||
Unix for the PC platform and hundreds for other
|
||
architectures (ranging from Unicos on Cray super-
|
||
computers to Minix and Coherent on XT's and 286's).
|
||
Binary compatibility has playing only a tiny role
|
||
in the overall Unix picture. I suspect that
|
||
supporting iBCS (a standard for Unix binaries on
|
||
intel processors -- PC's) under Win '95 would be a
|
||
major technical challenge (and probably never
|
||
provide truly satisfying results).
|
||
|
||
<p> *note*: One of the papers presented at Usenix in
|
||
Anaheim a couple of months ago discussed the
|
||
feasibility of implementing an improved Unix
|
||
subsystem under NT -- whose claim of POSIX support
|
||
as proven to be almost completely useless in the
|
||
real world. Please feel free to get a copy of
|
||
the Usenix proceeding if you want the gory details
|
||
on that. It might be construed as a "Unix emulation"
|
||
for Windows NT -- and it might even be applicable to
|
||
Win '95 -- with enough work.
|
||
|
||
<p> If you're willing to run your Windows programs
|
||
under Unix there's hope. WABI currently supports
|
||
a variety of 16-bit Windows programs under Linux
|
||
(and a different version support them under Solaris).
|
||
Also work is continuing on the WINE project -- and
|
||
some people have reported some success in running
|
||
Windows 3.1 in "standard mode" under dosemu (the
|
||
Linux PC BIOS emulator). The next version of WABI
|
||
is expect to support (at least some) 32-bit Windows
|
||
programs.
|
||
|
||
<p> My suggestion -- if this is of any real importance to you --
|
||
is that you either boot between Unix and DOS/Windows or that
|
||
you configure a separate machine as a Unix host -- put it in
|
||
a corner -- and using your Win '95 system as a terminal,
|
||
telnet/k95 client and/or an X Windows "terminal" (display
|
||
server).
|
||
|
||
<p> By running any combination of these programs on your Windows
|
||
box and connecting to your Linux/Unix system you won't have
|
||
to settle for "emulation." You'll have the real thing --
|
||
from both sides. In fact one Linux system can serve as the
|
||
"Unix emulation adapter" for about as many DOS and Windows
|
||
systems as you care to connect to it.
|
||
|
||
<p> (I have one system at a client site that has about 32Mb
|
||
of RAM and 3Gb -- it's shared by about 300 shell and
|
||
POP mail users. Granted only about 20 or 30 of them are
|
||
ever shelled at any given time but it's no where near it's
|
||
capacity).
|
||
|
||
<p> I hope this gives you some idea why your question is
|
||
a little non-sensical. Operating systems can be viewed
|
||
from three sides -- user interface (UI), applications
|
||
programming interface (API), and supported hardware
|
||
(architecture).
|
||
|
||
<p> Emulating one OS under another might refer to emulating
|
||
the UI, or the API or both. Usually emulation of the
|
||
hardware support is not feasible (i.e. we can't run DOS
|
||
device drivers to provide Linux hardware support).
|
||
|
||
<p> If one implemented the full set of Unix system calls
|
||
in a Win '95 program that provided a set of "drivers"
|
||
to translate a set of Unix like hardware abstractions
|
||
into calls to the Windows device drivers -- and one
|
||
ported a reasonable selection of software to run under
|
||
this "WinUnix kernel" -- one could call that "Unix emulation."
|
||
|
||
<p> However it would be more accurate to say that you had
|
||
implemented a new version of Unix on a virtual machine
|
||
which you hosted under Windows.
|
||
|
||
<p> Oddly enough this is quite similar to what the Lucent
|
||
(Formerly Bell Labs?) Inferno package does. Inferno
|
||
seems to have evolved out of the Plan 9 research project
|
||
-- which apparently was Dennis Ritchie's pet project for
|
||
a number of years. I really don't know enough about
|
||
the background of this package -- but I have a CD
|
||
(distributed to attendees of the aforementioned Usenix
|
||
conference) which has demo copies of Inferno for several
|
||
"virtual machine" platforms (including Windows and Linux).
|
||
|
||
<p> Inferno is also available as a "native" OS for a couple
|
||
of platforms (where it includes it's own device drivers
|
||
and is compiled as direct machine code for a machine's
|
||
platform).
|
||
|
||
<p> One reason I mention Inferno is that I've heard that
|
||
it offers features and semantics that are very similar
|
||
to those that are common in Unix. I've heard it described
|
||
as a logical outgrowth of Unix that eschews some of the
|
||
accumulation of idiosyncrasies that has plagued Unix.
|
||
|
||
<p> One of these days I'll have to learn more about that.
|
||
|
||
<P><B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
I have Windows95 and Linux on my system, on separate partitions, I
|
||
can't afford special equipment for having them on separate machines.
|
||
I really like Linux, and Xwindows, mostly because of their great
|
||
security features. (I could let anybody use my computer without
|
||
worrying about them getting into my personal files). Windows95's
|
||
pseudo-multi-user system sucks really bad. So, mainly, this is why I
|
||
like Linux. I also like the way it looks. Anyways, I would just run
|
||
Linux but my problem is that Xwindows doesn't have advanced support
|
||
for my video card, so the best I can get is 640x480x16colors and I
|
||
just can't deal with that. Maybe I'm spoiled. The guy I wrote on
|
||
the Xwin development team told me that they were working on better
|
||
support for my card, though. (Aliance Pro-Motion). But, meanwhile,
|
||
I can't deal with that LOW resolution. The big top-it-off problem is
|
||
that I don't know of anyway to have Linux running _while_ Win95 is
|
||
running, if there even is a way. If there was, it would be great,
|
||
but as it is I have to constantly reboot and I don't' like it. So
|
||
this is how I came to the point of asking for an emulator. Maybe
|
||
that's not what I need after all. So what can I do? Or does the
|
||
means for what I want not exist yet?
|
||
|
||
<p>-- Steven.
|
||
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
If you prefer the existing Linux/X applications and
|
||
user interface -- and the crux of the problem is support
|
||
for your video hardware -- focus on that. It's a simpler
|
||
problem -- and probably offers a simpler solution.
|
||
|
||
<p> There are basically three ways to deal with a lack of
|
||
XFree86 support for your video card:
|
||
|
||
<ul>
|
||
<li> Help write an XFree86 driver
|
||
(I'm not a coder either -- but I do occasionally
|
||
beat the bushes and offer bribes to coder
|
||
friends)
|
||
|
||
<li> Look for Metro-X or other (probably commercial)
|
||
support. (A copy of Metro-X comes with Red Hat
|
||
4.1 for about $50 -- so this is not outrageously
|
||
expensive).
|
||
|
||
<li> Replace the video card. There are plenty of
|
||
really good video cards that are supported by
|
||
XFree86. Number 9, and Matrox have good track
|
||
records. Some of the 2Mb PCI cards are only
|
||
about $100 (US).
|
||
</ul>
|
||
<p> Be sure to contact the manufacturer to ask for a
|
||
driver. Point out that they may be able to make
|
||
small changes to an existing XFree86 driver. You
|
||
can even offer to help them find a volunteer
|
||
(where you post to the comp.os.linux.dev...sys.
|
||
newsgroup and one or two of the developer's mailing
|
||
lists -- and offer some support). Just offering to
|
||
do some of the "legwork" maybe be a significant
|
||
contribution.
|
||
|
||
<p> This is an opportunity to be a "Linux-Activist."
|
||
|
||
<p>--
|
||
Jim
|
||
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="vidX"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Using X with 2 Monitors and 2 Video Cards
|
||
</h3>
|
||
<P><B>
|
||
From:Charles A. Barrasso<a
|
||
href="mailto:charles@blitz.com">charles@blitz.com</a><br>
|
||
|
||
I was wondering how I would go about using X with 2 monitors and 2
|
||
video cards? I am currently using XFree86 window manager. I know you
|
||
can do this with the MetroX window manager but that costs money :(.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I'm sure I gave a lengthy answer to this fairly recently.
|
||
Maybe it will appear in this month's issue (or maybe
|
||
I answered it on a newsgroup somewhere).
|
||
|
||
<p> In any event, the short answer is: You don't.
|
||
|
||
<p> The PC architecture doesn't support using multiple
|
||
VGA/EGA cards concurrently. I don't think XFree86 can
|
||
work with CGA cards (and who'd want to!). You might
|
||
be able to get a Hercules compatible Monochrome Graphics
|
||
Adapter (MGA) to work concurrently with a VGA card (since
|
||
they don't use overlapping address spaces). I don't know
|
||
if this is the method that Metro-X supports.
|
||
|
||
<p> There are specialized video adapters (typically very expensive
|
||
-- formerly in the $3000+ range) that can co-exist with
|
||
VGA cards. Two sets of initials that I vaguely recall are
|
||
TIGA and DGIS. Considering that you seem unwilling to
|
||
pay $100 (tops) for a copy of Metro-X I think these --
|
||
even if you can still find any of them -- are way out of
|
||
your price league.
|
||
|
||
<p> Another, reasonable, alternative is to connect a whole
|
||
Xterminal or another whole system and run X on that. You
|
||
can then remotely display your windows on that about as
|
||
easily as you could set them to display on the local
|
||
server.
|
||
|
||
<p> (I know -- you might not get some cool window manager
|
||
to let you drag windows from one display server to another
|
||
-- a trick which I've seen done with Macs under MacOS and
|
||
with Suns and SGI's. But I've never set one of those up
|
||
anyway -- so I couldn't begin to help you there).
|
||
|
||
<p> You might double check with the Metro-X people to see
|
||
what specific hardware is required/supported by their
|
||
multiple display feature and then check with the XFree86.org
|
||
to see if anyone has any drivers for one of those supported
|
||
configurations.
|
||
|
||
<p> As a snide note I find your phrase "that costs money :("
|
||
to be mildly offensive. First the cost of an additional
|
||
monitor has got to be at least 3 times the price of
|
||
a copy of Metro-X. Second "free" software is not about
|
||
"not having to pay money."
|
||
|
||
<p> I'm not trying to sell you a copy of Metro-X here. I
|
||
don't use it -- and I specifically choose videos cards
|
||
that are supported by XFree86 when I buy my equipments.
|
||
|
||
<p> Likewise I don't recommend Linux to my customers because
|
||
it "doesn't cost them anything." In fact it does cost
|
||
them the time it takes me to install, configure and maintain
|
||
it -- which goes for about $95/hr currently. I recommend
|
||
Linux because it is a better tool for many jobs -- and because
|
||
the benefits of it's being "free" -- in the GNU sense of the
|
||
term -- are an assurance that no one can "have them over a
|
||
barrel" for upgrades or additional "licensing" fees. They are
|
||
always *free* to deploy Linux on as many systems as they want,
|
||
have as many users and/or processes as they want on any system,
|
||
make their own modifications to the vast majority of tools
|
||
on the system or hire any consultants they want to make the
|
||
customizations they need.
|
||
|
||
<p> I'm sorry to be so "political" here -- but complaining
|
||
that Metro-X "costs money" and asking me for a way to
|
||
get around that just cost me about $50 worth of my time.
|
||
Heck -- I'll go double or nothing -- send my your postal
|
||
address and I'll buy you a copy of RedHat 4.1. That comes
|
||
with a license for one installation of Metro-X and only
|
||
costs about $50. I'll even cover the shipping and handling.
|
||
|
||
<p> (Please call them first to make sure that it really does
|
||
support your intended hardware configuration).
|
||
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
Thanks for the time,
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
No problem. (I did say "mildly" didn't I).
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="host"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Virtual Hosting
|
||
</h3>
|
||
<P><B>
|
||
From: Wietse Venema <a
|
||
href="mailto:wietse@wzv.win.tue.nl">wietse@szv.sin.tue.nl</a><br>
|
||
|
||
|
||
tcpd has supported virtual hosting for more than two years. Below
|
||
is a fragment from the hosts_access(5) manual page.
|
||
</B>
|
||
<p><B> Wietse
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Thanks for the quick response. I'll have to play with
|
||
that. I suppose a custom "virtual finderd" would
|
||
be a good experiment.
|
||
|
||
<p> Do you know where there are any working examples of this
|
||
and the twist option posted to the 'net? I fight with
|
||
some of these and don't seem to get the right results.
|
||
|
||
<p> What I'd like is an example that drops someone into a
|
||
chroot'd jail as "nobody" or "guest" and running a
|
||
copy of lynx if they are from one address -- but
|
||
lets them log in a a normal user if they are from an
|
||
internal address. (We'll assume a good anti-spoofing
|
||
packet-filter on the router(s)).
|
||
|
||
<p> Did you ever add the chrootuid functionality to tcpd?
|
||
|
||
<p> How would you feel about an option to combine the
|
||
hosts.allow and hosts.deny into just tcpd.conf?
|
||
|
||
<p> (I know I can already put all the ALLOW and DENY
|
||
directives in a single file -- and I'm not much of a
|
||
programmer but even *I* could patch my own copy to
|
||
change the filename -- I'm just talking about the
|
||
general case).
|
||
|
||
|
||
|
||
<p> SERVER ENDPOINT PATTERNS<br>
|
||
In order to distinguish clients by the network address
|
||
that they connect to, use patterns of the form:
|
||
<pre>
|
||
process_name@host_pattern : client_list ...
|
||
</pre>
|
||
|
||
<p> (which is what he said one to me when I suggested merging
|
||
his chrootuid code with tcpd).
|
||
|
||
<p> I've blind copied Wietse on this (Hi!). I doubt he has
|
||
time to read the Linux Gazette.
|
||
|
||
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="response"</a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Response from Weitse Venema
|
||
</h3>
|
||
<P><B>
|
||
From:Wietse Venema, <a href="mailto:wietse@wzv.win.tue.nl">wietse@wzv.win.tue.nl</a><br>
|
||
|
||
Do you know where there are any working examples of this
|
||
and the twist option posted to the 'net? I fight with
|
||
some of these and don't seem to get the right results.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Use "twist" to run a service that depends on destination address:
|
||
|
||
fingerd@host1: ALL: twist /some/where/fingerd-for-host1
|
||
<P><B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
What I'd like is an example that drops someone into a
|
||
chroot'd jail as "nobody" or "guest" and running a
|
||
copy of lynx if they are from one address -- but
|
||
lets them log in a a normal user if they are from an
|
||
internal address. (We'll assume a good anti-spoofing
|
||
packet-filter on the router(s)).
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I have a little program called chrootuid that you could use.
|
||
<P><B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
Did you ever add the chrootuid functionality to tcpd?
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I would do that if there was a performance problem. Two small
|
||
programs really is more secure than a bigger one.
|
||
<P><B>
|
||
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
How would you feel about an option to combine the
|
||
hosts.allow and hosts.deny into just tcpd.conf?
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
What about compatibility with 1 million installations world-wide?
|
||
<P><B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
(I know I can already put all the ALLOW and DENY
|
||
directives in a single file -- and I'm not much of a
|
||
programmer but even *I* could patch my own copy to
|
||
change the filename -- I'm just talking about the
|
||
general case).
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
This is because the language evolved over time. Compatibility can
|
||
become a pain in the rear.
|
||
|
||
<p>--
|
||
Weitse
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="file"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Automatic File Transfer
|
||
</h3>
|
||
<P><B>
|
||
From:Kenneth Ng, <a href="mailto:kenng@kpmg.com">kenng@kpmg.com</a><br>
|
||
|
||
In Linux Gazette, there is a mention of how to transfer files
|
||
automatically using ftp.
|
||
|
||
Here is how:
|
||
<pre>
|
||
#!/bin/csh
|
||
ftp -n remote.site << !
|
||
user joe blow
|
||
binary
|
||
put newfile
|
||
quit
|
||
!
|
||
</pre>
|
||
</B>
|
||
<p><B>And that's it. Granted ssh is better. But sometimes you have to go
|
||
somewhere that
|
||
only supports ftp.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
That's one of several ways. Another is to use ncftp
|
||
-- which supports things like a "redial" option to keep
|
||
trying a busy server until it gets through. ncftp also has
|
||
a more advanced macro facility than the standard .netrc (FTP).
|
||
|
||
<p> You can also use various Perl and Python libraries (or classes)
|
||
to open ftp sessions and control them. You could use 'expect'
|
||
to spawn and control the ftp program.
|
||
|
||
<p> All of these methods are more flexible and much more robust
|
||
than using the standard ftp client with redirection ("here"
|
||
document or otherwise).
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="ftpd"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Installing wu-ftpd on a Linux Box
|
||
</h3>
|
||
<P><B>
|
||
From: Stephen P. Smith, <a href="mailto:ischis@evergreen.com">ischis@evergreen.com</a><br>
|
||
|
||
I just installed wu-ftpd on my linux box. I have version 2.4.
|
||
I can login under one of my accounts on the system and everything
|
||
works just fine.
|
||
</B>
|
||
<p><B>If I try an anonymous ftp session, the email password is rejected.
|
||
|
||
what are the possible sources of failure?
|
||
where should i be going for more help? :-)
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Do you have a user named 'ftp' in the /etc/passwd file?
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
done.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
wu-ftpd takes that as a hint to allow *anonymous* FTP.
|
||
If you do have one -- or need to create one -- be sure that
|
||
the password for it is "starred out." wu-ftpd will not
|
||
authenticate against the system password that's defined for a
|
||
a user named "ftp."
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
done.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
You should also set the shell to something like /bin/false or
|
||
/bin/sync (make sure that /bin/false is really a binary and
|
||
*not* a shell script -- there are security problems -- involve
|
||
IFS (inter-field separators) if you use a shell script in the
|
||
/etc/passwd shell field).
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
done.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
There is an FAQ for anonymous FTP (that's not Linux specific).
|
||
There is also a How-To for FTP -- that is more Linux oriented.
|
||
If you search Yahoo! on "wu-ftp" you'll find the web pages
|
||
at Washington University (where it was created) and at
|
||
academ.com -- a consulting service that's taken over development
|
||
of the current beta's.
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>Guess I will just have to do it the hard
|
||
way. Will tell you what I find (just in
|
||
case you want to know.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
What does your /etc/ftpaccess file look like?
|
||
|
||
<p> Did you compile a different path for the ftpaccess file
|
||
(like /usr/local/etc/)?
|
||
|
||
<p> What authentication libraries are you using (old
|
||
fashioned DES hashes in the /etc/passwd, shadow,
|
||
shadow with MD5 hashes -- like FreeBSD's default,
|
||
or the new PAM stuff)?
|
||
|
||
<p> Is this invoked through inetd.conf with tcpd
|
||
(the TCP Wrappers)? If so, what does your /var/log/messages
|
||
say after a login failure? (Hint: use the command:
|
||
'tail -f /var/log/messages > /dev/tty7 &' to leave a continuously
|
||
updated copy of the messages file sitting on one of your
|
||
-- normally unused -- virtual consoles).
|
||
<p>
|
||
One trick I've used to debug inetd launched programs (like
|
||
ftpd and telnetd) is to wedge a copy of strace into the
|
||
loop. Change the reference to wu.ftpd to trace.ftpd --
|
||
create a shell or perl script named trace.ftpd that consists
|
||
of something like:
|
||
<pre>
|
||
#! /bin/sh
|
||
exec strace -o /tmp/ftpd.strace /usr/sbin/wu.ftpd
|
||
</pre>
|
||
<p> ... and then inspect the strace file for clues about
|
||
what failed. (This is handy for finding out that the
|
||
program couldn't find a particular library or configuration
|
||
file -- or some weird permissions problems, etc).
|
||
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="boot"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Trying to Boot a Laptop
|
||
</h3>
|
||
<P><B>
|
||
From: Yash Khemani, <a href="mailto:khemani@plexstar.com">khemani@plexstar.com</a><br>
|
||
|
||
I've got a Toshiba satellite pro 415cs notebook computer on which I've
|
||
installed RedHat 4.1. RedHat 4.1 was installed on a jaz disk connected
|
||
via an Adaptec slimscsi pcmcia adapter. the installation went
|
||
successfully, i believe, up until the lilo boot disk creation. i
|
||
specified that i wanted lilo on a floppy - so that nothing would be
|
||
written to the internal ide drive and also so that i could take the
|
||
installation and run it at another such laptop. after rebooting, i
|
||
tried booting from the lilo floppy that was created, but i get nothing
|
||
but continuous streams of 0 1 0 1 0 1...
|
||
</B>
|
||
<p><B>i am guessing that the lilo floppy does not have on it the pcmcia
|
||
drivers. what is the solution at this point to run RedHat on this
|
||
machine?
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
You've got the right idea.
|
||
The 1010101010101... from LILO is a dead giveaway that
|
||
your kernel is located on some device that cannot be
|
||
accessed via the BIOS.
|
||
|
||
<p> There are a couple of ways to solve the problem.
|
||
I'd suggest LOADLIN.EXE.
|
||
|
||
<p> LOADLIN.EXE is a DOS program (which you might have
|
||
guessed by the name) -- which can load a Linux kernel
|
||
(stored as a DOS file) and pass it parameters (like
|
||
LILO does). Basically LOADLIN loads a kernel (Linux or
|
||
FreeBSD -- possibly others) which then "kicks" DOS
|
||
"out from under it." In other words -- it's a one-way
|
||
trip. The only way back to DOS is to reboot (or
|
||
run dosemu ;-) .
|
||
|
||
<p> LOADLIN is VCPI compatible -- meaning that it can run
|
||
from a DOS command prompt even when you have a memory
|
||
manager (like QEMM) loaded. You can also set LOADLIN
|
||
as your "shell" in the CONFIG.SYS. That's particularly
|
||
handy if you're using any of the later versions of DOS
|
||
that support a multi-boot CONFIG.SYS (or you're using the
|
||
MBOOT.SYS driver that provided multi-boot features in
|
||
older versions of DOS).
|
||
|
||
<p> To use LOADLIN you may have to create a REALBIOS.INT
|
||
file (a map of the interrupt vectors that are set by
|
||
your hardware -- before any drivers are loaded).
|
||
To do this you use a program (REALBIOS.EXE) to create
|
||
a special boot floppy, then you boot off that floppy
|
||
(which records the interrupt vector table in a file)
|
||
-- reboot back off your DOS system and run the second
|
||
stage of the REALBIOS.EXE.
|
||
|
||
<p> This little song and dance may be necessary for each
|
||
hardware configuration. (However you can save and
|
||
copy each of the REALBIOS.INT files if you have a
|
||
couple of configurations that you switch between --
|
||
say, with a docking station and without).
|
||
|
||
<p> With LOADLIN you could create a DOS bootable floppy,
|
||
with a copy of LOADLIN.EXE and a kernel (and the
|
||
REALBIOS.INT -- if it exists). All of that will
|
||
just barely fit on a 1.44M floppy.
|
||
|
||
<p> Another way to do this would be to create a
|
||
normal DOS directory on your laptop's IDE drive --
|
||
let's call it C:\LINUX (just to be creative).
|
||
|
||
<p> Then you'd put your LOADLIN.EXE and as many different
|
||
kernels as you liked in that directory -- and maybe
|
||
a batch file (maybe it could be called LINUX.BAT) to
|
||
call LOADLIN with your preferred parameters. Here's a
|
||
typical LINUX.BAT:
|
||
<pre>
|
||
@ECHO OFF
|
||
ECHO "About to load Linux -- this is a one-way trip!"
|
||
PAUSE
|
||
LOADLIN lnx2029.krn root=/dev/sda1 ro
|
||
</pre>
|
||
<p> (where LNX2029.KRN might be a copy of the Linux-2.0.29
|
||
kernel -- with a suitable DOS name).
|
||
|
||
<p> I'd also recommend another batch file (SINGLE.BAT) that
|
||
loads Linux in single-user mode (for fixing things when
|
||
they are broken). That would replace the LOADLIN line
|
||
in the LINUX.BAT with a line like:
|
||
|
||
<pre> LOADLIN lnx2029.krn single root=/dev/sda ro
|
||
</pre>
|
||
<p> Another way to do all of this is to simply dd a
|
||
properly configured kernel to a floppy. You use the
|
||
rdev command to patch the root device flags in the
|
||
kernel and dump it to a floppy. This works because
|
||
a Linux kernel is designed to work as a boot image.
|
||
The only problem with this approach is that it doesn't
|
||
allow you to pass any parameters to your kernel (to
|
||
force single user mode, to select an alternate root
|
||
device/filesystem, or whatever).
|
||
|
||
<p> For other people who have a DOS system and want to
|
||
try Linux -- but don't want to "commit" to it with
|
||
a "whole" hard drive -- I recommend DOSLINUX.
|
||
|
||
<p> A while back there was a small distribution called
|
||
MiniLinux (and another called XDenu) which could
|
||
install entirely within a normal DOS partition --
|
||
using the UMSDOS filesystem. Unfortunately MiniLinux
|
||
has not been maintained -- so it's stuck with a 1.2
|
||
kernel and libraries.
|
||
|
||
<p> There were several iterations of a distribution called
|
||
DILINUX (DI= "Drop In") -- which appears to have eventually
|
||
evolved into DOSLINUX. The most recent DOSLINUX seems was
|
||
uploaded to the Incoming at Sunsite within the last two
|
||
weeks -- it includes a 2.0.29 kernel.
|
||
|
||
<p> The point MiniLinux and DOSLINUX is to allow one to install
|
||
a copy of Linux on a DOS system as though it were a DOS
|
||
program. DOSLINUX comes as about 10Mb of compressed
|
||
files -- and installs in about 20-30Mb of DOS file space.
|
||
It includes Lynx, Minicom, and a suite of other utilities
|
||
and applications.
|
||
|
||
<p> All in all this is a quick and painless way to try Linux.
|
||
So, if you have a DOS using friend who's sitting on the fence,
|
||
give them a copy of DOSLINUX and show them how easy it is.
|
||
|
||
<p><img align=bottom alt=" " src="../gx/ques.gif">
|
||
<P><B>
|
||
thanks!<br>
|
||
yash
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
You're welcome.
|
||
|
||
(Oh -- you might want to get those shift keys fixed --
|
||
e.e. cummings might sue for "look and feel")
|
||
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="zmode"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
zmodem Reply
|
||
</h3>
|
||
|
||
From: Donald Harter Jr., <a href="mailto:harter@mufn.org">harter@mufn.org</a><br>
|
||
|
||
I saw your post about zmodem in the Linux Gazette. I can't answer the
|
||
readers question, but maybe this will help. My access to the internet is a
|
||
dial in account(no slip, no ppp). I access the freenets. I can't use
|
||
zmodem to transfer files from the internet and freeenets to my pc. I can
|
||
use kermit though. It seems that there are some control characters involved
|
||
in zmodem that prevent it from being used with my type of connection. I saw
|
||
a some information about this on one of the freenets. They suggested using
|
||
telix and another related protocol. I tried that, but it didn't work
|
||
either. Kermit is set up to run slow. You can get kermit to go faster in
|
||
certain circumstances by executing its "FAST" macro. I can download data at
|
||
about 700cps with the "FAST" macro of kermit. Unfortunately kermit hangs up
|
||
the line for me so I have to "kill -9 kermitpid" to exit it. That problem
|
||
can probably be eliminated with the right compile options. In certain cases
|
||
I can't use the "FAST" macro when uploading.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I'm familiar with C-Kermit. In fact I may have an
|
||
article in the June issue of SysAdmin magazine on that very
|
||
topic.
|
||
|
||
<p> The main points of my article are that C-Kermit is a
|
||
telnet and rlogin client as well as a serial communications
|
||
program -- and that it is a scripting language that's
|
||
available on just about every platform around.
|
||
|
||
<p> I know about Telix' support for the kermit transfer protocol.
|
||
It sucks. On my main system I get about 1900 cps for
|
||
ZMODEM transfers -- about 2200 for kermit FAST (between
|
||
a copy of C-Kermit 5A(188) and 6.0.192 and about 70 cps
|
||
(yes -- seventy!) between a copy of C-Kermit and Telix'
|
||
internal kermit.
|
||
|
||
<p> Other than that I've always liked Telix. Minicom has
|
||
nice ncurses and color -- but is not nearly as featureful
|
||
or stable as either Telix for DOS or any version of C-Kermit.
|
||
|
||
<p> Your line hangups probably have to do with your settings for
|
||
carrier-watch. Try SET CARRIER-WATCH OFF or ON and see if
|
||
it still "hangs" your line. I suspect that its actually just
|
||
doing read() or write() calls in "blocking" mode. You might
|
||
have to SET FLOW-CONTROL NONE, too. There are lots of
|
||
C-Kermit settings. If you continue to have trouble -- post
|
||
a message to the comp.protocols.kermit.misc newsgroup
|
||
(preferred) or send a message to kermit-support@columbia.edu.
|
||
|
||
<p> When I first started using C-Kermit (all of about two months
|
||
ago) my initial questions where answered by Frank da Cruz
|
||
himself (he's the creator of the Kermit protocol and the
|
||
technical lead of the Kermit project at Columbia University).
|
||
(That was before he knew that I'm a "journalist" -- O.K.
|
||
quit laughing!). Frank is also quite active in the newsgroup.
|
||
I think he provides about 70 or 80 per cent of the technical
|
||
support for the project.
|
||
|
||
<p> Oh yeah! If you're using C-Kermit you should get the
|
||
_Using_C-Kermit_ book. It was written by Frank da Cruz and
|
||
Christine Gianone -- and is the principal source of funding
|
||
for the Kermit project. From what I gather a copy of the
|
||
book is your license to use the software.
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="start"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
StartX
|
||
</h3>
|
||
<P> <B>
|
||
From: Robert Rambo, <a href="mailto:robert.rambo@yale.edu">robert.rambo@yale.edu</a><br>
|
||
|
||
Hi, I was wondering if you can help me out. When I use the command
|
||
'startx -- -bpp16' to change the color depth, the windows in X are much
|
||
bigger than the monitor display. So, nothing fits properly and
|
||
everything has become larger. But the color depth has changed
|
||
correctly. I use FVWM as my display manager. Is there some way to fix
|
||
this problem?
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
If using the 16 bit plan (16bpp) mode to increase
|
||
your color depth -- that suggests that selecting this
|
||
mode is causing the server to use a lower resolution.
|
||
|
||
<p> That is completely reasonable. If you have a 2Mb video
|
||
card and you run it in 1024x768x256 or 1024x768x16 --
|
||
then you try to run it with twice as many colors --
|
||
the video RAM has to come from somewhere. So it
|
||
bumps you down to 800x600 or 640x480. These are just
|
||
examples. I don't deal with graphics much so I'd have
|
||
to play with a calculator to figure the actual maximum
|
||
modes that various amounts of video RAM could support.
|
||
|
||
<p> There are alot of settings in the XConfig file. You
|
||
may be able to tweak them to do much more with your
|
||
existing video card. As I've said before -- XConfig
|
||
files are still magic to me. They shifted from blackest
|
||
night to a sort of charcoal gray -- but I can't do them
|
||
justice in a little article hear. Pretty much I'd have
|
||
to lay hands on it -- and mess with it for a couple of
|
||
hours (and I'm definitely not the best one for that job).
|
||
|
||
<p> If you haven't upgraded to a newer XFree86 (3.2?) then
|
||
this would be a good time to try that. The newer one
|
||
is much easier to configure and supports a better selection
|
||
of hardware -- to a better degree than the older versions.
|
||
I haven't heard of any serious bugs or problems with
|
||
the upgrades.
|
||
|
||
<p> You may also want to consider one of the commercial servers.
|
||
Definitely check with them in advance to be absolutely certain
|
||
that your hardware is supported before you buy. Ask around in
|
||
the newsgroups for opinions about your combination of hardware.
|
||
It may be that the XFree86 supports you particular card better
|
||
than Metro-X or whatever.
|
||
|
||
<p> You may also want to look at beefing up your video hardware.
|
||
As I've said -- I don't know the exact figures -- but I'd
|
||
say that you probably need a 4Mb card for anything like
|
||
16bpp at 1024x768. You should be able to look up the
|
||
supported modes in your card's documentation or on the
|
||
manufacturer's web site or BBS.
|
||
|
||
|
||
<B><P><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Also, is there some way to change the color depth
|
||
setting to start X with a depth of 16 every time. I do not use the XDM
|
||
manager to initiate an X session.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Yes -- it's somewhere in that XConfig file. I don't
|
||
remember the exact line. I really wish a bona fide GUI
|
||
X wiz would sign up for some of this "Answer Guy" service.
|
||
|
||
<p> It doesn't matter whether you use xdm or not. If you
|
||
put the desired mode in the XConfig file. However --
|
||
since you don't you could just write your own wrapper
|
||
script, alias or shell function to call 'startx' with
|
||
the -- -bpp16 options. You could even re-write 'startx'
|
||
(it is just a shell script). That may seem like cheating --
|
||
but it may be easier than fighting your way through the
|
||
XConfig file (do you get the impression that I just don't
|
||
like that thing -- it is better than a WIN.INI or a
|
||
SYSTEM.INI -- but not be much).
|
||
|
||
|
||
<p>
|
||
--
|
||
Jim Dennis,
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="imap"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
IMAP and Linux
|
||
</h3>
|
||
<P> <B>
|
||
From: Brian Moore, <a
|
||
href="mailto:bem@thorin.cmc.net">bem@thorin.cmc.net</a><br>
|
||
|
||
Being a big IMAP fan (and glad to see it finally getting recognition:
|
||
Netscrape 4 and IE4 will both support it), your answer left a lot out.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Will these support the real features (storing and
|
||
organizing folders on the server side)?
|
||
|
||
<p> I heard that NS "Communicator" (the next release
|
||
Netscape's Navigator series is apparently going to
|
||
come with a name change) supports IMAP -- but it's
|
||
possible to implement this support as just a variant
|
||
of POP -- get all the message and immediately
|
||
expunge all of them from the server.
|
||
|
||
<p> It seems that this is how Eric S. Raymond's 'fetchmail'
|
||
treating IMAP mail boxes -- as of about 2.5 (it seems
|
||
that he's up to 3.x now)
|
||
|
||
<P><img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>The easiest IMAP server to install is certainly the University of
|
||
Washington server. It works, handles nearly every mailbox format around
|
||
and is very stable. It's also written by the guy in charge of the IMAP
|
||
spec itself, Mark Crispin.
|
||
|
||
As for clients, there is always Pine, which knows how to do IMAP quite
|
||
well. This is part of most Linux distributions as well.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I did mention pine. However it's not my personal favorite.
|
||
|
||
Do you know of a way to integrate IMAP with emacs mh-e/Gnus
|
||
(or any mh compatible folder management system)?
|
||
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>For GUI clients there is ML, which is a nice client, but requires Motif
|
||
and can be slow as sin over a modem when you have a large mailbox.
|
||
That's available in source at
|
||
http://www-CAMIS.Stanford.EDU/projects/imap/ml
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I thought I mentioned that one as well -- but it's
|
||
a blur to me.
|
||
|
||
<p> I personally avoid GUI's like the plague. I'm
|
||
typing this from my laptop, through a null modem link
|
||
to my machine in the other room.
|
||
|
||
<p> I run emacs under screen -- so I can use mh-e for most
|
||
mail, Gnus for netnews and for some of my mailing lists
|
||
(it can show news folders as though they were threaded
|
||
news groups). screen allows me to detach my session from
|
||
my terminal so I can log out, take off with the laptop,
|
||
and re-attach to the same session later (via modem or when
|
||
I get back home).
|
||
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>Asking on the mailing list about static linked linux versions will get
|
||
you one (and enough nagging may get them to actually put one of the
|
||
current version up).
|
||
|
||
ML is really the nicest mail client I have ever used.
|
||
|
||
As for pop daemons with UIDL support, go for qpopper from qualcomm.
|
||
ftp.qualcomm.com somewhere. Has UIDL and works fine.
|
||
</B><P>
|
||
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
O.K. I'll at that to my list.
|
||
|
||
<p> Does that one also support APOP's authentication
|
||
mechanism (which I gather prevents disclosing your
|
||
password over an untrusted network by using something
|
||
like an MD5 hash of your password concatenated with
|
||
a date and time string -- or something like that)?
|
||
|
||
<p> Does qpopper allow you to maintain a POP user account
|
||
file that's separate from your /etc/passwd file?
|
||
|
||
<p> Do you know of an IMAP server that supports these
|
||
sorts of features (secure authentication and separate
|
||
user base)?
|
||
|
||
<p> (I know this probably seems like a switch -- the
|
||
so called "Answer Guy" asking all the questions --
|
||
but hey -- I've got to get my answers from *somewhere*)
|
||
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
<a name="imap2"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
More IMAP
|
||
</H3><P> <B>
|
||
From: Graham Todd, <a href="mailto:gtodd@yorku.ca">gtodd@yorku.ca</a>
|
||
<br>
|
||
|
||
PINE - one of the easiest to use mail clients around - does IMAP just
|
||
fine. You can read mail from multiple servers and mailboxes and save
|
||
it locally or in remote folders on the servers - which is what IMAP is
|
||
all about: Internet Message Access Protocol = flexible and
|
||
configurable *access* to mail servers without having to pop and fetch
|
||
messages all over the place (but still having the ability save locally
|
||
if you want).
|
||
</B>
|
||
<p><B>The Netscape's Communicator 4.0b2 thing does too but there are so many
|
||
other ugly bits that I'm not gonna bite.
|
||
</B>
|
||
<p><B>Jeez pretty soon with this fancy new IMAP stuff you'll be able to do
|
||
almost as much as you can right now with emacs and ange-ftp (which I
|
||
use regularly to access remote mail folders and boxes with out having
|
||
to login - it's all set up in .netrc).
|
||
|
||
Of course the answer is almost always "emacs" .... BTW Linux
|
||
makes a GREAT program loader for emacs ;-)
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Seems kind of kludgey. Besides -- does that
|
||
give you the main feature that's driving the creation
|
||
of the IMAP/ACAP standards? Does it let you
|
||
store your mail on a server and replicate that to
|
||
a couple of different machines (say your desktop and
|
||
your laptop) so you can read and respond to mail "offline"
|
||
and from *either* system?
|
||
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
Yeah, more or less. If you save the mail on your server to local
|
||
folders or make a local folder be /me@other.mail.host:/usr/spool/me.
|
||
Using ange-ftp to me seem exactly like IMAP in Pine or Netscape
|
||
communicator 4.0b2. Though apparently IMAP will update folders across
|
||
hosts so that only that mail deleted locally (while offline) will get
|
||
deleted on the remote host on the next login etc. etc. I don't know
|
||
much about IMAP's technical standard either but find I get equal mail
|
||
management capability from ange-ftp/VM. (equal to Pine and
|
||
Communicator so far).
|
||
</B>
|
||
<p><B>WARNING: In a week or so when I get time I'm gonna ask you a tricky
|
||
question about emacs and xemacs.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Feel free. Of course I do know a bit more about emacs
|
||
than I do about X -- so you may not like my answer much.
|
||
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
Heh heh OK...
|
||
|
||
|
||
(comp.emacs.xemacs is silent on this). Emacs running as emacs -nw in
|
||
a tty (i.e console or an xterm) runs fine and lets me use all the job
|
||
control commands (suspend/fg etc) but with Xemacs job control won't
|
||
work unless I'm running as root. That is if I'm running "xemacs" or
|
||
"xemacs -nw" in an xterm or at the console and do C-z and then once
|
||
I'm done in the shell I do "fg", xemacs comes back but the keyboard
|
||
seems to be bound to the tty/console settings (Ctrl-z Ctrl-s Ctrl-q
|
||
etc all respond as if I were in a dumb terminal). The only recourse
|
||
is to Ctrl-z back out and kill xemacs. This does not happen if I run
|
||
xemacs setuid root (impractical/scary) or as root (scary). Something
|
||
somewhere that requires root permission or suid to reset the tty
|
||
characteristics doesn't have it in xemacs - but does in emacs...
|
||
|
||
My only response so far has been that "you'll have to
|
||
rebuild/recompile your xemacs" - but surely this wrong. Does anything
|
||
more obvious occur to you? I feel it must be something simple in my
|
||
set up (RH Linux 2.0.29). Of course if I could get this fixed I'd
|
||
start feeling more comfortable not having GNU-Emacs on my machine ;-)
|
||
which may not be an outcome you would favour.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I once had a problem similar to this one -- suspending
|
||
minicom would suspend the task and lock me out of it.
|
||
|
||
It seemed that the ownership of the tty was being
|
||
changed.
|
||
|
||
<p> So -- the question comes up -- what permissions are set on
|
||
your /dev/tty* nodes. It seems that most Linux distributions
|
||
are set up to have the login process chown the these to to the
|
||
current user (and something seems to restore them during or after
|
||
logout).
|
||
|
||
<p> I don't know enough about the internals of this process.
|
||
I did do a couple of experiments with the 'script' command
|
||
and 'strace' using commands like:
|
||
|
||
<pre> strace -o /tmp/strace.script /usr/bin/script</pre>
|
||
|
||
<p> ... and eyeballing the trace file. This shows how the
|
||
script command (which uses a psuedo tty -- or pty) searches
|
||
for an available device.
|
||
|
||
<p> I then did a simple 'chown 600 /dev/ttyp*' as root
|
||
(this leaves a bunch of /dev/ttyq* and /dev/ttyr nodes
|
||
available). The 'script' command then reports that
|
||
the system is "out of pty's."
|
||
|
||
<p> Obviously the script command on my system don't
|
||
do a very thorough search for pty's. It effectively
|
||
only looks at the first page of them.
|
||
|
||
<p> The next test I ran was to add a new line to my
|
||
/etc/services file (which I called stracetel) -- and
|
||
a new line to me /etc/inetd.conf that referred to it.
|
||
|
||
<p> This line looks like this:
|
||
<pre>
|
||
stracetel stream tcp nowait root /usr/sbin/tcpd \
|
||
/usr/bin/strace -o /root/tmp/t.strace /usr/sbin/in.telnetd
|
||
</pre>
|
||
<p> ... all on one line, of course.
|
||
|
||
<p> Then I connected to that with the command:
|
||
|
||
<pre> telnet localhost stracetel</pre>
|
||
|
||
<p> This gives me an strace of how telnetd handles the
|
||
allocation and preparation of a pty. Here, as I suspected,
|
||
I saw chown() and chmod() calls after telnetd did it's
|
||
search through to list of pty's to find the first one.
|
||
|
||
<p> Basically both programs (and probably most other
|
||
pty clients) attempt to open each pty until one returns
|
||
a valid file descriptor or handle. (It might be nice
|
||
if there was a system call or a daemon that would allow
|
||
programs to just say "give me a pty" -- rather than forcing
|
||
a flurry of failed open attempts -- but that's probably too
|
||
much to ask for.
|
||
|
||
<p> There result of these experiments suggests that there
|
||
are many ways of handling pty's -- and some of them may
|
||
have to be set as compile time options for your system.
|
||
|
||
<p> It may be that you just need to make all the pty's
|
||
mode 666 (which they are on my system) or you might
|
||
chgrp them to a group like tty or pty, make them mode
|
||
660 and make all the pty using programs on your system
|
||
SGID.
|
||
|
||
<p> I've noticed that all of my pty's are 666 root.root
|
||
(my tty's root.tty and ttyS*'s are root.uucp all are
|
||
mode 660 and all programs that need to open them are
|
||
either root run (getty) or SGID as appropriate).
|
||
|
||
<p> Some of the policies for ownership and permissions are
|
||
set my your distribution. Red Hat 2.x is *old* and
|
||
some of these policies may have changed in the 3.03 and
|
||
4.1 releases. Mine is a 3.03 with *lots* of patches,
|
||
updated RPM's and manually installed tarballs.
|
||
|
||
<p> Frankly I don't know *all* of the security implications
|
||
of having your /dev/tty* set to mode 666. Obviously
|
||
normal attempt to open any of these while they're in
|
||
use return errors (due to the kernel locking mechanisms).
|
||
Other attempts to access them (through shell redirection,
|
||
for example) seem to block on I/O. I suspect that a
|
||
program that improperly opened it's tty (failed to
|
||
set the "exclusive" flag on the open call) would be
|
||
vulnerable.
|
||
|
||
|
||
<p> Since you're an emacs fan -- maybe you can tell me --
|
||
is there an mh-e/Gnus IMAP client?
|
||
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
|
||
No Kyle Jones (VM maintainer/author) has said maybe IMAP4 for VM
|
||
version 7. I think his idea is to make VM do it what it does well and
|
||
rely on outside packages to get the mail to it ...
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Also -- isn't there a new release of ange-ftp --
|
||
I forget the name -- but I'm sure it changed named too.
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<P><B>
|
||
Yes it's called EFS - it preserves all the functionality but is more
|
||
tightly meshed with dired - supposedly it will be easier to use EFS in
|
||
other elisp packages (I don't know why or how this would be so).
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I'll have to play with those a bit.
|
||
Can VM handle mh style folders?
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="uucp"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
UUCP Questions
|
||
</h3>
|
||
<P> <B>
|
||
From: David J. Weis, <a
|
||
href="mailto:weisd3458@uni.edu">weisd3458@uni.edu</a><br>
|
||
|
||
|
||
I had a couple minor questions on UUCP. If you have a few minutes, I'd
|
||
appreciate the help immensely. I'll tell you a little bit about what we're
|
||
doing.
|
||
</B><P>
|
||
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Glancing ahead -- I'd guess that this would take quite a bit
|
||
more than a few minutes.
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>My company has a domain name registered (plconline.com) and two offices.
|
||
One is the branch office which is located in the city with the ISP. The
|
||
head office is kind of in the sticks in western Iowa. I've been
|
||
commissioned to find out how difficult it would be to set up the uucp so
|
||
the machine in Des Moines (the big city ;-) would grab all the domain mail
|
||
and then possibly make a subdomain like logan.plconline.com for all the
|
||
people in the main office to use email.
|
||
</B>
|
||
<p><B>This would all be running on RedHat 4 over dialup uucp. The system in Des
|
||
Moines uses uucp over tcp because it has to share the line with
|
||
masquerading, etc.
|
||
</B>
|
||
<p><B>Thanks for any advice or pointers you have.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif"><br>
|
||
|
||
Unfortunately I this question is too broad to answer
|
||
via e-mail. O'Reilly has a whole book on uucp and
|
||
there are several HOW-TO's for Taylor UUCP and
|
||
sendmail under Linux.
|
||
|
||
<p> My uucp mostly works but I haven't configured it to
|
||
run over TCP yet. I also haven't configured my
|
||
system to route to any uucp hosts within my domain.
|
||
|
||
<p> You can address mail to a uucp host through a
|
||
DNS by using the '%' operator. For example I can
|
||
get my main mail system (antares.starshine.org) to
|
||
forward mail to my laptop using an address like:
|
||
|
||
<pre> jim%mercury@starshine.org</pre>
|
||
|
||
<p> ... the DNS MX record for starshine.org routes
|
||
mail to my ISP. My ISP then spools it up in UUCP
|
||
until my machine (antares) picks it up. The
|
||
name antares is basically transparent to most of
|
||
this process.
|
||
|
||
<p> When antares gets the mail it converts the
|
||
percent sign into a "bang" (!) and spools it
|
||
for mercury (which happens to be my laptop).
|
||
|
||
<p> Obviously requiring all of your customers and
|
||
correspondents to use percent signs in their addressing
|
||
to your users is not going to work very well. It will
|
||
probably result in alot of lost mail, alot of complaints
|
||
and a constant barrage of support calls.
|
||
|
||
<p> There are two ways to make your internal mail routing
|
||
transparent to the rest of world. You can create a
|
||
master aliases list on your mail hub (the easy way) or
|
||
you can create DNS and MX entries for each of the hosts.
|
||
|
||
<p> If you'd like more help we could arrange to talk on
|
||
the phone. UUCP is difficult to set up for the first
|
||
time (nearly vertical initial learning curve). Once it's
|
||
set up it seems to be pretty low maintenance. However
|
||
my meta-carpus can't handle explaining the whole process
|
||
via e-mail (and I don't understand enough of it well to
|
||
be brief).
|
||
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="flops"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Using MS-DOS Floppies
|
||
</h3>
|
||
<P> <B>
|
||
From: Barry, <a
|
||
href="mailto:remenyi@hotmail.com">remenyi@hotmailcom</a><br>
|
||
|
||
Hi, I have a problem that I can't find the solution to:
|
||
</B>
|
||
<p><B>I run Redhat 4.1 with mtools already installed, with it, I can copy a
|
||
file to or from a dos disk in A: with mcopy etc..
|
||
But if I change the disk & do mdir, it tells gives me the listing of
|
||
what was in the last disk. The only solution is to wait hours for the
|
||
cache to expire before I can look at another disk.
|
||
</B>
|
||
<p><B>The problem occurs no matter how I access the floppy, I also tried using
|
||
dosemu, and mount, but I have the same problem. I can read and write
|
||
from the first disk that I put in with no problems, but if I change the
|
||
disk, the computer acts as if the first disk is still in the drive. It
|
||
also doesn't matter who I am loged in as eg. root has the same problem.
|
||
I also upgraded mtools to 3.3 but no change.
|
||
</B>
|
||
<p><B>Is there some way to disable the disk cache (I assume thats the problem)
|
||
for the floppy drive?
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
You probably have a problem with the "change disk" detection
|
||
circuitry on your floppy.
|
||
|
||
<p> There's a pretty good chance that you'd see the same thing
|
||
under DOS too.
|
||
|
||
<p> Unfortunately I don't know of an easy way to solve this
|
||
problem. You could try replacing the floppy ($30 or so)
|
||
the controller ($20 -- to ???) and/or the cable.
|
||
|
||
<p> If that's not feasible in your case you could try something
|
||
like a mount/sync/umount (on a temporary mount point).
|
||
This might force the system to detect the new floppy. It's
|
||
very important not to try to write anything to a floppy when the
|
||
system is confused about which floppy is in there.
|
||
|
||
<p> DOS systems that I have used -- while they were afflicted
|
||
with this problem -- sometimes severely trash the directories
|
||
on a diskette in that situation.
|
||
|
||
<p> It probably doesn't even matter if the mount, sync, umount
|
||
that I describe fails -- just so the system is forced to
|
||
"rethink" what's there. I'd consider writing a short script
|
||
to do this -- put a temporary mount point that's "user" accessible
|
||
to avoid having to be root to do this (and especially to avoid
|
||
having to create any SUID root perl scripts or write a C wrapper
|
||
or any of that jazz).
|
||
|
||
<p> Here's a sample line for your /etc/fstab:
|
||
|
||
<pre># /etc/fstab
|
||
/dev/fd0 /mnt/tmp umsdos noauto,rw,user 0 0</pre>
|
||
|
||
<p> (according to my man pages the "user" options should
|
||
imply the nosuid, nodev etc. options -- which prevent
|
||
certain other security problems).
|
||
|
||
<p> So your chdisk script might look something like:
|
||
|
||
<pre> #! /bin/sh
|
||
/bin/mount /mnt/tmp
|
||
/bin/sync
|
||
/bin/umount /mnt/tmp</pre>
|
||
|
||
<p> ... you could also just do a 'mount /mnt/tmp' or a
|
||
'mount /mnt/a' or whatever you like for your system --
|
||
and just use normal Linux commands to work with those
|
||
files. The mtools are handy sometimes -- but far from
|
||
indispensable on a Linux system with a good fstab
|
||
file.
|
||
|
||
<p> As a security note: mount must be SUID in order to
|
||
allow non-root users to mount filesystems. Since
|
||
there have been security exploits posted on mount
|
||
specifically and various other SUID files chronically,
|
||
I suggest configuring mount and umount such that they
|
||
can only be executed by members of a specific group
|
||
(like a group called "disk" or "floppy"). Then you
|
||
can add yourself and any other users who have a valid
|
||
reason to work at your console to that group. Finally
|
||
change the permissions on mount and umount to something
|
||
like:
|
||
|
||
<pre> -r-sr-x--- 1 root disk .... /bin/mount</pre>
|
||
|
||
<p> .... i.e. don't allow "other" to execute it.
|
||
|
||
<p> This also applies to all your SVGALib programs (which
|
||
should not be executed except from the console) and
|
||
as many of your other SUID programs as you can.
|
||
|
||
<p> (... it would be nice to do that to sendmail -- and
|
||
I've heard it's possible. However it's a bit trickier
|
||
than I've had time to mess with on this system).
|
||
|
||
<p> As PAM (pluggable authentication module) technology
|
||
matures you'll be able to configure your system to
|
||
dynamically assign group membership's based on
|
||
time of day and source of login (value of `tty`).
|
||
|
||
<p> This will be nice -- but it doesn't appear to be
|
||
quit ready yet.
|
||
|
||
<p>
|
||
--
|
||
Jim
|
||
<P><B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
I just wanted to write to thank you for you response to my mail.
|
||
I did as you suggested and the problem is solved!
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Actually, you were also right about the problem occurring in DOS as
|
||
I used to have a lot of floppies go bad before I went all the way
|
||
to linux, but I didn't make the connection.
|
||
<P><B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
Anyway, thanks again, you've made my day!
|
||
</B>
|
||
<p><B>Barry
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
You're welcome. I'm glad it wasn't something complicated.
|
||
BTW: which suggestion worked for you? Replacing one or
|
||
another componenent? Or did you just use the "mount, sync,
|
||
umount" trick?
|
||
|
||
<p> Under DOS I used to use Ctrl-C, from the COMMAND.COM A:
|
||
prompt to force disk change detection. You can use that
|
||
if you still boot this machine under DOS for some work.
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="inetd"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
inetd Questions
|
||
</h3>
|
||
<P> <B>
|
||
From: Benjamin Peikes, <a href="mailto:benp@npsa.com">benp@npsa.com</a><br>
|
||
|
||
Answer guy,<br>
|
||
|
||
I have two questions for you.
|
||
</B>
|
||
<p><B> 1) I'm using one machine with IPAliasing and was wondering if
|
||
there is a version of inetd built so that you can have different
|
||
servers spawned depending on the ip number connected to.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
That's an excellent question.
|
||
|
||
There is apparently no such feature or enhanced version of
|
||
inetd or xinetd.
|
||
|
||
<p> It also doesn't appear to be possibly to use TCP Wrapper
|
||
rules (tcpd, and the /etc/hosts.allow and /etc/hosts.deny)
|
||
to implement this sort of virtual hosting.
|
||
|
||
<p> So far it appears that all of the support for virtual hosting
|
||
is being done by specific applications. Apache and some other
|
||
web servers have support for it. The wu-ftpd's most recent
|
||
versions support it.
|
||
|
||
<p> I suspect that you could create a special version of
|
||
inetd.conf to open sockets on specific local IP addresses
|
||
and listen on those. I would implement that as a command
|
||
line option -- passing it a regex and/or list of ip addresses
|
||
to listen on after the existing command line option to
|
||
specify which configuration file to use. Then you'd load
|
||
different copies of this indetd with commands like:
|
||
|
||
<pre> /usr/sbin/inetd /etc/inetd.fred 192.168.14.0 17.18.0.0
|
||
/usr/sbin/inetd /etc/inetd.barney barneyweb
|
||
/usr/sbin/inetd /etc/inetd.wilma 192.168.2.3
|
||
</pre>
|
||
<p> (This would be something like -- all of the 192.168.14.*
|
||
address and all of the 17.18.*.* addresses are handled by
|
||
the first inetd -- all of the access to a host named
|
||
barneyweb (presumably looked up through the /etc/hosts file)
|
||
would be handled by the next inetd. and all of the accesses
|
||
to the ipalias 192.168.2.3 would be handled by the last one)
|
||
|
||
<p> This would allow one to retain the exact format of the
|
||
existing inetd files.
|
||
|
||
<p> However I don't know enough about sockets programming to
|
||
know how much code this would entail. The output of
|
||
'netstat -a' on my machine here shows the system listening
|
||
on *:smtp and *:telnet (among others). I suspect that those
|
||
stars would show up different if I had a socket open to
|
||
a specific service on a specific service.
|
||
|
||
<p> This scheme might use up to many file descriptors. Another
|
||
approach would be to have a modified tcpd. This would have
|
||
to have some option where by the destination *as well as*
|
||
the source was matched in the /etc/tcpd.conf file(s).
|
||
|
||
<p> (Personally I think that tcpd should be compiled
|
||
with a change -- so that the single tcpd.conf
|
||
file is used in preference to the /etc/hosts.allow
|
||
and /etc/hosts.deny files. Current versions do
|
||
support the single conf file -- but the naming is
|
||
still screwy).
|
||
|
||
<p> I'm not sure quite how Wietse would respond to this --
|
||
possibly by repeating the question:
|
||
|
||
<p> "If you want me to add that -- what should I
|
||
take OUT?"
|
||
|
||
<p> (which is what he said one to me when I suggested merging
|
||
his chrootuid code with tcpd).
|
||
|
||
<p> I've blind copied Wietse on this (Hi!). I doubt he has
|
||
time to read the Linux Gazette.
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>2) A related problem: I have one machine running as a mail server
|
||
for several domains where the users are using pop to get their
|
||
mail. The problem is that the From: line always has the name
|
||
of the server on it. Is there a way to use IPaliasing to fix
|
||
this? Or do I have to muck around with the sendmail.conf file?
|
||
</B><P>
|
||
|
||
<p> This is becoming a common question.
|
||
|
||
<p> Here's a couple of pointers to web sites and FAQ or HOWTO
|
||
documents that deal specifically with "Virtual Mail Hosting"
|
||
<ul>
|
||
<li><a href="http://www.sinbad.wantabe.com/virtualmail">How to Set up Sendmail for Virtual Domains</a>
|
||
<li><a href="http://www.qmail.org">qmail: A Replacement for Sendmail</a>
|
||
</ul>
|
||
<p> (look for references to "virtualdomains")
|
||
|
||
<p> ... and here's one guide to Virtual Web Hosting:
|
||
<ul>
|
||
<li><a href="http://inorganic5.fdt.net/ldp/HOWTO/mini/Virtual-Web">
|
||
Virtual Web Mini-HOWTO</a>
|
||
</ul>
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>I guess the best way to do this would be to change inetd to figure
|
||
out on which interface the connection has been made on and then
|
||
pick the correct inetd.conf to reference, like
|
||
<pre>
|
||
inetd.conf.207.122.3.8
|
||
inetd.conf.207.122.3.90</pre>
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
I would recommend that as a default behavior.
|
||
I suggested adding additional parameters to the
|
||
command line specifically because it could be done
|
||
without breaking any backward compatibility. The
|
||
default would be to simply work as it does now.
|
||
|
||
<p> I still suspect that this has some scalability problems
|
||
-- it might not be able to handle several hundred or several
|
||
thousand aliased addresses.
|
||
|
||
<p> I might still be useful to implement it as a variation of --
|
||
or enhancement to -- tcpd (TCP_Wrappers).
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>I think that inetd reads in the configuration file when it
|
||
starts because it needs a SIGHUP to force it to reread the conf
|
||
file. All you would have to do is make it reference the right table.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
This is also documented in the inetd man page.
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>Do you know where I could find the code? I would be interested
|
||
in looking at it?
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
The source code from inetd should be in the bundle
|
||
of sources that comes with the "NetKit"
|
||
|
||
<p> Look to:
|
||
|
||
<p><a href="ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/">ftp:..ftp.inka.de/pub/comp/Linux/networking/NetTools/</a>
|
||
|
||
<p> and mirrored at:
|
||
|
||
<p><a href="ftp://ftp.uk.linux.org/pub/linux/Networking/PROGRAMS/NetTools/>ftp://ftp.uk.linux.org/pub/linux/Networking/PROGRAMS/NetToos/</a>
|
||
|
||
<p> More information about Linux network code can be
|
||
found at:
|
||
|
||
<p><a href="ftp://sunsite.unc.edu/pub/Linux/system/network/NET-3-HOWTO">ftp://sunsite.unc.edu/pub/Linux/system/network/NET-3-HOWTO/</a>
|
||
|
||
<p> ... this includes the history of it's development and the
|
||
names of people who were active in it at various stages.
|
||
|
||
<p> If you're going to try to hack this together -- I'd suggest
|
||
a friendly posting to the comp.linux.development.system
|
||
newsgroup -- and possibly some e-mail to a couple of
|
||
carefully chosen people in the NET-3-HOWTO.
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="modem"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Navas Modem FAQ
|
||
</h3>
|
||
<P> <B>
|
||
From: John Doe
|
||
<br>
|
||
The next time you answer a modem question, you'd do well
|
||
to recommend reading of the very good Navas Modem FAQ at
|
||
<a href="http://www.aimnet.com/~jnavas/modem/faq.html">http://www.aimnet.com/~jnavas/modem/faq.html/</a>
|
||
</B><P><img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Well, here's someone who wants to make a anonymous
|
||
tip to "The Answer Guy."
|
||
|
||
|
||
<p>At "John Doe's" request I looked over this site. It
|
||
does have extensive information about modems -- including
|
||
lots of press releases about which companies are acquiring
|
||
each other (3Com over US Robotics, Quarterdeck gets DataStorm).
|
||
|
||
<p>However there didn't appear to be any references to Linux,
|
||
Unix or FreeBSD.
|
||
|
||
<p>So -- if one needs information about modems in general this
|
||
looks like an excellent site to visit. However it the question
|
||
pertains specifically to using your modem with Linux -- I'd
|
||
suggest:
|
||
|
||
<a href="http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html">http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html</a>
|
||
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="modem2"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Setting Up a Modem
|
||
</h3>
|
||
<P> <B>
|
||
From: Yang, <a href="mailto:lftian@ms.fudan.edu.cn">lftian@ms.fudan..edu.cn</a>
|
||
</br>
|
||
I have an AT 3300 card( from Aztech) which integrates the function of
|
||
sound card and 28.8K modem. It seems that it need a special driver for its
|
||
modem function to be work. In MSDOS, there is a aztpnp.exe for that
|
||
purpose. Do you know is there any way I can get the card work (at least its
|
||
modem function) in Linux?
|
||
</B><p>
|
||
<B>Tianming Yang
|
||
</B><P><img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I'm not familiar with that device. The
|
||
name of the driver suggests that this is a
|
||
Plug 'n Play (pnp) device (sometimes we use the
|
||
phrase "plug and *pray*" -- as it can be a toss
|
||
of the dice to see if they'll work as intended.
|
||
|
||
<p> My guess would be that this is a PCMCIA card
|
||
for a laptop system (which I personally pronounce
|
||
"piecemeal").
|
||
|
||
<p> Did you look in the "Hardware HOWTO" (start at
|
||
www.ssc.com, online mirror of FAQ's and HOWTO's)?
|
||
|
||
<p> Did you go to Yahoo! and do a keyword search on
|
||
the string:
|
||
|
||
<pre> linux +aztech</pre>
|
||
|
||
<p> ... (the plus sign is important there)?
|
||
|
||
<p> Since all of the real details about the configuration
|
||
of the card are determined by the manufacturer
|
||
(Aztech in this case) I would start by contacting
|
||
them.
|
||
|
||
<p> If they've never heard of Linux -- or express no
|
||
interest in supporting it -- please consider letting
|
||
them know that Linux support affects your purchasing
|
||
decisions. Also let them know that getting support
|
||
for Linux is likely to cost them very little.
|
||
|
||
|
||
<p> How to get a Linux driver for your hardware:
|
||
|
||
<p> If you are a hardware company that would like
|
||
to provide support for Linux and FreeBSD and other
|
||
operating systems -- but you don't have the
|
||
development budget -- just ask.
|
||
|
||
<p> That's right. Go to the comp.os.linux.development.system
|
||
newsgroups and explain that you'd like to provide
|
||
full documentation and a couple of units of your hardware
|
||
to a team of Linux programmers in exchange for a freely
|
||
distributable driver. Be sure to make the sources for
|
||
one of your other drivers (preferably any UNIX, DOS, or
|
||
OS/2 driver) available to them.
|
||
|
||
<p> If you don't like that approach, consider publishing the
|
||
sources to your existing drivers. If you are really in
|
||
the hardware business than the benefits of diverse OS
|
||
support should far outweigh any marginal "edge" you might
|
||
get from not letting anyone see "how you do it."
|
||
|
||
<p> (Just a suggestion for all those hardware vendors out there).
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="userid"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
User Identification
|
||
</h3><P> <B>
|
||
From: Dani Fricker, <a
|
||
href="mailto:101550.3160@CompuServe.COM">101550.3160@CompuServe.COM</a>
|
||
<br>
|
||
i need your help. for some reasons i have to identify a user on my
|
||
webserver by his/her ip-address. fact is that users logon comes from
|
||
different physical machines. that means that i have to assign something
|
||
like a virtual ip-address to a users log name. something like a reversal
|
||
masquerading.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
The IP Address of any connecting client is provided
|
||
to any CGI scripts you run, and is stored in the
|
||
server's access log (or a reverse DNS lookup of it
|
||
is stored therein -- depending on your httpd and
|
||
configuration).
|
||
|
||
<p> * Note: I suggest disabling reverse DNS
|
||
lookup on webserver wherever possible.
|
||
it generates alot of unnecessary traffic
|
||
and you can isolate, sort, and look up the
|
||
IP addresses in batches when you want to
|
||
generate statistics involving domain names.
|
||
|
||
<p> (I also tend to think that most of the
|
||
reports done on web traffic logs have about
|
||
as much rigor and resemblance to statistical
|
||
analysis as reading chicken entrails).
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>my ip-gateway connects my inner lan over two token ring network cards
|
||
(sorry, not my idea!) with the internet (lan <-> tr0 <-> tr1 <->
|
||
internet). the masquerading forward roule of ipfwadm gives me the
|
||
possibility to indicate a source and a destination address.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Oh. So all of the clients that you're interested in
|
||
are on a private LAN and going through a masquerading/NAT
|
||
server (network address translation).
|
||
|
||
<p> I would try using ident for starters. Run identd on your
|
||
Masquerade Host and make calls to the ident service from
|
||
your CGI scripts. I don't think it will work -- but it
|
||
should be worth a little info.
|
||
|
||
<p> From there you might be able to configure all the clients
|
||
on the inner LAN to use an *applications* level proxy
|
||
(squid -- formerly cached, CERN httpd, or the apache cache/
|
||
proxy server). Masquerading can be thought of as a
|
||
"network layer proxying services" while SOCKS, and similar
|
||
services -- which work with the co-operation of the client
|
||
software -- are applications layer proxies.
|
||
|
||
<p> I don't know if the private net IP address or other info
|
||
will propagate through any of these HTTP proxies.
|
||
|
||
<p> If this is *really* important to you, you could consider
|
||
writing your own "NAT Ident" service and client. I don't
|
||
know how difficult that would be -- but it seems like the
|
||
code for the identd (and the RFC 931? spec) might give you
|
||
a starting point for defining a protocol (you might want
|
||
to secure that service under TCP_Wrappers). You might want
|
||
to consider making this a TCP "Multiplexed" service --
|
||
look for info on tcpmux for details about that.
|
||
|
||
<p> The gist of tcpmux is that it allows your custom client
|
||
to talk to a daemon on TCP port 1 of the server host and
|
||
ask for a service by name (rather than relying on
|
||
"Well-Known Port Addresses"). So, if you're going to create
|
||
a new service -- it makes sense to put it under tcpmux
|
||
so you don't pick your own port number for it -- and then
|
||
have the IANA assign that port to something else that you
|
||
might want later.
|
||
<P><img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>do you see a possibility for an 'address assignment' between the two
|
||
interfaces? if you do please let me know.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
I don't know of any existing way to determine the IP
|
||
address of a client on the other side of any NAT/masquerading
|
||
host -- I'm not even sure if there's any existing way to do it
|
||
for a client behind a SOCKS or TIS FWTK or other applications
|
||
level proxy.
|
||
|
||
<p> I'll be honest. With most "Answer Guy" questions I
|
||
do some Yahoo!, Alta-vista and SavvySearch queries -- and
|
||
ask around a bit (unless I already know the answer pretty
|
||
well -- which doesn't happen all that often these days).
|
||
I skipped that this time -- since I'm pretty sure that
|
||
there's nothing out there that does this.
|
||
|
||
<p> I welcome any corrections on this point. I'll be happy
|
||
to forward any refutations and corrections to Dani.
|
||
|
||
<p> All of this begs the greater question:
|
||
|
||
<p> What are you really trying to do?
|
||
|
||
<p> If you are trying to provide some form of transparent
|
||
access control to your webserver (so local users can
|
||
see special stuff without using a "name and password")
|
||
-- there are better ways available.
|
||
|
||
<p> Netscape and Internet Explorer both support a form
|
||
of client-certificate SSL -- which is supported at
|
||
the server side by the Stronghold (commercial Apache)
|
||
server.
|
||
|
||
<p> As an alternative -- I'd look at the possibility of
|
||
finding or writing a Kerberos "auth" module for
|
||
Apache (and deploying Kerberos to the clients).
|
||
This might be more involved than you're management
|
||
is willing to go for -- but writing new variations of
|
||
the indentd service might also fall into that category.
|
||
|
||
<p> IP addresses are a notoriously bad form of access
|
||
control. If you have a properly configured set of
|
||
anti-spoofing rules in the packet filters on your
|
||
router -- and you can show that no other routes exist
|
||
into your LAN -- then you can base access controls to
|
||
services (TCP/Wrappers) to about the granularity of
|
||
"from here" and "not from here." Attempting to read
|
||
more into them than that is foolhardy.
|
||
|
||
<p> Ethernet and Token Ring MAC (media access control) addresses
|
||
(sometimes erroneously called "BIA's" -- burned in addresses)
|
||
are just about as bad (most cards these days have options to
|
||
over-ride the BIA with another MAC -- usually a feature of
|
||
operating the card in "promiscuous" mode).
|
||
|
||
<p> Yet another approach to the problem might be to simply
|
||
put a web server on the internal LAN (no routing through
|
||
the NAT/masquerading host) -- and use something like
|
||
rdist to replication/mirror the content between the
|
||
appropriate document trees on the internal and exterior
|
||
web servers.
|
||
|
||
<p> Basically we'd need to know much more about your
|
||
requirements in order to give relevant recommendations.
|
||
|
||
|
||
<p>
|
||
--
|
||
Jim
|
||
|
||
<p><hr><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="duplic"></a>
|
||
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Duplicating a Linux Installed HD
|
||
</h3><P> <B>
|
||
From: Mohammad A. Rezaei, <a href="mailto:rezaei@tristan.TN.CORNELL.EDU">rezaei@tristan.TN.CORNELL.EDU</a><br>
|
||
|
||
I just read your response to duplicating a hard drive using dd.
|
||
I think using dd limits the uses of this technique too much.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
I absolutely agree. I wonder where I suggested 'dd'
|
||
without expressing my misgivings.
|
||
|
||
<p> Please consider quoting little portions of my posting
|
||
when making references to them -- I write alot and
|
||
can't remember past postings without some context.
|
||
<P>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
<B>I have more than once installed/transfered entire hard drives using
|
||
tar. simply put both drives in the same machine, mount the new drive
|
||
in /mnt and do something like
|
||
<pre>
|
||
tar -c -X /tmp/excludes -f / | (cd /mnt; tar xvf -)
|
||
The file....
|
||
|
||
/tmp/excludes should contain:
|
||
|
||
/mnt
|
||
/proc
|
||
and any other non-local, mounted drives, such as nfs mount points.
|
||
</pre>
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
There are better ways to do this.
|
||
|
||
One way is to use a command like:
|
||
<pre>
|
||
find ... -xdev -type f | tar cTf - - | \
|
||
(cd ... && tar xpf - )
|
||
|
||
Another is to use:
|
||
|
||
find ... | cpio pvum /new/directory
|
||
|
||
... which I only learned after years of using
|
||
the tar | (cd ... && tar) construct.
|
||
</pre>
|
||
|
||
<p> In both of these cases you can use find parameters
|
||
to include just the files that you want. (Note:
|
||
with tar you *must* prevent find from printing any
|
||
directory names by using the -type f (or more
|
||
precisely a \! -type d clause) -- since tar will
|
||
default to tar'ing any directories named in a
|
||
recursive fashion).
|
||
|
||
<p> The -T (capital "tee") option to GNU tar means to
|
||
"Take" a list of files as an "include" list. It
|
||
is the complement to the -X option that you list.
|
||
|
||
<p> You can also pipe the output of your find through
|
||
grep -v (or egrep -v) to filter out a list of
|
||
files that you want to exclude.
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
finally, one has to install the drive onto the new machine,
|
||
boot from floppy and run lilo.
|
||
|
||
The disks don't have to be identical. the only disadvantage is having
|
||
to run lilo, but that's takes just a few minutes.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
The only message I can remember posting about 'dd'
|
||
had an extensive discussion of using tar and cpio for
|
||
copying trees.
|
||
|
||
Am I forgetting one -- or did you only get part of
|
||
my message?
|
||
|
||
<P><B><img align=bottom alt=" " src="../gx/ques.gif">
|
||
|
||
Hope this helps.
|
||
</B><P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
|
||
Hopefully it will help some readers. The issues of
|
||
copying file trees and doing differential and
|
||
incremental backups is one that is not well covered in
|
||
current books on system administration.
|
||
|
||
<p> When I do a full backup I like to verify that it
|
||
was successful by extracting a table of contents or
|
||
file listing from the backup media. I then keep a
|
||
compressed copy of this. Here I use tar:
|
||
<pre>
|
||
tar tf /dev/st0 | gzip > /root/tapes.contents/.....
|
||
</pre>
|
||
<p> .... where the contents list is named something like:
|
||
<pre>
|
||
antares-X.19970408
|
||
</pre>
|
||
<p> .... which is a hostname, a volume (tape) number and a
|
||
date in YYYYMMDD format (for proper collation -- sorting).
|
||
|
||
<p> To do a differential I use something like:
|
||
|
||
<pre> find / -newer /root/tape.contents/.... \
|
||
| egrep -v "^(/tmp|/proc|/var/spool/news)" \
|
||
| tar czTf - /mnt/mo/diff.`date +%Y%m%d`.tar
|
||
</pre>
|
||
<p> ... (actually it's more complicated than that since
|
||
I build the list and compute the size -- and do some
|
||
stuff to make sure that the right volume is on the
|
||
Magneto Optical drive -- and mail nastygrams to myself
|
||
if the differential won't fit on that volume -- if the
|
||
volume is the most recent one (I don't overwrite the
|
||
most recent -- I rotate through about three generations)
|
||
-- etc).
|
||
|
||
<p> However this is the core of a differential backup.
|
||
If you wanted an incremental -- you'd supply a different
|
||
file to the -newer switch on your find command.
|
||
|
||
<p> The difference between differential and incremental is
|
||
difficult to explain briefly (I spent about a year
|
||
explaining it to customers of the Norton Backup). Think of
|
||
it this way:
|
||
|
||
<p> If you have a full -- you can just restore that.
|
||
|
||
<p> If you have a full, and a series of differentials,
|
||
you can restore the most recent full, and the
|
||
most recent differential (any older fulls or differentials
|
||
are unneeded)
|
||
|
||
<p> If you have a full and a series of incrementals you
|
||
need to restore the most recent full, and each
|
||
subsequent incremental -- in order until the most
|
||
recent.
|
||
|
||
<p> It's possible (even sensible in some cases) to use a
|
||
hybrid of all three methods. Let's say you have a large
|
||
server that takes all day and a rack full of tapes to do a
|
||
full backup. You might be able to do differentials for
|
||
a week or two on a single tape per night. When that fills
|
||
up you might do an incremental, and then go back to
|
||
differentials. Doing this to a maximum of three incrementals
|
||
might keep your all day backup marathons down to once a month.
|
||
The restore must go through the "hierarchy" of media in the
|
||
correct order -- most recent full, each subsequent incremental
|
||
in order, and finally the most recent differential that was
|
||
done after that.
|
||
|
||
<p> (Personally, I avoid such complicated arrangements like the
|
||
plague. However they are necessary in some sites.)
|
||
|
||
|
||
|
||
<P>
|
||
-- Jim
|
||
|
||
<!--================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, James T. Dennis <BR>
|
||
Published in Issue 17 of the Linux Gazette May 1997</H5></center>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A> <A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="lg_bytes17.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<A HREF="./clueless.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2>CLUELESS at the Prompt: A Column for New Users<\H2>
|
||
<H4>By Mike List,
|
||
<a href="mailto:troll@net-link.net">troll@net-link.net</a>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
<center><IMG ALIGN=MIDDLE SRC = "../gx/list/gnub.jpg" ></center>
|
||
<p>
|
||
<h4>Welcome to installment 4 of Clueless at the Prompt:
|
||
a new column for new users.</h4>
|
||
|
||
<hr>
|
||
<p><h4> Connecting to a Second ISP...or Third, or</h4>
|
||
I recently got e-mail from a guy who wanted to know how to connect to a
|
||
second ISP.His e-mail address apparently wasn't valid, and it got bounced
|
||
back several times. Just as well, since I didn't have the answer at that
|
||
point. Well, I got this idea, and I tried it and it works.Here's the deal:
|
||
First,
|
||
<pre> cp /usr/sbin/ppp-on to /usr/sbin/ppp-on.anysuffix
|
||
</pre><p>
|
||
Then open the file you just created with a text editor, and change any
|
||
information that applies to the secondary ISP, eg. dialup, the IP number
|
||
of the ISP, username and password. write the file(save it) and try your
|
||
new executable, ppp-on.anysuffix. Just a quick pointer, you could call
|
||
your new script any name you want as long as there's no other file with
|
||
the same name in your path,preferably no other file with the same name at
|
||
all
|
||
<hr>
|
||
<h4> Dealing With a Dynamic IP</h4>
|
||
<p>
|
||
These days most Internet Service Providers assign you a Dynamic IP when
|
||
you logon to their network, due to the cost of assigning every customer
|
||
a static IP. At present there are only so many IP addresses available
|
||
and, apparently each one costs to register. Consequently ISPs buy a pool
|
||
of IP addresses within a range and assign an available one at login. For
|
||
most uses, such an arrangement is no problem, assuming that most
|
||
internet usage consists of interaction between the ISP's computer and
|
||
the local one. For some purposes, however such as allowing telnet or ftp
|
||
to your computer the dynamic scheme is less than ideal. Here's
|
||
a relatively painless way to get your current IP, so you can run with
|
||
the big dogs. Open an xterm, or rxvt and type:
|
||
<pre> ifconfig</pre><p>
|
||
which will bring up some info in two blocks. You'll want to note the
|
||
bottom block, which will have a line that specifies your inet address
|
||
expressed numerically. It will be in a xxx.xxx.xxx.xxx format, which
|
||
corresponds to the standard IP address, in fact that's what it is.
|
||
you ca write this number down or just highlight this IP address(to paste
|
||
it)and type:
|
||
<pre>nslookup the.num.ber.</pre><p>
|
||
the number being your inet address from the last step.
|
||
It may take a couple of minutes, but you will get a two line messagethat
|
||
looks like:<pre>Name: your Fully Qualified Domain Name
|
||
Address: IPa.ddr.ess.!!! </pre><p>
|
||
we may talk about FQDN some more another time, but for the purpose at
|
||
hand, just type:
|
||
<pre>hostname Name</pre><p>
|
||
where Name is the first line from the above step. That's it, except that
|
||
you must repeat this procedure every time you connect to your ISP. You
|
||
might be able to write a script to automate this procedure, but in the
|
||
meantime which as my friend Al used to say "is a groovy time", you can
|
||
use this knowledge to run remote X apps(just a minute,I'm coming to that)
|
||
allow your friends or inet associates to telnet to your computer, or ftp
|
||
files from a telnetted site(this too, momentarily).What you need to know
|
||
is that the next time youreboot, you may get a message saying that your
|
||
computer name is "bad". This isn't a comment on your lack of originality
|
||
or taste, and you should basically ignore it.
|
||
<hr>
|
||
<h4>Using your Domain Name</h4>
|
||
If you have a shell account at a computer located at a university or
|
||
school near you, this will amaze you. Oh yeah not, by way of a plug, but
|
||
there is a semi commercial telnet box called linuxware.com(you will have
|
||
to look up the URL yourself semi- plug, you might say, I'm a subscriber)
|
||
What am I talking about? Using X to run apps from the remote computer on
|
||
your screen. You can actually run a program that isn't installed on your
|
||
computer, in X with the remote computer supplying the program. I think
|
||
it embodies the essence of networking, with permissions set right, you
|
||
can co-author a document, play a multi-user game (MUD)use a
|
||
talkprogram, like ytalk, or do office or school work from your home
|
||
computer.Here's what you need to do. First, you need to know and have
|
||
your FQDN listed by typing:
|
||
<pre>hostname</pre><p>
|
||
as detailed above. If you have a static IP address, you can skip this
|
||
step.What needs to be done next is to type:
|
||
<pre>xhost + the.telnet.box</pre><p>
|
||
When you hit enter you will see a message like, "the.telnet.box has been
|
||
added to the control list". You will probably have to restart your window
|
||
manager, your mileage may, as they say, vary. Now when you start a
|
||
telnet session, you can enter the name of an X application and in a
|
||
moment, the application window will apear on your screen, even if you
|
||
don't have it installed on your computer. Do your work, play your game,
|
||
and marvel at the ramifications of this capability.
|
||
<p> You can also invite friends and coworkers over to your computer to
|
||
do some work, socialize or learn something, in the following manner.
|
||
Obtain your FQDN, or IP address, as detailed above. E-mail it to them or
|
||
call them on the phone to let them know where you are today(Not where
|
||
you want to go today, that's another "OS"). they can then:
|
||
<pre> telnet FQDN or ftp IPa.ddr.ess.!!!</pre><p>
|
||
and all of a sudden they're in your den, or office or wherever you keep
|
||
your computer. For more sophisticated methods of getting your address,
|
||
read the "Dynamic IP hacks-HOWTO.
|
||
|
||
|
||
<h4>Just a Reminder: Read the whole Linux Gazette</h4>
|
||
<p>This esteemed tabloid is just full of novice- to intermediate level
|
||
tips and tricks.The Answer Guy, Two Cent Tips, and The Weekend Mechanic
|
||
in particular, are good sources of the kinds of things that will make you
|
||
a demi-guru in no time at all.
|
||
<hr>
|
||
<h4>Formatting Floppy Disks in Linux</h4>
|
||
<p>In DOS and Windows,formatting a floppy disk is a one shot affair
|
||
which formats, erases data, and creates a file system on the floppy.
|
||
In linux however, you have to format and create the filesystem in
|
||
separate steps. At first glance, this seems backward, after all, isn't
|
||
linux a more sophisticated OS? Why do things in two steps that the others
|
||
do in one? The reason is that linux can read several filesystems so that
|
||
data can be moved from one OS to the other. By mounting the floppy drive
|
||
as MSDOS, VFAT, or other filesystem type the data can be read from the
|
||
mount point in a manner that linux can make use of.
|
||
<hr>
|
||
<h4>Other Stuff I've Collected/Found out Since Last Time</h4>
|
||
<p>have trouble with the
|
||
<pre> find </pre><p>command?Try leaving your computer on overnight, and
|
||
the next day use the <pre>locate /filename |less</pre><p>command instead.
|
||
Locate is a database that is gathered during idle times on your computer
|
||
Actually locate reads a database that is updated by a command in your
|
||
system files, but if you give it time to breathe, usually overnight, it
|
||
can locate any file on your hard drive(s). You can also try
|
||
<pre> whereis filename </pre><p>
|
||
and you will get a location for the named file.
|
||
<hr>
|
||
Next Time- Let me know what you would like to see in here and I'll
|
||
try to
|
||
oblige just e-mail <a href="mailto:troll@net-link.net">troll@net-link.net</a>
|
||
me and ask, otherwise I'll just write about what gave me trouble and
|
||
how I got past it.</p>
|
||
<p> TTYL, Mike List </p>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Mike List <BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./answer.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./dotfile.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
<center><img width=446 height=113 src="./gx/pedersen/logo.gif"></center>
|
||
<H4>By Jesper Pedersen,
|
||
<a href="mailto:blackie@imada.ou.dk">blackie@imada.ou.dk</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
|
||
|
||
<P> In this article I will describe a configuration tool called The Dotfile
|
||
Generator (TDG for short). TDG is a configuration tool, which configures
|
||
programs, using X11 widgets like check boxes, entries, pull-down menus etc.<p>
|
||
|
||
For TDG to configure a given program a module must be made for it. At the
|
||
moment modules exist for the following programs: Bash, Fvwm1, Fvwm2, Emacs,
|
||
Tcsh, Rtin and Elm.<p>
|
||
|
||
The article will describe common use of TDG, so if you do not have it yet,
|
||
it might be a good idea to <a
|
||
href="ftp://ftp.imada.ou.dk/pub/dotfile/dotfile.tar.gz">download
|
||
it</a> (It's free!) You may also go to <a
|
||
href="http://www.imada.ou.dk/~blackie/dotfile/">the home page of the
|
||
Dotfile Generator</a> for further information.
|
||
|
||
|
||
|
||
|
||
<p><hr><center><h1>Intro</h1></center>
|
||
The UNIX system, was developed many years ago, long before
|
||
graphical user interfaces became commonplace. This means that most of the applications
|
||
today work fine without a graphical user interface. Examples of this are
|
||
editors and shells.<p>
|
||
|
||
A basic concept in UNIX is that the programs are very configurable. Here is
|
||
an example from Emacs, which shows this:<p>
|
||
|
||
<blockquote>
|
||
<i>What should be done if the user asks to go to the next line at the of</i>
|
||
a file?<br>
|
||
There are two logical
|
||
possibilities: <ol>
|
||
<li> Insert a blank line, and move to it.
|
||
<li> Beep, to tell the user that there is no next line.
|
||
</ol>
|
||
|
||
Instead of implementing only one of the solution the people behind Emacs,
|
||
have chosen to implement both, and let you decide which one you prefer.
|
||
</blockquote>
|
||
|
||
Since the program works without a GUI, the standard method for
|
||
configuring such options is to use a <i>dot-file</i>. In this file, you
|
||
may <i>program</i>, which method you will use.<p>
|
||
|
||
This solution, however, requires that the user has to learn the programming
|
||
language used in the dot-file, and has to read lots of documentation to
|
||
find out which configurations can be made. This task may be difficult and
|
||
tedious, and for that reason many users often choose to use the default
|
||
configuration of the program.<p>
|
||
|
||
If you take a look at some dot-files, you may find
|
||
that most of the configurations can be described by the following items:
|
||
<ul>
|
||
<li> Configurations with two possibilities (like above)
|
||
<li> Configuration, where the program wishes to know a number or text.
|
||
Examples of this could be questions like: <i>how many times should
|
||
one press CTRL-d to quit</i>, and <i>email address to use in
|
||
reply-to field</i>.
|
||
<li> Configuration, where the user may choose an option from a list, eg:<br>
|
||
<i>which editor would you like to use: emacs, jed, vi or vim</i>
|
||
</ul>
|
||
|
||
The configurations above may easily be done with a GUI, with the following
|
||
widgets in order: A check box, an entry and a pull down menu.
|
||
|
||
This is exactly what is done in TDG.
|
||
|
||
|
||
|
||
<p><hr><center><h1>The basic concept of TDG</h1></center>
|
||
|
||
TDG is a tool, which configures other programs (eg. emacs,bash and fvwm)
|
||
with widgets as those described above, and many more. The widgets are
|
||
placed in groups, which makes it easy to find the correct configuration
|
||
without having seen it before. And most important of all, help is located
|
||
at the configuration of each option, instead of in a manual far away. To get
|
||
help, you just press the right mouse button on the widget, which contains
|
||
the configuration you want to know more about!<p>
|
||
|
||
When you start TDG, you will be offered a list of standard configurations,
|
||
where you may pick one to start out with. This may be convenient, if you do
|
||
not have a dot-file for the given program, or if you would like to try a
|
||
new configuration. If on the other hand, you already have a dot-file, which
|
||
you would like to put the finishing touches to, you may read this file into
|
||
TDG. Note, however, that it is not all modules, which have the capability
|
||
to read the dot-file (the fvwm2, rtin and elm modules have, the other
|
||
modules do not, since it would be to complicated to create such a
|
||
parser.)<p>
|
||
|
||
When you have selected a start-up configuration, the menu-window will be
|
||
displayed (see figure 1). In this window, you can travel through the
|
||
configuration pages, just like a directory structure. If you select a
|
||
page, a new window will be displayed, with the configuration for this page
|
||
(see figure 2). This window will be reused for all the configuration pages,
|
||
ie. only one configuration page is visible at a time, so you do not have
|
||
to destroy the window yourself.<p>
|
||
|
||
<table CELLSPACING=1 CELLPADDING=4 cols=2 width=100%>
|
||
<tr>
|
||
<td align=top>
|
||
<center><img width=294 height=196 src="./gx/pedersen/menu_window.jpg"><p>Figure 1</center>
|
||
|
||
<td align=top>
|
||
<center><img width=399 height=203 src="./gx/pedersen/config_page.jpg"><p>Figure 2</center>
|
||
</table>
|
||
|
||
In region 1, the actual configuration is located. Region 2 is the help
|
||
region. In this region help for the whole page is shown, when the window is
|
||
displayed. It's also here, help for the individual configuration is
|
||
shown, when you press the right mouse button on one of the widgets.<p>
|
||
|
||
In region 3, information is shown on what will be generated. You have
|
||
three possibilities:
|
||
<ol>
|
||
<li> You may generate all pages. This is the most natural thing to do,
|
||
when you just want a configuration for a given program.
|
||
|
||
<li> You may generate just the page shown. This is useful if you are
|
||
plying around with TDG to see what will be generated for the
|
||
different configurations.
|
||
|
||
<li> Finally you may tell TDG, to just generate some of the pages, which
|
||
is done with radio buttons in this region.
|
||
</ol>
|
||
|
||
In the <tt>Setup</tt>-><tt>Options</tt> menu, you may select which of the
|
||
three methods above will be used.<p>
|
||
|
||
When you have done all the configurations, you have to tell TDG which file
|
||
you wish to generate. This is done from the Options menu
|
||
(<tt>Setup</tt>-><tt>Options</tt>). And now it's time to create the actual
|
||
dot-file, which is done by selecting <tt>Generate</tt> in the <tt>File</tt>
|
||
menu.<p>
|
||
|
||
Once you have generated the dot-file, you may find that you would like some
|
||
of the configuration to be different. You could now go to the configuration
|
||
page in question, change your configuration, and then generate once again. If,
|
||
however, you are testing several different options for a single
|
||
configuration (ie. several items from a pull-down menu) you may find it
|
||
cumbersome to generate the whole module over and over again. In this
|
||
situation, you may chose <tt>Regenerate this page</tt> in the <tt>File</tt>
|
||
menu. Note, however, that if some part of the configurations on the page effects
|
||
other pages, these will not be generated, so in these situation
|
||
you have to generate the whole module.<p>
|
||
|
||
To see how to use the generated dot-file, please go to the <tt>Help</tt>
|
||
menu, and select the <tt>How to use the output</tt> item.
|
||
|
||
|
||
|
||
|
||
<p><hr><center><h1>The configuration widgets</h1></center>
|
||
|
||
TDG uses a lot of widgets to let you configure the different options. Some
|
||
of them are well known from other applications and include: check boxes,
|
||
radio buttons, pull-down menus, entries, text boxes (for multi-line text),
|
||
directory and file browsers. Others, however, are specifically designed for use
|
||
in TDG, and they will be described in the following.
|
||
|
||
|
||
<p><center><h2>The ExtEntry widget</h2></center>
|
||
|
||
The ExtEntry is a container, which repeats its elements, just like a
|
||
list-box repeat labels. A number of the elements in the ExtEntry may be
|
||
visible on the screen at a time. The elements in the ExtEntry may be any of
|
||
the widgets from TDG (ie. check boxes, pull-down menus and even other
|
||
ExtEntries.) One element in an ExtEntry is called a tuple.
|
||
|
||
In Figure 3, you can see an ExtEntry from the Tcsh module.<p>
|
||
|
||
|
||
<center>
|
||
<img width=600 height=105 src="./gx/pedersen/extentry1.jpg"><br>
|
||
Figure 3
|
||
</center><p>
|
||
|
||
This ExtEntry has three visible tuples, though only two of them contain
|
||
values (you can see, that the third one is grayed out). To add a new tuple
|
||
to the ExtEntry, you have to press the button in the lower right corner,
|
||
just below the scroll bar. If the ExtEntry contains more tuples than can be
|
||
shown in it, you may scroll to the other tuples with the scroll bar.<p>
|
||
|
||
If you press the left mouse button on one of the scissors, a menu
|
||
with four elements will be displayed. These elements are used to cut, copy
|
||
and paste tuples within the ExtEntry.<p>
|
||
|
||
If the tuples get very large, only one of them may be shown on the screen
|
||
at a time. An example of that is seen in figure 4.<p>
|
||
|
||
When the tuples contain many widgets, scrolling the ExtEntry becomes
|
||
slow. In these cases, the ExtEntry may have a quick index. In figure 4, you
|
||
can see the quick index at the top of the ExtEntry (it's the button labeled
|
||
Idx.) When this quick index is invoked, a pull-down menu is display with
|
||
the values of the element associated with the quick index. This makes it much
|
||
easier to scroll the ExtEntries.<p>
|
||
|
||
|
||
<table CELLSPACING=1 CELLPADDING=4 cols=2 width=100%>
|
||
<tr>
|
||
<td align=top>
|
||
<center><img width=310 height=272 src="./gx/pedersen/extentry2.jpg"><p>Figure 4</center>
|
||
<td align=top>
|
||
<center><img width=360 height=274 src="./gx/pedersen/prompt.jpg"><p>Figure 5</center>
|
||
</table>
|
||
|
||
|
||
|
||
<p><center><h2>The FillOut widget</h2></center>
|
||
|
||
Every shell has a configuration option called <tt>Prompt</tt>. This option
|
||
is some text, which will be printed, when the shell is ready to execute a
|
||
new command. In this text special tokens may be inserted, and when the
|
||
prompt is printed, these tokens will be replaced, with some information from
|
||
the shell. Eg. in Bash <tt>\w</tt> will be expanded to the current working
|
||
directory.<p>
|
||
|
||
In TDG, a special widget has been created called a <tt>FillOut</tt>, which
|
||
does configurations like the above. In Figure 5, you can see a FillOut
|
||
widget from the Bash module. At the top of the widget there is an entry,
|
||
where you can type ordinary text. Below it, the tokens are placed. If you
|
||
select one of the tokens, it is inserted in the entry at the point of the
|
||
cursor. Some of the tokens may even have some additional
|
||
configurations. Eg. the token <tt>Current working directory</tt> has two
|
||
possible options: <tt>Full directory</tt>, and <tt>only the last part</tt>. When tokens with
|
||
additional configurations are selected, a window will be displayed, where
|
||
these configurations can be done. If you wish to change such a configuration,
|
||
press the left mouse button on the token in the entry.
|
||
|
||
|
||
|
||
|
||
<p><center><h2>The Command widgets</h2></center>
|
||
|
||
TDG can be extended by the module programmer through the Command
|
||
widget. This makes it possible to configure specific options with widgets
|
||
they have developed themseves. At the moment three such widgets exist: The
|
||
directory/file browser, the color widget and the font widget.<p>
|
||
|
||
The widgets will appear as a button within TDG, and when the button is
|
||
pressed a new window will be displayed, where the actual configuration is done.
|
||
|
||
|
||
|
||
<p><hr><center><h1>Save, Export and Reload</h1></center>
|
||
When you have configured the different options in TDG, you may wish to
|
||
leave it, and come back later, and change some of the configurations. When
|
||
you leave TDG, you may save your changes, which you do from the
|
||
<tt>File</tt> menu.<p>
|
||
|
||
Next time you enter TDG, your saved file will be one of the the files you
|
||
will be offered as a start-up configuration.<p>
|
||
|
||
One important point you have to note is that this <tt>save file</tt> is an
|
||
internal dump of the state of TDG. This means that this file dependson
|
||
the version of TDG and the module. This means that if you wish to send a
|
||
given configuration to another person, this format is not appropriate. A
|
||
version independent format exists, which is called the <i>export
|
||
format</i>. To create such a file, you have to select <tt>Export</tt>
|
||
instead of <tt>Save</tt> in the <tt>File</tt> menu.<p>
|
||
|
||
Sometimes you may wish to restore the configuration on a single page, to its
|
||
value as it was before you started playing around with it, or you may wish
|
||
to merge another person's configuration with your own. This is done by selecting
|
||
<tt>Reload</tt> in the <tt>File</tt> menu. To tell TDG that you only want
|
||
to reload some of the pages, you have to select the <tt>Detail</tt> button
|
||
in the load window. This will bring up a window, where you can select which
|
||
configuration pages, you wish to reload. Here you can also tell it how you
|
||
want the pages to be reloaded. You have two possibilities:
|
||
<dl>
|
||
<dt> Overwrite
|
||
<dd> The pages you are loading, will totally overwrite the
|
||
contents of the file
|
||
<dt> Merge
|
||
<dd> Tuples in the ExtEntries will be appended to those which already
|
||
exist in the module. Other configurations will be ignored in the file.
|
||
</dl>
|
||
|
||
Here's another difference between the save-files and the export-files: You
|
||
cannot merge with save-files. This means that if you have a save-file,
|
||
which you wish to merge with, you first have to load it, export it, and
|
||
then you can merge with it.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p><hr><center><h1>The End</h1></center>
|
||
Additional information
|
||
can be found on <a href="http://www.imada.ou.dk/~blackie/dotfile/">the home page
|
||
</a> for TDG.<p>
|
||
|
||
It's always a good idea to have a bookmark on this page, as work is
|
||
currently in progress on new modules.
|
||
|
||
<dl>
|
||
<dt> procmail
|
||
<dd> I have finished a module on procmail, a mail
|
||
filter, which can sort your incoming mail.<p>
|
||
|
||
<dt> firewall configuration (ipfwadm)
|
||
<dd> John D. Hardin (<a
|
||
href="mailto:jhardin@wolfenet.com">jhardin@wolfenet.com</a>) is
|
||
working on a module for configuring the fire walling and IP
|
||
Masquerading setup for standalone systems connected to the Internet via
|
||
dialup. He may, however, expand it to more general fire walling.
|
||
</dl>
|
||
|
||
If you have some spare time, I would very much like to encourage you to
|
||
develop a module for your favorite program. On the home page of TDG, there
|
||
is a link to a document, which describe how to create a module for TDG. <a
|
||
href="mailto:blackie@imada.ou.dk">Send me a letter</a>, and I will be happy
|
||
to help you get started with it.
|
||
|
||
<hr>
|
||
<address><a href="http://www.imada.ou.dk/~blackie/">Jesper Kjær
|
||
Pedersen</a> <blackie@imada.ou.dk></address>
|
||
<!-- hhmts start -->
|
||
Last modified: Wed Feb 5 15:59:35 1997
|
||
<!-- hhmts end -->
|
||
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Jesper Pedersen <BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./clueless.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./gm.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
|
||
<!-- =============================================================
|
||
This Page Designed by Michael J. Hammel.
|
||
Permission to use all graphics and other content for private,
|
||
non-commerical use is granted provided you give me (or the
|
||
original authors/artists) credit for the work.
|
||
|
||
CD-ROM distributors and commercial ventures interested in
|
||
providing the Graphics Muse for a fee must contact me,
|
||
Michael J. Hammel (mjhammel@csn.net), for permission.
|
||
============================================================= !-->
|
||
|
||
<!-- The Button box as a client side imagemap -->
|
||
<MAP NAME="nav-main">
|
||
<AREA SHAPE="rect" HREF="#mews" coords="3,10 158,56">
|
||
<AREA SHAPE="rect" HREF="#musings" coords="5,85 142,116">
|
||
<AREA SHAPE="rect" HREF="#resources" coords="5,152 177,182">
|
||
</MAP>
|
||
|
||
|
||
<TABLE width=560>
|
||
<tr>
|
||
<td width=441 valign="top" align=left cellpadding=0 cellspacing=0>
|
||
|
||
<!-- The title graphics -->
|
||
<IMG SRC="../gx/hammel/gm3.gif" ALT="Welcom to the Graphics Muse"
|
||
ALIGN="left" WIDTH="441" HEIGHT="216" border="0"></td>
|
||
|
||
<td width=119 align=right valign="bottom">
|
||
<table>
|
||
<tr>
|
||
<td align=center>
|
||
<FONT size=2>
|
||
Set your browser to the width of the line below for best viewing.
|
||
</FONT>
|
||
<!-- The Copyright -->
|
||
<BR><FONT size=1>
|
||
© 1997 by
|
||
<A HREF="mailto:mjhammel@csn.net">mjh</A>
|
||
</FONT></td>
|
||
</tr>
|
||
</table></td>
|
||
|
||
<tr>
|
||
<!-- Provide a measure for readers to adjust their browsers to.
|
||
-- These pages should fit on a 640 pixel wide window, so laptop
|
||
-- users should be able to read them too.
|
||
-->
|
||
<td width=100% cellspacing=0 cellpadding=0
|
||
valign=bottom align=center colspan=2>
|
||
<HR>
|
||
</td>
|
||
</table>
|
||
|
||
<TABLE width=560>
|
||
<tr>
|
||
<!-- td width=177 align=left valign=top>
|
||
-->
|
||
<td width=17% align=left valign=top>
|
||
<IMG SRC="../gx/hammel/buttons3.gif" ALT="Button Bar"
|
||
ALIGN="left" WIDTH="177" HEIGHT="185"
|
||
USEMAP="#nav-main" border="0"></td>
|
||
|
||
|
||
<!-- td width=463 align=left valign=top>
|
||
-->
|
||
<td width=83% align=left valign=top>
|
||
<!-- What is a Graphics Muse? -->
|
||
<FONT size=4><B>muse:</B></FONT>
|
||
<OL>
|
||
<LI><I>v;</I> to become absorbed in thought
|
||
<LI><I>n;</I> [ fr. Any of the nine sister goddesses of learning and the
|
||
arts in Greek Mythology ]: a source of inspiration
|
||
</OL>
|
||
<IMG SRC="../gx/hammel/w.gif" ALT="W" ALIGN="left"
|
||
HSPACE="0" VSPACE="0" WIDTH="36" HEIGHT="28">elcome
|
||
to the Graphics Muse! Why a "muse"?
|
||
Well, except for the sisters aspect, the above definitions are
|
||
pretty much the way I'd describe my own interest in computer graphics:
|
||
it keeps me deep in thought and it is a daily source of inspiration.
|
||
|
||
<!-- Text based navigation -->
|
||
<P>
|
||
<CENTER>
|
||
<FONT size=2>
|
||
[<A HREF="#mews">Graphics Mews</A>]
|
||
[<A HREF="#musings">Musings</A>]
|
||
[<A HREF="#resources">Resources</A>]
|
||
</FONT>
|
||
<CENTER></td>
|
||
|
||
</table>
|
||
|
||
<TABLE width=560>
|
||
<tr>
|
||
<td>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="8" WIDTH="1" HEIGHT="1">
|
||
<IMG SRC="../gx/hammel/t.gif" ALT="T" ALIGN="left"
|
||
HSPACE="0" VSPACE="0" WIDTH="26" HEIGHT="28">his
|
||
column is dedicated to the use, creation, distribution, and dissussion of
|
||
computer graphics tools for Linux systems.
|
||
|
||
<BR clear=both>
|
||
|
||
What a month. Actually, two months. Last month I was busily working
|
||
on putting together an entry for the IRTC using BMRT. At the same time
|
||
I was trying to teach myself enough about the RenderMan Interface
|
||
Specification to put together the second of three articles on BMRT.
|
||
I didn't succeed in the latter and ended up postponing the article
|
||
by one month. Because I did this
|
||
I was able to focus more on learning the interface and worry less
|
||
about writing. I think this strategy worked. The scene I rendered for this
|
||
months IRTC is the best I've ever done and I managed to gain enough
|
||
experience to write a meaningful article on the RenderMan Shading Langauge.
|
||
|
||
<BR clear=both>
|
||
|
||
One of the reasons I enjoy doing this column is because it exposes me to
|
||
all sorts of people and software. The world of computer graphics for
|
||
Linux is constantly growing and the software constantly improves. I
|
||
hear about new products just about once or twice a week now and I hear
|
||
about updates to existing packages all the time. Its very difficult to
|
||
keep track of all the changes (and the fact that I haven't made any updates
|
||
to the Linux Graphics mini-Howto in some time reflects this) but I enjoy
|
||
the work.
|
||
|
||
<BR clear=both>
|
||
|
||
Since things change so often I have found its never clear how many
|
||
announcements I'll have for any one month. Its gone from famine to
|
||
feast - with this month being the feast. Most of the announcements in
|
||
this months column are from April alone. I don't know what happened -
|
||
maybe all the bad weather around the globe kept people inside and busily
|
||
working and now that the suns out they're starting to let loose what
|
||
they've done. I only wish I had the time to examine everything, to play
|
||
with them all. But my employer would rather I finish my current project
|
||
first. Has something to do with keeping my salary, so they say.
|
||
|
||
<BR clear=both>
|
||
|
||
In this months column I'll only be covering two related items. The
|
||
first is a case study on learning to use BMRT. When you submit an image in
|
||
the IRTC you are required to submit an ASCII text file describing your
|
||
image and, to some extent, how you created it. Some people don't put much
|
||
work into this. I just about wrote a book. Since the information I
|
||
provided covered more than just BMRT I thought it would be relavent to this
|
||
column.
|
||
|
||
<BR clear=both>
|
||
|
||
The second item is the long awaited (well, I waited a long time to
|
||
finish it anyway) 2nd article on BMRT that covers the RenderMan Shading
|
||
Language. I think this article came out quite good. I've included quite a
|
||
few samples and some general explanations on what they do. I want to
|
||
say right up front that I couldn't have done this without lots of help from
|
||
BMRT's author, Larry Gritz at Pixar. He was a very willing teacher and
|
||
critic who offered many tips and ideas for my IRTC entry. Most of that
|
||
also ended up in this article. Many thanks, Larry.
|
||
|
||
<BR clear=both>
|
||
|
||
I know I said I'd do an HF-Lab article this month too, but that IRTC
|
||
entry took more time than I expected. It was quite addicting, trying
|
||
to get things just right. I have started to review HF-Lab once again
|
||
and will make it my first priority for next months column. I've already
|
||
figured out how to use the output from HF-Lab to produce height fields with
|
||
BMRT. Its quite simple really. Anyway, I hope you enjoy this months
|
||
articles.
|
||
|
||
<BR clear=both>
|
||
|
||
Note: I've been asked by a couple of readers about support for 3D
|
||
hardware support in the various X servers. I'm going to contact the
|
||
X Server vendors (Xi Graphics, MetroLink, The XFree Project)
|
||
as well as Brian Paul (the MesaGL author)
|
||
and see what they have to say. If you are connected with these folks
|
||
and have some insight I'd love to hear what you have to say. Please
|
||
<A HREF="mailto:mjhammel@csn.net">email me</A> if you know if such
|
||
support is forthcoming and I'll include it in an upcoming Graphics
|
||
Muse column.
|
||
|
||
<P>
|
||
|
||
</td>
|
||
</table>
|
||
|
||
|
||
<!-- Netscape has a bug when applying a Name tag to an image, so we have to
|
||
stick the image in a table so the image will be the top item on the
|
||
page.
|
||
-->
|
||
<A NAME="mews">
|
||
<table width=560>
|
||
<tr>
|
||
<td align=left>
|
||
<IMG SRC="../gx/hammel/mews.gif" ALT="Graphics Mews" ALIGN="left"
|
||
HSPACE="0" VSPACE="0" WIDTH="242" HEIGHT="53">
|
||
</td>
|
||
</table>
|
||
</A>
|
||
|
||
<BR clear=both>
|
||
<TABLE width=560 border=0>
|
||
<tr>
|
||
<td colspan=4>
|
||
<BR clear=both>
|
||
|
||
Disclaimer:
|
||
Before I get too far into this I should note that any of the news items I
|
||
post in this section are just that - news. Either I happened to run
|
||
across
|
||
them via some mailing list I was on, via some Usenet newsgroup, or via
|
||
email from someone. I'm not necessarily endorsing these products (some of
|
||
which may be commercial), I'm just letting you know I'd heard about
|
||
them in the past month.
|
||
<P>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td width="50%">
|
||
<H4>
|
||
Frame grabber device driver for the ImageNation Cortex I video
|
||
capture card - Version 1.1
|
||
</H4>
|
||
|
||
This adapter is an 512 by 486 resolution 8bit gray
|
||
scale video capture card. The device can provide data in
|
||
pgm file format or raw image data.
|
||
<BR>FTP site:<BR>
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/video/cortex.drv.1.1.tgz">
|
||
ftp://sunsite.unc.edu/pub/Linux/
|
||
<BR>
|
||
apps/video/cortex.drv.1.1.tgz</A>
|
||
<BR>Web Site:<BR>
|
||
<A HREF="http://www.cs.ubc.ca/spider/jennings/cortex.drv.1.1.tgz">
|
||
http://www.cs.ubc.ca/spider/
|
||
<BR>
|
||
jennings/cortex.drv.1.1.tgz</A>
|
||
</td>
|
||
|
||
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<td bgcolor="#ffffff" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<td width="49%" valign=top>
|
||
<H4>
|
||
3DOM - a new 3D modeller project using OpenGL for Linux
|
||
</H4>
|
||
|
||
3DOM is a 3D Modeler for Unix (using HP StarBase or OpenGL/Mesa)
|
||
that is free for
|
||
non-commercial use. Source code is available. Binaries for
|
||
Linux/Intel, SGI, Sparc Solaris and HP-UX are also availalbe.
|
||
<P>
|
||
It's not quite 'ready for prime-time', meaning there is
|
||
almost no documentation
|
||
and there is still a lot of work to do on the user interface.
|
||
<A HREF="http://www.cs.kuleuven.ac.be/cwis/research/graphics/3DOM/">
|
||
http://www.cs.kuleuven.ac.be/
|
||
<BR> cwis/research/graphics/3DOM/</A>
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td colspan=4>
|
||
<H4>
|
||
Pixcon/Anitroll R1.04
|
||
</H4>
|
||
I found this in my /tmp directory while getting ready for this months
|
||
column. I couldn't find a reference to it in any other Muse columns so I
|
||
guess I must have just misplaced it while preparing for an earlier issue.
|
||
Hopefully, this isn't too out of date.
|
||
|
||
<BR clear=both>
|
||
|
||
Pixcon & Anitroll is a freely available 3D
|
||
rendering and animation package, complete with source.
|
||
Pixcon is a 3D renderer that creates high quality images by using a
|
||
combination of 11 rendering primitives. Anitroll is a forward kinematic
|
||
heirarchical based animation system that has some support for some
|
||
non-kinematic based animation (such as flock of birds, and autonomous
|
||
cameras). These tools are based upon the Graph library which is full
|
||
of those neat rendering and animation algorithms that those 3D faqs
|
||
keep mentioning. It also implements
|
||
some rendering techniques that were presented at Siggraph 96 by Ken
|
||
Musgrave and was used to generate an animation for Siggraph '95.
|
||
|
||
<BR clear=both>
|
||
|
||
New features since version 1.03:
|
||
<UL>
|
||
<LI>elimination of a memory leak w/ the polygon class
|
||
<LI>implemented a vector system for fast preview of frames
|
||
<LI>reorganize rendering process to support future parallel processing
|
||
<LI>30-60 % reduction in rendering time and memory usage
|
||
</UL>
|
||
|
||
The Pixcon & Anitroll home page is at:
|
||
|
||
<BR clear=both>
|
||
|
||
<A HREF="http://www.radix.net/~dunbar/index.html">
|
||
http://www.radix.net/~dunbar/index.html</A>
|
||
|
||
<BR clear=both>
|
||
Comments can be emailed to
|
||
<A HREF="mailto:dunbar@saltmine.radix.net">dunbar@saltmine.radix.net</A>
|
||
|
||
Pixcon is available either through the above web site or at Sunsite.
|
||
It is currently under:
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/Incoming/pixcon104.tgz">
|
||
/pub/Linux/Incoming/pixcon104.tgz</A>
|
||
and will be moved to:
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/pixcon104.tgz">
|
||
/pub/Linux/apps/graphics/pixcon104.tgz</A>
|
||
|
||
NOTE: there is a file pixcon1.04.tgz in those directories,
|
||
but it's corrupted. Be sure to get the correct files.
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td colspan=4>
|
||
<H4>
|
||
ELECTROGIG 3DGO
|
||
</H4>
|
||
 
|
||
ELECTROGIG
|
||
is a software company specialiced in
|
||
3D solid modeling, visualization and animation software.
|
||
The latest version of 3DGO (version 3.2), a modeling
|
||
animation and raytracing package, is now available for
|
||
the Intel Linux platform. A beta version is also available for the
|
||
MkLinux platform.
|
||
Take a look at the benchmarks for Linux
|
||
on the intel platform:
|
||
<A HREF="http://www.gig.nl/products/prodbench.html">
|
||
http://www.gig.nl/products/prodbench.html</A>.
|
||
|
||
<BR clear=both>
|
||
 
|
||
3DGO was originally developed for the SGI platform and
|
||
is available for the SGI, SUN and HP platforms.
|
||
|
||
<BR clear=both>
|
||
 
|
||
For more comprehensive information about 3DGO, check out the
|
||
WWW-site:
|
||
<A HREF="http://www.gig.nl/products/prodinfo.html">
|
||
http://www.gig.nl/products/prodinfo.html</A>.
|
||
|
||
<BR clear=both>
|
||
 
|
||
You can download a demo-version of 3DGO for linux, this version
|
||
has all functionality, except the save functions. Go to our
|
||
download area:
|
||
<A HREF="ftp://ftp.gig.nl/demo/">
|
||
ftp://ftp.gig.nl/demo/</A>.
|
||
Please Read the .txt files before downloading.
|
||
|
||
<P clear=both>
|
||
ELECTROGIG Technology
|
||
<BR clear=both>
|
||
<A HREF="mailto:info@gig.nl">
|
||
INFO: info@gig.nl</A>
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td width="50%">
|
||
<table>
|
||
<tr>
|
||
<td>
|
||
<H4>
|
||
EZWGL v1.2, the EZ widget and graphics library.
|
||
</H4>
|
||
|
||
EZWGL is a C library written on top of Xlib. It has been developed on
|
||
a Linux system and has been tested on the following platforms:
|
||
SunOS 4.1.4, OSF1 V3.2 Alpha, IRIX 5.3 Linux 1.2 and Linux 2.0.23.
|
||
It should work on all Unices with X11R6.
|
||
This release is the first one that comes with a complete postscript
|
||
manual.
|
||
<P>
|
||
For more information, check out
|
||
<A HREF="http://www.ma.utexas.edu/~mzou/EZWGL">
|
||
http://www.ma.utexas.edu/~mzou/EZWGL</A>.
|
||
</td>
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<tr>
|
||
<td>
|
||
<H4>
|
||
xfpovray v1.2b
|
||
</H4>
|
||
|
||
A new release of xfpovray, the graphical interface to
|
||
POV-Ray, has been released by
|
||
<A HREF="mailto:mallozzir@cspar.uah.edu"> Robert S. Mallozzi</A>.
|
||
xfpovray v1.2b requires the XForms library
|
||
and supports most of the numerous options of POV-Ray. You can view
|
||
an image of the interface and get the source code from
|
||
|
||
<BR clear=both>
|
||
<A HREF="http://cspar.uah.edu/~mallozzir/">http://cspar.uah.edu/~mallozzir/</A>
|
||
<BR clear=both>
|
||
There is a link there to the XForms home page if you don't yet have this
|
||
library installed.
|
||
</td>
|
||
</table>
|
||
</td>
|
||
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<td bgcolor="#ffffff" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<td width="49%">
|
||
<H4>
|
||
libgr V2.0.12
|
||
</H4>
|
||
|
||
A new version of libgr, version 2.0.12, is now available from
|
||
<A HREF="ftp://ftp.ctd.comsat.com:/pub/linux/ELF/libgr-2.0.12.tar.gz">
|
||
ftp.ctd.comsat.com:/
|
||
<BR>
|
||
pub/linux/ELF/libgr-2.0.12.tar.gz</A>.
|
||
<UL>
|
||
<LH>Changes to this release:
|
||
<LI> updated pbm, pgm, ppm, pnm from netpbm-94.
|
||
<LI> All the netpbm-94 apps are now included. They are NOT built or
|
||
installed by default, however. You must say make everything, make
|
||
install_everything.
|
||
<LI> Minor mods to compile with bash-2.0.
|
||
<LI> Minor mods to compile with glibc-2.
|
||
</UL>
|
||
<I>libgr</I> is a collection of graphics
|
||
libraries, which includes fbm, jpeg,
|
||
pbm, pgm, ppm, pnm, png, tiff, rle.
|
||
<P>
|
||
<I>libgr</I> will build shared libs on Linux-ELF and on HP/UX.
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td colspan=4>
|
||
<H4>
|
||
EPSCAN - scanner driver for EPSON ES-1200C/GT-9000 scanners
|
||
</H4>
|
||
|
||
EPSCAN is a scanner driver for EPSON ES-1200C/GT-9000 scanners. It
|
||
includes a driver and a nice Qt-based X frontend.
|
||
It allows previewing, and
|
||
selecting a region of an image to be scanned, as well as changing
|
||
scanner settings. It only supports scanners attached to a SCSI port,
|
||
not to the parallel port.
|
||
|
||
<P>
|
||
EPSCAN can be found at
|
||
<BR>
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/Incoming/epscan-0.1.tar.gz">
|
||
ftp://sunsite.unc.edu/pub/Linux/Incoming/epscan-0.1.tar.gz</A>.
|
||
<BR>RPM versions of the binary and source are available from
|
||
<A HREF="ftp://ftp.redhat.com/pub/Incoming/epscan-0.1-1.src.rpm">
|
||
ftp://ftp.redhat.com/pub/Incoming/epscan-0.1-1.src.rpm</A>
|
||
<A HREF="ftp://ftp.redhat.com/pub/Incoming/epscan-0.1-1.i386.rpm">
|
||
ftp://ftp.redhat.com/pub/Incoming/epscan-0.1-1.i386.rpm</A>.
|
||
|
||
<BR>They're intended destinations are
|
||
<A HREF="ftp://ftp.redhat.com/pub/contrib/epscan-0.1-1.src.rpm">
|
||
ftp://ftp.redhat.com/pub/contrib/epscan-0.1-1.src.rpm</A>
|
||
<A HREF="ftp://ftp.redhat.com/pub/contrib/epscan-0.1-1.i386.rpm">
|
||
ftp://ftp.redhat.com/pub/contrib/epscan-0.1-1.i386.rpm</A>.
|
||
and
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/scanners/epscan-0.1.tar.gz">
|
||
ftp://sunsite.unc.edu/pub/Linux/apps/graphics/scanners/epscan-0.1.tar.gz</A>
|
||
|
||
<P>
|
||
The driver should work for any of the
|
||
ES-{300-800}C / GT-{1000-6500} models as well, but has not been
|
||
tested on these.
|
||
|
||
<UL>
|
||
<LH>Requirements:</LH>
|
||
<LI>Linux 2.x
|
||
<LI>XFree3.x
|
||
<LI>Qt library version >= 1.1
|
||
<LI>libtiff version >= 3.4
|
||
<LI>g++ version >= 2.7.2
|
||
</UL>
|
||
|
||
Author: Adam P. Jenkins
|
||
<<A HREF="mailto:ajenkins@cs.umass.edu">ajenkins@cs.umass.edu</A>>
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td width="50%">
|
||
<H4>
|
||
Inlab-Scheme Release 4
|
||
</H4>
|
||
|
||
Inlab-Scheme Release 4 is now available for Linux/386 (2.X kernel,
|
||
ELF binary) and FreeBSD.
|
||
|
||
<BR clear=b0th>
|
||
|
||
Inlab-Scheme is an independent implementation of the algorithmic
|
||
language Scheme as defined by the R4RS and the IEEE Standard
|
||
1178. In addition to the language core Inlab-Scheme has support
|
||
for bitmap/greymap processing of several kinds. Inlab-Scheme can
|
||
be used as a general tool for image processing, OCR or specialized
|
||
optical object recognition.
|
||
|
||
<BR clear=b0th>
|
||
|
||
Inlab-Scheme Release 4 reads and writes multipage tiff/G4, XBM and
|
||
PNG graphic file formats. Inlab-Scheme Release 4 has built in
|
||
converters for various patent image file formats (USAPat,
|
||
PATENTIMAGES and ESPACE).
|
||
|
||
<BR clear=b0th>
|
||
|
||
Inlab-Scheme is distributed at
|
||
<A HREF="http://www.munich.net/inlab/scheme">
|
||
http://www.munich.net/inlab/scheme</A>,
|
||
where additional information about the current state of the project,
|
||
supported platforms, current license fees and more is available.
|
||
|
||
</td>
|
||
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<td bgcolor="#ffffff" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<td width="49%">
|
||
<H4>
|
||
The Linux Game SDK Project
|
||
</H4>
|
||
The new WWW page for the Linux Game SDK is at
|
||
<BR clear=b0th>
|
||
|
||
<A HREF="http://www.ultranet.com/~bjhall/GSDK/">
|
||
http://www.ultranet.com/~bjhall/GSDK/</A>.
|
||
|
||
<BR clear=b0th>
|
||
|
||
The Linux GSDK Project is a new project which aims to make
|
||
a consistent and easy to use set of libraries to ease game
|
||
developers (professional or not) to make first class games
|
||
under the Linux OS. The GSDK will provide libraries for 2D and
|
||
3D graphics, advanced sound, networked games and input devices.
|
||
It should also improve the development of multimedia applications for
|
||
Linux. See the Web site for more informations.
|
||
|
||
<BR clear=b0th>
|
||
|
||
The GSDK mailing list has moved from linux-gsdk@endirect.qc.ca to
|
||
<A HREF="mailto:linux-gsdk@mail.wustl.edu">linux-gsdk@mail.wustl.edu</A>.
|
||
Additionnal lists have been created for the various teams.
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td colspan=4>
|
||
<H4>
|
||
WebMagick Image Web Generator
|
||
</H4>
|
||
 
|
||
WebMagick is a package which supports making image collections available
|
||
on the Web. It recurses through directory trees, building HTML pages,
|
||
imagemap files, and client-side/server-side maps to allow the user to
|
||
navigate through collections of thumbnail images (somewhat similar to
|
||
xv's Visual Schnauzer) and select the image to view with a mouse click.
|
||
|
||
<BR clear=both>
|
||
 
|
||
WebMagick is based on the "PerlMagick" ImageMagick PERL extension rather
|
||
than external ImageMagick utilities (as its predecessor "Gifmap" is). This
|
||
alone is good for at least a 40% performance increase on small images.
|
||
WebMagick supports smart caching of thumbnails to speed montage generation
|
||
on average size images. After a first pass at "normal" speed, successive
|
||
passes (upon adding or deleting images) are 5X to 10X faster due to the
|
||
caching.
|
||
|
||
<BR clear=both>
|
||
 
|
||
WebMagick supports a very important new feature in its caching subsystem:
|
||
it can create and share a thumbnail cache with John Bradley's 'xv' program.
|
||
This means that if you tell 'xv' to do an update, WebMagick montages will
|
||
benefit and you can run WebMagick as a batch job to update xv's thumbnails
|
||
without having to wait for 'xv' to do its thumbnail reduction (and get a
|
||
browsable web besides!).
|
||
|
||
<BR clear=both>
|
||
 
|
||
WebMagick requires the ImageMagick (3.8.4 or later) and PerlMagick (1.0 or
|
||
later) packages as well as a recent version of PERL 5.
|
||
|
||
<table>
|
||
<tr>
|
||
<td> Primary-site:
|
||
<td>
|
||
<A HREF="http://www.cyberramp.net/~bfriesen/webmagick/dist/webmagick-1.17.tar.gz">
|
||
http://www.cyberramp.net/~bfriesen/webmagick/dist/webmagick-1.17.tar.gz</A>
|
||
<tr>
|
||
<td> Alternate-site:
|
||
<td>
|
||
<A HREF="ftp://ftp.wizards.dupont.com/pub/ImageMagick/perl/webmagick-1.17.tar.gz">
|
||
ftp.wizards.dupont.com/pub/ImageMagick/perl/webmagick-1.17.tar.gz</A>
|
||
|
||
<tr>
|
||
<td> Perl Language Home Page:
|
||
<td> <A HREF="http://www.perl.com/perl/index.html">
|
||
http://www.perl.com/perl/index.html</A>
|
||
<tr>
|
||
<td> ImageMagick:
|
||
<td> <A HREF="http://www.wizards.dupont.com/cristy/ImageMagick.html">
|
||
http://www.wizards.dupont.com/cristy/ImageMagick.html</A>
|
||
<tr>
|
||
<td> PerlMagick:
|
||
<td> <A HREF="http://www.wizards.dupont.com/cristy/www/perl.html">
|
||
http://www.wizards.dupont.com/cristy/www/perl.html</A>
|
||
<tr>
|
||
<td> Author:
|
||
<td> <A HREF="mailto:bfriesen@simple.dallas.tx.us">
|
||
Bob Friesenhahn (bfriesen@simple.dallas.tx.us)</A>
|
||
</table>
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td width="50%">
|
||
<H4>
|
||
SIMLIB IG - Commercial library
|
||
</H4>
|
||
 
|
||
SIMLIB IG a C library which enables communication with Evans &
|
||
Sutherland graphics Supercomputers (so called image generators).
|
||
It enables the user to communicate with Evans & Sutherland image
|
||
generators (Liberty and ESIG Systems) using a very efficient raw
|
||
Ethernet protocol. There is no need for using opcodes, since
|
||
SIMLIB IG provides an API to the functionality of the image
|
||
generators.
|
||
|
||
<BR clear=both>
|
||
 
|
||
Documentation comes printed in English, and source code
|
||
examples are provided on the distribution media.
|
||
The software is also available for SGI and NT systems.
|
||
|
||
<P clear=both>
|
||
SIMLIB IG for Linux is $2500 (US)
|
||
<BR clear=both>
|
||
SIMLIB IG for all other OS is $5000 (US)
|
||
|
||
<P clear=both>
|
||
<A HREF="mailto:office@knienieder.co.at">
|
||
KNIENIEDER Simulationstechnik KG
|
||
(office@knienieder.co.at)</a>
|
||
<BR clear=both>
|
||
Technologiezentrum Innsbruck
|
||
<BR clear=both>
|
||
AUSTRIA/EUROPE
|
||
</td>
|
||
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<td bgcolor="#ffffff" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<td width="49%">
|
||
<H4>
|
||
mtekscan - Linux driver for MicroTek ScanMaker SCSI scanners
|
||
</H4>
|
||
mtekscan is a Linux driver for MicroTek
|
||
ScanMaker (and compatible) SCSI scanners. Originally developed for the
|
||
ScanMaker E6, it is (so far) known to also work with the ScanMaker
|
||
II/IIXE/IIHR/III/E3/35t models, as well as with the Adara ImageStar I,
|
||
Genius ColorPage-SP2 and Primax Deskscan Color.
|
||
<BR clear=both>
|
||
|
||
The new version of mtekscan is v0.2. It's still in beta testing,
|
||
but all major options should work without problems. Besides some
|
||
small bugfixes and minor improvements, the new version contains a
|
||
couple of new features, most notably:
|
||
<UL>
|
||
<LI>3-pass scanning support
|
||
<LI>gamma correction
|
||
<LI>loadable gamma correction tables
|
||
<LI>better documentation
|
||
</UL>
|
||
|
||
mtekscan v0.2 is available as mtekscan-0.2.tar.gz from the
|
||
Fast Forward ftp-server:
|
||
<BR clear=both>
|
||
<A HREF="ftp://fb4-1112.uni-muenster.de/pub/ffwd/">
|
||
ftp://fb4-1112.uni-muenster.de/pub/ffwd/</A>
|
||
<BR clear=both>
|
||
or from sunsite:
|
||
<BR clear=both>
|
||
<A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/scanners/">
|
||
ftp://sunsite.unc.edu/
|
||
<BR clear=both>
|
||
pub/Linux/apps/graphics/scanners/</A>
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td colspan=4>
|
||
<H4>
|
||
PNG binaries for Netpbm tools now available
|
||
</H4>
|
||
Linux binaries for pnmtopng, pngtopnm, and gif2png are available at:
|
||
<A HREF="http://www.universe.digex.net/~dave/files/pngstuff.tgz">
|
||
http://www.universe.digex.net/~dave/files/pngstuff.tgz</A>
|
||
If you have trouble dowloading that, see
|
||
<A HREF="http://www.universe.digex.net/~dave/files/index.html">
|
||
http://www.universe.digex.net/~dave/files/index.html</A>
|
||
for helpful instructions.
|
||
|
||
<BR clear=both>
|
||
 
|
||
PNG is the image format that renders GIF obsolete.
|
||
For details on that, you can visit the PNG home page at:
|
||
<A HREF="http://www.wco.com/~png/">
|
||
http://www.wco.com/~png/</A>.
|
||
|
||
<BR clear=both>
|
||
 
|
||
The only shared libraries you need are libc and libm; all of the
|
||
others are linked statically.
|
||
The versions of libraries used to build the programs are those
|
||
that were publicly available as of 1997-04-06:
|
||
<UL>
|
||
<LI>pnmtopng-2.34
|
||
<LI>gif2png 0.6 (beta)
|
||
<LI>zlib-1.0.4 (statically linked)
|
||
<LI>libpng-0.90 (statically linked)
|
||
<LI>netpbm-1mar1994 (statically linked)
|
||
</UL>
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
|
||
<tr>
|
||
<td colspan=4>
|
||
<H4>
|
||
TN-Image Version 2.5.0
|
||
</H4>
|
||
|
||
TN-Image is:
|
||
<UL TYPE=square>
|
||
<LI> Scientific image analysis program for the X Window System.
|
||
<LI> Mouse & menu-based image editing and scientific analysis with
|
||
user-friendly user interface.
|
||
<LI>Freely distributable.
|
||
</UL>
|
||
|
||
It includes a 123-page manual, tutorials, and on-line help.
|
||
The Unix version is highly customizable with regard to fonts,
|
||
colors, etc.
|
||
|
||
<UL TYPE=square>
|
||
<LH> System requirements</LH>
|
||
<LI> Unix version requires X11R5 or higher and Motif 1.2 or higher.
|
||
Statically-linked version does not require Motif.
|
||
<LI> Binaries are provided for the Linux (x86), Solaris, Irix,
|
||
ConvexOS, and MS-DOS.
|
||
<LI> DOS version requires SVGA card and 4 MB of RAM; handles all
|
||
VESA screen modes including 1600x1200, as well as XGA and XGA-2
|
||
video cards.
|
||
</UL>
|
||
|
||
|
||
<UL TYPE=square>
|
||
<LH>Some features of TN-Image</LH>
|
||
<LI> Scanner interface for H/P SCSI scanners with preview scan and
|
||
interactive image scanning at 8, 10, 12, 24, 30, and 36 bits/pixel
|
||
(Not available in ConvexOS and MS-DOS versions).
|
||
<LI> Create, cut/paste, and add text labels in multiple fonts and graphic
|
||
elements such as circles, Bezier curves, freehand drawing, etc.
|
||
<LI> Handles up to 512 images of any depth simultaneously. Each image can
|
||
be in a separate window or in a single large window to facilitate
|
||
creation of composite images. Cut/paste works even if images are
|
||
of different depths or in different windows.
|
||
<LI> Prints to PCL or PostScript printer. CMY, CMYK, or RGB formats.
|
||
<LI> Import/export formats: PCX, IMG, TIF (both Macintosh and PC),
|
||
JPEG, BMP, GIF, TGA, IMG, Lumisys Xray scanner, and ASCII images, of
|
||
any depth from 1-32 bits per pixel, color or monochrome, raw binary
|
||
images, 3D images (such as PET scan and confocal images), and
|
||
user-definable image formats. Handles unusual image depths such
|
||
as 12- and 17-bit grayscale.
|
||
<LI> Interconversion of image formats.
|
||
<LI> Solid and gradient flood fill.
|
||
<LI> R, G, and B image planes can be manipulated separately.
|
||
<LI> Adjust color, intensity, contrast, and grayscale mapping. Grayscale
|
||
images deeper than 8 bits/pixel, such as medical grayscale images,
|
||
can be viewed with a sliding scale to enhance any particular intensity
|
||
region.
|
||
<LI> Rotate, resize, warp, flip, invert or remap colors; crop, paint,
|
||
spray paint, etc.
|
||
<LI> Convolution filters: sharpen, blur, edge enhancement, shadow
|
||
sharpening, background subtract, background flatten, and noise
|
||
filter.
|
||
<LI> Interactively create arbitrary colormaps or select from 10,000
|
||
pre-defined colormaps.
|
||
<LI> Macro language and macro editor. Macro programming guide is included.
|
||
<LI> Image algebra function allows multiple images to be subtracted or
|
||
otherwise transformed according to arbitrary user-defined equations.
|
||
<LI> RGB & intensity histograms.
|
||
<LI> 3D images can be viewed interactively as a movie, or each frame can
|
||
be manipulated separately.
|
||
<LI> Many advanced features
|
||
</UL>
|
||
|
||
Contact and archive information:
|
||
<table>
|
||
<tr>
|
||
<td>Contact:
|
||
</td>
|
||
<td>tjnelson@las1.ninds.nih.gov
|
||
</td>
|
||
<tr>
|
||
<td>Archive locations
|
||
</td>
|
||
<td>
|
||
<A HREF="ftp://sunsite.unc.edu:/apps/graphics/tnimage250.linux.tar.gz">
|
||
sunsite.unc.edu:/apps/graphics/tnimage250.linux.tar.gz</A>
|
||
|
||
<br>
|
||
<A HREF="ftp://sunsite.unc.edu:/apps/graphics/tnimage250.linux-static.tar.gz">
|
||
sunsite.unc.edu:/apps/graphics/tnimage250.linux-static.tar.gz</A>
|
||
|
||
<br> <A HREF="ftp://las1.ninds.nih.gov:/pub/unix/tnimage250.linux.tar.gz">
|
||
las1.ninds.nih.gov:/pub/unix/tnimage250.linux.tar.gz</A>
|
||
|
||
<br><A HREF="ftp://las1.ninds.nih.gov:/pub/unix/tnimage250.linux-static.tar.gz">
|
||
las1.ninds.nih.gov:/pub/unix/tnimage250.linux-static.tar.gz</A>
|
||
|
||
<BR><A HREF="ftp://las1.ninds.nih.gov:/pub/unix/tnimage250.solaris.tar.gz">
|
||
las1.ninds.nih.gov:/pub/unix/tnimage250.solaris.tar.gz</A>
|
||
|
||
<BR><A HREF="ftp://las1.ninds.nih.gov:/pub/unix/tnimage250.irix.tar.gz">
|
||
las1.ninds.nih.gov:/pub/unix/tnimage250.irix.tar.gz</A>
|
||
|
||
<br><A HREF="ftp://las1.ninds.nih.gov:/pub/unix/tnimage250.solaris.tar.gz">
|
||
las1.ninds.nih.gov:/pub/unix/tnimage250.solaris.tar.gz</A>
|
||
|
||
<br><A HREF="ftp://las1.ninds.nih.gov:/pub/dos/tnimg216.zip">
|
||
las1.ninds.nih.gov:/pub/dos/tnimg216.zip</A>
|
||
</td>
|
||
</table>
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#ffffff" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
VSPACE="5" HSPACE="10" WIDTH="1" HEIGHT="1"></td>
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<tr>
|
||
<td colspan=4 bgcolor="#ffffff" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
VSPACE="5" HSPACE="10" WIDTH="1" HEIGHT="1"></td>
|
||
|
||
<tr>
|
||
<td colspan=4>
|
||
<!--
|
||
-- Did You Know Section
|
||
-->
|
||
<H4>Did You Know?</H4>
|
||
|
||
...that there is a converter available to turn POV-Ray heightfields
|
||
into RenderMan compliant RIB files for use with BMRT? Florian
|
||
Hars writes:
|
||
<BLOCKQUOTE>
|
||
I've worked on my code, now it uses libpgm and has all the necessary
|
||
vector routines included, it is on my page (with some comparisions of
|
||
rendering time and memory consumption):
|
||
<A HREF="http://www.math.uni-hamburg.de/home/hars/rman/height.html">
|
||
http://www.math.uni-hamburg.de/home/hars/rman/height.html</A>
|
||
</BLOCKQUOTE>
|
||
Florian also has some pages of general POV vs. RenderMan comparisons:
|
||
<A HREF="http://www.math.uni-hamburg.de/home/hars/rman/rm_vs_pov.html">
|
||
http://www.math.uni-hamburg.de/home/hars/rman/rm_vs_pov.html</A>
|
||
|
||
<P>
|
||
|
||
...that there is a freely available RenderMan shader library from
|
||
Guido Quaroni? The library contains shaders from the <B>RenderMan
|
||
Companion</B>, Pixar, Larry Gritz and a number of other places.
|
||
You can find a link to it from the BMRT Web pages at
|
||
<A HREF="http://www.seas.gwu.edu/student/gritz/bmrt.html">
|
||
http://www.seas.gwu.edu/student/gritz/bmrt.html</A>.
|
||
|
||
<P>
|
||
|
||
...that there is an FTP site at CalTech that contains a large
|
||
number of RenderMan shaders? The collection is similar to Guido
|
||
Quaroni's archive, except the FTP site includes sample RIB files
|
||
that use the shaders plus the rendered RIBs in both GIF and TIFF
|
||
formats. The site is located at
|
||
<A HREF="ftp://pete.cs.caltech.edu/pub/RMR/Shaders/">
|
||
ftp://pete.cs.caltech.edu/pub/RMR/Shaders/</A>.
|
||
|
||
<!--
|
||
-- Q and A Section
|
||
-->
|
||
<P><FONT size=3><B>Q and A</B></FONT>
|
||
<P>
|
||
<I>Q: Where can I get a copy of the netscape color cube for
|
||
use with Netpbm? How should it be used?
|
||
</I>
|
||
<P>A: The color cube can be found at the web site for
|
||
the text <B>Creating Killer Websites</B> at
|
||
<A HREF="http://www.killersites.com/images/color_cube_colors.gif">
|
||
http://www.killersites.com/images/color_cube_colors.gif</A>.
|
||
The cube can be used in the following manner:
|
||
<CENTER>
|
||
<FONT size=2>
|
||
<table>
|
||
<tr>
|
||
<td>% giftopnm color_cube_colors.gif" > color_cube.ppm
|
||
</td>
|
||
<tr>
|
||
<td>% tgatoppm image.tga | ppmquant -m color_cube.ppm -fs | \
|
||
<br>
|
||
ppmtogif -interlace -transparent rgb:ff/ff/ff > image.gif
|
||
</td>
|
||
</table>
|
||
</FONT>
|
||
</CENTER>
|
||
where ff/ff/ff is any set of Red, Green, and Blue values
|
||
to make transparent.
|
||
|
||
|
||
<P>
|
||
<I>Q: Where can I get models of the human figure?
|
||
</I>
|
||
<P>A:
|
||
Here are two addresses for human figure models. The first is 3DCafe's
|
||
official disclaimer and the second takes you straight to the human
|
||
figures. Please read the disclaimer first (although you may need
|
||
an asp capable browser, such as Netscape 3.x to do so):
|
||
<A HREF="http://www.3dcafe.com/meshes.htm">
|
||
http://www.3dcafe.com/meshes.htm</A>
|
||
<BR><A HREF="http://www.3dcafe.com/anatomy.htm">
|
||
http://www.3dcafe.com/anatomy.htm</A>
|
||
|
||
<P><FONT size=2>From the <I>IRTC-L</I> mailing list</FONT>
|
||
|
||
<P>
|
||
<I>Q: Is there a VRML 2.0 compliant browser available for Linux?
|
||
</I>
|
||
<P>A: Yes. Dimension X's Liquid Reality is a fully compliant
|
||
VRML 2.0 browser. The download web page says that there will
|
||
be support as a plug-in for Netscape 3.x soon. This is a
|
||
commercial product with a free trial version available for
|
||
download. See
|
||
<A HREF="http://www.dimensionx.com/products/lr/download/">
|
||
http://www.dimensionx.com/products/lr/download/</A> for more
|
||
details.
|
||
|
||
<P><FONT size=2>From a friendly reader, whose name I
|
||
absent mindedly discarded before recording it. My
|
||
apologies.</FONT>
|
||
<P>
|
||
<I>Q: Can anyone tell me how I would go about defining a height field
|
||
according to a specific set of data points?
|
||
My goal is to be able to take a topographic map, overlay it with a
|
||
rough grid, and use the latitude, longitude, and elevation markings
|
||
as points in a definable 3-D space to create a height field roughly
|
||
equal to real topography.
|
||
</I>
|
||
<P>A: The easiest way is probably to write a PGM file.
|
||
I wouldn't use longitude and latidude because the length of one degree
|
||
isn't fixed and it will give reasonable results only near the equator.
|
||
Use UTM coordinates or superimpose any arbitrary grid on your map
|
||
which represents approximate squares.
|
||
|
||
<PRE>
|
||
P2
|
||
# kilimajaro.pgm
|
||
15 10
|
||
59
|
||
10 15 18 20 21 22 23 23 21 20 19 18 17 16 15
|
||
11 15 19 22 27 30 30 30 29 28 25 20 19 18 17
|
||
13 15 19 21 28 38 36 40 40 35 30 24 20 19 18
|
||
15 16 18 20 29 39 37 44 59 44 38 30 22 19 18
|
||
15 16 18 20 28 30 30 40 50 46 51 48 28 20 19
|
||
15 15 16 17 18 19 20 24 30 35 37 37 30 20 19
|
||
15 15 14 15 16 17 18 19 22 29 30 29 27 20 19
|
||
15 15 14 13 15 16 15 17 18 20 22 20 20 20 18
|
||
15 14 13 11 12 12 12 13 14 15 17 15 15 15 14
|
||
14 11 10 9 9 10 10 10 9 10 13 12 11 11 11
|
||
</PRE>
|
||
|
||
Use it with scale <15,1.18,10> to get an to-scale image and with a
|
||
larger y-scale if you want to see something. The earth is incredibly
|
||
flat.
|
||
|
||
<P><FONT size=2>From Florian Hars via the
|
||
<I>IRTC-L</I> mailing list</FONT>
|
||
|
||
<P>
|
||
<A NAME="rib-csg"></A>
|
||
<I>Q: I've been fiddling with some simple CSG using BMRT and have run
|
||
into a problem. I'm trying to cut a square out of a plane that
|
||
was created from a simple bilinear patch. Whatever I use to define the
|
||
square (a box actually) comes out white instead of the background color
|
||
(black in this case). I dont know what I'm doing wrong and was
|
||
wondering if someone might take a peek at this for me.
|
||
</I>
|
||
<P>A:
|
||
There are several problems with your RIB file, as well as your use
|
||
of CSG. The two biggies are:
|
||
|
||
<P>You just can't do this:
|
||
|
||
<PRE>
|
||
ObjectBegin 2
|
||
SolidBegin "primitive"
|
||
TransformBegin
|
||
Translate -1 0 0
|
||
Rotate -90 0 1 0
|
||
Patch "bilinear" "P"
|
||
[ -1 -1 0 1 -1 0
|
||
-1 1 0 1 1 0 ]
|
||
TransformEnd
|
||
... etc.
|
||
ObjectEnd
|
||
</PRE>
|
||
|
||
 
|
||
Transformations just aren't allowed inside object definitions.
|
||
Remember that object instances inherit the entire graphics state
|
||
that's active when they are instanced -- including transformations.
|
||
So all primitives within the instanced object get the very same
|
||
transformation. If they're all bilinears like you have them, that
|
||
means that they will all end up on top of one another.
|
||
|
||
<BR clear=both>
|
||
 
|
||
For this reason and others, I urge everybody to <I>not use instanced
|
||
objects at all</I> for any RenderMan compliant renderer. They're quite
|
||
useless as described in the RenderMan 3.1 spec.
|
||
Yes, I know that <B>RenderMan Companion</B> has an example that does
|
||
exactly what I said is illegal. The example is wrong, and will not
|
||
work with either PRMan or BMRT.
|
||
|
||
<BR clear=both>
|
||
 
|
||
Solid (CSG) operations are meant only to operate on <I>solids</I>.
|
||
A solid is a boundary representation which divides space into three
|
||
distinct loci: (a) the boundary itself, which has finite surface area,
|
||
(b) a (possibly disconnected) region of finite volume (the "inside"),
|
||
and (c) a connected region of infinite volume (the "outside").
|
||
You can't subtract a box from a bilinear patch, since a bilinear patch
|
||
isn't a solid to begin with.
|
||
|
||
<BR clear=both>
|
||
 
|
||
If you want a flat surface with a square hole, there are two methods
|
||
that I'd recommend: (a) simply use several bilinears (4 to be exact)
|
||
for the surface, like this:
|
||
|
||
<PRE>
|
||
+-----------------------+
|
||
| #1 |
|
||
| |
|
||
+======+---------+======+
|
||
| | | |
|
||
| #2 | (hole) | #3 |
|
||
| | | |
|
||
+======+---------+======+
|
||
| #4 |
|
||
| |
|
||
+-----------------------+
|
||
</PRE>
|
||
|
||
Or, (B) if you really want to be fancy, use a single flat order 2
|
||
NURBS patch with an order 2 trim curve to cut out a hole.
|
||
|
||
<P><FONT size=2>
|
||
From Larry Gritz <<A HREF="mailto:lg@pixar.com">lg@pixar.com</A>>
|
||
</FONT>
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=4 bgcolor="#ffffff" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
VSPACE="5" HSPACE="10" WIDTH="1" HEIGHT="1"></td>
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<tr>
|
||
<td colspan=4 bgcolor="#ffffff" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
VSPACE="5" HSPACE="10" WIDTH="1" HEIGHT="1"></td>
|
||
</table>
|
||
|
||
|
||
|
||
<P>
|
||
<A NAME="musings">
|
||
<table>
|
||
<tr>
|
||
<td>
|
||
<IMG SRC="../gx/hammel/musings.gif" ALT="Musings" ALIGN="left"
|
||
HSPACE="0" VSPACE="0" WIDTH="247" HEIGHT="52">
|
||
</td>
|
||
</table>
|
||
</A>
|
||
<BR clear=both>
|
||
|
||
<TABLE width=560>
|
||
<tr>
|
||
<td colspan=5 valign=top>
|
||
<H4>
|
||
Correcting for display gamma
|
||
</H4>
|
||
<IMG SRC="./gx/hammel/gamma-scale.jpg"
|
||
ALT="Gamma Correction Scale" ALIGN="right"
|
||
HSPACE="8" WIDTH="300" HEIGHT="832">
|
||
|
||
This past 2 months I've been hard at work on an entry for this
|
||
round of the IRTC, the Internet Ray Tracing Competition. In
|
||
previous rounds I had submitted entries using POV-Ray, but for
|
||
this round I switched to BMRT, mostly so I could learn the RenderMan
|
||
API and how to write shaders using the RenderMan shading language.
|
||
This months main article is the second of a three part series on
|
||
BMRT. The BMRT package is written by Larry Gritz, and Larry was
|
||
gracious enough to offer some wonderful critiques and tips on
|
||
my image.
|
||
|
||
<BR>
|
||
|
||
During out email correspondence, Larry noticed I had overlit my
|
||
scenes quite badly. While we tried to figure out what was causing
|
||
this (it turned out to be a misuse of some parameters to some
|
||
spotlights I was using) he asked if I had gamma corrected for my
|
||
display. Gamma correction is a big issue in computer graphics, one
|
||
that is often overlooked by novices. I'd heard and read quite a
|
||
bit about gamma correction but had never really attempted to determine
|
||
how to adjust the gamma for my display. Larry offered an explanation,
|
||
a quick way to test the gamma on my system, and a tip for
|
||
adjusting for gamma correction directly in the BMRT renderer, rendrib.
|
||
I thought this would be a great thing to share with my readers, so
|
||
here it is.
|
||
|
||
<BR>
|
||
|
||
Rendrib produces linear pixels for its output -- i.e. a pixel with
|
||
value 200 represents twice as much light as a pixel of value 100.
|
||
Thus, it's expected that your display will be twice as bright
|
||
(photometrically, not necessarily perceptually) on a pixel of 200
|
||
than one of 100.
|
||
|
||
<BR>
|
||
|
||
This sort of display only really happens if you correct for gamma,
|
||
the nonlinearity of your monitor. In order to check this,
|
||
take a look at the following chart. Display the chart as you'd
|
||
view any image. You'll notice that if you squint, the apparent
|
||
brightness of the left side will match some particular number on
|
||
the right. This is your gamma correction factor that must be
|
||
applied to the image to get linear response on your particular
|
||
monitor.
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td valign=top width="54%">
|
||
<BR>
|
||
|
||
If your display program uses Mesa (as rendrib's framebuffer display
|
||
does), you can set an environment variable, MESA_GAMMA, to this value
|
||
and it will transparently do the correction as it writes pixels to the
|
||
screen. Most display programs let you correct gamma when you view
|
||
an image, though I've had trouble getting xv to do it without messing
|
||
up the colors in a weird way.
|
||
|
||
<BR>
|
||
|
||
Another alternative is to put the following line in your RIB file:
|
||
|
||
<PRE>
|
||
Exposure 1 <gamma>
|
||
</PRE>
|
||
|
||
</td>
|
||
|
||
<td bgcolor="#ffffff" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
WIDTH="0" HEIGHT="0"></td>
|
||
<td bgcolor="#000000" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<td bgcolor="#ffffff" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
WIDTH="0" HEIGHT="0"></td>
|
||
|
||
|
||
<td valign=top width="40%" cellpadding=0 cellspacing=0>
|
||
<table>
|
||
<tr>
|
||
<td valign=top cellpadding=0 cellspacing=0>
|
||
<A NAME="next-column">
|
||
<U><B>More Musings...</B></U>
|
||
</A>
|
||
<BR clear=both>
|
||
<A HREF="more-musings.html#1">
|
||
My Entry in the March/April IRTC
|
||
</A> - a case study in learning to
|
||
use RenderMan and BMRT
|
||
<P clear=both>
|
||
<A HREF="bmrt-part2.html">
|
||
BMRT Part 2 - The RenderMan Shading Language
|
||
</A>
|
||
|
||
</td>
|
||
|
||
<tr>
|
||
<td bgcolor="#000000" cellpadding=1 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
WIDTH="1" HEIGHT="1"></td>
|
||
|
||
</table>
|
||
</td>
|
||
|
||
<tr>
|
||
<td colspan=5>
|
||
where gamma was what you measured with the chart.
|
||
This will cause rendrib to pre-correct the output pixels for the
|
||
gamma of your display.
|
||
I think it's important to gamma correct so that at least you're
|
||
viewing the images the way that rendrib "expects" them to appear.
|
||
It can't know about the nonlinearities of your CRT without you
|
||
telling it.
|
||
|
||
<BR>
|
||
|
||
Larry has more on the gamma issue on his own pages. You can find
|
||
it at
|
||
<A HREF="http://www.seas.gwu.edu/student/gritz/gamma.html">
|
||
http://www.seas.gwu.edu/student/gritz/gamma.html</A>.
|
||
He also asked me to mention that he got this chart from
|
||
Greg Ward, but we didn't have any contact information for him.
|
||
Hopefully he doesn't mind our using it.
|
||
|
||
|
||
Readers should note that the image displayed in this article may
|
||
not provide accurate information for adjusting gamma since your
|
||
browser may dither the colors in a way which changes what the
|
||
actual value should be. Also, this image is a JPEG version of
|
||
the original TIFF image Larry supplied. Its possible the conversion
|
||
also changed the image. If you're interested in trying this out you
|
||
should grab
|
||
<A HREF="./gx/hammel/gamma-scale.tif">the original TIFF image</A>
|
||
(300x832).
|
||
</td>
|
||
|
||
</table>
|
||
|
||
|
||
<P>
|
||
<A NAME="resources">
|
||
<table>
|
||
<tr>
|
||
<td>
|
||
<IMG SRC="../gx/hammel/resources.gif" ALT="Resources" ALIGN="left"
|
||
HSPACE="0" VSPACE="0" WIDTH="246" HEIGHT="57">
|
||
</td>
|
||
</table>
|
||
</A>
|
||
|
||
<BR clear=both>
|
||
The following links are just starting points for finding more information
|
||
about computer graphics and multimedia in general for Linux systems. If
|
||
you have some application specific information for me, I'll add them to my
|
||
other pages or you can contact the maintainer of some other web site. I'll
|
||
consider adding other general references here, but application or site
|
||
specific information needs to go into one of the following general
|
||
references and not listed here.
|
||
|
||
<BR clear=both>
|
||
<P>
|
||
|
||
<A HREF="http://www.csn.net/~mjhammel/linux-graphics-howto.html">
|
||
Linux Graphics mini-Howto
|
||
</A>
|
||
|
||
<BR>
|
||
<A HREF="http://www.csn.net/~mjhammel/povray/povray.html">
|
||
Unix Graphics Utilities
|
||
</A>
|
||
|
||
<BR>
|
||
<A HREF="http://www.digiserve.com/ar/linux-snd/">
|
||
Linux Multimedia Page
|
||
</A>
|
||
|
||
<P>
|
||
Some of the Mailing Lists and Newsgroups I keep an eye on and where I get alot
|
||
of the information in this column:
|
||
|
||
<P> <A HREF="http://www.XCF.Berkeley.EDU/~gimp/">
|
||
The Gimp User and Gimp Developer Mailing Lists</A>.
|
||
<BR> <A HREF="http://www.povvray.org/irtc">
|
||
The IRTC-L discussion list</A>
|
||
<BR> <A HREF="news:comp.graphics.rendering.raytracing">
|
||
comp.graphics.rendering.raytracing</A>
|
||
<BR> <A HREF="news:comp.graphics.rendering.renderman">
|
||
comp.graphics.rendering.renderman</A>
|
||
<BR> <A HREF="news:comp.os.linux.announce">
|
||
comp.os.linux.announce</A>
|
||
<br>
|
||
|
||
|
||
<P>
|
||
<A NAME="future">
|
||
<H2>Future Directions</H2>
|
||
</A>
|
||
Next month:
|
||
<UL>
|
||
<LI>HF-Lab - no really, I mean it this time.
|
||
<LI>Possibly a review of Image Alchemy
|
||
<LI>A preview of Gimp 1.0 (unless its already released, in which
|
||
case it won't be a preview)
|
||
<LI>If I can find the info, I'll report on the future of 3D hardware
|
||
support from Xi Graphics, Metro and The XFree Project.
|
||
<LI>and who knows what else.
|
||
</UL>
|
||
<BR>
|
||
<A HREF="mailto:mjhammel@csn.net">
|
||
Let me know what you'd like to hear about!</A>
|
||
|
||
<P>
|
||
<HR>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Michael J. Hammel<BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./dotfile.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./kandinsky.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
<!-- =============================================================
|
||
This Page Designed by Michael J. Hammel.
|
||
Permission to use all graphics and other content for private,
|
||
non-commerical use is granted provided you give me (or the
|
||
original authors/artists) credit for the work.
|
||
|
||
CD-ROM distributors and commercial ventures interested in
|
||
providing the Graphics Muse for a fee must contact me,
|
||
Michael J. Hammel (mjhammel@csn.net), for permission.
|
||
============================================================= !-->
|
||
|
||
<A NAME="musings">
|
||
<table>
|
||
<tr>
|
||
<td>
|
||
<H2>More...</H2>
|
||
<BR clear=both>
|
||
<IMG SRC="../gx/hammel/musings.gif" ALT="Musings" ALIGN="left"
|
||
HSPACE="0" VSPACE="0" WIDTH="247" HEIGHT="52">
|
||
</td>
|
||
</table>
|
||
</A>
|
||
<BR clear=both>
|
||
|
||
<table>
|
||
<tr><td>
|
||
<UL>
|
||
<LI><A HREF="#1">My Entry in the March/April IRTC</A>
|
||
- a case study in learning to use RenderMan and BMRT
|
||
</UL></td>
|
||
</table>
|
||
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
VSPACE="5" WIDTH="1" HEIGHT="1">
|
||
<BR clear=both>
|
||
<table width=100%>
|
||
<tr>
|
||
<td width="100%" align=right>
|
||
<FONT size=1>
|
||
© 1997 <A HREF="mailto:mjhammel@csn.net">Michael J. Hammel</A>
|
||
</FONT></td>
|
||
<tr>
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
</table>
|
||
|
||
<P>
|
||
|
||
<A NAME="1">
|
||
<H4>
|
||
My Entry in the March/April IRTC - a case study in learning to
|
||
use RenderMan and BMRT
|
||
</H4>
|
||
</A>
|
||
|
||
One reason I took so long to get down to writing the Muse column this month
|
||
was that I was hard at work on an entry in the IRTC, the Internet Relay
|
||
Tracing Competition, which I help administer. I've been an active
|
||
participant in the IRTC since its restart back in May 1996 but have only
|
||
actually entered one competition. So this round had a special meaning for
|
||
me. I don't often have the time to work on entries unless something else
|
||
suffers. In this case, it was last months Muse column. To be honest,
|
||
however, I was also using this entry to learn more about RenderMan, BMRT
|
||
and in particular, the RenderMan Shading Language. Nothing is quite such a
|
||
a teacher as experience. And my entry in the IRTC was a wonderful teacher.
|
||
<BR>
|
||
|
||
Below I've included the text file which accompanies my entry in the
|
||
IRTC. All entries must have this file. It describes the who/what/how and
|
||
so forth relating to an entry. I'll let the text file describe what I did,
|
||
who helped me do it, and some of the issues I encountered. I hope you find
|
||
this useful information.
|
||
|
||
|
||
<table>
|
||
<tr>
|
||
<td valign=top>
|
||
<table>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>EMAIL:</B></td> </FONT>
|
||
<td valign=top> <FONT size=2> mjhammel@csn.net </FONT></td>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>NAME:</B> </FONT></td>
|
||
<td valign=top> <FONT size=2> Michael J. Hammel </FONT></td>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>TOPIC:</B> </FONT></td>
|
||
<td valign=top> <FONT size=2> school </FONT></td>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>TITLE:</B> </FONT></td>
|
||
<td valign=top> <FONT size=2> Post Detention </FONT></td>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>RENDERER USED:</B> </FONT></td>
|
||
<td valign=top> <FONT size=2> BMRT </FONT></td>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>TOOLS USED:</B></FONT></td>
|
||
<td valign=top> <FONT size=2> Linux, AC3D, BMRT, Gimp 0.99.8,
|
||
wc2pov, xcalc, xv</FONT></td>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>RENDER TIME:</B></FONT></td>
|
||
<td valign=top> <FONT size=2> about 4 hours</FONT></td>
|
||
<tr>
|
||
<td valign=top> <FONT size=2> <B>HARDWARE USED: </B></FONT></td>
|
||
<td valign=top> <FONT size=2> Cyrix P166 (133Mhz)
|
||
based Linux system, 64M memory</FONT></td>
|
||
</table>
|
||
|
||
<td valign=top width=311>
|
||
<A HREF="./gx/hammel/mjhpd.jpg">
|
||
<IMG SRC="./gx/hammel/mjhpd.jpg" ALT="Post Detention - thumbnail" ALIGN="right"
|
||
HSPACE="10" WIDTH="291" HEIGHT="218" border=0>
|
||
<BR clear=both>
|
||
<CENTER>
|
||
Post Detention - Full size image is 800x600 / 102k
|
||
</CENTER>
|
||
</A>
|
||
</table>
|
||
|
||
<B>IMAGE DESCRIPTION:</B>
|
||
<BR>
|
||
|
||
Pretty simplistic, really. Its a school room, just after detention has let
|
||
out. You can tell that detention has let out by the writing on the chalk
|
||
board and the time displayed by the clock on the wall. The sun is starting
|
||
to get low outside, which causes the types of shadows you can see on the
|
||
bookshelf. All the students who were in detention are required to read the
|
||
latest New York Times bestseller titled "Post Detention". Its written by
|
||
some author who is rumored to do 3D graphics on the side. You can see the
|
||
book on the desk in the lower right corner of the image.
|
||
|
||
<P>
|
||
<B>DESCRIPTION OF HOW THIS IMAGE WAS CREATED:</B>
|
||
<BR>
|
||
|
||
I used this image to learn to use RenderMan and BMRT. I find I like these
|
||
tools a bit better than POV-Ray, mostly because I can write C code to
|
||
create models if I want (although I didn't for this particular scene) and
|
||
the shader language allows a bit more control than POV's. I still have
|
||
much to learn to make real use of these features, however.
|
||
|
||
<BR>
|
||
|
||
I started with some canned models from 3DCafe: a chair, a couple of
|
||
bookcases, and some books. I had to convert the chair from 3DS to DXF so I
|
||
could then import it into AC3D. Once I had it in the modeler, I broke the
|
||
chair into two pieces - the arm and the rest of the chair. I did this so I
|
||
could texture them seperately (note that in the 3DS format these pieces may
|
||
have already been seperate, but after the conversion to DXF they were a
|
||
single entity). I also sized the chair to be a common unit size and
|
||
centered it on the origin. This unit size was used on all models so that
|
||
the real sizing and positioning could be done in the RIB file.
|
||
|
||
<BR>
|
||
|
||
The book case only needed resizing but the books had to be broken into a
|
||
cover and "text pages". The latter are a single entity that were textured
|
||
with a matte finish. The covers were textured individually. All the books
|
||
are basically the same book sized differently and placed in the bookcase
|
||
from within AC3D. This provided relative positioning for the books in the
|
||
bookcase, after which any other translations would maintain that relative
|
||
positioning. Books on the chairs or floor were done similarly.
|
||
|
||
<BR>
|
||
|
||
The walls are simple polygons or bilinear patches. The windowed wall
|
||
turned out to show problems in the way AC3D does polygons for RIB output.
|
||
I had to convert this wall from polygons to a set of bilinear patches (see
|
||
the May issue of the Graphics Muse for
|
||
<A HREF="gm.html#rib-csg">how to make a hole in a wall using bilinear
|
||
patches</A>)
|
||
in order for the texture to be applied evenly over all of
|
||
the patches. This problem also showed up when trying to apply texture maps
|
||
to the chalk board. It apparently has to do with vertex ordering. I had
|
||
to change the chalkboard to a bilinear patch too. I may have to write my
|
||
own models for anything that uses texture maps in the future instead of
|
||
using AC3D. To his credit, I haven't told Andy (AC3D's author) about this
|
||
yet and he's been very good about addressing any problems I've found in the
|
||
past.
|
||
|
||
<BR>
|
||
|
||
An important aspect of this image is the tremendous help I got from Larry
|
||
Gritz, the author of BMRT. He offered some special shaders, although I
|
||
only used one of them (the one for the ceiling tiles). The biggest help
|
||
was very constructive criticism and tips for things too look for in my
|
||
code. For example, he pointed out that I was probably using the parameters
|
||
to spotlights incorrectly. I was, and it was causing my scene to be
|
||
<I>very</I>
|
||
overlit (spotlights use coneangle in radians, and I had specified them in
|
||
degrees). This one change made a dramatic improvement in the overall
|
||
image.
|
||
|
||
<BR>
|
||
|
||
All the shaders used, except for the ceiling tiles and the papers on the
|
||
desks, are from the archive of shaders from Guido Quaroni. This archive
|
||
includes shaders from the RenderMan Companion by Steve Upstill, from
|
||
Texturing and Modeling by Ebert, Musgrave, et al, Larry Gritz, and various
|
||
other places. Its quite a useful resource for novices just getting started
|
||
with shaders and RenderMan. The papers on the desks are textured with a
|
||
shader I wrote that creates the horizonatl and vertical lines. It also
|
||
puts in 3 hole punches, but thats not obvious from the image. This shader
|
||
is the only one I included in the source [Ed. The IRTC allows the source
|
||
code for scenes to be uploaded along with the JPEG images and text file].
|
||
The chairs are textured with a
|
||
rusty metallic shader and a displacement shader for the dents.
|
||
Displacement shaders are cool because they actually move points on the
|
||
surface (unlike bump maps which just change the normals for those points).
|
||
The arm surfaces are textured with a wood shader that I made a minor change
|
||
to (to allow better control of the direction of the wood grain) and a
|
||
displacement shader that caused the bumpiness, scratches, and chips in the
|
||
wood. This latter item could have been better, but I was running out of
|
||
time.
|
||
|
||
<BR>
|
||
|
||
The chalkboard is an image map created in the 0.99.8 developers release of
|
||
the Gimp. This is a <I>very</I> cool tool for Linux and Unix platforms, very
|
||
similar to Photoshop (but apparently better, according to people who've
|
||
used both - I've never used Photoshop myself).
|
||
|
||
<BR>
|
||
|
||
The image out the window is an image map on a simple plane angled away from
|
||
the window. The window panes are dented using a displacement map. We had
|
||
windows with bumps in them in High School and thats the effect I was going
|
||
for here. Its pretty close and as an added benefit it prevents the image
|
||
outside the window from being too washed out.
|
||
|
||
<BR>
|
||
|
||
The globe on the book shelf is one of those ones that is suspended by
|
||
magnets. The globe has a displacement map on it as well, which is why,
|
||
if you look real close, the lighting on it is not smooth where it moves
|
||
into shadow. The globe and its base were completely modeled in AC3D. It
|
||
was quick and very easy to do. All the items on the booksshelf by the
|
||
window are in a single model file, but exported as individual objects so
|
||
they could be shaded properly. The same is true for the bookcase under the
|
||
clock.
|
||
|
||
<BR>
|
||
|
||
It was fun. This is certainly the best 3D image I've done to date. Its
|
||
also the first one of something recognizable (as opposed to space ships and
|
||
planets no one has ever really seen).
|
||
|
||
<BR>
|
||
|
||
<B>NOTE:</B>
|
||
One thing I forgot to mention in my original text file for my entry is that
|
||
I had to edit all the exported RIB files that I created with AC3D to remove
|
||
the bits of RIB that made each file an independently renderable file. By
|
||
default AC3D generates a complete scene, one that can be passed to rendrib
|
||
(the BMRT renderer) directly to render a scene. But what I needed was for
|
||
the files generated to be only partially complete scenes, without the
|
||
camera or lighting and so forth. In this way I could use these files in
|
||
RIB ReadArchive statements, similar to #include files for POV. Considering
|
||
the number of objects I exported with AC3D, that turned out to be quite a
|
||
bit of hand editing. I sent email to Andy Colebourne, the author of AC3D,
|
||
and he's looking into making it possible to output partial RIBs for use as
|
||
ReadArchive include files.
|
||
|
||
<P>
|
||
|
||
<table width=100%>
|
||
<tr>
|
||
<td colspan=4 bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
</table>
|
||
|
||
<table width=100%>
|
||
<tr>
|
||
<td align=right>
|
||
<FONT size=1>
|
||
© 1997 by <A HREF="mailto:mjhammel@csn.net">Michael J. Hammel</A>
|
||
</FONT>
|
||
</table>
|
||
|
||
<TITLE>
|
||
Graphics Muse
|
||
</TITLE>
|
||
</HEAD>
|
||
|
||
<BODY text="#000000" bgcolor="#ffffff"
|
||
vlink="#fa3333" alink="#33CC33" link="#0000FA">
|
||
|
||
<!-- =============================================================
|
||
This Page Designed by Michael J. Hammel.
|
||
Permission to use all graphics and other content for private,
|
||
non-commerical use is granted provided you give me (or the
|
||
original authors/artists) credit for the work.
|
||
|
||
CD-ROM distributors and commercial ventures interested in
|
||
providing the Graphics Muse for a fee must contact me,
|
||
Michael J. Hammel (mjhammel@csn.net), for permission.
|
||
============================================================= !-->
|
||
|
||
<A NAME="musings">
|
||
<table>
|
||
<tr>
|
||
<td>
|
||
<H2>More...</H2>
|
||
<BR clear=both>
|
||
<IMG SRC="../gx/hammel/musings.gif" ALT="Musings" ALIGN="left"
|
||
HSPACE="0" VSPACE="0" WIDTH="247" HEIGHT="52">
|
||
</td>
|
||
</table>
|
||
</A>
|
||
<BR clear=both>
|
||
|
||
|
||
<table>
|
||
<tr><td>
|
||
<H3>BMRT</H3>
|
||
<td rowspan=2 bgcolor=#000000>
|
||
<IMG SRC="./gx/hammel/plank.jpg" ALT="Gritz Sample 1" ALIGN="middle"
|
||
HSPACE="0" VSPACE="0" WIDTH="305" HEIGHT="227">
|
||
<BR clear=both>
|
||
<CENTER>
|
||
<FONT color=#ffffff size=1>Image courtesy of Larry Gritz</FONT>
|
||
</CENTER>
|
||
<tr><td>
|
||
<OL>
|
||
<LH><B> Part II:
|
||
Renderman Shaders
|
||
<B></LH>
|
||
<LI><A HREF="#review">A quick review</A>
|
||
<LI><A HREF="#what">What is a shader?</A>
|
||
<LI><A HREF="#compiling">Compiling shaders</A>
|
||
<LI><A HREF="#types">Types of shaders</A>
|
||
<LI><A HREF="#syntax">Shader language syntax</A>
|
||
<OL TYPE=a>
|
||
<LI><A HREF="#names">Shader names</A>
|
||
<LI><A HREF="#variables">Variables and scope</A>
|
||
<LI><A HREF="#data-types">Data types and expressions</A>
|
||
<LI><A HREF="#functions">Functions</A>
|
||
<LI><A HREF="#statements">Statements</A>
|
||
<LI><A HREF="#coordinates">Coordinate systems</A>
|
||
</OL>
|
||
<LI><A HREF="#format">Format of a shader file</A>
|
||
<LI><A HREF="#texture-maps">A word about texture maps</A>
|
||
<LI><A HREF="#examples">Working examples</A>
|
||
<OL TYPE=a>
|
||
<LI><A HREF="#examples-1">Colored Mesh pattern</A>
|
||
<LI><A HREF="#examples-2">Adding opacity - a wireframe shader</A>
|
||
<LI><A HREF="#examples-3">A simple paper shader</A>
|
||
<LI><A HREF="#examples-4">A texture mapped chalk board</A>
|
||
<LI><A HREF="#examples-5">Displacement map example</A>
|
||
</OL>
|
||
</OL></td>
|
||
</table>
|
||
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
VSPACE="5" WIDTH="1" HEIGHT="1">
|
||
<BR clear=both>
|
||
<table width=100%>
|
||
<tr>
|
||
<td width="100%" align=right>
|
||
<FONT size=1>
|
||
© 1996 <A HREF="mailto:mjhammel@csn.net">Michael J. Hammel</A>
|
||
</FONT></td>
|
||
<tr>
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
</table>
|
||
|
||
<P>
|
||
|
||
<A NAME="review"></A>
|
||
<H2>1. A quick review</H2>
|
||
|
||
Before we get started on shaders, lets take a quick look back at RIB files.
|
||
RIB files are ASCII text files which describe a 3D scene to a RenderMan
|
||
compliant renderer such as BMRT. A RIB file contains descriptions of
|
||
objects - their size, position in 3D space, the lights that illuminate them
|
||
and so forth. Objects have surfaces that can be colored and textured,
|
||
allowing for reflectivity, opacity (or conversely, transparency),
|
||
bumpiness, and various other aspects.
|
||
<BR>
|
||
|
||
An object is instanced inside AttributeBegin/AttributeEnd requests (or
|
||
procedures in the C binding). This instancing causes the current graphics
|
||
state to be saved so that any changes made to the graphics state (via the
|
||
coloring and texturing of the object instance) inside the
|
||
AttributeBegin/AttributeEnd request will not affect future objects. The
|
||
current graphics state can be modified, and objects colored and textured,
|
||
with special procedures called <I>shaders</I>.
|
||
|
||
<BR>
|
||
|
||
<B>Note:</B>
|
||
Keep in mind that this is not a full fledged tutorial and I won't be
|
||
covering every aspect of shaders use and design. Detailed information can
|
||
be found in the texts listed in the bibliography at the end of this
|
||
article.
|
||
|
||
|
||
<P>
|
||
|
||
<A NAME="what"></A>
|
||
<H2>2. What is a shader?</H2>
|
||
|
||
In the past, I've often used the terms <I>shading</I> and <I>texturing</I>
|
||
interchangeably. Darwyn Peachy, in his
|
||
<FONT COLOR="#335533">
|
||
<U><I>Building Procedural Textures</I></U>
|
||
</FONT>
|
||
chapter in the text <B>Texturing and Modeling: A Procedural Approach</B>,
|
||
says that these two concepts are actually separate processes:
|
||
<BLOCKQUOTE>
|
||
Shading is the process of calculating the color of a pixel
|
||
from user-specified surface properties and the shading model.
|
||
Texturing is a method of varying the surface properties from
|
||
point to point in order to give the appearance of surface
|
||
detail that is not actually present in the geometry of the
|
||
surface.
|
||
[<A HREF="#ref1">1</A>]
|
||
</BLOCKQUOTE>
|
||
A shader is a procedure called by the renderer to apply colors and textures
|
||
to an object. This can include the surface of objects like block or spheres,
|
||
the internal space of a solid object, or even the space between objects
|
||
(the atmosphere). Although based on Peachy's description would imply that
|
||
shaders only affect the coloring of surfaces (or atmosphere, etc), shaders
|
||
handle both shading and texturing in the RenderMan environment.
|
||
|
||
<P>
|
||
|
||
<A NAME="compiling"></A>
|
||
<H2>3. Compiling shaders</H2>
|
||
|
||
RIB files use filenames with a suffix of ".rib". Similarly, shader files
|
||
use the suffix ".sl" for the shader source code. Unlike RIB files, however,
|
||
shader files cannot be used by the renderer directly in their source
|
||
format. They must be compiled by a shader compiler. In the BMRT package
|
||
the shader compiler is called <I>slc</I>.
|
||
<BR>
|
||
|
||
Compiling shaders is fairly straightforward - simply use the slc program
|
||
and provide the name of the shader source file. For example, if you have a
|
||
shader source file named myshader.sl you would compile it with the
|
||
following command:
|
||
|
||
<CODE>
|
||
slc myshader.sl
|
||
</CODE>
|
||
<BR>
|
||
You must provide the ".sl" suffix - the shader source file cannot be
|
||
specified using the base portion of the filename alone.
|
||
When the compiler has finished it will have created the compiled shader in
|
||
a file named myshader.so
|
||
in the current directory. A quick examination of
|
||
this file shows it to be an ASCII text file as well, but the format is
|
||
specific for the renderer in order for it to implement its graphics state
|
||
stack.
|
||
Note: the filename extension of ".so" used by BMRT (which is different
|
||
than the one used by PRMan) does not signify a binary object file, like
|
||
shared library object files. The file is an ASCII text file. Larry says
|
||
he's considering changing to a different extension in the future to avoid
|
||
confusion with shared object files.
|
||
<BR>
|
||
|
||
Note that in the RIB file (or similarly when using the C binding)
|
||
the call to the shader procedure is done in the following manner:
|
||
<BR>
|
||
<PRE>
|
||
AttributeBegin
|
||
Color [0.9 0.6 0.6]
|
||
Surface "myshader"
|
||
ReadArchive "object.rib"
|
||
AttributeEnd
|
||
</PRE>
|
||
This example uses a <I>surface</I> shader (we'll talk about shader types in a
|
||
moment). The name in double quotes is the name of the shader procedure
|
||
which is not necessarily the name of the shader source file.
|
||
Since shaders are procedures they
|
||
have procedure names. In the above example the procedure name is
|
||
<I>myshader</I>. This happens to the be same as the base portion (without
|
||
the suffix) of the shader source filename. The shader compiler doesn't
|
||
concern itself with the name of the source file, however, other than to
|
||
know which file to compile. The output filename used for the .so file is
|
||
the name of the procedure. So if you name your procedure differently than
|
||
the source file you'll get a differently named compiled .so file. Although
|
||
this isn't necessarily bad, it does make it a little hard to keep track of
|
||
your shaders. In any case, the name of the procedure is the name used in
|
||
the RIB (or C binding) when calling the shader. In the above example,
|
||
"myshader" is the name of the procedure, not the name of the source file.
|
||
|
||
|
||
<P>
|
||
|
||
<A NAME="types"></A>
|
||
<H2>4. Types of shaders</H2>
|
||
|
||
According to the <B>RenderMan Companion</B> [<A HREF="#ref2">2</A>]
|
||
<BLOCKQUOTE>
|
||
The RenderMan Interface specifies six types of shaders, distinguished
|
||
by the inputs they use and the kinds of output they produce.
|
||
</BLOCKQUOTE>
|
||
The text then goes on to describe the following shader types:
|
||
<OL>
|
||
<LI>Light source shaders
|
||
<LI>Surface shaders
|
||
<LI>Volume shaders
|
||
<LI>Displacement shaders
|
||
<LI>Transformation shaders
|
||
<LI>Imager shaders
|
||
</OL>
|
||
Most of these can only have one instance of the shader type in the graphics
|
||
state at any one time. For example, there can only be one surface shader
|
||
in use for any object or objects at a time. The exception to this are
|
||
light shaders, which may have many instances at any one time, some of which
|
||
may not be actually turned on for some objects.
|
||
<P>
|
||
<B><FONT COLOR="#335533">
|
||
Light Source Shaders
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
Light sources in the RenderMan Shading Language are provided a position and
|
||
direction and return the color of the light originating from that light and
|
||
striking the current surface point. The RenderMan specification provides
|
||
for a set of default light shaders that are very useful and probably cover
|
||
the most common lighting configurations an average user might encounter.
|
||
These default shaders include ambient light (the same amount of light
|
||
thrown in all directions), distant lights (such as the Sun), point lights,
|
||
spot lights, and area lights. All light sources have an intensity that
|
||
defines how bright the light shines. Lights can be made to cast shadows or not
|
||
cast shadows. The more lights that cast shadows you have in a scene the
|
||
longer it is likely to take to render the final image. During scene design
|
||
and testing its often advantagous to keep shadows turned off for most lights.
|
||
When the scene is ready for its final rendering turn the shadows back on.
|
||
|
||
<BR>
|
||
|
||
Ambient light can be used to brighten up a generally dark image but the
|
||
effect is "fake" and can cause an image to be washed out, losing its
|
||
realism. Ambient light should be kept small for any scene, say with an
|
||
intensity of no more than 0.03. Distant lights provide a light that shines
|
||
in one direction with all rays being parallel. The Sun is the most common
|
||
example of a distant light source. Stars are also considered distant
|
||
lights. If a scene is to be lit by sunlight it is often considered a good
|
||
idea to have distant lights be the only lights to cast shadows. Distant
|
||
lights do not have position, only direction.
|
||
|
||
<BR>
|
||
|
||
Spot lights are the familiar lights which sit at a particular location in
|
||
space and shine in one generalized direction covering an area specified by
|
||
a cone whose tip is the spot light. A spot lights intensity falls off
|
||
exponentially with the angle from the centerline of the cone. The angle is
|
||
specified in <I>radians</I>, not degress as with POV-Ray. Specifying the
|
||
angle in degrees can have the effect of severly over lighting the area
|
||
covered by the spot light. Point lights also fall off in intensity, but do
|
||
so with distance from the lights location. A point light shines in all
|
||
directions at once so does not contain direction but does have position.
|
||
|
||
<BR>
|
||
|
||
Area lights are series of point lights that take on the shape of an object
|
||
to which they are attached. In this way a the harshness of the shadows
|
||
cast by a point light can be lessened by creating a larger surface of
|
||
emitted light. I was not able to learn much about area lights so can't
|
||
really go into detail on how to use them here.
|
||
|
||
<BR>
|
||
|
||
Most light source shaders use one of
|
||
two illumination functions: illuminate() and solar(). Both provides ways
|
||
of integrating light sources on a surface over a finite cone. illuminate()
|
||
allows for the specification of position for the light source, while
|
||
solar() is used for light sources that are considered very distant, like
|
||
the Sun or stars. I consider the writing of light source shaders to be a
|
||
bit of an advanced topic since the use of the default light source shaders
|
||
should be sufficient for the novice user to which this article is aimed.
|
||
Readers should consult <B>The RenderMan Companion</B> and <B>The RenderMan
|
||
Specification</B> for details on the use of the default shaders.
|
||
|
||
<P>
|
||
<B><FONT COLOR="#335533">
|
||
Surface Shaders
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
Surface shaders are one of the two types of shaders novice users will make
|
||
use of most often (the other is displacement shaders). Surface shaders are
|
||
used to determine the color of light reflected by a given surface point
|
||
in a particular direction. Surface shaders are used to create wood
|
||
grains or the colors of an eyeball. They also define the opacity of a
|
||
surface, ie the amount of light that can pass through a point (the points
|
||
transparency). A point that is totally opaque allows no light to pass
|
||
through it, while a point that is completely transparent reflects no light.
|
||
|
||
<BR>
|
||
|
||
The majority of the examples which follow will cover surface shaders. One
|
||
will be a displacement shader.
|
||
|
||
<P>
|
||
<B><FONT COLOR="#335533">
|
||
Volume Shaders
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
A volume shader affects light traveling to towards the camera as it passes
|
||
though and around objects in a scene. Interior volume shaders determine
|
||
the effect on the light as it passes through an object. Exterior volume
|
||
shaders affect the light in the "empty space" around an object.
|
||
Atmospheric shaders handle the space between objects. Exterior
|
||
and interior volume
|
||
shaders differ from atmospheric shaders in that the latter operate on all
|
||
rays originating from the camera (remember that ray tracing traces the
|
||
lights ray in reverse from nature - from camera to light source).
|
||
Exterior and interior shaders work only on secondary rays, those rays
|
||
spawned by the <I>trace()</I> function in shaders.
|
||
Atmospheric shaders are used
|
||
for things like fog and mist. Volume shaders are a slightly more advanced
|
||
topic which I'll try to cover in a future article.
|
||
|
||
<P>
|
||
<B><FONT COLOR="#335533">
|
||
Displacement Shaders
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
The texture of an object can vary in many ways, from very smooth to very
|
||
bumpy, from smooth bumps to jagged edges. With ordinary surface shaders a
|
||
texture can be simulated with the use of a <I>bump map</I>. Bump maps
|
||
perturb the normal of a point on the surface of an object so that the point
|
||
appears to be raised, lowered, or otherwised moved from its real location.
|
||
A bump map describes the variations in a surfaces orientation.
|
||
Unfortunately, this is only a trick and the surface point is not really
|
||
moved. For some surfaces this trick works well when viewed from the proper
|
||
angle. But when seen edge on the surface variations disapper - the edge is
|
||
smooth. A common example is an orange. With a bump map applied the orange
|
||
appears to be pitted over its surface. The edge of the sphere, however, is
|
||
smooth and the pitting effect is lost. This is where displacement shaders
|
||
come in.
|
||
|
||
<BR>
|
||
|
||
In <B>The RenderMan Interface Specification</B>[<A HREF="#ref3">3</A>]
|
||
it says
|
||
<BLOCKQUOTE>
|
||
The displacement shader environment is very similar to a surface shader,
|
||
except that it only has access to the geometric surface parameters.
|
||
[A displacement shader] computes a new P [point] and/or a new N
|
||
[normal for that point].
|
||
</BLOCKQUOTE>
|
||
|
||
A displacement shader operates across a surface, modifying the physical
|
||
location of each point. These modifications are generally minor and of a
|
||
type that would be much more difficult (and computationally expensive) to
|
||
specify individually. It might be difficult to appreciate this feature
|
||
until you've seen what it can do.
|
||
Plate 9 in [<A HREF="#ref4">4</A>] shows an ordinary cylinder modified with
|
||
the <I>threads()</I> displacement shader to create the threads on the base
|
||
of a lightbulb. <B>Figures 1-3</B> shows a similar (but less sophisticated)
|
||
example.
|
||
Without the use of the displacement shader, each thread
|
||
would have to be made with one ore more individual objects. Even if the
|
||
computational expense for the added objects were small, the effort required
|
||
to model these objects correctly would still be significant. Displacement
|
||
shaders offer procedural control over the shape of an object.
|
||
|
||
<P>
|
||
<table>
|
||
<tr>
|
||
<td bgcolor=#000000 align=center valign=top width=33%>
|
||
<IMG SRC="./gx/hammel/cylinder.jpg" ALT="Ordinary cylinder" ALIGN="middle"
|
||
HSPACE="0" WIDTH="148" HEIGHT="209">
|
||
<td bgcolor=#000000 align=center valign=top width=33%>
|
||
<IMG SRC="./gx/hammel/cylnorms.jpg"
|
||
ALT="Ordinary cylinder with Normals modified" ALIGN="middle"
|
||
HSPACE="0" WIDTH="148" HEIGHT="209">
|
||
<td bgcolor=#000000 align=center valign=top width=33%>
|
||
<IMG SRC="./gx/hammel/cyldisp.jpg"
|
||
ALT="Cylinder with true displacments" ALIGN="middle"
|
||
HSPACE="0" WIDTH="151" HEIGHT="209">
|
||
<tr>
|
||
<td align=center bgcolor=#AAAAAA>
|
||
<FONT color=#ffffff>
|
||
<A HREF="./source/cylinder.rib">An ordinary cylinder</A>
|
||
</FONT>
|
||
<td align=center bgcolor=#AAAAAA>
|
||
<FONT color=#ffffff>
|
||
<CENTER>
|
||
<A HREF="./source/cylnorms.rib">Same cylinder with modified normals</A>
|
||
</CENTER>
|
||
<BR>
|
||
Note that in this case the renderer attributes have not been
|
||
turned on. The edges of the cylinder are flat, despite the
|
||
apparent non-flat surface.
|
||
</FONT>
|
||
<td align=center bgcolor=#AAAAAA>
|
||
<FONT color=#ffffff>
|
||
<A HREF="./source/cyldisp.rib">Same cylinder with true displacements</A>
|
||
<BR>
|
||
In this image the renderer attributes have been turned on. The
|
||
edges of the cylinder reflect the new shape of the cylinder.
|
||
</FONT>
|
||
<tr>
|
||
<td align=center >
|
||
<B>Figure 1</B>
|
||
<td align=center >
|
||
<B>Figure 2</B>
|
||
<td align=center >
|
||
<B>Figure 3</B>
|
||
</table>
|
||
|
||
<BR>
|
||
|
||
An important point to remember when using displacement shaders with
|
||
BMRT is that, by default, displacements are not turned on. Even if
|
||
a displacement shader is called the points on the surface only have
|
||
their normals modified by the shader. In order to do the "true
|
||
displacement", two renderer attribute options must be set:
|
||
<PRE>
|
||
Attribute "render" "truedisplacement" 1
|
||
Attribute "displacementbound" "coordinatesystem"
|
||
"object" "sphere" 2
|
||
</PRE>
|
||
The first of these turns on the true displacement attribute so that
|
||
displacement shaders actually modify the position of a point on the
|
||
surface. The second specifies how much the bounding box around the
|
||
object should grow in order to enclose the modified points.
|
||
How this works is that the attribute tells the renderer how much the
|
||
bounding box is likely to grow <I>in object space</I>. The renderer can't
|
||
no before hand how much a shader might modify a surface, so this statement
|
||
provides a maximum to help the renderer with bounding boxes around
|
||
displacement mapped objects. Remember that bounding boxes are used help
|
||
speed up ray-object hit tests by the renderer. Note that you can compute
|
||
the possible change caused by the displacement in some other space, such as
|
||
world or camera. Use whatever is convenient. The "sphere" tag lets the
|
||
renderer know that the bounding box will grow in all directions evenly.
|
||
Currently BMRT only supports growth in this manner, so no other values
|
||
should be used here.
|
||
|
||
<P>
|
||
<B><FONT COLOR="#335533">
|
||
Transformation and Imager Shaders
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
BMRT doesn't support Transformation Shaders (neither does Pixar's PRMan
|
||
apparently). Apparently transformation shaders are supposed to operate on
|
||
geometric coordinates to apply "non-linear geometric transformations".
|
||
According to [<A HREF="#ref5">5</A>]
|
||
<BLOCKQUOTE>
|
||
The purpose of a transformation shader is to modify a coordinate system.
|
||
</BLOCKQUOTE>
|
||
It is used to deform the geometry of a scene without respect to any
|
||
particular surface. This differs from a displacement shader because the
|
||
displacement shader operates on a point-by-point basis for a given surface.
|
||
Transformation shaders modify the current transform, which means they
|
||
can affect all the objects in a scene.
|
||
|
||
<BR>
|
||
|
||
Imager shaders appear to operate on the colors of output pixels which to me
|
||
means the shader allows for color correction or other manipulation after a
|
||
pixels color has been computed but prior to the final pixel output to file
|
||
or display. This seems simple enough to understand, but why you'd use them
|
||
I'm not quite sure. Larry says that BMRT supports Imager shaders but PRMan
|
||
does not. However, he suggests the functionality provided is probably
|
||
better suited to post-processing tools, such as XV, ImageMagick or the Gimp.
|
||
|
||
<P>
|
||
|
||
<A NAME="syntax"></A>
|
||
<H2>5. Shader language syntax</H2>
|
||
|
||
So what does a shader file look like? They are very similar in format to a
|
||
C procedure, with a few important differences. The following is a very
|
||
simplistic surface shader:
|
||
<PRE>
|
||
surface matte (
|
||
float Ka = 1;
|
||
float Kd = 1;
|
||
)
|
||
{
|
||
point Nf;
|
||
|
||
/*
|
||
* Calculate the normal which is facing the
|
||
* direction that points towards the camera.
|
||
*/
|
||
Nf = faceforward (normalize(N),I);
|
||
|
||
Oi = Os;
|
||
Ci = Os * Cs * (Ka * ambient() + Kd * diffuse(Nf));
|
||
}
|
||
</PRE>
|
||
This is the matte surface shader provided in the BMRT distribution. The
|
||
matte surface shader happens to be one of a number of required shaders that
|
||
<B>The RenderMan Interface Specification</B> says a RenderMan compliant
|
||
renderer must provide.
|
||
|
||
<P>
|
||
<A NAME="names"></A>
|
||
<B><FONT COLOR="#335533">
|
||
Shader procedure names
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
The first thing to notice is the procedure type and name. In this case the
|
||
shader is a surface shader and its name is "matte". When this code is
|
||
compiled by slc it will produce a shader called "matte" in a file called
|
||
"matte.so". Procedure names can be any name that is not a reserved RIB
|
||
statement. Procedure names may contain letters, numbers and underscores.
|
||
They may not contain spaces.
|
||
|
||
<P>
|
||
<A NAME="variables"></A>
|
||
<B><FONT COLOR="#335533">
|
||
Variables and scope
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
There are a number of different kinds of variables that are used with
|
||
shaders: Instance variables, global variables, and local variables.
|
||
Instance variables are the variables used as parameters to the shader.
|
||
When calling a shader these variables are declared (if they have not
|
||
already been declared) and assigned a value to be used for that instance of
|
||
the shader. For example, the matte shader provides two parameters that can
|
||
have appropriate values specified when the shader is instanced within the
|
||
RIB file. Lets say we have a sphere for which we will shade using the
|
||
matte shader. We would specify the instance variables like so:
|
||
<PRE>
|
||
AttributeBegin
|
||
Declare "Kd" "float"
|
||
Declare "Ka" "float"
|
||
Surface "matte" "Kd" 0.5 "Ka" 0.5
|
||
Sphere 1 -.5 .5 360
|
||
AttributeEnd
|
||
</PRE>
|
||
The values specified for Kd and Ks are the instance variables and the
|
||
renderer will use these values for this instance of the shader. Instance
|
||
variables are generally known only to the shader upon the initial call for
|
||
the current instance.
|
||
<BR>
|
||
|
||
Local variables are defined within the shader itself and as such are only
|
||
known within the shader. In the example matte shader, the variable Nf is a
|
||
point variable as has meaning and value only within the scope of the shader
|
||
itself. Other shaders will not have access to the values Nf holds.
|
||
Local variables are used to hold temporary values required to compute the
|
||
values passed back to the renderer. These return values are passed back as
|
||
global variables.
|
||
<BR>
|
||
|
||
Global variables have a special place in the RenderMan environment. The
|
||
only way a shader can pass values back to the renderer is through global
|
||
variables. Some of the global variables that a shader can manipulate are
|
||
the surface color (Cs), surface opacity (Os), the normal vector for the
|
||
current point (N) and the incident ray opacity
|
||
(Oi). Setting these values within the shader affects how the renderer
|
||
colors surface points for the object which is being shaded. The complete
|
||
list of global variables that a particular shader type can read or modify
|
||
is listed in tables in the <B>RenderMan Interface Specification</B>
|
||
[<A HREF="#ref6">6</A>].
|
||
Global variables are global in the sense that they pass values between the
|
||
shader and the renderer for the current surface point, but they cannot be
|
||
used to pass values from one objects shader to another.
|
||
|
||
<P>
|
||
<A NAME="data-types"></A>
|
||
<B><FONT COLOR="#335533">
|
||
Data types and expressions
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
Shaders have access to only 4 data types: one scalar type, two vector
|
||
types, and a string type. A string can be defined and used by a shader, but
|
||
it cannot be modified. So an instance variable that passes in a string
|
||
value cannot be modified by the shader, nor can a local string variable be
|
||
modified once it has been defined.
|
||
<BR>
|
||
|
||
The scaler type used by shaders is called a <I>float</I> type. Shaders must use
|
||
float variables even for integer calculations. The </I>point</I> type is a
|
||
a 3 element array of float values which describe a point in some space.
|
||
By default the point is in <I>world space</I> in BMRT (PRMan uses camera
|
||
space by default), but it is possible to
|
||
convert the point to object, world, texture or some other space within the
|
||
shader. On point can be transformed to a different space using the
|
||
<I>transform</I> statement. For example:
|
||
<PRE>
|
||
float y = ycomp(transform("object",P));
|
||
</PRE>
|
||
will convert the current point to object space and return the Y component
|
||
of the new point into the float variable y. The other vector type is also
|
||
a 3 element array of float values that specify a color. A <I>color</I>
|
||
type variable can be defined as follows:
|
||
<PRE>
|
||
color Cp = color (0.5, 0.5, 0.5);
|
||
</PRE>
|
||
<BR>
|
||
|
||
Expressions in the shading language follow the same rules of precedence
|
||
that are used in the C language. The only two expressions that are new to
|
||
shaders are the Dot Product and the Cross Product. The Dot Product is
|
||
used to measure the angle between two vectors and is denoted by a period
|
||
(.). Dot Products work on point variables.
|
||
The Cross Product is often used to find the normal vector
|
||
at a point given two nonparallel vectors tangent to the surface at a given
|
||
point. The Cross Product only works on points, is denoted by a caret (^)
|
||
and returns a point value.
|
||
|
||
<P>
|
||
<A NAME="functions"></A>
|
||
<B><FONT COLOR="#335533">
|
||
Functions
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
A shader need not be a completely self contained entity. It can call
|
||
external routines, known as functions. The RenderMan Interface
|
||
Specificatoin predefines a large number of functions that
|
||
are available to shader authors using BMRT. The following list is just
|
||
a sample of these predefined functions:
|
||
<UL>
|
||
<LI>Math functions such as sin(), cos(), pow(), exp(), sqrt() and log().
|
||
<LI>Math functions such as min(), max() and clamp().
|
||
<LI>Derivative functions Du(), Dv(), and Deriv() which have versions
|
||
which work on float, color, and point values.
|
||
<LI>A noise() function for random value.
|
||
<LI>Geometric functions like area(), length() and distance().
|
||
<LI>Color functions like mix() which mixes two of its arguments based on
|
||
a third argument.
|
||
<LI>Shading and Lighting functions such as specular() and phong()
|
||
<LI>Texture map functions for using texture maps within shaders
|
||
</UL>
|
||
This is not a comprehensive list, but it provides a sample of the
|
||
functions available to the shader author. Many functions operate on more
|
||
than one data type (such as points or colors). Each can be used to
|
||
calculate a new color, point, or float value which can then be applied to
|
||
the current surface point.
|
||
<BR>
|
||
|
||
Shaders can use their own set of functions defined locally. In fact, its
|
||
often helpful to put functions into a function library that can be included
|
||
in a shader using the #include directive. For example, the
|
||
<A HREF="http://www.cgrg.ohio-state.edu/~smay/RManNotes/index.html">
|
||
RManNotes Web site</A>
|
||
provides a function library called "rmannotes.sl" which contains a
|
||
<I>pulse()</I> function that can be used to create lines on a surface. If
|
||
we were to use this function in the matte shader example, it might look
|
||
something like this:
|
||
<PRE>
|
||
#include "rmannotes.sl"
|
||
|
||
surface matte (
|
||
float Ka = 1;
|
||
float Kd = 1;
|
||
)
|
||
{
|
||
point Nf;
|
||
float fuzz = 0.05
|
||
color Ol;
|
||
|
||
/*
|
||
* Calculate the normal which is facing the
|
||
* direction that points towards the camera.
|
||
*/
|
||
Nf = faceforward (normalize(N),I);
|
||
|
||
Ol = pulse(0.35, 0.65, fuzz, s);
|
||
Oi = Os*Ol;
|
||
Ci = Os * Cs * (Ka * ambient() + Kd * diffuse(Nf));
|
||
}
|
||
</PRE>
|
||
The actual function is defined in the rmmannotes.sl file as
|
||
<PRE>
|
||
#define pulse(a,b,fuzz,x) (smoothstep((a)-(fuzz),(a),(x)) - \
|
||
smoothstep((b)-(fuzz),(b),(x)))
|
||
</PRE>
|
||
A shader could just as easily contain the #defined value directly without
|
||
including another file, but if the function is useful shader authors may
|
||
wish to keep them in a separate library similar to rmmannotes.sl. In this
|
||
example, the variable s is the left-to-right component of the current
|
||
texture coordinate. "s" is a component of the <I>texture space</I>, which
|
||
we'll cover in the section on coordinate systems. "s" is a global variable
|
||
which is why it is not defined within the sample code.
|
||
|
||
<P>
|
||
Note: This particular example might not be very useful. It is just meant to
|
||
show how to include functions from a function library.
|
||
|
||
<P>
|
||
|
||
Functions are only callable by the shader, not directly by the renderer.
|
||
This means a function cannot be used directly in a RIB file or referenced
|
||
using the C binding to the RenderMan Interface. Functions cannot be
|
||
recursive - they cannot call themselves. Also, all variables passed to
|
||
functions are passed by reference, not by value. It is important to
|
||
remember this last item so that your function doesn't inadvertantly make
|
||
changes to variables you were not expecting.
|
||
|
||
<P>
|
||
<A NAME="statements"></A>
|
||
<B><FONT COLOR="#335533">
|
||
Statements
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
The shading language provides the following statements for flow control:
|
||
<UL>
|
||
<LI><B>if-then-else</B>
|
||
<LI><B>while (</B>boolean expression<B>)</B> <I>statement</I>
|
||
<LI><B>for (</B>expr; boolean expr; expr<B>)</B> <I>statement</I>
|
||
<LI><B>break [</B>n<B>]</B> - "n" is the number of nested levels to exit from
|
||
<LI><B>continue [</B>n<B>]</B> -
|
||
"n" is the number of nested levels to exit from
|
||
<LI><B>return </B> expression
|
||
</UL>
|
||
All of these act just like their C counterparts.
|
||
|
||
<P>
|
||
<A NAME="coordinates"></A>
|
||
<B><FONT COLOR="#335533">
|
||
Coordinate Systems
|
||
</FONT></B>
|
||
<BR>
|
||
|
||
There are number of coordinate systems used by RenderMan. Some of these I
|
||
find easy to understand by themselves, others are more difficult -
|
||
especially when used within shaders. In a shader, the surface of an object
|
||
is mapped to a 2 dimensional rectangular grid. This grid runs from
|
||
coordinates (0,0) in the upper left corner to (1,1) in the lower right
|
||
corner. The grid is overlayed on the surface, so on a rectangular patch
|
||
the mapping is obvious. On a sphere the upper corners of the grid map to
|
||
the same point on the top of the sphere. This grid is known as
|
||
<I>parameter space</I> and any point in this space is referred to by the
|
||
global variables <I>u</I> and <I>v</I>. For example, a point on the
|
||
surface which is in the exact center of the grid would have (u,v)
|
||
coordinates (.5, .5).
|
||
|
||
<BR>
|
||
|
||
Similar to parameter space is <I>texture space</I>. Texture space is a
|
||
mapping of a texture map that also runs from 0 to 1, but the variables used
|
||
for texture space are <I>s</I> and <I>t</I>. By default, texture space is
|
||
equivalent to parameter space unless either vertex variables (variables
|
||
applied to vertices of primitive objects like patches or polygons) or the
|
||
TextureCoordinates statement have modified the texture space of the primitive
|
||
being shaded. Using the default then, a texture map image would have its upper
|
||
left corner mapped to the upper left corner of the parameter space grid
|
||
overlying the objects surface, and the lower right corner of the image
|
||
would be mapped to the lower right corner of the grid. The image would
|
||
therefore cover the entire object. Since the texture space does not have
|
||
to be equivalent to parameter space it would be possible to map an image to
|
||
only a portion of an object. Unfortunately, I didn't get far enough this
|
||
month to provide an example of how to do this. Maybe next month.
|
||
|
||
<BR>
|
||
|
||
There are other spaces as well: world space, object space, and shader space.
|
||
How each of these affects the shading and texturing characteristics is not
|
||
completely clear to me yet. Shader space is the default space in which
|
||
shaders operate, but points in shader space can be transformed to world or
|
||
object space before being operated on. I don't know exactly what this
|
||
means or why you'd want to do it just yet
|
||
|
||
<P>
|
||
|
||
<A NAME="format"></A>
|
||
<H2>6. Format of a shader file</H2>
|
||
|
||
Shader files are fairly free form, but there are
|
||
methodologies that can be used to make writing shaders easier and the code
|
||
more understandable. In his
|
||
RManNotes [<A HREF="#ref7">7</A>], Stephen F. May writes
|
||
<BLOCKQUOTE>
|
||
One of the most fundamental problem solving techniques is "divide and
|
||
conquer." That is, break down a complex problem into simpler parts;
|
||
solve the simpler parts; then combine those parts to
|
||
solve the original complex problem.
|
||
<P>
|
||
In shaders, [we] break down complicated surface patterns and textures into
|
||
layers. Each layer should be fairly easy to write (if not, then we can
|
||
break the layer into sub-layers). Then, [we] combine the layers by
|
||
compositing.
|
||
</BLOCKQUOTE>
|
||
|
||
The basic structure of a shader is similar to a procedure in C - the shader
|
||
is declared to be a particular type (surface, displacement, and so forth)
|
||
and a set of typed parameters are given. Unlike C, however, shader
|
||
parameters are required to have default values provided. In this way a
|
||
shader may be instanced without the use of any instance variables. If any
|
||
of the parameters are specified with instance variables then the value in
|
||
the instance variable overrides the parameters default value. An
|
||
minimalist shader might look like the following:
|
||
<PRE>
|
||
surface null ()
|
||
{
|
||
}
|
||
</PRE>
|
||
In fact, this is exactly the definition of the null shader. Don't ask me
|
||
why such a shader exists. I'm sure the authors of the specification had a
|
||
reason. I just don't know what it is. Adding a few parameters, we start
|
||
to see the matte shader forming:
|
||
<PRE>
|
||
surface matte (
|
||
float Ka = 1;
|
||
float Kd = 1;
|
||
)
|
||
{
|
||
}
|
||
</PRE>
|
||
The parameters Ka and Kd have their default values provided. Note that Ka
|
||
is commonly used in the shaders in Guido Quaroni's archive of shaders to
|
||
represent a scaling factor for ambient light. Similarly, Kd is used to
|
||
scale diffuse light. These are not global variables, but they are well
|
||
known variables, much like "i", "j", and "k" are often used as counters in
|
||
C source code (a throwback to the heady days of Fortran programming).
|
||
|
||
<BR>
|
||
|
||
After the declaration of the shader and its parameters comes the set of
|
||
local variables and the shader code that does the "real work". Again, we
|
||
look at the matte shader:
|
||
<PRE>
|
||
#include "rmannotes.sl"
|
||
|
||
surface matte (
|
||
float Ka = 1;
|
||
float Kd = 1;
|
||
)
|
||
{
|
||
point Nf;
|
||
float fuzz = 0.05
|
||
color Ol;
|
||
|
||
/*
|
||
* Calculate the normal which is facing the
|
||
* direction that points towards the camera.
|
||
*/
|
||
Nf = faceforward (normalize(N),I);
|
||
|
||
Ol = pulse(0.35, 0.65, fuzz, s);
|
||
Oi = Os*Ol;
|
||
Ci = Os * Cs * (Ka * ambient() + Kd * diffuse(Nf));
|
||
}
|
||
</PRE>
|
||
Nothing special here. It looks very much like your average C procedure.
|
||
Now we get into methodologies. May [<A HREF="#ref8">8</A>] shows us how a
|
||
layered shader's psuedo-code might look:
|
||
<PRE>
|
||
surface banana(...)
|
||
{
|
||
/* background (layer 0) */
|
||
surface_color = yellow-green variations;
|
||
|
||
/* layer 1 */
|
||
layer = fibers;
|
||
surface_color = composite layer on surface_color;
|
||
|
||
/* layer 2 */
|
||
layer = bruises;
|
||
surface_color = composite layer on surface_color;
|
||
|
||
/* layer 3 */
|
||
layer = bites;
|
||
surface_color = composite layer on surface_color;
|
||
|
||
/* illumination */
|
||
surface_color = illumination based on surface_color
|
||
and illum params;
|
||
|
||
/* output */
|
||
Ci = surface_color;
|
||
}
|
||
</PRE>
|
||
What is happening here is that the lowest level applies yellow-and green
|
||
colors to the surface, after which a second layer has fiber colors
|
||
composited (blended or overlayed) in. This continues for each of 4 defined
|
||
layers (0 through 3) plus an illumination calculation to determine the
|
||
relative brightness of the current point. Finally, the newly computed
|
||
surface color is ouput via a global variable.
|
||
Using this sort of methodology makes writing a shader much easier as well
|
||
as allowing other shader authors to debug and/or extend the shader in the
|
||
future. A shader file is therefore sort of bottom-up design, where the
|
||
bottom layers of the surface are calculated first and the topmost layers
|
||
are computed last.
|
||
|
||
<P>
|
||
|
||
<A NAME="texture-maps"></A>
|
||
<H2>7. A word about texture maps</H2>
|
||
|
||
As discussed earlier, texture maps are images mapped from 0 to 1 from left
|
||
to right and top to bottom upon a surface. Every sample in the image is
|
||
interpolated between 0 and 1. The mapping does not have to apply to the
|
||
entire surface of an object, however, and when used in conjunction with the
|
||
parameter space of the surface (the u,v coordinates) it should be possible
|
||
to map an image to a section of a surface.
|
||
<BR>
|
||
|
||
Unfortunately, I wasn't able to determine exactly how to use this knowledge
|
||
for the image I submitted to the IRTC this month. Had I figured it out
|
||
in time, I could have provided text labels on the bindings of the books in
|
||
the bookcases for that scene. Hopefully, I'll figure this out in time for
|
||
the next article on BMRT and can provide an example on how to apply texture
|
||
maps to portions of surfaces.
|
||
<P>
|
||
|
||
|
||
<A NAME="examples"></A>
|
||
<H2>8. Working examples</H2>
|
||
<BR>
|
||
|
||
The best way to actually learn how to write a shader is to get down and
|
||
dirty in the bowels of a few examples. All the references listed in the
|
||
bibliography have much better explanations for the exaples I'm about to
|
||
describe, but these should be easy enough to follow for novices.
|
||
<P>
|
||
|
||
<A NAME="examples-1"></A>
|
||
<FONT size=3>
|
||
<A HREF="./source/crosstile.sl">
|
||
<B>A colored cross pattern</B></A>
|
||
</FONT>
|
||
<BR>
|
||
|
||
This example is taken verbatim from RManNotes by Stephen F. May.
|
||
The shader creates a two color cross pattern. In this example the pattern
|
||
is applied to a simple plane (a bilinear patch). Take a look at the
|
||
<A HREF="./source/crosstile.sl">source code</A>.
|
||
<PRE>
|
||
color surface_color, layer_color;
|
||
color surface_opac, layer_opac;
|
||
</PRE>
|
||
<table>
|
||
<tr>
|
||
<td valign=top>
|
||
The first thing you notice is that this shader defines two local
|
||
color variables: surface_color and layer_color.
|
||
The layer_color variable is used to compute the current layers color.
|
||
The surface_color variable is used to composite the various layers
|
||
of the shader. Two other variables, surface_opacity and
|
||
layer_opacity, work similarly for the opacity of the current layer.
|
||
<BR>
|
||
|
||
The first layer is a verticle stripe. The shader defines the color
|
||
for this layer and then determines the opacity for the current point
|
||
by using a function called <I>pulse()</I>. This is a function
|
||
provided by May in his "rmannotes.sl" function library. The pulse()
|
||
function allows the edges of the stripes in this shader to flow
|
||
smoothly from one color to another (take a look at the edges of
|
||
the stripes in the
|
||
sample image). pulse() uses the fuzz variable to determine how
|
||
fuzzy the edges will be.
|
||
Finaly, for each layer the layers color and opacity
|
||
are blended together to get the new surface color. The <I>blend()</I>
|
||
function is also part of rmannotes.sl and is an extension of the
|
||
RenderMan Interface's mix() function, which mixes color and opacity
|
||
values.
|
||
|
||
<td valign=top>
|
||
<table>
|
||
<tr>
|
||
<td align=center bgcolor=#000000>
|
||
<IMG SRC="./gx/hammel/crosstile.jpg"
|
||
ALT="Tiled cross pattern" ALIGN="middle"
|
||
HSPACE="0" WIDTH="121" HEIGHT="151">
|
||
<BR clear=both>
|
||
<FONT color=#ffffff>Figure 4</FONT>
|
||
</td>
|
||
<tr>
|
||
<td bgcolor=#AAAAAA align=center>
|
||
<A HREF="./source/crosstile.rib">
|
||
RIB Source code for this example</A>
|
||
</td>
|
||
</table>
|
||
</table>
|
||
|
||
Finally, the incident rays opacity global variable is set along
|
||
with its color.
|
||
<PRE>
|
||
Oi = surface_opac;
|
||
Ci = surface_opac * surface_color;
|
||
</PRE>
|
||
These two values are used by the renderer to compute
|
||
pixel values in the output image.
|
||
<P>
|
||
|
||
<A NAME="examples-2"></A>
|
||
<A HREF="./source/RCScreen.sl">
|
||
<FONT size=3><B>Adding opacity - a wireframe shader</B></FONT>
|
||
</A>
|
||
<BR>
|
||
<table>
|
||
<tr>
|
||
<td valign=top>
|
||
|
||
This example is taken from the RenderMan Companion. It shows how a shader
|
||
can be used to cut out portions of a solid surface. We use the first
|
||
example as a backdrop for a sphere that is shaded with the screen() shader
|
||
from the RenderMan Companion text (the name of the shader as used here is
|
||
slightly different because it is taken from the collection of shaders from
|
||
Guido Quaroni, who changed the names of some shaders to reflect their
|
||
origins). First lets look at the sceen using the "plastic" shader
|
||
(which comes as a default shader in the BRMT distribution). Figure 5 shows
|
||
how this scene renders. The sphere is solid in this example. The
|
||
RIB code for this contains the following lines:
|
||
<PRE>
|
||
AttributeBegin
|
||
Color [ 1.0 0.5 0.5 ]
|
||
Surface "plastic"
|
||
Sphere 1 -1 1 360
|
||
AttributeEnd
|
||
</PRE>
|
||
In Figure 6 the sphere has been changed to a wireframe surface. The
|
||
only difference between this scene and Figure 5 is the surface shader used.
|
||
For Figure 6 the rib code looks like this:
|
||
<PRE>
|
||
AttributeBegin
|
||
Color [ 1.0 0.5 0.5 ]
|
||
Surface "RCScreen"
|
||
Sphere 1 -1 1 360
|
||
AttributeEnd
|
||
</PRE>
|
||
The rest of the RIBs are exactly the same. Now lets look at the
|
||
<A HREF="./source/RCScreen.sl">screen() shader code</A>.
|
||
<PRE>
|
||
surface
|
||
RCScreen(
|
||
float Ks = .5,
|
||
Kd = .5,
|
||
Ka = .1,
|
||
roughness = .1,
|
||
density = .25,
|
||
frequency = 20;
|
||
color specularcolor = color (1,1,1) )
|
||
{
|
||
varying point Nf =
|
||
faceforward( normalize(N), I );
|
||
|
||
point V = normalize(-I);
|
||
</PRE>
|
||
|
||
<td valign=top>
|
||
<table>
|
||
<tr>
|
||
<td align=center bgcolor=#000000>
|
||
<IMG SRC="./gx/hammel/wireframe1.jpg"
|
||
ALT="A Wireframed sphere - without wireframe" ALIGN="middle"
|
||
HSPACE="0" WIDTH="139" HEIGHT="152">
|
||
<BR clear=both>
|
||
<FONT color=#ffffff>Figure 5</FONT>
|
||
</td>
|
||
<tr>
|
||
<td bgcolor=#AAAAAA align=center>
|
||
<A HREF="./source/wireframe1.rib">
|
||
RIB Source code for this example</A>
|
||
</td>
|
||
<tr>
|
||
<td align=center bgcolor=#000000>
|
||
<IMG SRC="./gx/hammel/wireframe2.jpg"
|
||
ALT="A Wireframed sphere - with wireframe" ALIGN="middle"
|
||
HSPACE="0" WIDTH="138" HEIGHT="152">
|
||
<BR clear=both>
|
||
<FONT color=#ffffff>Figure 6</FONT>
|
||
</td>
|
||
<tr>
|
||
<td bgcolor=#AAAAAA align=center>
|
||
<A HREF="./source/wireframe2.rib">
|
||
RIB Source code for this example</A>
|
||
</td>
|
||
<tr>
|
||
<td align=center bgcolor=#000000>
|
||
<IMG SRC="./gx/hammel/wireframe3.jpg"
|
||
ALT="A Wireframed sphere - thinner grid lines" ALIGN="middle"
|
||
HSPACE="0" WIDTH="138" HEIGHT="152">
|
||
<BR clear=both>
|
||
<FONT color=#ffffff>Figure 7</FONT>
|
||
</td>
|
||
<tr>
|
||
<td bgcolor=#AAAAAA align=center>
|
||
<A HREF="./source/wireframe3.rib">
|
||
RIB Source code for this example</A>
|
||
</td>
|
||
</table>
|
||
|
||
</table>
|
||
|
||
<PRE>
|
||
if( mod(s*frequency,1) < density ||
|
||
mod(t*frequency,1) < density )
|
||
Oi = 1.0;
|
||
else
|
||
Oi = 0.0;
|
||
Ci = Oi * ( Cs * ( Ka*ambient() + Kd*diffuse(Nf) ) +
|
||
specularcolor*Ks* specular(Nf,V,roughness));
|
||
}
|
||
</PRE>
|
||
|
||
|
||
<BR>
|
||
|
||
The local variable V is defined to be the normalized vector for the
|
||
incident light rays direction. The incident light ray direction is the
|
||
direction from which the camera views the current surface coordinate.
|
||
This value is used later to compute the specular highlight to be used on
|
||
the portion of the surface which will not be cut out of the sphere.
|
||
|
||
<BR>
|
||
|
||
The next thing the shader does is to compute the modulo of the s component
|
||
of the texture space times the frequency of the grid lines of the
|
||
wireframe. This value is always less than 1 (the modulo of s*frequency is
|
||
the remainder left for n*1 < s*frequency for some value n). If this value
|
||
is also less then the density then the current coordinate on the surface is
|
||
part of the visible wireframe that traverses the surface horizontally.
|
||
Likewise, the same modulo is computed for t*frequency and if this value is
|
||
also less than the density then the current coordinate point is on one of
|
||
the visible verticle grid lines of the wireframe. Any point for which the
|
||
module of either of these is greater than the density is rendered
|
||
completely transparent. The last line computes the grid lines based on the
|
||
current surface color and a slightly metallic lighting model.
|
||
<BR>
|
||
|
||
The default value for the density is .25, which means that approximately
|
||
1/4 of the surface will be visible wireframe. Changing the value with an
|
||
instance variable to .1 would cause the the wireframe grid lines to become
|
||
thinner. Figure 7 shows an example of this. Changing the frequency to a
|
||
smaller number would cause fewer grid lines to be rendered.
|
||
|
||
<P>
|
||
|
||
<A NAME="examples-3"></A>
|
||
<A HREF="./source/MJH3HolePaper.sl">
|
||
<FONT size=3><B>A simple paper shader</B></FONT>
|
||
</A>
|
||
<BR>
|
||
|
||
While working on my entry for the March/April 1997 round of the IRTC I
|
||
wrote my first shader - a shader to simulate 3 holed notebook paper. This
|
||
simplistic shader offers some of the characteristics of the previous
|
||
examples in producing regularly spaced horizontal and verticle lines plus
|
||
the added feature of fully transparent circular regions that are positioned
|
||
by instance variables.
|
||
|
||
We start by defining the parameters needed by the shader. There are quite
|
||
a few more parameters than the other shaders. The reason for this is that
|
||
this shader works on features which are not quite so symmetrical. You can
|
||
also probably chalk it up to my inexperience.
|
||
<PRE>
|
||
color hcolor = color "rgb" (0, 0, 1);
|
||
color vcolor = color "rgb" (1, 0, 0);
|
||
float hfreq = 34;
|
||
float vfreq = 6;
|
||
float skip = 4;
|
||
float paper_height = 11;
|
||
float paper_width = 8.5;
|
||
float density = .03125;
|
||
float holeoffset = .09325;
|
||
float holeradius = .01975;
|
||
float hole1 = 2.6;
|
||
float hole2 = 18;
|
||
float hole3 = 31.25;
|
||
</PRE>
|
||
|
||
The colors of the horizontal and vertical lines come first. There are, by
|
||
default, 34 lines on the paper with the first 4 "skipped" to give the small
|
||
header space at the top of the paper. The vertical frequency is used to
|
||
divide the paper in n equal vertical blocks across the page. This is used
|
||
to determine the location of the single verticle stripe. We'll look at
|
||
this again in a moment.
|
||
<BR>
|
||
|
||
The paper height and width are used to map the parameter space into the
|
||
correct dimensions for ordinary notebook paper. The density parameter is
|
||
the width of each of the visible lines (horizontal and vertical) on the
|
||
paper. The hole offset defines the distance from the left edge of the
|
||
paper to the center point of the 3 holes to be punched out. The holeradius is
|
||
the radius of the holes and the hole1-hole3 parameters give the horizontal
|
||
line over which the center of that hole will live. For example, for hole1
|
||
the center of the hole is 2.6 horizontal stripes down. Actually, the
|
||
horizontal stripes are created at the top of equally sized horizontal
|
||
blocks, and the hole1-hole3 values are number of horizontal blocks to
|
||
traverse down the paper for the holes center.
|
||
Now lets look at how the lines are created.
|
||
|
||
<table>
|
||
<td valign=top width=60%>
|
||
<PRE>
|
||
surface_color = Cs;
|
||
</PRE>
|
||
This line simply initializes a local variable to the current color of
|
||
the surface. We'll use this value in computing a new surface color
|
||
based on whether the point is on a horizontal or vertical line.
|
||
<PRE>
|
||
/*
|
||
* Layer 1 - horizontal stripes.
|
||
* There is one stripe for every
|
||
* horizontal block. The stripe is
|
||
* "density" thick and starts at the top of
|
||
* each block, except for the first "skip"
|
||
* blocks.
|
||
*/
|
||
tt = t*paper_height;
|
||
for ( horiz=skip; horiz<hfreq; horiz=horiz+1 )
|
||
{
|
||
min = horiz*hblock;
|
||
max = min+density;
|
||
val = smoothstep(min, max, tt);
|
||
if ( val != 0 && val != 1 )
|
||
surface_color = mix(hcolor, Cs, val);
|
||
}
|
||
</PRE>
|
||
This loop runs through all the horizontal blocks on the paper
|
||
(defined by the hfreq parameter) and determines if the point
|
||
lies between the top of the block and the top of the block plus
|
||
the width of a horizontal line (specified with the density parameter).
|
||
|
||
<td align=center valign=top width=39%>
|
||
<table>
|
||
<tr>
|
||
<td align=center bgcolor=#000000>
|
||
<IMG SRC="./gx/hammel/paper1.jpg"
|
||
ALT="3 Holed paper" ALIGN="middle"
|
||
HSPACE="0" WIDTH="122" HEIGHT="174">
|
||
<BR clear=both>
|
||
<FONT color=#ffffff>Figure 8</FONT>
|
||
</td>
|
||
<tr>
|
||
<td bgcolor=#AAAAAA align=center>
|
||
<A HREF="./source/paper.rib">
|
||
RIB Source code for this example</A>
|
||
</td>
|
||
<tr>
|
||
<td align=center bgcolor=#000000>
|
||
<IMG SRC="./gx/hammel/paper2.jpg"
|
||
ALT="3 Holed paper - thicker lines" ALIGN="middle"
|
||
HSPACE="0" WIDTH="122" HEIGHT="174">
|
||
<BR clear=both>
|
||
<FONT color=#ffffff>Figure 8</FONT>
|
||
</td>
|
||
</table>
|
||
</table>
|
||
|
||
The smoothstep() function is part of the standard RenderMan functions
|
||
and returns a value that is between 0 and 1, inclusive, that shows where
|
||
"tt" sits between the min and max values. If this value is not at
|
||
either end then the current surface point lies in the bounds of a
|
||
horizontal line. The point is given the "hcolor" value mixed with the
|
||
current surface color We mix the colors in order to allow
|
||
the edges of the lines to flow smoothly between the horizontal lines
|
||
color and the color of the paper. In other words, this allows for
|
||
antialiasing the horizontal lines. The problem with this is - it doesn't
|
||
work. It only aliases one side of the line, I think. In any case, you can
|
||
see from Figure 8 that the result does not quite give a smooth,
|
||
solid set of lines.
|
||
|
||
<BR>
|
||
|
||
An alternative approach would be to change the mix() function call (which
|
||
is part of the RenderMan shading lanague standard functions) to a more
|
||
simple mixture of the line color with the value returned by smoothstep().
|
||
This code would look like this:
|
||
<PRE>
|
||
min = horiz*hblock;
|
||
max = min+density;
|
||
val = smoothstep(min, max, tt);
|
||
if ( val != 0 && val != 1 )
|
||
surface_color = val*hcolor;
|
||
</PRE>
|
||
Alternatively, the line color could be used on its own, without combining
|
||
it with the value returned from the smooth step. This gives a very jagged
|
||
line, but the line is much darker even when used with smaller line
|
||
densities. The result from using the line color alone (with a smaller line
|
||
density) can be seen in Figure 9.
|
||
|
||
<PRE>
|
||
/* Layer 2 - vertical stripe */
|
||
ss = s*paper_width;
|
||
min = vblock;
|
||
max = min+density;
|
||
val = smoothstep(min, max, ss);
|
||
if ( val != 0 && val != 1 )
|
||
surface_color = mix(vcolor, Cs, val);
|
||
</PRE>
|
||
This next bit of code does exactly the same as the previous code
|
||
except it operates on the vertical line. Since there is only one
|
||
verticle line there is no need to check every vertical block, only
|
||
the one which will contain the visible stripe (which is specified
|
||
with the vblock parameter).
|
||
|
||
<BR>
|
||
|
||
Finally we look at the hole punches. The center of the holes are computed
|
||
relative to the left edge of the paper:
|
||
<PRE>
|
||
shole = holeoffset*paper_width;
|
||
ss = s*paper_height;
|
||
tt = t*paper_height;
|
||
pos = (ss,tt,0);
|
||
</PRE>
|
||
Note that we use the papers height for converting the ss,tt variables into
|
||
the scale of the paper width and height. Why? Because if we used the
|
||
width for ss we would end up with eliptical holes. There is probably a
|
||
better way to deal with this problem (of making the holes circular) but
|
||
this method worked for me.
|
||
|
||
<BR>
|
||
|
||
For each hole, the current s,t coordinates distance from the hole
|
||
centers is computed. If the distance is less than the holes radius then
|
||
the opacity for the incident ray is set to completely transparent.
|
||
|
||
<PRE>
|
||
/* First Hole */
|
||
thole = hole1*hblock;
|
||
hpos = (shole, thole, 0);
|
||
Oi = filterstep (holeradius*paper_width,
|
||
distance(pos,hpos));
|
||
|
||
/* Second Hole */
|
||
thole = hole2*hblock;
|
||
hpos = (shole, thole, 0);
|
||
Oi *= filterstep (holeradius*paper_width,
|
||
distance(pos,hpos));
|
||
|
||
/* Third Hole */
|
||
thole = hole3*hblock;
|
||
hpos = (shole, thole, 0);
|
||
Oi *= filterstep (holeradius*paper_width,
|
||
distance(pos,hpos));
|
||
</PRE>
|
||
Filterstep is, again, a standard function in the RenderMan specification.
|
||
However, this function was not documented by either the RenderMan Interface
|
||
Specification or the RenderMan Companion. According to Larry Gritz
|
||
<BLOCKQUOTE>
|
||
The filterstep() function is identical to step, except that it is
|
||
analytically antialiased. Similar to the texture() function,
|
||
filterstep actually takes the derivative of its second argument, and
|
||
"fades in" at a rate dependent on how fast that variable is changing.
|
||
In technical terms, it returns the convolution of the step function
|
||
with a filter whose width is about the size of a pixel. So, no
|
||
jaggies.
|
||
</BLOCKQUOTE>
|
||
Thus, using filterstep() helped to antialias the edges of the holes
|
||
(although its not that obvious from such a small image given in Figures 8
|
||
and 9). I didn't try it, but I bet filterstep() could probably be used to
|
||
fix the problems with the horizontal and vertical lines.
|
||
|
||
<P>
|
||
|
||
<A NAME="examples-4"></A>
|
||
<A HREF="./source/PXDecal.sl">
|
||
<FONT size=3><B>A textured mapped chalkboard</B></FONT>
|
||
</A>
|
||
<BR>
|
||
|
||
This simple texture map example is used in my <I>Post Detention</I> image
|
||
which I entered in the March/April 1997 IRTC. The actual shader is taken
|
||
from the archive collection by Guido Quaroni, and the shader originally
|
||
comes from Larry Knott (who I presume works at Pixar). I didn't add an
|
||
image of this since all you would see would be the original image mapped on a
|
||
flat plane, which really doesn't show anything useful. If you want to take
|
||
a look at the chalkboard in a complete scene, take a look at the
|
||
<A HREF="more-musings.html#1">companion article</A>
|
||
in this months Graphics Muse column.
|
||
<BR>
|
||
|
||
Like the other shader examples, this one is fairly straightforward. An
|
||
image filename is passed in the <I>texturename</I> parameter. Note that
|
||
image files must be TIFF files for use with BMRT. The texture coordinates
|
||
are used to grab a value from the image file which is then combined with
|
||
the ambient and diffuse lighting for the incident ray. If a specular
|
||
highlight has been specified (which it is by default in the Ks parameter)
|
||
then a specular highlight is added to the incident ray. Finally, the
|
||
output value, Ci, is combined with the surfaces opacity for the final color
|
||
to be used by the current surface point.
|
||
<P>
|
||
|
||
<A NAME="examples-5"></A>
|
||
<A HREF="./source/RCThreads.sl">
|
||
<FONT size=3><B>Displacement map example</B></FONT>
|
||
</A>
|
||
<BR>
|
||
|
||
We've already seen an example of displacement maps using the threads()
|
||
shader. Lets take a quick look at the shader code:
|
||
<PRE>
|
||
magnitude = (sin( PI*2*(t*frequency +
|
||
s + phase))+offset) * Km;
|
||
</PRE>
|
||
Here, the displacement of the surface point is determined by using a
|
||
phased sinusoidal. The t variable determines the position lengthwise
|
||
across the surface and s is used to cause the spiraling effect. The next
|
||
bit of code
|
||
<PRE>
|
||
if( t > (1-dampzone))
|
||
magnitude *= (1.0-t) / dampzone;
|
||
else if( t < dampzone )
|
||
magnitude *= t / dampzone;
|
||
</PRE>
|
||
causes the ends of the surface, in our case a cylinder, to revert to the
|
||
original shape. For our example that means this forces the shader to leave
|
||
the ends circular. This helps to keep the object that has been threaded in
|
||
a shape that is easily joined to other objects. In the RenderMan
|
||
Companion, the threaded cylinder is joined to a glass bulb to form a
|
||
light bulb. Finally, the last two lines
|
||
<PRE>
|
||
P += normalize(N) * magnitude;
|
||
N = calculatenormal(P);
|
||
</PRE>
|
||
cause the point to be moved and the normal for the new point to be
|
||
calculated. In this way the point visually appears to have moved, which
|
||
indeed it has.
|
||
|
||
<P>
|
||
Next month I planned on doing the 3rd part of this 3 part BMRT series. I
|
||
think taking 2 months between articles worked well for me this time since
|
||
it allowed me a little more time to dig deeper. Plan on the final article
|
||
on BMRT in this series in the July issue of the Graphics Muse. Till then,
|
||
happy rendering.
|
||
|
||
<table width=100%>
|
||
<tr>
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
</table>
|
||
|
||
<OL>
|
||
<LH><B>Bibliography</B></LH>
|
||
<LI>
|
||
<A NAME="ref1"></A>
|
||
Ebert, Musgrave, Peachy, Perlin, Worley.
|
||
<I>Texturing and Modeling: A Procedural Approach</I>,
|
||
5-6; AP Professional (Academic Press), 1994
|
||
<LI>
|
||
<A NAME="ref2"></A>
|
||
Upstill, Steve.
|
||
<I>The RenderMan Companion - A Programmer's Guide to
|
||
Realistic Computer Graphics</I>,
|
||
277-278; Addison Wesley, 1989
|
||
<LI>
|
||
<A NAME="ref3"></A>
|
||
<I>The RenderMan Interface Specification, Version 3.1</I>
|
||
112-113; Pixar, Septermber 1989
|
||
<LI>
|
||
<A NAME="ref4"></A>
|
||
Upstill, Steve.
|
||
<I>The RenderMan Companion - A Programmer's Guide to
|
||
Realistic Computer Graphics</I>,
|
||
color plates section; Addison Wesley, 1989
|
||
<LI>
|
||
<A NAME="ref5"></A>
|
||
Upstill, Steve.
|
||
<I>The RenderMan Companion - A Programmer's Guide to
|
||
Realistic Computer Graphics</I>,
|
||
279; Addison Wesley, 1989
|
||
<LI>
|
||
<A NAME="ref6"></A>
|
||
<I>The RenderMan Interface Specification, Version 3.1</I>
|
||
110-114; Pixar, Septermber 1989
|
||
<LI>
|
||
<A NAME="ref7"></A>
|
||
<A HREF="http://www.cgrg.ohio-state.edu/~smay/RManNotes/WritingShaders/intro.html#method">
|
||
<I>RManNotes</I></A>
|
||
"Writing RenderMan Shaders - Why follow a methodolgy?";
|
||
Stephen F. May, Copyright © 1995, 1996
|
||
<LI>
|
||
<A NAME="ref8"></A>
|
||
<A HREF="http://www.cgrg.ohio-state.edu/~smay/RManNotes/WritingShaders/intro.html#approach">
|
||
<I>RManNotes</I></A>
|
||
"Writing RenderMan Shaders - The Layered Approach";
|
||
Stephen F. May, Copyright © 1995, 1996
|
||
</OL>
|
||
|
||
|
||
<table width=100%>
|
||
<tr>
|
||
<td bgcolor="#000000" cellpadding=0 cellspacing=0 valign=top>
|
||
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN="left"
|
||
HSPACE="0" WIDTH="0" HEIGHT="0"></td>
|
||
<tr>
|
||
<td align=right>
|
||
<FONT size=1>
|
||
© 1996 by <A HREF="mailto:mjhammel@csn.net">Michael J. Hammel</A>
|
||
</FONT>
|
||
</table>
|
||
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2>Kandinski</H2>
|
||
<H4>By Jeff Hohensee,
|
||
<a href="mailto:"oot@casper.com">ott@casper.com</a></H4>
|
||
|
||
</center>
|
||
<P> <HR>
|
||
|
||
<p>Kandinski is my new pre-pre-pre-beta program which generates a picture
|
||
file from a MIDI file. It does so based on my cycluphonic method of
|
||
correlating colors to musical pitches. The few careful observers who have
|
||
seen previous implementations of cycluphonics agree that it gives visual
|
||
events which seem to sympathize with the generating music, in terms of
|
||
implied feeling, better than previous "color organ" methods.
|
||
Kandinski was written with pfe under Linux on a 486. It should be easy to
|
||
port to another ANSI Forth system, as I am rusty at Forth, and the task at
|
||
hand didn't call for any trickery, and I avoided the Linux-specific stuff
|
||
in pfe, mostly because I couldn't find much documentation on it.
|
||
The code presented here creates a .ppm image file on a selectable track by
|
||
track basis. The piano envelope option is not implemented yet, just organ.
|
||
.ppm files can be converted to just about any image format with the unix
|
||
pbmplus tools, and are viewable in Linux with zgv.
|
||
The crucial cycluphonic element in Kandinski is the "cycle" construct,
|
||
a lookup table which Kandinski uses to map a 12 hue color wheel to the
|
||
Cycle of Fifths. That's the crux of cycluphonics. If you use this code, or
|
||
cycluphonics, give credit where due.
|
||
|
||
<h3>How Kandinski operates ( I hope )</h3>
|
||
Copy a MIDI file with some tonal music to filename in.mid .
|
||
Run your ANSI Forth in the same directory. Include the Kandinski code into
|
||
your dictionary. Type main at the ok prompt. Kandinski will check in.mid
|
||
for a MIDI header. If in.mid is a midi file, Kandinski will traverse
|
||
tracks until it finds a noteon message. It will then tell you a bit about
|
||
the track and ask you if you want to make a picture of it. Hit y and it
|
||
will ask you if you want to use a piano or an organ type volume envelope.
|
||
The piano option is curently just a stub. Kandinski will then ask you to
|
||
hit a key to seed the filename randomizer. Kandinski will then create a
|
||
picture file with a filename of the form kanrrrrr.ppm, where r is a random
|
||
letter. The track portion of the program repeats if there are more tracks
|
||
with notes. The pictures created by Kandinski are 640 by 80 pixels, 24
|
||
bits color depth. I will soon be putting some Kandinski output up at
|
||
<a href="http://cqi.com/~humbubba">http://cqi.com/~humbubba</a><br>
|
||
|
||
|
||
<pre>
|
||
( kandinski )
|
||
( ANSI Forth sourcecode Rick Hohensee begun 199703 )
|
||
( A MIDIfile-to-still-picture implementation of my Cycluphonic method
|
||
of correlating colors and musical pitches. )
|
||
( used i486 Slackware Linux from the InfoMagic LDR sept 96, pfe,
|
||
Jeff Glatt's MIDI docs, dpans7 )
|
||
( redistribution permission contingent on authorship credit )
|
||
|
||
( default number base of file is.... ) decimal
|
||
|
||
( app notes, pfe file-postition is a DOUBLE!
|
||
MIDI sizes are SINGLEs
|
||
YEESH! "f0" is a variable! AAAAARRRRGGG!!!
|
||
hex f0 decimal . doesn't work as wished. )
|
||
|
||
|
||
( my prefered tools, jigs and cheats )
|
||
|
||
: binary decimal 2 base ! ;
|
||
|
||
: .base base @ dup decimal . base ! ;
|
||
|
||
|
||
|
||
: walk ." " key drop ;
|
||
|
||
: 0s ( wipe data stack )
|
||
depth dup if 0 do drop loop else drop then ;
|
||
|
||
: paddump ( [ count --- ] counted dump from pad )
|
||
pad swap dump ;
|
||
|
||
|
||
( app related ....)
|
||
|
||
0 value deltasum
|
||
2variable trkend 0 0 trkend 2!
|
||
|
||
0 value dpp ( deltas per pixel )
|
||
create rgbs 640 3 * allot
|
||
0 value trk#
|
||
variable midifile
|
||
0 value pbmfile
|
||
|
||
create organstate 128 allot
|
||
organstate 128 0 fill ( pfe allot leaves an "allot" string in the alloted
|
||
space )
|
||
create 12state 12 allot
|
||
12state 12 0 fill
|
||
|
||
0 value redac
|
||
0 value greenac
|
||
0 value blueac
|
||
0 value backfoot
|
||
|
||
create cycle 0 , 7 , 2 , 9 , 4 , 11 , 6 , 1 , 8 , 3 , 10 , 5 ,
|
||
|
||
create wheelred 12 allot
|
||
255 c, 255 c, 255 c, 127 c, 0 c, 0 c, 0 c, 0 c, 0 c, 127 c, 255 c, 255 c,
|
||
create wheelgreen 12 allot
|
||
0 c, 127 c, 255 c, 255 c, 255 c, 255 c, 255 c, 127 c, 0 c, 0 c, 0 c, 0 c,
|
||
create wheelblue 12 allot
|
||
0 c, 0 c, 0 c, 0 c, 0 c, 127 c, 255 c, 255 c, 255 c, 255 c, 255 c, 127 c,
|
||
|
||
|
||
0 value fid
|
||
|
||
create ppm
|
||
ascii P c, ascii 6 c, 10 c, ascii 6 c, ascii 4 c, ascii 0 c,
|
||
bl c, ascii 8 c, ascii 0 c,
|
||
bl c, ascii 2 c, ascii 5 c, ascii 5 c,
|
||
|
||
|
||
|
||
|
||
: msboff 127 and ;
|
||
|
||
: openin ( opens a file called in.mid in current dir
|
||
which can then be referenced via midifile @ )
|
||
S" in.mid" r/w bin open-file drop midifile ! ;
|
||
|
||
: in.mid ( --- fid_of_in.mid ) ( poorly factored, ) midifile @ ;
|
||
|
||
: inpos ( --- 2inpos ) ( get file position in in.mid )
|
||
midifile @ file-position drop ( ior) ;
|
||
|
||
: inpeek ( [ count --- ] counted read from in.mid to pad )
|
||
pad swap
|
||
midifile @ read-file drop ;
|
||
|
||
: trksize ( --- trksize ) ( DOES move inpos )
|
||
( build a 32 bit track size cell from the WRONGendian value
|
||
, from body0 to body0 )
|
||
4 inpeek drop ( endianism translation )
|
||
pad c@ 24 lshift
|
||
pad 1 + c@ 16 lshift +
|
||
pad 2 + c@ 8 lshift +
|
||
pad 3 + c@ + ;
|
||
|
||
2variable prevpos
|
||
2variable starttrk 0 0 starttrk 2!
|
||
|
||
: filebound ( fid --- 0 if inside file )
|
||
dup >r file-position drop r> file-size drop 2swap d< ;
|
||
|
||
: hoptrk ( [ --- inbounds_flag ] body0 to next trk body0 )
|
||
trksize 8 + 0 inpos d+ in.mid reposition-file drop
|
||
in.mid filebound ;
|
||
|
||
0 value envelope
|
||
0 value noteons 0 value noteoffs
|
||
|
||
: hinybble 240 and ; ( f0 is a &$^%##%$ variable name! )
|
||
hex
|
||
0f constant lonybble
|
||
binary
|
||
: bit7 10000000 and ;
|
||
decimal
|
||
|
||
0 value delta
|
||
|
||
: bytein pad 1 in.mid read-file drop
|
||
1 <> if ( error) cr
|
||
." end of in.mid "
|
||
quit else pad c@ then ;
|
||
|
||
: bignum 0
|
||
begin bytein dup bit7
|
||
while
|
||
msboff swap 7 lshift +
|
||
repeat
|
||
swap 7 lshift + ;
|
||
|
||
: ignore ( n --- ) ( add n to inpos )
|
||
0 inpos d+ in.mid reposition-file drop ;
|
||
|
||
: ignoreto ( delimiter --- ) ( ignore filebytes to delimiter )
|
||
begin dup bytein = until drop ;
|
||
|
||
0 value moment
|
||
|
||
: mthd ( --- da position of MThD or fail )
|
||
77 ignoreto 84 ignoreto 104 ignoreto 100 ignoreto inpos ;
|
||
|
||
: mtrk 77 ignoreto 84 ignoreto 114 ignoreto 107 ignoreto inpos ;
|
||
|
||
: seed
|
||
." hit a key please " key
|
||
time&date 2drop drop + + + in.mid + ;
|
||
|
||
|
||
|
||
|
||
: 128to12 ( organstate to 12state, i.e. midinote#s to notename#s )
|
||
12state 12 0 fill
|
||
128 0 do
|
||
organstate i + c@ if
|
||
1 i 12 mod 12state + c!
|
||
then ( simple for now )
|
||
loop
|
||
;
|
||
|
||
: 12torgb 0 to redac 0 to greenac 0 to blueac
|
||
12 0 do
|
||
12state i + c@ if
|
||
i cells cycle + @
|
||
cells dup wheelred + @ redac + 2 / to redac
|
||
dup wheelgreen + @ greenac + 2 / to greenac
|
||
wheelblue + @ blueac + 2 / to blueac
|
||
then
|
||
loop ;
|
||
|
||
|
||
|
||
|
||
: orgtorgb ( pixel# --- )
|
||
128to12
|
||
12torgb
|
||
dup redac swap 3 * rgbs + c!
|
||
dup greenac swap 3 * 1 + rgbs + c!
|
||
blueac swap 3 * 2 + rgbs + c!
|
||
;
|
||
|
||
|
||
: reset ( --- ) ( actions on an FF status byte )
|
||
bytein case
|
||
0 of bignum ignore ." ff 00 ignored " endof
|
||
1 of ." text " bignum ignore endof
|
||
2 of ." copyright " bignum ignore endof
|
||
3 of ." trackname " bignum ignore endof
|
||
4 of ." inst name " bignum ignore endof
|
||
5 of ." lyric " bignum ignore endof
|
||
6 of ." flow marker " bignum ignore endof
|
||
7 of ." cue point, sample " bignum ignore endof
|
||
33 of 2 ignore ( port # ) endof
|
||
47 of ( ." last event of track " ) 1 ignore endof
|
||
81 of 4 ignore endof
|
||
84 of 6 ignore ." smte o/s ignored " endof
|
||
88 of 5 ignore ( time sig ) endof
|
||
( ." unknown reset ff thang " )
|
||
endcase ;
|
||
|
||
: sysex ( sysexbyte --- ) ( i.e. message with status hinyb of f )
|
||
dup case
|
||
240 of 247 ignoreto ." ignoring f0 to f7 " drop endof
|
||
241 of ." miditimecode, unsupported " drop endof
|
||
242 of ." song position pointer " drop endof
|
||
243 of ." song select " drop endof
|
||
244 of ." unimplemented f4 sysex " drop endof
|
||
245 of ." unimplemented f5 sysex " drop endof
|
||
246 of ." tune calibrate " drop endof
|
||
249 of ." unimplemented f9 sysex " drop endof
|
||
247 of ." discontinue f0/240 stream " drop endof
|
||
248 of ." midi clock " drop endof
|
||
250 of ." restart song " drop endof
|
||
251 of ." midi continue, flow " drop endof
|
||
252 of ." stop " drop endof
|
||
254 of ." active sense message " drop endof
|
||
253 of ." unimplemented fd sysex " drop endof
|
||
255 of reset endof
|
||
." impossible sysex "
|
||
endcase ;
|
||
|
||
: envelope? cr ." piano envelope or organ? (p=piano/other=organ) " key
|
||
ascii p = if -1 to envelope else 0 to envelope then ;
|
||
|
||
: message ( survey pass )
|
||
bytein dup hinybble case
|
||
128 of 2 ignore noteoffs 1 + to noteoffs drop endof
|
||
144 of noteons 1+ to noteons 2 ignore drop endof
|
||
160 of 2 ignore drop endof
|
||
176 of 2 ignore drop endof
|
||
192 of 2 ignore drop endof
|
||
208 of 2 ignore drop endof
|
||
224 of 2 ignore drop endof
|
||
240 of cr sysex endof
|
||
|
||
endcase ;
|
||
|
||
: pianooff ." pianooff " 2 ignore ;
|
||
: pianoon 2 ignore ;
|
||
: organoff 0 organstate bytein + c! 1 ignore ;
|
||
: organon -1 organstate bytein + c! 1 ignore ;
|
||
|
||
: messageagain ( processing pass )
|
||
bytein dup hinybble case
|
||
128 of envelope if pianooff else organoff then drop endof
|
||
144 of envelope if pianoon else organon then drop endof
|
||
160 of 2 ignore drop endof
|
||
176 of 2 ignore drop endof
|
||
192 of 2 ignore drop endof
|
||
208 of 2 ignore drop endof
|
||
224 of 2 ignore drop endof
|
||
240 of cr sysex endof
|
||
|
||
endcase ;
|
||
|
||
|
||
: random.kan ( create file[name] kan[random].ppm )
|
||
seed srand
|
||
ascii k pad c! ascii a pad 1 + c! ascii n pad 2 + c!
|
||
8 3 do 26 random 97 + i pad + c! loop
|
||
ascii . pad 8 + c! ascii p pad 9 + c! ascii p pad 10 + c!
|
||
ascii m pad 11 + c! ;
|
||
|
||
: makepic
|
||
random.kan
|
||
pad 12 r/w create-file drop to pbmfile ( new filename exists )
|
||
ppm 16 pbmfile write-file drop
|
||
80 0 do
|
||
rgbs 640 3 * pbmfile write-file drop
|
||
loop
|
||
;
|
||
|
||
: process
|
||
0 to deltasum 0 to noteons 0 to noteoffs
|
||
640 0 do ( i=pixel )
|
||
|
||
begin
|
||
( bignum backfoot )
|
||
bignum deltasum + to deltasum
|
||
messageagain
|
||
i dpp * deltasum >
|
||
while
|
||
repeat
|
||
( paint pixel )
|
||
|
||
i orgtorgb
|
||
loop
|
||
makepic
|
||
;
|
||
|
||
|
||
: survey ( a track )
|
||
inpos starttrk 2!
|
||
trksize 0 inpos d+ trkend 2!
|
||
0 to deltasum 0 to noteons 0 to noteoffs
|
||
begin
|
||
bignum deltasum + to deltasum
|
||
message
|
||
inpos trkend 2@ d<
|
||
while
|
||
repeat
|
||
;
|
||
|
||
: track survey
|
||
noteons if ." This track has notes.... "
|
||
cr ." noteons " noteons . ." noteoffs " noteoffs .
|
||
." MIDI clocks per pixel " deltasum 640 / dup to dpp .
|
||
cr ." wanna do a pic of this track? (y/other) " key ascii y = if
|
||
envelope?
|
||
starttrk 2@ in.mid reposition-file drop inpos d. walk
|
||
noteons . dpp if
|
||
process else ." less than one clock per pixel, no can do " walk then
|
||
then then
|
||
;
|
||
|
||
: typecheck
|
||
mthd
|
||
inpos 2dup 4 0 d= if ." apparent std MIDI seq file. Yay. "
|
||
else 16 0 d= if ." apparent RMID MIDI file. OK. " else
|
||
cr ." in.mid is apparently not a MIDI file " cr
|
||
." Copy MIDI file to be processed to in.mid " bye then then ;
|
||
|
||
: main 0 to trk#
|
||
openin typecheck
|
||
begin
|
||
trk# 1 + dup to trk#
|
||
|
||
mtrk
|
||
track
|
||
( bytein does a QUIT on end-of-file )
|
||
again
|
||
;
|
||
</pre>
|
||
<p>Separate documentation file for the Kandinski program
|
||
Rick Hohensee <a href="http://cqi.com/~humbubba">http://cqi.com/~humbubba</a>
|
||
or <a href="mailto:rickh@capaccess.org">rickh@capaccess.org</a>
|
||
please cc to <a href="mailto:humbubba@cqi.com">humbubba@cqi.com</a>
|
||
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Jeff Hohensee <BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./gm.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./expo.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2>1997 Linux Expo</H2>
|
||
<H4>By Jon "maddog" Hall
|
||
<a href="mailto:"maddog@zk3.dec.com">maddog@zk3.dec.com</a></H4>
|
||
</center>
|
||
|
||
<HR> <P>
|
||
<p>"Well, should we get one pitcher or two?" That was the question
|
||
that began the first unofficial event of the Linux Expo Thursday
|
||
night. A group of people, including Red Hat employees, some of the
|
||
speakers and a tired maddog were at the Carolina Brewery in
|
||
Chapel Hill, North Carolina. It was late, and I was the
|
||
last person to arrive."Two pitchers," I cried,"Now what
|
||
will you be drinking?"
|
||
|
||
<p>The next day, Friday April 4th started early, as I had to set up
|
||
the Linux International booth, as well as absorb all that was
|
||
happening. The event was held in the North Carolina
|
||
Biotechnology Center at Research Triangle Park. As I
|
||
approached the Biotech Center, I was met with a friendly
|
||
parking coordinator that reinforced the information that
|
||
"parking was scarce", and that most people had to park at
|
||
outlying lots. Fortunately Red Hat had arranged for shuttle
|
||
busses from those lots and from several of the hotels. Since our
|
||
car had an exhibitor's pass, we were able to park close to the
|
||
Biotech Center and unload our banners, handouts and stuffed
|
||
penguins.
|
||
|
||
<p>There was a large tent to the left outside of the building
|
||
containing the "Linux Expo Super Store" stocked with
|
||
Linux books, Linux bumper stickers, T-shirts (including
|
||
an excellently designed Expo shirt that said "Expose yourself to
|
||
Linux" with a front and rear view of a penguin holding open an
|
||
overcoat) and other interesting souvenir items. Further
|
||
to the left was an outdoor viewing area for the conference talks
|
||
that (due to the excellent weather) was a favorite spot for
|
||
people to view the technical talks for free, especially while
|
||
playing Frisbee. A raffle was held in the registration area,
|
||
and prizes were given away on an hourly basis.
|
||
Having registered, attendees were given a copy of the talks as
|
||
well as an event schedule.
|
||
|
||
|
||
<p>The event was held on two floors with the exhibits spread out on both. There
|
||
was another conference viewing area inside the building with TV
|
||
monitors, as well as the conference auditorium itself. There was
|
||
an Install Fest area (sponsored by the Washington D.C. Linux
|
||
User's Group, Linux Hardware Solutions and Red Hat Software),
|
||
where people brought their systems, received help with installing
|
||
Red Hat's latest release, and Olaf Kirch's kernel-based NFS
|
||
server was "stress tested" at the same time. Finally, there was a food
|
||
court area, where people could buy sandwiches, chips, soda and
|
||
other "software development food".
|
||
|
||
<p>There were fifteen vendors at the Expo, each with "table-top"
|
||
booths to display their wares. I prefer the "pipe-and-drape"
|
||
approach to trade shows rather than expensive booths, since I
|
||
would rather the vendors put more money into development of the
|
||
product and less into elaborate displays or floor shows with
|
||
unicycle riders who juggle things. While not all Linux vendors
|
||
were at Linux Expo, a wide spectrum of companies, including Linux
|
||
International, Cyclades, Numerical Algorithms Group, Linux
|
||
Hardware Solutions, Enhanced Software Technologies, Caldera,
|
||
Applix, Xess, WorkGroup Solutions, Stay Online, VA Research, Apex
|
||
Systems Integration, PromoX Systems and (of course) Red Hat
|
||
Software were present. One item being demonstrated at the Linux
|
||
Hardware Solutions booth was a free piece of software called [cw]em86[ecw]
|
||
that allowed an Intel/Linux binary to run without change on an
|
||
Alpha/Linux system. Being shown for the first time, it allowed
|
||
Applixware, Netscape and various other applications to execute as
|
||
if they had been ported to the system.
|
||
|
||
<p>Penguins abounded in various T-shirts, giveaways and objects
|
||
d'art. In fact, there were so many people there (I estimated 900
|
||
over the two-day event) with penguin "stuff", that I thought
|
||
I'd
|
||
had enough of penguins; but afterwards while wandering around Chapel Hill, Alan Cox found some
|
||
candy in the shape of penguins, so penguin "lust" started all
|
||
over again.
|
||
|
||
<p>The technical conference started off with a presentation by
|
||
Gilbert Coville of Apple Computer with a talk about the MkLinux
|
||
kernel. For people who were afraid that this would turn into a
|
||
"Red Hat Only" event, it was interesting that Gilbert's talk
|
||
opened the Expo and that a talk about the Debian Linux
|
||
Distribution (given by Bruce Perens) followed shortly after.
|
||
Bruce also discussed the graphics used in the making of Toy Story in
|
||
a separate presentation.
|
||
|
||
<p>Various presentations about hardware-specific ports were given.
|
||
Dave Miller talked about the "Next Generation SPARCLinux" as well
|
||
as the Free Software Development Model, and David Mosberger-Tang
|
||
talked about the Alpha Port, as well as methods, applicable to both Intel
|
||
and Alpha, for
|
||
speeding up your programs by paying attention to memory and
|
||
cache accesses.
|
||
|
||
<p>Other talks were more general across the Linux OS, such as Jeff
|
||
Uphoff's "Network File Locking", Alan Cox's "Tour of the Linux
|
||
Networking Stack", Peter Braam's "Coda Filesystem", Alexander
|
||
Yuriev's talk on the IPv4 family of protocols and infrastructure
|
||
and his talk on security, Michael Callahan's "Linux and Legacy
|
||
LANs", Eric Youngdale's "Beyond ELF", Olaf Kirch's "Linux Network
|
||
File System", Theodore Ts's "Ext2 File System: Design,
|
||
Implementation and the Future", Miguel de Icaza's talk on the new
|
||
RAID code and Daniel Quinlan's talk on the File System Hierarchy
|
||
Standard.
|
||
|
||
<p>To round out the list of talks and events was Dr. Greg
|
||
Wettstein's talk on "Working and Playing with others: Linux Grows
|
||
Up" and the Linux Bowl.
|
||
|
||
<p>The Linux Bowl was the final event. Two teams
|
||
of six developers were pitted against each other to answer
|
||
thirty questions about Linux and the Linux community. Questions
|
||
ranged from "What liquid should one drink between rounds of a
|
||
Finnish sauna?" (correct answer: beer) to "What version library
|
||
fixed a particular security hole?" to which Alan Cox gave a
|
||
(seemingly) ten minute answer. While some of the questions were
|
||
very obscure (even the moderator was unsure of the answer), most
|
||
of the time either the right answer (or a good facsimile) was
|
||
given.
|
||
|
||
<p>The show sponsors (after tallying up the attendence) reported that
|
||
958 people showed up, which could be the largest Linux-specific event
|
||
ever, of which 40% were from within North Carolina. Attendees came from
|
||
over 25 states, 4 Canadian provinces, and 10 countries, including Australia,
|
||
Korea and European countries.
|
||
|
||
|
||
<p>Finally, I would like to thank the members of the Atlanta Linux
|
||
Enthusiasts <a href="http://www.ale.org/">http://www.ale.org/</a> group who helped to staff the Linux
|
||
International booth. They were great and helped give me the freedom
|
||
to get out from behind the booth every once in a while, because
|
||
most importantly, Linux Expo was a chance to talk with the
|
||
vendors, the developers and other old and new friends on a
|
||
one-to-one, quality basis. Perhaps some things could be improved
|
||
for next year: A larger auditorium for the talks, more and
|
||
closer parking and less expensive food in the food court. But
|
||
certainly the southern hospitality and warmth of Red Hat Software
|
||
came through. I want to thank the sponsors for arranging a great event,
|
||
and I hope that next year's will be even larger and better.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Jon "maddog" Hall<BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./kandinsky.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./raid.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<h1>A Fresh Beginning: The Enlightenment Window Manager</h1>
|
||
<H4>By Larry Ayers,
|
||
<a href="mailto:layers@vax2.rainis.net">layers@vax2.rainis.net</a></H4>
|
||
</center>
|
||
|
||
<P> <HR> <P>
|
||
<center><h3>Introduction</h3></center>
|
||
|
||
<p>Most of the window-managers available for Linux these days can trace their
|
||
ancestry back to the original twm program, which may have been the first
|
||
widely used manager on unix systems. There is a good reason for this, as twm
|
||
pioneered many of the features taken for granted by users, such as movable,
|
||
resizable windows and a root-window applications menu. It's good, time-tested
|
||
code; why reinvent the wheel?
|
||
|
||
<p>Two programmers have recently done just that, from two perspectives as far
|
||
removed from each other as their respective geographical locations. Chris
|
||
Cannam, a British programmer, has taken the minimalist approach with his wm2
|
||
manager (which I wrote about in LG #14) and the new wm2 variant wmx, which I
|
||
discuss elsewhere in this issue.
|
||
|
||
<p>At the other extreme is the work of a young Australian programmer who likes
|
||
to be known as the Rasterman. Imagine asking the programmers responsible for
|
||
the games Quake or Duke Nukem 3D to write a window-manager; the result might
|
||
bear some resemblance to the fanciful program known as Enlightenment.
|
||
|
||
<p>I first encountered Enlightenment (what a name! it seems to carry the
|
||
implication that we users of fvwm et al are still crawling blindly through the
|
||
primordial ooze...) earlier this year, when a binary was available on the web.
|
||
I tried it briefly, but at the time I had a 486 machine; it ran slowly for me
|
||
and seemed to consume great gobs of memory. Recently the Rasterman
|
||
(his real name is Carsten Haitzler) has rewritten the application from scratch,
|
||
tightening it up and introducing a new shared lib which handles image loading
|
||
and rescaling. The memory consumption has been greatly reduced since the
|
||
initial release. At this point (beta release 4) there are no virtual desktops
|
||
or root-window menus, but the project looks promising and what there is of it
|
||
runs well for me.
|
||
|
||
<center><h3>Features and Appearance</h3></center>
|
||
|
||
<p>Enlightenment uses the <b>ppm</b> image format for both window details and
|
||
icons. An elaborate configuration file (called <i>windowstyles</i>) specifies
|
||
which image goes where. Each segment of the window border and detailing is a
|
||
separate <b>ppm</b> file. I haven't made any attempt to modify the default
|
||
configuration. It looks like it would take many hours to write a new one. Carsten
|
||
plans on eventually offering configurations which would emulate any of the
|
||
other window-managers.
|
||
|
||
<p>I get the impression from the Enlightenment web-page that the <b>ppm</b>
|
||
format is more efficient than others, especially on 16-32 bit displays. I
|
||
don't know how valid this is, but the window-manager <i>does</i> seem to do
|
||
quite a bit of image handling without consuming great amounts of memory.
|
||
|
||
<p>This window-manager automatically will load any sort of image format as a
|
||
root background image. At startup the appropriate netpbm utility is summoned
|
||
to transform the image to the <b>ppm</b> format. Naturally, you need
|
||
to have the netpbm graphics utility package installed for this to work.
|
||
|
||
<p>Here is a screenshot of a window under Enlightenment:<br>
|
||
<p>
|
||
<img alt="Enlightenment Window" src="./gx/ayers/enl.gif"><br>
|
||
|
||
<p> XV (with which I made the screenshot) couldn't figure out where the actual
|
||
window border was; can you blame it? I set the root-window background to be
|
||
the same color as this HTML-file background as a quick work-around.
|
||
|
||
<center><h3>Availability</h3></center>
|
||
|
||
<p>The Enlightenment web-site is at <a href=
|
||
"http://www.cse.unsw.edu.au/~s2154962/enlightenment/index.html">
|
||
http://www.cse.unsw.edu.au/~s2154962/enlightenment/index.html</a>.
|
||
The source for the latest version can be downloaded from the site; the latest
|
||
news about the application will also be there.
|
||
|
||
<center><h3>Closing Thoughts</h3></center>
|
||
|
||
<p>It will be interesting to see what eventually happens with Enlightenment,
|
||
though personally I'm satisfied with the window-managers I currently use. I
|
||
just like to see diversity in software for Linux. Fancy new window-borders
|
||
might seem to be a trivial matter but it is user-interface features such as
|
||
these which can attract new users, especially younger ones. I showed
|
||
Enlightenment to my sixteen-year-old son (an avid computer- game player) and
|
||
he was impressed. His comment was "It looks like a game interface!".
|
||
|
||
<p>Another factor is the simple human desire for novelty. Sometimes the same
|
||
old interface becomes boring -- you realize you aren't really even seeing it
|
||
anymore. A change in background and window-style can be refreshing. People
|
||
routinely change room interiors for these same reasons and, come to think of
|
||
it, I look at my computer screen quite a bit more than I do the walls!
|
||
|
||
<p>Keep in mind that the science-fiction Bladerunneresque appearance is just
|
||
the default. Enlightenment is a framework and could be configured in a
|
||
variety of ways, depending upon taste (and how much time you're willing to
|
||
spend!). Luckily (if you have patience), someone will eventually come up with
|
||
a configuration which will suit you. or at least be close. Interest seems to
|
||
be growing in this window-manager lately (judging by the volume of messages in
|
||
the mailing list) and it may yet evolve into a community-supported
|
||
window-manager, such as Fvwm2 or Afterstep. It's been released under the Gnu
|
||
license, but so far Carsten Haitzler is the sole developer.
|
||
|
||
|
||
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Larry Ayers <BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./raid.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./cthugha.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H1>Visual Music: The Linux Port of Cthugha</h1>
|
||
<H4>By Larry Ayers,
|
||
<a href="mailto:layers@vax2.rainis.net">layers@vax2.rainis.net</a></H4>
|
||
</center>
|
||
|
||
<P> <hr> <P>
|
||
<center><h3>Introduction</h3></center>
|
||
|
||
<p>Around 1993 Kevin Burfitt, an Australian computer science student, began
|
||
developing a computer program which would transform recorded music into moving
|
||
colored patterns. Programs such as this had been in use for some time,
|
||
typically as an adjunct to a rock concert, i.e. part of the "light show".
|
||
This program was originally written for DOS, though before long it began to
|
||
acquire a trait common to software in the unix world: a multitude of options
|
||
and parameters.
|
||
|
||
<p>Kevin must be a fan of the early 20th-century horror writer
|
||
H.P. Lovecraft. How else to account for the distinctive appellation "Cthugha"
|
||
which he gave his program? In the Lovecraft stories Cthugha is the name given
|
||
to a horrific "elder god" which manifested itself to humans in the form of
|
||
shifting colored lights. (This doesn't sound too horrific, but Lovecraft
|
||
could make a loaf of bread seem sinister!)
|
||
|
||
<p>Cthugha has from the early days been available under the aegis of
|
||
the Gnu General Public License, making the source freely available. This
|
||
opened the door for many other programmers scattered throughout the world who
|
||
became involved with the project. Sound familiar? Ports of the
|
||
program are now available for the PowerMac, Win95 (in development), and of
|
||
course Linux. <a href="mailto: k3096e5@c210.edvz.uni-linz.ac.at">Harald
|
||
Deischinger</a> is responsible for the Linux port. He recently released a new
|
||
version (0.9) which is available from the following sites:<br>
|
||
|
||
<ul>
|
||
<li> <a href="ftp://sunsite.unc.edu/pub/Linux/apps/sound">Sunsite (may still
|
||
be in /pub/Linux/Incoming)</a>
|
||
<li><a href="ftp://ftp.afn.org/cthugha/linux">The main Cthugha site</a>
|
||
</ul>
|
||
|
||
<center><h3>What Cthugha Does</h3></center>
|
||
|
||
<p>The input to the program can be any audio source, such as a microphone, a
|
||
CDROM drive (though you must have the drive connected to your soundcard), or
|
||
even a sound file. Cthugha takes the digital audio information and, after
|
||
passing the data stream through any combination of filters, displays it to the
|
||
screen in real time. The keyboard is used to change the various parameters
|
||
either specifically or randomly. The simplest displays resemble the screen of
|
||
an oscilloscope being fed audio data (Cthugha has been called "an
|
||
oscilloscope on acid") but as more optional filters are added the display
|
||
becomes baroquely intricate. If too many filters are active the
|
||
resulting images can be chaotic, with little discernible relation to the sound
|
||
being processed.
|
||
|
||
<center><h3>Running Cthugha</h3></center>
|
||
|
||
<p>The Linux version of Cthugha is compiled into two executables: cthugha,
|
||
which is a console application (using Svgalib), and xcthugha, which runs
|
||
either in an X-window or as a full-screen X application using the new DGA
|
||
extensions. This last requires XFree86 3.2 or later. Xcthugha can also be
|
||
run as a screensaver; in former releases this was a separate executable.
|
||
|
||
<p>In this release the X11 version runs faster and smoother than in earlier
|
||
releases, but I still prefer the console version. It's the quickest and most
|
||
responsive of the three interfaces and (in my experience) the only usable
|
||
version on a machine less powerful than a mid-range Pentium.
|
||
|
||
<p>Running Cthugha reminds me of playing a musical instrument. The first
|
||
attempts aren't consistently pleasant, but with practice a measure of control
|
||
is gained. Orchestral or loud rock music can benefit from
|
||
low gain settings, which help to produce a non-chaotic display. The good sort of
|
||
recording to start with is music with few voices or tracks. A vocalist with
|
||
minimal accompaniment or solo instrumental music give good results
|
||
while you gain a feel for the program.
|
||
|
||
<p>Cthugha comes with several "translation tables"; these are
|
||
filters which map the display to various moving patterns, such as spirals or
|
||
the appearance of traveling through a starfield. I don't use them much, as it
|
||
seems to me they obscure the relationship between the music and the display.
|
||
The tables also tend to increase CPU usage. Try them and see what you think,
|
||
as they seem to be popular with other Cthugha users.
|
||
|
||
<p>The other filter categories are more useful. The "wave" filters control the
|
||
general shape of the sound waves. These run the gamut from basic oscilloscope
|
||
sine and square waves to angular lightning-like patterns or floating clusters
|
||
of fire-flies. The "flame" filters add to the waves trailing clouds of glory
|
||
(I've always wanted to use that phrase in a non-ironic sense!).
|
||
|
||
<p>Using a microphone as input is fun, especially if there are kids around.
|
||
Seeing your voice represented as billowing clouds of iridescent plasma is
|
||
novel, to say the least. Various musical instruments are interesting to try
|
||
as well; if one person plays the instrument while the other keys in parameters,
|
||
a combination which seems to reflect the character of the melody can often
|
||
be found. If you should happen upon a combination of settings which results
|
||
in a particularly pleasing screen just press the <b>a</b> key and those
|
||
settings are entered into your Cthugha initialization file.
|
||
|
||
<p>Another option is the Fast Fourier Transform, an algorithm which gives an
|
||
entirely different look to the sound; it's hard to describe, but FFT seems
|
||
more three-dimensional and subtle. The sampling rate should be reduced to
|
||
22000 hz. (from the default of 44000 hz.) since FFT adds one more level of
|
||
computation to the sound-translation process.
|
||
|
||
<p>Kevin Burfitt's decision to use the Fractint 256-color palette file as the
|
||
Cthugha palette file format was fortuitous. Over the years Fractint users
|
||
have come up with a multitude of palette files among which can be found
|
||
palettes to please anyone's taste. The Fractint fractal generator includes a
|
||
handy palette-file editor which can be used to create or modify palettes for
|
||
Cthugha. I'm not sure if the palette editor is included with Xfractint -- I
|
||
mostly use the DOS Fractint in a Dosemu console session.
|
||
|
||
<p>Here are a couple of screen-shots of xcthugha running in a 320x200
|
||
window:<br>
|
||
<hr>
|
||
<img src="./gx/ayers/cthugha3.gif" alt="Cthugha image #1">
|
||
|
||
<img src="./gx/ayers/cthugha4.gif" alt="Cthugha image #2">
|
||
<hr>
|
||
<p>These are snapshots, of course, and show little of the dynamic quality of
|
||
Cthugha reacting to the music. The above images, by the way,
|
||
are of an old recording of Sarah Vaughan singing with piano accompaniment.
|
||
|
||
<p><hr><p>
|
||
|
||
|
||
<!-- hhmts start -->
|
||
Last modified: Sun 27 Apr 1997
|
||
<!-- hhmts end -->
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Larry Ayers<BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./enl.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./updates_17.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2>Updates and Corrections</H2>
|
||
<H4>By Larry Ayers,
|
||
<a href="mailto:layers@vax2.rainis.net">layers@vax2.rainis.net</a></H4>
|
||
</center>
|
||
|
||
<P> <HR>
|
||
<p>After I finish these Gazette articles and get them uploaded to SSC,
|
||
I can usually count on a URL changing or a newer version of a program being
|
||
released. Sometimes that very day! The Gazette readers are also quick to let
|
||
me know of any factual errors I've made. I've accumulated
|
||
several of these corrections and updates and shall present them here.
|
||
|
||
<hr>
|
||
|
||
<center><h3>GV</h3></center>
|
||
|
||
<p>Last month I wrote a short piece about GV, a new Postscript file viewer.
|
||
I received a letter from the maintainer of the Debian GV package:<br><pre>
|
||
|
||
Hello Larry!
|
||
|
||
I enjoyed reading your article, but there are two remarks I want to
|
||
make:
|
||
|
||
- Your screen capture is one of the one modified gv that works with
|
||
all Athena Widgets, including the standard one. These modifications
|
||
were made by me (although it wasn't very hard once I realized how
|
||
well Johannes separated the Xaw3d stuff from the rest).
|
||
It would have been better to have a screen capture using libXaw3d, as
|
||
that is the standard look and feel. The last statement about having
|
||
to have Xaw3d is not very convincing this way.
|
||
- There is a gv homepage now:
|
||
<a href="http://wwwthep.physik.uni-mainz.de/~plass/gv/">
|
||
http://wwwthep.physik.uni-mainz.de/~plass/gv/</a>
|
||
|
||
This page currently features gv version 3, which can no longer be
|
||
used without libXaw3d. The last version of gv supporting standard
|
||
Xaw was 2.9.4 which will soon be available on a debian archive site.
|
||
Version 3 is even better than version 2 with respect to look and feel
|
||
(one of the first really convincing applications using Xaw3d, IMO)
|
||
and an improved postscript scanner.
|
||
|
||
While I'm sure that it isn't possible to change/add to the article,
|
||
there could be a short notice in the next gazette.
|
||
|
||
Helmut
|
||
|
||
--
|
||
Helmut Geyer Helmut.Geyer@iwr.uni-heidelberg.de
|
||
public PGP key available : finger geyer@saturn.iwr.uni-heidelberg.de
|
||
</pre>
|
||
|
||
<hr>
|
||
|
||
<center><h3>FileRunner</h3></center>
|
||
|
||
<p>FileRunner has been updated several times since I reviewed it several
|
||
months ago. The latest version, 2.3, has improved FTP capabilities (including
|
||
the option of downloading files with a separate background process). I must
|
||
confess I'm addicted to this file-manager. Once you get the hang of it file
|
||
manipulation and directory traversals become so speedy that using it as
|
||
<b>root</b> can be risky! Check the <a
|
||
href="http://www.cd.chalmers.se/~hch/filerunner.html"> FileRunner WWW
|
||
site</a> for latest releases and news.
|
||
|
||
<p>Here's an example of a user-configured action-button for FileRunner, which
|
||
will mostly interest XEmacs users (though it could probably be adapted easily
|
||
for use with GNU Emacs). Create a file in the <b>~/.fr</b> directory named
|
||
<b>cmds</b>, then enter this text into it:<pre><code>
|
||
|
||
# This is an example of user-defined commands. This file should be named
|
||
# cmds and placed in your ~/.fr directory. It will then be read by
|
||
# FileRunner at startup. Versions of FileRunner prior to 2.3 need to have
|
||
#the file named .fr_cmds and placed directly in the home directory.
|
||
|
||
# This list should contain all user-defined commands formatted as:
|
||
# { { <button-title> <procedure-name> } {..} {..} }
|
||
set config(usercommands) {
|
||
{ XEmacs xemacs }
|
||
}
|
||
#
|
||
proc xemacs { filelist srcdir destdir } {
|
||
cd $srcdir
|
||
# set l {}
|
||
foreach f $filelist {
|
||
exec gnuclient -q $f
|
||
}
|
||
}
|
||
</code></pre>
|
||
|
||
<p>For this to work, you must have <i>gnuserv</i> running; this can be started
|
||
from your <i>~/.xemacs-options</i> file by including the line<br>
|
||
<code>(gnuserv-start)</code><br> in the file. What this button does is send
|
||
the files you've selected to an already-running XEmacs process (I usually have
|
||
one running in a different virtual desktop than the one FileRunner is using).
|
||
XEmacs will then open up a new frame in your current desktop with the file(s)
|
||
displayed in it. This is handy for browsing source code.
|
||
|
||
<center><h3>wm2 and wmx </h3></center>
|
||
|
||
<p>In LG #14 I wrote about the minimalist window-manager wm2, written by
|
||
British programmer Chris Cannam. Since then wm2 has spawned a variant, known
|
||
as wmx. Evidently Mr. Cannam felt that spartan wm2 was becoming decadently
|
||
featureful. Wm2 was stripped down to the bare minimum; no more
|
||
frame-background pixmaps,etc. Wmx is just wm2 with the afore-mentioned
|
||
pixmaps and a basic virtual-desktop utility. It has one more feature which I
|
||
thought was very cleverly designed: if you click the middle mouse button on
|
||
the desktop an application menu appears. Unlike most window-managers, the
|
||
entries on the menu are a snap to set up. Simply create a subdirectory
|
||
stemming from your home directory called <i>.wmx</i> and symlink executables
|
||
to it. This can be even done while wmx is running. Whatever appears in
|
||
<i>~/.wmx</i> will appear in the menu. The menu can be configured with a
|
||
transparent background so that it has a very stylish and spare appearance. As
|
||
with wm2 the configuration can only be changed by recompiling, but this can be
|
||
done very quickly as the source is not large or complex. Source for either
|
||
wm2 or wmx can be obtained from
|
||
<a href="http://www.netcomuk.co.uk/~cannam/wm2.html">
|
||
the wm2 web-site.</a>
|
||
|
||
<center><h3>Afterstep</h3></center>
|
||
|
||
<p>A reader pointed out an error in my description of the Afterstep
|
||
window-manager in LG #14. Rather than being based on Fvwm2 code, Afterstep is
|
||
based on Fvwm version 1 code. Incidentally, pre-release 6 has been released
|
||
and is well worth a trial. Several bugs have been fixed but the improved
|
||
documentation alone makes it worth the download.
|
||
|
||
<center><h3>Xvile</h3></center>
|
||
|
||
<p>Lately it seems that a fad is sweeping the insular world of vi-like
|
||
editors. First the X versions of Elvis and Vim appeared with
|
||
pull-down menus; now it appears that Xvile will soon have a menubar as well.
|
||
If <b>a:</b> you like vile/xvile and <b>b:</b> you have the Motif libs
|
||
installed, you may want to take a look at the patches for vile 7.00 available
|
||
from the <a href="ftp://ftp.clark.net/pub/dickey/vile/patches">Vile ftp site.</a>
|
||
The patches A through G need to be applied to the vile 7.0 source. It looks
|
||
like the menu items will be fairly easy to set up, as they make use of the
|
||
standard vile functions. An implementation for non-Motif X setups is
|
||
planned.
|
||
|
||
<p>I have mixed feelings about GUI conveniences such as menus in a vi editor.
|
||
One of the appealing traits of these editors is the lack of such visible
|
||
features combined with a wide array of invisible and powerful commands.
|
||
Little overhead but great power and speed. If you have to reach for the mouse
|
||
and select a menu-item, why not use Nedit (for example) which is designed as a
|
||
mouse-oriented editor? On the other hand, how many users have had an
|
||
unpleasant first-time experience with vi and rejected it forever? At
|
||
least the menubar will have a "quit-ZZ" item, allowing a novice to end a
|
||
first session without having to desperately flee to another virtual console
|
||
and kill the vi process from afar!
|
||
|
||
<center><h3>TkDesk</h3></center>
|
||
|
||
<p>The latest version of this versatile desktop/file manager can be found at
|
||
<a href="http://sun1.rrzn-user.uni-hannover.de/~zzhibol/tkdesk">the TkDesk home site.</a> Version 1.0b4 has been released and many
|
||
minor bugs have been fixed. There are three patches available on the web-site
|
||
which should be applied by users of the program. Two of them are changes to
|
||
<i>*.tcl</i> files, whereas the third is a c-source-level change which
|
||
requires recompilation. Debian users can instead install a patched TkDesk
|
||
package which is available from the <i>/bo/binary-i386/x11</i> directory of
|
||
ftp.debian.org and its mirrors.
|
||
|
||
<center><h3>The Midnight Commander</h3></center>
|
||
|
||
<p>For the past several months a beta development cycle has been underway in
|
||
preparation for the release of mc-3.1.5. The recent releases (the latest as
|
||
of this writing is patchlevel 25) have been very stable and usable. If you
|
||
use the Midnight Commander frequently it might be worth your while to try the
|
||
new version, as many improvements have been made.
|
||
|
||
<p>An internal editor has been incorporated into mc, though you still can
|
||
change the settings and use any console-mode external editor. The FTP
|
||
capabilities of mc have been augmented and the Tk version has made great
|
||
strides and needs just a few more features to be the equal of the
|
||
classic console version. mc now has the ability to dive into <i>*.rpm</i> and
|
||
<i>*.deb</i> files in the same manner it has been able to do with <i>*.tgz</i>
|
||
and <i>*.zip</i> files, allowing you to inspect their contents without
|
||
unpacking the archives.
|
||
|
||
<p>It's only available in source form, but it comes with a good configure script
|
||
and compiles easily here. The source is available from
|
||
<a href="ftp://ftp.nuclecu.unam.mx/Midnight/devel">the mc home site</a>.
|
||
|
||
<center><h3>XEmacs Update</h3></center>
|
||
|
||
<p>Last month I wrote about the release of XEmacs 19.15. The XEmacs team
|
||
didn't stop and rest on their laurels (probably because some unexpected
|
||
problems showed up after the release!); beta releases of XEmacs 20.1 began
|
||
showing up about twice a week at <b>ftp.xemacs.org</b>. It looked as if
|
||
version 20.1 was about to be released, but for some reason the release was
|
||
cancelled and they moved on to betas of 20.2. I'm running beta 2 now,
|
||
and have found that several small problems with 19.15 have been fixed. The
|
||
Customization utility works quite a bit better now, for one. When 20.2 is
|
||
released I would recommend obtaining it, as it looks like it will be an
|
||
improvement over 19.15. Another approach if you've already installed 19.15 is
|
||
to visit <a href="http://www.xemacs.org/xemacs-19.15-patches/patch-page.html">
|
||
the XEmacs patches page</a>, which offers patches to upgrade 19.15 to
|
||
patchlevel 2. The problems dealt with are described on the page; if the
|
||
patches concern modes or utilities you never use, there's no point in applying them.
|
||
|
||
<p><hr><p>
|
||
|
||
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Larry Ayers <BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./cthugha.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./slackware.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2>Slackware</H2>
|
||
<H4>By Sean Dreilinger,
|
||
<a href="mailto:sean@kensho.com">sean@kensho.com</a></H4>
|
||
</center>
|
||
<HR>
|
||
|
||
<p><hr><p>
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a href="./slackware.html#slackware">Slackware Is Not For You (Or Maybe
|
||
It Is)</a>
|
||
<li><a href="./slackware.html#history">A Quick History</a>
|
||
<li><a href="./slackware.html#why">Why, Then?</a>
|
||
<li><a href="./slackware.html#planning">Planning</a>
|
||
<li><a href="./slackware.html#thinking">Thinking Through Storage and File
|
||
Systems</a>
|
||
<li><a href="./slackware.html#upgrade">Upgrade? Think Twice!</a>
|
||
<li><a href="./slackware.html#boot">Boot Disks: Always A Good Thing</a>
|
||
<li><a href="./slackware.html#slack1">Slackware Setup Worksheet</a>
|
||
<li><a href="./slackware.html#slack2">Slackware Setup Program</a>
|
||
<li><a href="./slackware.html#trouble">Troubleshooting</a>
|
||
<li><a href="./slackware.html#basking">Basking In The Afterglow</a>
|
||
<li><a href="./slackware.html#install">Install and Test</a>
|
||
<li><a href="./slackware.html#secure">Secure the System</a>
|
||
<li><a href="./slackware.html#backup">Back Up</a>
|
||
</ul>
|
||
<a name="slackware"></a>
|
||
<h3>Slackware Is Not For You (Or Maybe It Is)</h3>
|
||
|
||
<p>Welcome to the Slackware distribution of Linux! This chapter aims
|
||
to help the new Linux user or administrator evaluate Slackware,
|
||
plan a Slackware system, and install Slackware Linux. In it you'll
|
||
find an emphasis on careful planning rather than rushing into
|
||
an impetuous installation. A special worksheet is included to
|
||
help you "get it right the first time", which I hope will be especially
|
||
useful to overworked Unix administrators in busy environments.
|
||
|
||
<p>Whether or not to choose Slackware as the flavor of Linux you
|
||
will use is a serious consideration. It may seem like a trivial
|
||
decision now, but Linux boxes have a way of taking on more and
|
||
more responsibility in organizational computing environments.
|
||
Plenty of Linux <I>experiments</I> have evolved in their first
|
||
year to become mission-critical machines serving many more users
|
||
and purposes than originally intended. Slackware is one of the
|
||
most widely used distributions of Linux. When it comes to finding
|
||
the newest, easiest, or most carefully planned distribution of
|
||
Linux, Slackware may be "none of the above". Some background on
|
||
the life and times of Slackware put things into perspective.
|
||
|
||
<a name="history"></a>
|
||
<h3>A Quick History</h3>
|
||
|
||
<p>In 1993, SLS created one of the first organized distributions
|
||
of Linux. Although it was a great start, the SLS distribution
|
||
had many shortcomings (it didn't exactly work, for starters).
|
||
Slackware, a godsend from Patrick Volkerding, solved most of these
|
||
issues, was mirrored via FTP and pressed onto CD-ROMs the worldwide,
|
||
and quickly became the most widely used flavor of Linux. For a
|
||
while, Slackware was the only full-featured Linux solution.
|
||
Other Linux distribution maintainers, both commercial and nonprofit,
|
||
have gradually developed distributions that are also well worth
|
||
your consideration.
|
||
|
||
<p>According to statistics maintained by the Linux Counter Project,
|
||
Slackware inhabits about 69% of all machines that run Linux. Slackware
|
||
is typically obtained via FTP or CD-ROM and installed on a 486-class
|
||
computer running at 66Mhz with about 16 MB of memory and 1050
|
||
MB of storage. More information about Linux use and the Linux
|
||
Counter Project is available on the World Wide Web.
|
||
|
||
<a href="http://domen.uninett.no/\~hta/linux/counter.html">http://domen.uninett.no/\~hta/linux/counter.html</a><br>
|
||
|
||
<p>By January 1994, Slackware had achieved such widespread use that
|
||
it earned a popular notoriety normally reserved for rock stars
|
||
and cult leaders. Gossip spread through the Usenet suggesting
|
||
that the entire Slackware project was the work of witches and
|
||
devil-worshippers!
|
||
|
||
"Linux, the free OS....except for your SOUL! MOUHAHAHAHA!"
|
||
|
||
<p>
|
||
From: <a href="mailto:cajho@uno.edu">cajho@uno.edu</a><br>
|
||
Date: 7 Jan 1994 15:48:07 GMT<br>
|
||
|
||
<p>Jokes alluding to RFC 666, demonic daemons, and speculation that
|
||
Pat Volkerding was actually L. Ron Hubbard in disguise were rampant
|
||
in the threads that followed. The whole amusing incident probably
|
||
helped Slackware gain some market share:
|
||
|
||
<p>I LOVE THIS!!
|
||
<p>I was browsing here to figure which version of Linux to install,
|
||
but after this, I think that I hve no choice but to install Slackware
|
||
now.
|
||
|
||
|
||
<p>
|
||
From: <a href="mailto:dsith@phantom.com">David Devejian</a><br>
|
||
Date: 10 Jan 1994 04:57:41 GMT<br>
|
||
|
||
<p>All folklore and kidding aside, Slackware is a wise and powerful
|
||
choice for your adventures in Linux, whether you are a hobbyist,
|
||
student, hacker, or system administrator in the making.
|
||
|
||
<a name="why"></a>
|
||
<h3>Why, Then?</h3>
|
||
|
||
<p>If you are a system administrator, you may already be dealing
|
||
with one or more key servers running Slackware. Unless you have
|
||
time to experiment at work, sticking to the tried-and-true distribution
|
||
may be the easiest way to go. If you expect to get help from Unix
|
||
literate friends and colleagues, better make sure they're running
|
||
something compatible-odds are they're running Slackware. Its shortcomings
|
||
are widely acknowledged, for the most part discovered, documented
|
||
and patched whenever possible. You can put together a Slackware
|
||
box, close the known security holes, and install some complementary
|
||
tools from the other Linux distributions to create an excellent
|
||
Unix server or desktop workstation, all in about half a day.
|
||
|
||
<h3>Slackware Pros and Cons</h3>
|
||
|
||
<p>
|
||
<table cellpadding=10>
|
||
<tr>
|
||
<td valign=top>Slackware is old</td> <td>It's mature, widely available,
|
||
and the most widely installed
|
||
Linux distribution <br></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td valign=top>Slackware lacks sexy administrative tools a la RedHat</td>
|
||
<td valign=top>You're free to add
|
||
other distributions such as
|
||
the RedHat package manager <br></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td valign=top>Slackware includes bundled security holes</td>
|
||
<td valign=top>We know what some of the
|
||
vulnerabilities are and
|
||
volunteers have posted fixes <br></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td valign=top>
|
||
Donald Knuth complained about the fonts</td>
|
||
<td valign=top>Patrick Volkerding fixed the
|
||
fonts <br></td></tr>
|
||
|
||
<tr>
|
||
<td valign=top>Linus Torvalds uses another distribution</td> <td>Oh well <br></td>
|
||
</tr>
|
||
|
||
|
||
<tr>
|
||
<td valign=top>Slackware is assembled by Devil Worshippers</td>
|
||
<td valign=top>Satanist crackers (not SATAN
|
||
itself) will avoid your box <br></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
|
||
<td valign=top>Slackware is no longer</td>
|
||
<td valign=top>This is a myth, Slackware is
|
||
developed actively maintained, sans
|
||
marketing hype <br></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td valign=top>Slackware is not supported by a commercial vendor or sanctionaed user
|
||
group</td>
|
||
<td valign=top>Linux support is available
|
||
along with consultants, explained further
|
||
in the section on Commercial
|
||
Support <br></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td valign=top>Slackware is not created by a committee or development team</td>
|
||
|
||
<td valign=top>Good. A system designed by one
|
||
accountable individual is
|
||
cohesive<br></td>
|
||
</tr>
|
||
</table>
|
||
|
||
|
||
<p>If you are still undecided whether Slackware is the tastiest flavor
|
||
of Linux for you, have a look at the "Buyer's Guide"
|
||
published in the <I>Linux Journal</I>, which gives a thorough
|
||
comparison and evaluation of each major distribution. For a straightforward
|
||
listing of Linux flavors, have a look at the Linux Distribution HOWTO
|
||
on the Internet:<br>
|
||
|
||
<a href="http://sunsite.unc.edu/LDP/HOWTO/Distribution-HOWTO.html">http://sunsite.unc.edu/LDP/HOWTO/Distribution-HOWTO.html</a><br>
|
||
|
||
<a name="planning"></a>
|
||
<h3>Planning</h3>
|
||
|
||
<p>Nine tenths of wisdom is timing. The right time to set up Slackware
|
||
is <I> after</I>you've carefully planned the installation <I>and
|
||
</I>alternatives in the unfortunate event of a problem. A well-planned
|
||
installation of Slackware will repay itself many times over in
|
||
the future, when the natural process of Linux evolution leads
|
||
you to add disk space, install a newer Slackware release, or jettison
|
||
any old, inferior operating systems that may linger on your drives.
|
||
|
||
<p>Like Unix, Slackware Linux tends to grow like a virus. If you
|
||
succeed in getting one Slackware box up and running, you're likely
|
||
to start infecting other computers that belong to your friends,
|
||
family, and coworkers. When this happens, you'll be grateful that
|
||
you at least took the time to think through this first setup-and
|
||
so will they!
|
||
|
||
<p>This section will help you decide...
|
||
<ul>
|
||
<li>if you've got what it takes (of course you do!)
|
||
<li>whether your computer hardware is ready to run Slackware Linux
|
||
<li>where and how to get Slackware Linux
|
||
<li>how to best arrange disks and file systems to protect your
|
||
work
|
||
<li>not to upgrade an older version of Slackware
|
||
<li>which packages of the distribution you want and need
|
||
<li>how you will handle installation problems (however unlikely)
|
||
</ul>
|
||
<h3>Literacy Required</h3>
|
||
|
||
<p>Linux is a powerful operating system, and with power comes responsibility.
|
||
Like Linux, the Slackware release treats you with the respect
|
||
you deserve as an intelligent human being. If you elect to wipe
|
||
out a few hard drives with a misplaced punctuation mark, so be
|
||
it. There are graceful and intelligent front-ends to Linux that
|
||
allow the average end-user to get lots of productive work done
|
||
without ever delving into the cryptic subtleties of Unix setup
|
||
and administration. But there's no such luck for you, the appointed
|
||
installation guru. If you're going to install Slackware, be forewarned
|
||
that you should know your IRQs from your RS232s and your SCSIs
|
||
from your IDEs.
|
||
|
||
|
||
<h3>Hardware Compatibility</h3>
|
||
|
||
<p>This is an essential element for planning any Linux installation. The only
|
||
Slackware-specific hardware issue is this: you must confirm that
|
||
the particular version (vintage, release) distribution of Slackware
|
||
you'll be installing from provides a <I>kernel and drivers to
|
||
support your hardware</I>. You're in great shape with just about
|
||
any IBM-compatible personal computer with an Intel CPU older than
|
||
the date on your Slackware distribution but younger than 1992
|
||
(built after 1992). If you have a bleeding-edge machine, you may
|
||
need to download a newer boot disk that includes an updated kernel
|
||
and drivers.
|
||
|
||
<p>For the latest information on <I>it general</I> Linux hardware compatibility,
|
||
check the Linux Hardware Compatibility HOWTO document on the World
|
||
Wide Web:<br>
|
||
|
||
<a href="http://sunsite.unc.edu/LDP/HOWTO/Hardware-HOWTO.html">http://sunsite.unc.edu/LDP/HOWTO/Hardware-HOWTO.html</a><br>
|
||
|
||
<p>To check for up-to-the minute Slackware news, such as which boot
|
||
kernels are available, you can look in this directory of the Slackware
|
||
home ftp site, ftp.cdrom.com:<br>
|
||
|
||
<a href="ftp://ftp.cdrom.com/pub/linux/slackware/patches/">ftp://ftp.cdrom.com/pub/linux/slackware/patches/</a><br>
|
||
|
||
<a name="thinking"></a>
|
||
<h3>Thinking Through Storage And File Systems</h3>
|
||
|
||
<p>Careful planning of file systems and the storage media upon which
|
||
they reside can spare you hours of painful juggling at a later
|
||
date. In particular, putting all of your custom administration
|
||
files, user homes, and local software onto dedicated partitions
|
||
or disks will allow you to upgrade Slackware on the root partition
|
||
with minimal disruption to your improvements to the system.
|
||
|
||
<h3>Multiple Operating Systems On One Hard Drive</h3>
|
||
|
||
<p>A typical personal computer has one fixed disk drive. If you're
|
||
a hobbyist or power user, you may already have installed more
|
||
than one Operating System on that drive. For example, your computer
|
||
may have shipped running MS-DOS or Windows 95 as a pre-loaded
|
||
operating system, after which you added another operating system
|
||
such as OS/2, NeXTstep, Geoworks, or Linux. To run multiple operating
|
||
systems from one drive, the disk is divided into separate areas
|
||
known as partitions. Each partition may contain a different operating
|
||
system. Once you've installed a second OS, you also need to install
|
||
a small program called a boot manager or OS loader that runs at
|
||
system startup time and offers you a choice of all the installed
|
||
operating systems.
|
||
|
||
<p>If you're adding Linux to a computer running a lesser OS, you
|
||
may elect to keep the old operating system around for kicks. Take
|
||
a look at the Linux Loader (LILO), a high-powered boot manager
|
||
that comes free with Slackware. The latest distribution of LILO
|
||
and its documentation are available via FTP from this URL:<br>
|
||
|
||
<a href="ftp://lrcftp.epfl.ch/pub/linux/local/lilo/">ftp://lrcftp.epfl.ch/pub/linus/local/lilo/</a><br>
|
||
|
||
An overview of LILO and how you can use it are easily gleaned
|
||
from the LILO Mini-HOWTO:<br>
|
||
|
||
<a href="http://sunsite.unc.edu/LDP/HOWTO/mini/LILO">http://sunsite.unc.edu/LDP/HOWTO/mini/LILO/</a><br>
|
||
|
||
<h3>Designing a File System To Use Multiple Partitions</h3>
|
||
|
||
<p>In a simple world, you can set up Linux to run on a single disk
|
||
partition (or maybe two-one for swap). In a real-world, multi-user
|
||
Unix system, a single-drive file system setup creates unnecessary
|
||
risks and hassles you can avoid by distributing the file system
|
||
across multiple partitions. It's all the same to Unix, which views
|
||
the file system as a continuum of available space comprised of
|
||
all the disks and partitions "mounted" into various locations
|
||
on the file tree.
|
||
|
||
<p>If you create a Slackware setup on only one drive partition, you
|
||
effectively put all of your eggs in one basket-one user may receive
|
||
an abundance of e-mail and overload the <tt>/var/mail</tt>
|
||
file system, another might store enormous files in their home area,
|
||
etc. As with many Unix quandaries, you have a choice of solutions
|
||
to control file system use, including quotas and user limits. Distributing
|
||
your Unix file system across multiple partitions and disks has
|
||
an extra benefit for Slackware users-it allows you to upgrade
|
||
the Slackware installation with a minimum of pain.
|
||
|
||
<p>The Linux file system standard puts the personal space of each
|
||
user into a subdirectory of <tt>/home</tt>. The user Linus
|
||
would typically have a home under <tt>/home/linus</tt>, the
|
||
user Patricia under <tt>/home/patricia</tt>, and so on. An
|
||
easy way to protect this file system during future upgrades is
|
||
to mount <tt>/home</tt> on a separate disk or partition. Same goes for
|
||
custom programs and resources you add to the off-the-shelf version
|
||
of Slackware-plan to put these on a separate disk mounted to <tt>/usr/local</tt>
|
||
and you'll have much less grief when it comes time to upgrade.
|
||
|
||
"Where things go"---or where they try to go unless you dictate otherwise---
|
||
in a Slackware box is determined by a standard file system layout,
|
||
called the <I>Linux File system Hierarchy Standard</I>. Read all
|
||
about it URL:<br>
|
||
|
||
<a href="http://www.pathname.com/fhs/">http://www.pathname.com/fhs/</a><br>
|
||
|
||
<h3>Designing a File System To Use Multiple Hard Drives</h3>
|
||
|
||
<p>In some settings, Linux boxes are assembled from leftover parts-"worthless"
|
||
386 and 486 motherboards, old grayscale monitors, and discarded
|
||
hard drives. You may need to link together several ancient 40MB
|
||
hard drives to come up with enough space to install Slackware.
|
||
In other environments using Linux, there are so many users and
|
||
such large development projects that several of the biggest, state-of-the-art
|
||
drives or drive arrays must be integrated to provide enough space.
|
||
|
||
<p>You can install Slackware onto more than one disk at once by
|
||
designating individual disks to hold specific parts of the Slackware
|
||
installation (just like using multiple partitions), creating a
|
||
logically continuous and unified file system.
|
||
|
||
<p>For an informed second opinion on partitioning, swap space setup,
|
||
fragmentation and inode size consult Kristian Koehntopp's <I>Partitions</I>
|
||
Mini-HOWTO via Internet URL:<br>
|
||
|
||
<a href="http://sunsite.unc.edu/mdw/HOWTO/mini/Partition/">http://sunsite.unc.edu/mdw/HOWTO/mini/Partition/</a><br>
|
||
|
||
<a name="upgrade"></a>
|
||
<h3>Upgrade? Think Twice!</h3>
|
||
|
||
<p>24-Aug-95 NOTE: Trying to upgrade to ELF Slackware from a.out
|
||
Slackware will undoubtedly cause you all kinds of
|
||
problems. Don't do it.
|
||
|
||
<p><b>Patrick Volkerding</b>
|
||
|
||
<p>One thing we don't hear too often with Slackware is the U-word.
|
||
Slackware's setup program is designed to put a fresh operating
|
||
system onto empty hard disks or empty disk partitions. Installing
|
||
on top of a previous Slackware installation can erase your custom
|
||
applications and cause compatibility problems between updated
|
||
applications and older files on the same system. When Slackware
|
||
was first put together, everyone was a first-time Linux user,
|
||
and the system was always experimental-reinstalling the entire
|
||
operating system and applications was the norm in a developmental
|
||
system. Today, many institutions and businesses now run mission-critical
|
||
applications on Slackware Linux. In such environment, a simple
|
||
reboot is a planned activity and taking down the system and overwriting
|
||
all the user files or custom applications is absolutely unacceptable.
|
||
|
||
<p>So, if you cracked open these pages to plot an upgrade, better
|
||
think twice. If you're planning a first-time Slackware installation,
|
||
there are a few decisions you can make now that will ease upgrading
|
||
in the future:
|
||
|
||
<ul>
|
||
<li>assign <tt>/usr/local</tt> to be mounted from its own
|
||
separate drive or partition
|
||
<li>build and install all of your organization's custom applications
|
||
under the <tt>/usr/local</tt> area of the file system
|
||
<li>assign <tt>/home</tt> to be mounted from its own separate
|
||
drive or partition
|
||
<li>make sure all user "homes" are added under the <tt>/home</tt>
|
||
area of the file system
|
||
</ul>
|
||
|
||
<p>Teaching you how to finagle a Slackware upgrade is beyond the
|
||
scope of this chapter, but it is workable if you are an experienced
|
||
Unix administrator and you've taken the precautions above. There
|
||
is an Internet resource that claims to analyze your distribution
|
||
and bring it up to date across the Internet, you might want to
|
||
have a look at this URL if you're facing an upgrade situation:<br>
|
||
|
||
<a href="ftp://ftp.wsc.com/pub/freeware/linux/update.linux/">ftp://ftp.wsc.com/pub/freeware/linux/update.linux/</a><br>
|
||
|
||
<p>Or read, weep, and learn from the upgrade expertise of Greg Louis
|
||
in his mini HOWTO document: <I>Upgrading Your Linux Distribution</I>,
|
||
available where finer LDP publications are mirrored:<br>
|
||
|
||
<a href="http://sunsite.unc.edu/LDP/">http://sunsite.unc.edu/LDP/</a>
|
||
|
||
<h3>Select An Installation Method</h3>
|
||
|
||
<p>Slackware can be installed from a variety of media and network
|
||
sources to fit your needs and budget. Every installation method
|
||
will require you to have at least three floppy diskettes available
|
||
to get started.
|
||
|
||
|
||
<h3>CD-ROM</h3>
|
||
|
||
<p>Installation from CD-ROM is fast, popular, and convenient. Although
|
||
someone has to break down and pay for the initial purchase of
|
||
a CD-ROM, sharing CD's is <I>encouraged</I>. Because Linux and
|
||
the Slackware distribution are copylefted, you may make as many
|
||
copies as you like. CD-ROM installation is also a bit better practice
|
||
in terms of netiquette, since you're not hogging bandwidth for
|
||
an all-day FTP transfer. Finally, you may be grateful for the
|
||
extra utilities and documentation that accompany the CD-ROM, especially
|
||
if you run into installation hassles or need to add components
|
||
in the future.
|
||
|
||
|
||
<h3>Party!</h3>
|
||
|
||
<p>If you're a hobbyist (or want to watch a few dozen Slackware installs
|
||
before taking on the task at work), see if there is a LUG (Linux
|
||
User Group) in your area that sponsors install parties. Imagine
|
||
a roomful of generous and knowledgeable hackers uniting to share
|
||
CD-ROMs and expertise with other enthusiasts.
|
||
|
||
|
||
<p><b>FTP</b>
|
||
|
||
<p>According to the Linux Counter Project, FTP is still the most
|
||
popular way to obtain Linux by a narrow margin. Once you transfer
|
||
Slackware from the closest possible FTP mirror, you'll still need
|
||
to put the Slackware 'disk sets' onto installation media such
|
||
as a hard drive partition or laboriously copy them onto 50-odd
|
||
floppy diskettes.
|
||
|
||
|
||
<p><b>NFS</b>
|
||
|
||
<p>In a networked environment, it is possible to install Slackware
|
||
on a shared file system and allow everyone on the Local net to
|
||
attach to this shared location and install. If you have the technical
|
||
know-how or a geeked out system administrator who is Linux-literate,
|
||
this is a great way to go. The initial distribution of Slackware
|
||
can be added to the network via CD-ROM, FTP, Loading floppies,
|
||
tape, or even via a remote NFS share across the Internet! For
|
||
details on such a remote share, see these URLs:
|
||
<ul>
|
||
<li><a href="http://sunsite.doc.ic.ac.uk/sunsite/access/nfs.html">http://sunsite.doc.ic.ac.uk/sunsite/access/nfs.html</a>
|
||
<li><a href="ftp://ftp.cdrom.com/pub/linux/slackware/MIRRORS.TXT">ftp://ftp.cdrom.com/pub/linux/slackware/MIRRORS.TXT</a>
|
||
<li><a href="http://www.cs.us.es/archive/nfs.html">http://www.cs.us.es/archive/nfs.html</a>
|
||
</ul>
|
||
|
||
<p><b>Floppy</b>
|
||
|
||
<p>It's time consuming, but it works-you can buy or create the pile
|
||
of floppies needed to install Slackware and then feed them into
|
||
your box one-by-one when prompted. Slackware 'disk sets' are actually
|
||
designed and arranged to fit floppy diskettes. If you happen to
|
||
have a huge stack of recycled high-density floppy diskettes at
|
||
your disposal, this can be the most economical way to go.
|
||
|
||
|
||
<p><b>Hard Disk</b>
|
||
|
||
<p>This is the way to do it if you've transferred the Slackware distribution
|
||
across the Internet via FTP-you'll escape the floppy trap by merely
|
||
creating boot, root, and rescue diskettes. It requires you to
|
||
have an extra disk or disk partition with extra space to hold
|
||
the Slackware files during installation (you can erase them afterwards).
|
||
Installation from the hard drive is also a workaround if you bought
|
||
the CD but your CD-ROM drive is not supported by any of the Linux
|
||
kernels that come with the Slackware CD. You can use your present
|
||
operating system to transfer the Slackware files onto spare hard
|
||
disk space, then boot into the Slackware installation.
|
||
|
||
|
||
<p><b>Tape</b>
|
||
|
||
<p>Still experimental as of this writing, tape offers a great compromise
|
||
of speed and economy when installing Slackware-worth considering
|
||
if a friend with compatible tape drive can dupe a CD or FTP archive
|
||
for you. Get the latest details from the TAPE section of the INSTALL.TXT
|
||
file that accompanies your Slackware distribution.
|
||
|
||
<a name="boot"></a>
|
||
<h3>Boot Disks: Always a Good Thing</h3>
|
||
|
||
<p>Even if you're gifted with a direct T-3 Internet connection that
|
||
allows you to suck up a new distribution of Slackware right off
|
||
the 'net, you'll be wise to start by building the two Slackware
|
||
setup disks (boot and root) before proceeding. In the event of
|
||
an unfortunate accident (power outage, feline friends traversing
|
||
the keyboard, or even human error), these two little disks, in
|
||
the hands of an experienced Unix hacker, may be able to revive
|
||
your system or at least rescue your personal files.
|
||
|
||
|
||
<h3>Prepare To Be Questioned (There Will Be a Quiz...)</h3>
|
||
|
||
<p>During the installation, must choose which disk sets (Slackware
|
||
lingo for collections of software) and individual programs to
|
||
install. You can usually just accept the default recommendation
|
||
of whether or not a package is worth having. A few setup decisions
|
||
are <I>crucial</I>. Mid-installation is no time to decide you
|
||
want to boot back into OS/2 and look up what kind of graphics
|
||
chip your video card uses, which network card you've got in there,
|
||
or whether you'll be needing a SCSI or an IDE kernel to get started.
|
||
|
||
|
||
<h3>Contingency Plan: Food For Thought</h3>
|
||
|
||
<p>I've often blurted out to a supervisor, "Oh sure, I can have
|
||
it up and running in a few hours." Famous last words.
|
||
If anyone else has a stake in the Slackware computer's health,
|
||
you owe it to them and yourself to think through a less-than-perfect
|
||
installation attempt:
|
||
|
||
<ol>
|
||
<li>What's your plan in the unfortunate event that Slackware Linux
|
||
doesn't run perfectly on your system?
|
||
<li>Do you have the necessary tools and know-how to revert to
|
||
your previous operating system?
|
||
<li>Do you have a backup of your old system on-hand, and do you
|
||
have experience restoring entire systems?
|
||
<li>Is this a shared computer? Will people be coming into work
|
||
on Monday expecting to log in to the system you just hosed?
|
||
<li>Where is the closest Unix expert with Slackware Linux expertise?
|
||
Can you call on them to help you in the event of a problem setting
|
||
up or upgrading a critical Slackware system?
|
||
</ol>
|
||
|
||
<a name="slack1"></a>
|
||
<h3>Slackware Setup Worksheet</h3>
|
||
|
||
<p>After the files are all copied, Slackware can go on to do most
|
||
of the system and network configuration, if you're ready. To help
|
||
you plan your decisions, Section 3 consists of a worksheet derived
|
||
from the text-based Slackware setup program. You can use this
|
||
worksheet to record answers in advance (while your computer is
|
||
still working!), so you'll be ready with the necessary details-partitions,
|
||
IP addresses, modem and mouse IRQs, host and domain names, and
|
||
others that you're required to provide during setup.
|
||
|
||
<ol>
|
||
<li><B>Keyboard:</B> Slackware setup will
|
||
want to know if you need to
|
||
remap your keyboard to something other
|
||
than a standard USA 101 key layout? <I>Yes or No</I>.
|
||
|
||
|
||
<li><B>Swap Configuration:</B>Do you have one or more
|
||
partitions prepared as type 82 (Linux Swap)? <I>Yes or No</I>.
|
||
|
||
|
||
<li>Do you want setup to use mkswap on your swap
|
||
partitions? Most likely "yes",
|
||
unless you have less than 4MB of RAM and have already done this
|
||
to help setup work better. <I>Yes or No</I>.
|
||
|
||
|
||
<li><B>Prepare Main Linux Partition:</B> Setup will list any
|
||
partitions marked as type 83 (Linux Native) and ask
|
||
which one to use for the root (/) of the Linux
|
||
file system. Use a format like
|
||
<tt>/dev/hda3</tt> or whatever the device name is. <I>Yes or No</I>.
|
||
|
||
|
||
<p>Last chance to back out! When using the install from
|
||
scratch option,
|
||
you must install to a blank partition. If you have not
|
||
already formatted it manually, then you must format it
|
||
when prompted. Enter <tt>I</tt> to install from scratch, or
|
||
<tt>a</tt> to add software to your existing system.
|
||
|
||
|
||
<li>(Re)format the main Linux partition. Would you like
|
||
to format this partition? <I>Yes or No</I>.
|
||
|
||
|
||
<p>Ext2fs defaults to one inode per 4096 bytes of drive
|
||
space. If you're going to have many small files on
|
||
your drive, you may need more inodes (one is used
|
||
for each file entry). You can change the density to
|
||
one inode per 2048 bytes, or even per 1024 bytes.
|
||
Enter <tt>2048</tt> or <tt>1024</tt>, or just hit <tt>Enter</tt> to accept
|
||
the default of 4096. 4096, 2048, or 1024.
|
||
|
||
|
||
<li><B>Prepare Additional Linux Partitions:</B> You can mount
|
||
some other partitions for <tt>/usr</tt> or <tt>/usr/X11</tt> or
|
||
whatever (<tt>/tmp</tt>---you name it). Would you like to use
|
||
some of the other Linux partitions to mount some of
|
||
your directories? <I>Yes or No</I>.
|
||
|
||
|
||
<p>These are your Linux partitions (<I>partition list displayed</I>).
|
||
These partitions are already in use
|
||
(<I>partition list displayed</I>). Enter the
|
||
partition you would like to use, or type <tt>q</tt> to quit
|
||
adding new partitions. Use a format such as:
|
||
<tt>/dev/hda3</tt> or whatever the device name is.
|
||
|
||
<I>Partition name or <tt>quit</tt></I>
|
||
|
||
<li>Would you like to format this
|
||
partition? Yes, No, or Check Sections, too</I>
|
||
|
||
|
||
<li>Now this new partition must be mounted somewhere in
|
||
your new directory tree. For example, if you want to
|
||
put it under <tt>/usr/X11R6</tt>, then respond: <tt>/usr/X11R6</tt>
|
||
Where would you like to mount this new partition?
|
||
|
||
<I>Mount point</I>
|
||
|
||
<li>Would you like to mount some more additional
|
||
partitions? <I>Yes or No</I>.
|
||
|
||
|
||
<p><B>DOS and OS/2 Partition Setup:</B> The following DOS FAT
|
||
or OS/2 HPFS partitions were found: (<I>partition list displayed</I>).
|
||
<li>Would you like to set up some of these
|
||
partitions to be visible from Linux? <I>Yes or No</I>.
|
||
|
||
|
||
<li>Please enter the partition you would like to access
|
||
from Linux, or type <tt>q</tt> to quit adding new
|
||
partitions. Use a format such as: <tt>/dev/hda3</tt> or
|
||
whatever the device name is.
|
||
|
||
<I>Partition name or Quit</I>
|
||
|
||
<li>Now this new partition must be mounted somewhere in
|
||
your directory tree. Please enter the directory
|
||
under which you would like to put it. for instance,
|
||
you might want to reply <tt>/dosc</tt>, <tt>/dosd</tt>, or something
|
||
like that. Where would you like to mount this partition?
|
||
|
||
<I>Mount point</I>
|
||
|
||
<li><B>Source Media Selection:</B>
|
||
<ol>
|
||
<li>Install from a hard drive partition.
|
||
<li>Install from floppy disks.
|
||
<li>Install via NFS.
|
||
<li>Install from a pre-mounted directory.
|
||
<li>Install from CD-ROM.
|
||
|
||
</ol>
|
||
<I>1, 2, 3, 4, or 5</I>
|
||
|
||
<li><B>Install from a hard drive partition:</B> To install
|
||
directly from the hard disk you must have a
|
||
partition with a directory containing the Slackware
|
||
distribution such that each disk other than the boot
|
||
disk is contained in a subdirectory. For example, if
|
||
the distribution is in <tt>/stuff/slack</tt>, then you need to have
|
||
directories named <tt>/stuff/slack/a1</tt>,
|
||
<tt>/stuff/slack/a2</tt>, and so on, each containing the
|
||
files that would be on that disk. You may install
|
||
from DOS, HPFS, or Linux partitions. Enter the
|
||
partition where the Slackware sources can be found,
|
||
or <tt>p</tt> to see a partition list.
|
||
|
||
<I>Partition name or Partition list</I>
|
||
|
||
<li>What directory on this partition can the Slackware
|
||
sources be found. In the example above, this would
|
||
be: <tt>/stuff/slack</tt>. What directory are the Slackware
|
||
sources in?
|
||
|
||
<I>Directory name</I>
|
||
|
||
<li>What type of file system does your Slackware source
|
||
partition contain?
|
||
<ol>
|
||
<li>FAT (MS-DOS, DR-DOS, OS/2)
|
||
<li>Linux Second Extended File System
|
||
<li>Linux Xiafs
|
||
<li>Linux MINIX
|
||
<li>OS/2 HPFS
|
||
</ol>
|
||
<I>1, 2, 3, 4, or 5</I>
|
||
|
||
<li><B>Install from a pre-mounted directory:</B> OK, we will
|
||
install from a directory that is currently mounted.
|
||
This can be mounted normally or through NFS. You
|
||
need to specify the name of the directory that
|
||
contains the subdirectories for each source disk.
|
||
Which directory would you like to install from?
|
||
|
||
<I>Directory name</I>
|
||
|
||
<li><B>Install from floppy disks:</B> The base Slackware series
|
||
(A) can be installed from 1.2M or 1.44M media. Most
|
||
of the other disks will not fit on 1.2M media, but
|
||
can be downloaded to your hard drive and installed
|
||
from there later. Which drive would you like to
|
||
install from (1/2/3/4)?
|
||
|
||
<ol>
|
||
<li><tt>/dev/fd0u1440</tt> (1.44M drive a:)
|
||
<li><tt>/dev/fd1u1440</tt> (1.44M drive b:)
|
||
<li><tt>/dev/fd0h1200</tt> (1.2M drive a:)
|
||
<li><tt>/dev/fd1h1200</tt> (1.2M drive b:)
|
||
</ol>
|
||
<I>1, 2, 3, or 4</I>
|
||
|
||
<li><B>Install via NFS:</B> You're running off the hard drive
|
||
file system. Is this machine currently running on the
|
||
network you plan to install from? If so, we won't
|
||
try to reconfigure your ethernet card. Are you
|
||
up-and-running on the network? Yes or No.
|
||
|
||
|
||
<li>You will need to enter the IP address you wish to
|
||
assign to this machine. Example: 111.112.113.114.
|
||
What is your IP address? <I>IP address</I>
|
||
|
||
|
||
<li>Now we need to know your netmask. Typically this
|
||
will be 255.255.255.0. What is your netmask?
|
||
|
||
<I>IP address</I>
|
||
|
||
<li>Do you have a gateway? <I>Yes or No</I>.
|
||
|
||
|
||
<li>What is your gateway address?
|
||
|
||
<I>IP address</I>
|
||
|
||
<p>Good! We're all set on the local end, but now we
|
||
need to know where to find the software packages to
|
||
install. First, we need the IP address of the
|
||
machine where the Slackware sources are stored.
|
||
Since you're already running on the network, you
|
||
should be able to use the hostname instead of an IP
|
||
address if you wish.
|
||
|
||
<li>What is the IP address of your
|
||
NFS server?
|
||
|
||
<I>IP address</I>
|
||
|
||
<p>There must be a directory on the server with the
|
||
Slackware sources for each disk in subdirectories
|
||
beneath it. Setup needs to know the name of the
|
||
directory on your server that contains the disk
|
||
subdirectories. For example, if your A3 disk is
|
||
found at <tt>/slackware/a3</tt>, then you would respond:
|
||
<tt>/slackware</tt>.
|
||
|
||
<li>What is the Slackware source directory?
|
||
|
||
<I>Directory name</I>
|
||
|
||
<li><B>Install from CD-ROM:</B> What type of CD-ROM drive do you have?
|
||
<ol>
|
||
<li>Works with most ATAPI/IDE CD drives <tt>/dev/hd*</tt>
|
||
<li>SCSI <tt>/dev/scd0</tt> or <tt>/dev/scd1</tt>
|
||
<li>Sony CDU31A/CDU33A <tt>/dev/sonycd</tt>
|
||
<li>Sony 531/535 <tt>/dev/cdu535</tt>
|
||
<li>Mitsumi, proprietary interface---not IDE <tt>/dev/mcd</tt>
|
||
<li>New Mitsumi, also not IDE <tt> /dev/mcdx0</tt>
|
||
<li>Sound Blaster Pro/Panasonic <tt>/dev/sbpcd</tt>
|
||
<li>Aztech/Orchid/Okano/Wearnes <tt>/dev/aztcd</tt>
|
||
<li>Phillips and some ProAudioSpectrum16 <tt>/dev/cm206cd</tt>
|
||
<li>Goldstar R420 <tt> /dev/gscd</tt>
|
||
<li>Optics Storage 8000 <tt> /dev/optcd</tt>
|
||
<li>Sanyo CDR-H94 + ISP16 soundcard <tt> /dev/sjcd</tt>
|
||
<li>Try to scan for your CD drive
|
||
</ol>
|
||
<I>1, 2, 3, 4, 5, 6, 7 8, 9, 10, 11, 12, or 13</I>
|
||
|
||
<B>IDE CD-ROM:</B> Enter the device name that represents
|
||
your IDE CD-ROM drive. This will probably be one of
|
||
these (in the order of most to least likely):
|
||
<tt>/dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf
|
||
/dev/hdg /dev/hdh /dev/hda</tt>
|
||
|
||
<I>Device name</I>
|
||
|
||
<li><B>SCSI CD-ROM:</B> Which SCSI CD-ROM are you using?
|
||
If you're not sure, select <tt>/dev/scd0</tt>.
|
||
|
||
<tt>1. /dev/scd0<br>
|
||
2. /dev/scd1</br></tt>
|
||
|
||
|
||
<li><B>Installation method:</B> With the Slackware CD, you can
|
||
run most of the system from the CD if you're short
|
||
of drive space or if you just want to test Linux
|
||
without going through a complete installation. Which
|
||
type of installation do you want (slakware or
|
||
slaktest)?
|
||
<ul>
|
||
<li>[slakware] Normal installation to hard drive
|
||
<li>[slaktest] Link <tt>family /usr-$>$/cdrom/live/usr</tt> to run mostly from CD-ROM
|
||
</ul>
|
||
|
||
<I>slakware or slaktext</I>
|
||
|
||
<li><B>Series Selection:</B> Identify which Packages you plan
|
||
to install. You may specify any combination of disk
|
||
sets at the prompt which follows. For example, to
|
||
install the base system, the base X Window System,
|
||
and the Tcl toolkit, you would enter: a x tcl Which
|
||
disk sets do you want to install?
|
||
<ul>
|
||
<li>[A] Base Linux system
|
||
<li>[AP] Various applications that do not need X
|
||
<li>[D] Program Development (C, C++, Kernel source, Lisp, Perl, etc.)
|
||
<li>[E] GNU Emacs
|
||
<li>[F] FAQ lists
|
||
<li>[K] Linux kernel source
|
||
<li>[N] Networking (TCP/IP, UUCP, Mail)
|
||
<li>[Q] Extra kernels with special drivers (needed for non-SCSI CD)
|
||
<li>[T] TeX
|
||
<li>[TCL] Tcl/Tk/TclX, Tcl language, and Tk toolkit for developing X apps
|
||
<li>[X] Xfree86 Base X Window System
|
||
<li>[XAP] X Window Applications
|
||
<li>[XD] Xfree86 X11 server development system
|
||
<li>[XV] Xview (OpenLook virtual Window Manager, apps)
|
||
<li>[Y] Games (that do not require X)
|
||
</ul>
|
||
|
||
<I>Any combination of a ap d e f k n q t tcl x xap xd xv y and other disk sets offered, separated by spaces</I>
|
||
|
||
<li><B>Software Installation:</B> Next, software packages are
|
||
going to be transferred on to your hard drive. If
|
||
this is your first time installing Linux, you should
|
||
probably use PROMPT mode. This will follow a
|
||
defaults file on the first disk of each series you
|
||
install that will ensure that required packages are
|
||
installed automatically. You will be prompted for
|
||
the installation of other packages. If you don't
|
||
use PROMPT mode, the install program will just go
|
||
ahead and install everything from the disk sets you
|
||
have selected. Do you want to use PROMPT mode
|
||
(y/n)?
|
||
|
||
|
||
<p>These defaults are user definable---you may set any
|
||
package to be added or skipped automatically by
|
||
editing your choices into a file called TAGFILE that
|
||
will be found on the first disk of each series.
|
||
There will also be a copy of the original tagfile
|
||
called TAGFILE.ORG available in case you want to
|
||
restore the default settings. The tagfile contains
|
||
all the instructions needed to completely automate
|
||
your installation.
|
||
|
||
<li>Would you like to use a special
|
||
tagfile extension?
|
||
|
||
<p>You can specify an extension
|
||
consisting of a "." followed by any combination of 3
|
||
characters other than <tt>tgz</tt>. For instance, I specify
|
||
'.pat', and then whenever any tagfiles called
|
||
'tagfile.pat' are found during the installation they
|
||
are used instead of the default "tagfile" files. If
|
||
the install program does not find tagfiles with the
|
||
custom extension, it will use the default tagfiles.
|
||
Enter your custom tagfile extension (including the
|
||
leading ("."), or just press <tt>Enter</tt> to continue
|
||
without a custom extension.
|
||
|
||
<I>Tagfile extension <tt>Enter</tt></I>
|
||
|
||
<li><B>Extra Configuration:</B> If you wish, you may now go
|
||
through the options to reconfigure your hardware,
|
||
make a bootdisk, and install LILO. If you've
|
||
installed a new kernel image, you should go through
|
||
these steps again. Otherwise, it's up to you.
|
||
|
||
|
||
<li><B>Boot Disk Creation:</B> It is recommended that you make
|
||
a boot disk. Would you like to do this? <I>Yes or No</I>.
|
||
|
||
|
||
<p>Now put a formatted floppy in your boot drive. This
|
||
will be made into your Linux boot disk. Use this to
|
||
boot Linux until LILO has been configured to boot
|
||
from the hard drive. Any data on the target disk
|
||
will be destroyed. Insert the disk and press
|
||
<tt>Return</tt>, or <tt>s</tt> if you want to skip this step.
|
||
|
||
|
||
<li><B>Modem Setup:</B> A link in <tt>/dev</tt> will be created from
|
||
your callout device (cua0, cua1, cua2, cua3) to
|
||
<tt>/dev/modem</tt>. You can change this link later if you
|
||
put your modem on a different port. Would you like
|
||
to set up your modem? <I>Yes or No</I>.
|
||
|
||
|
||
<li>These are the standard serial I/O devices,
|
||
Which
|
||
device is your modem attached to (0, 1, 2, 3)?
|
||
<ol>
|
||
<li><tt>/dev/ttyS0</tt> (or COM1: under DOS)
|
||
<li><tt>/dev/ttyS1</tt> (or COM2: under DOS)
|
||
<li><tt>/dev/ttyS2</tt> (or COM3: under DOS)
|
||
<li><tt>/dev/ttyS3</tt> (or COM4: under DOS)
|
||
</ol>
|
||
|
||
<li><B>Mouse Setup:</B> A link will be created in <tt>/dev</tt> from
|
||
your mouse device to <tt>/dev/mouse</tt>. You can change this
|
||
link later if you switch to a different type of
|
||
mouse. Would you like to set up your mouse? <I>Yes or No</I>.
|
||
|
||
|
||
<li>These types are supported. Which type of mouse do
|
||
you have (1, 2, 3, 4, 5, 6, 7)?
|
||
<ol>
|
||
<li>Microsoft compatible serial mouse
|
||
<li>QuickPort or PS/2 style mouse (Auxiliary port)
|
||
<li>Logitech Bus Mouse
|
||
<li>ATI XL Bus Mouse
|
||
<li>Microsoft Bus Mouse
|
||
<li>Mouse Systems serial mouse
|
||
<li>Logitech (MouseMan) serial mouse
|
||
</ol>
|
||
|
||
<I>1, 2, 3, 4, 5, 6, or 7</I>
|
||
|
||
<li>These are the standard serial I/O devices. Which
|
||
device is your mouse attached to (0, 1, 2, 3)?
|
||
<ol>
|
||
<li><tt>/dev/ttyS0</tt> (or COM1: under DOS)
|
||
<li><tt>/dev/ttyS1</tt> (or COM2: under DOS)
|
||
<li><tt>/dev/ttyS2</tt> (or COM3: under DOS)
|
||
<li><tt>/dev/ttyS3</tt> (or COM4: under DOS)
|
||
</ol>
|
||
|
||
<I>0, 1, 2, or 3</I>
|
||
|
||
<li><B>Network Configuration:</B> Now we will attempt to
|
||
configure your mail and TCP/IP. This process
|
||
probably won't work on all possible network
|
||
configurations, but should give you a good start.
|
||
You will be able to reconfigure your system at any
|
||
time by typing netconfig. First, we'll need the name
|
||
you'd like to give your host. Only the base hostname
|
||
is needed right now (not the domain). Enter the
|
||
hostname.
|
||
|
||
<I>Hostname</I>
|
||
|
||
<p>Now, we need the domain name. Do not supply a
|
||
leading "." Enter the domain name.
|
||
|
||
|
||
<I>Domain name</I>
|
||
|
||
<p>If you only plan to use TCP/IP through loopback,
|
||
then your IP address will be 127.0.0.1 and we can
|
||
skip a lot of the following questions. Do you plan
|
||
to ONLY use loopback? Yes or No.
|
||
|
||
|
||
<p>Enter your IP address for the local machine.
|
||
Example: 111.112.113.114. Enter the IP address for this
|
||
machine (aaa.bbb.ccc.ddd).
|
||
|
||
<I>IP address</I>
|
||
|
||
<li>Enter your gateway address, such as 111.112.113.1.
|
||
If you don't have a gateway, you can edit
|
||
/etc/rc.d/rc.inet1 later,or you can probably get
|
||
away with entering your own IP address here. Enter the
|
||
gateway address (aaa.bbb.ccc.ddd).
|
||
|
||
<I>IP address</I>
|
||
|
||
<li>Enter your netmask. This will generally look
|
||
something like this: 255.255.255.0. Enter the netmask
|
||
(aaa.bbb.ccc.ddd).
|
||
|
||
<I>IP address</I>
|
||
|
||
<li>Will you be accessing a nameserver? <I>Yes or No</I>.
|
||
|
||
|
||
<li>Please give the IP address of the name server to
|
||
use. You can add more Domain Name Servers by editing
|
||
<tt>/etc/resolv.conf</tt>. Name Server for your domain
|
||
(aaa.bbb.ccc.ddd)?
|
||
|
||
<I>HIP address</I>
|
||
</ul>
|
||
<p>You may now reboot your computer by pressing <tt>Ctrl+Alt+Delete</tt>.
|
||
If you installed LILO, remove the boot disk from your computer
|
||
before rebooting. Don't forget to create you <tt>{/etc/fsta</tt>
|
||
if you don't have one!
|
||
|
||
|
||
|
||
<h3>Making Slackware Happen</h3>
|
||
|
||
<p>If you've taken the time to plot and plan as recommended in the
|
||
preceding sections, then the actual installation will be a piece
|
||
of cake. There isn't much writing needed to explain the actual
|
||
process of loading Slackware onto your computer(s). You just follow
|
||
the steps to build boot and root diskettes, then answer a long
|
||
series of questions asked by the menu-driven Slackware installation
|
||
program. If you've completed the Slackware Installation Worksheet,
|
||
these questions will be familiar and everything will run smoothly.
|
||
|
||
|
||
<h3>Build Some Boot Disks</h3>
|
||
|
||
<p>Choose Your Kernel
|
||
|
||
<p>When installing Slackware Linux, you must create a boot diskette
|
||
with a Linux kernel that is specially prepared to recognize your
|
||
system hardware. For example, to install Slackware from an IDE
|
||
CD-ROM drive onto a SCSI hard drive, the kernel that you put onto
|
||
the boot diskette will need to have drivers for your SCSI card
|
||
and your IDE CD-ROM drive.
|
||
|
||
<p>The kernels are stored as compressed <I>binary image</I> files
|
||
that you can access from most any operating system to create a
|
||
Slackware Boot diskette. On the Slackware FTP site, CD-ROM, or
|
||
NFS mount, you'll find a subdirectory called bootdsks.144-containing
|
||
1.44 MB kernel images for creating boot disks on 1.44MB high density
|
||
3.5'' floppy diskettes. If you're working from a 5.25'' floppy
|
||
diskette drive, look in a directory called bootdsks.12 for
|
||
kernel images that will fit the smaller diskette format.
|
||
|
||
<p>Table 2 provides a quick reference of the kernel images available
|
||
as we went to press. Information and up-to-date boot disk image
|
||
information is available from this URL:
|
||
|
||
<a href="ftp://ftp.cdrom.com/pub/linux/slackware/bootdsks.144/README.TXT">ftp://ftp.cdrom.com/pub/linux/slackware/bootdsks.144/README.TXT</a><br>
|
||
|
||
<center><h3>Slackware Boot Kernel Image Descriptions</h3></center>
|
||
|
||
<P><B>Table 1</b>
|
||
<p>
|
||
<table cellpadding 10>
|
||
<tr>
|
||
<td valighn=top>aztech.i</td> <td>CD-ROM drives: Aztech CDA268-01A,
|
||
Orchid CD-3110, Okano/Wearnes,
|
||
CDD110, Conrad TXC, CyCDROM CR520,
|
||
CR540<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td valign=top>bare.i</td> <td>(none, just IDE support)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td valign=top>cdu31a.i</td> <td>Sony CDU31/33a CD-ROM<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>cdu535.i</td> <td>Sony CDU531/535 CD-ROM<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>cm206.i</td> <td>Philips/LMS cm206 CD-ROM with cm260
|
||
adapter card<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>goldstar.i</td> <td>Goldstar R420 CD-ROM (sometimes sold
|
||
in a Reveal "Multimedia Kit")<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>mcd.i</td> <td>NON-IDE Mitsumi CD-ROM support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>mcdx.i</td> <td>Improved NON-IDE Mitsumi CD-ROM
|
||
support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>net.i</td> <td>Ethernet support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>optics.i</td> <td>Optics Storage 8000 AT CD-ROM (the
|
||
"DOLPHIN" drive)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>sanyo.i</td> <td>Sanyo CDR-H94A CD-ROM support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>sbpcd.i</td> <td>Matsushita, Kotobuki, Panasonic,
|
||
CreativeLabs (Sound Blaster),
|
||
Longshine and Teac NON-IDE CD-ROM
|
||
support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>xt.i</td> <td>MFM hard drive support<br></td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p><b>Table 2</b>
|
||
<p>
|
||
<table cellpadding 10>
|
||
<tr>
|
||
|
||
<td>7000fast.s</td> <td>Western Digital 7000FASST SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Advansys.s</td> <td>AdvanSys SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Aha152x.s</td> <td>Adaptec 152x SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td.Aha1542.s</td> <td>Adaptec 1542 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Aha1740.s</td> <td>Adaptec 1740 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Aha2x4x.s</td> <td>Adaptec AIC7xxx SCSI support (For these cards: AHA-274x, AHA-2842,
|
||
& AHA-2940, AHA-2940W, AHA-2940U, AHA-2940UW, AHA-2944D, AHA-2944WD,
|
||
& AHA-3940, AHA-3940W, AHA-3985, AHA-3985W)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Am53c974.s</td> <td>AMD AM53/79C974 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Aztech.s</td> <td>All supported SCSI controllers, plus CD-ROM support for Aztech CDA268-01A,
|
||
Orchid CD-3110, Okano/Wearnes CDD110, Conrad TXC, CyCDROM CR520, CR540<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Buslogic.s</td> <td>Buslogic MultiMaster SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Cdu31a.s</td> <td>All supported SCSI controllers, plus CD-ROM support for Sony CDU31/33a<br></td>
|
||
</tr>
|
||
<tr>
|
||
|
||
<td>Cdu535.s</td> <td>All supported SCSI controllers, plus CD-ROM support for Sony CDU531/535<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Cm206.s</td> <td>All supported SCSI controllers, plus Philips/LMS cm206 CD-ROM with cm260 adapter card<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Dtc3280.s</td> <td>DTC (Data Technology Corp) 3180/3280 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Eata\_dma.s</td> <td>DPT EATA-DMA SCSI support (Boards such as PM2011, PM2021, PM2041,
|
||
& PM3021, PM2012B, PM2022, PM2122, PM2322, PM2042, PM3122, PM3222,
|
||
& PM3332, PM2024, PM2124, PM2044, PM2144, PM3224, PM3334.)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Eata\_isa.s</td> <td>DPT EATA-ISA/EISA SCSI support (Boards such as PM2011B/9X,
|
||
& PM2021A/9X, PM2012A, PM2012B, PM2022A/9X, PM2122A/9X, PM2322A/9X)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Eata\_pio.s</td> <td>DPT EATA-PIO SCSI support (PM2001 and PM2012A)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Fdomain.s</td> <td>Future Domain TMC-16x0 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Goldstar.s</td> <td>All supported SCSI controllers, plus Goldstar R420 CD-ROM (sometimes sold
|
||
in a Reveal "Multimedia Kit")<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>In2000.s</td> <td>Always IN2000 SCSI support<br></td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p><b>Table 3</b>
|
||
<table cellpadding 10>
|
||
<tr>
|
||
|
||
<td>Iomega.s</td> <td>IOMEGA PPA3 parallel port SCSI support (also supports the parallel
|
||
port version of the ZIP drive)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Mcd.s</td> <td>All supported SCSI controllers, plusstandard non-IDE Mitsumi CD-ROM support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Mcdx.s</td> <td>All supported SCSI controllers, plus enhanced non-IDE Mitsumi CD-ROM support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>N53c406a.s</td> <td>NCR 53c406a SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>N\_5380.s</td> <td>NCR 5380 and 53c400 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>N\_53c7xx.s</td> <td>NCR 53c7xx, 53c8xx SCSI support (Most NCR PCI SCSI controllers use this driver)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Optics.s</td> <td>All supported SCSI controllers, plus support for the Optics Storage 8000
|
||
AT CDROM (the "DOLPHIN" drive)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Pas16.s</td> <td>Pro Audio Spectrum/Studio 16 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Qlog\_fas.s</td> <td>ISA/VLB/PCMCIA Qlogic FastSCSI! support (also supports the Control
|
||
Concepts SCSI cards based on the Qlogic FASXXX chip)<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Qlog\_isp.s</td> <td>Supports all Qlogic PCI SCSI controllers, except the PCI-basic,
|
||
which the AMD SCSI driver supports <br><td>
|
||
</tr>
|
||
<tr>
|
||
<td>Sanyo.s</td> <td>All supported SCSI controllers, plus Sanyo CDR-H94A CD-ROM support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Sbpcd.s</td> <td>All supported SCSI controllers, plus Matsushita, Kotobuki, Panasonic,
|
||
CreativeLabs (Sound Blaster), Longshine and Teac NON-IDE CDROM support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Scsinet.s</td> <td>All supported SCSI controllers, plus full ethernet support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Seagate.s</td> <td>Seagate ST01/ST02, Future Domain TMC-885/950 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Trantor.s</td> <td>Trantor T128/T128F/T228 SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Ultrastr.s</td> <td>UltraStor 14F, 24F, and 34F SCSI support<br></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Ustor14f.s</td> <td>UltraStor 14F and 34F SCSI support<br></td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p><b>Unix Operating Systems</b>
|
||
|
||
<p>If you have the Slackware kernel images on a Unix host that has
|
||
a floppy drive, you can quickly create the necessary boot and
|
||
root diskettes using Unix commands. You can use the dd
|
||
command. The example below which puts the scsi.s
|
||
boot kernel image onto the floppy device rfd0:
|
||
|
||
<tt>dd if=scsi.s of=/dev/rfd0 obs=18k</tt>
|
||
|
||
<p>You'll need to repeat this process with one of the root disk images
|
||
onto a second floppy diskette.
|
||
|
||
|
||
<p>DOS, OS/2, MS-Windows 95 \& NT
|
||
|
||
<p>Slackware bundles a utility called rawrite.exe that
|
||
will generate boot and root diskettes under DOS-literate operating
|
||
systems. To write the scsi.s kernel image onto the
|
||
formatted, high-density diskette in your A:$\backslash$ diskette
|
||
drive, issue the following command:
|
||
|
||
<tt>RAWRITE SCSI.S A:</tt>
|
||
|
||
<p>You'll need to repeat this process with one of the root disk images
|
||
onto a second floppy diskette.
|
||
|
||
|
||
<h3>Boot Into Action</h3>
|
||
|
||
|
||
<p>Here's the big anticlimax. After all this planning, preparation,
|
||
and partitioning, you're in the home stretch. Make sure the boot
|
||
floppy is in the diskette drive, and restart your computer. Now
|
||
is a good time to go get some coffee (or whatever you like to
|
||
keep you company) and return to the machine ready to play the
|
||
part of a button-pushing drone, answering yes-no questions for
|
||
an hour or so.
|
||
|
||
<p>Log in as root (no password) and type setup
|
||
or setup.tty
|
||
|
||
<a name="slack2"></a>
|
||
<h3>Slackware Setup Program</h3>
|
||
|
||
|
||
<p>Slackware comes with two versions of an excellent setup program.
|
||
One is a colorful, dialog-based, menu-driven version. An alternative
|
||
setup, setup.tty, is a text-only version of the installation
|
||
that you may actually prefer, because detailed diagnostics and
|
||
error messages will stay on the screen and not be erased by the
|
||
next dialog box, which happens in the color version. If you're
|
||
attempting a Slackware setup on sketchy hardware, I strongly recommend
|
||
the less colorful setup.tty routine. If you don't
|
||
know much about Unix and would feel more comfortable with an attractive.
|
||
``clean'' interface to the same setup process, then by all means
|
||
go for the beautiful setup.
|
||
|
||
|
||
<h3><center>Slackware96 Linux Setup (version HD-3.1.0)</center></center></h3>
|
||
|
||
<h3>Welcome to Slackware Linux Setup</h3>
|
||
|
||
<p>Hint: If you have trouble using the arrow keys on your keyboard,
|
||
you can use '+', '-', and TAB instead. Which option would you like?
|
||
|
||
<ul>
|
||
<li> HELP: Read the Slackware Setup HELP file
|
||
<li> KEYMAP: Remap your keyboard
|
||
<li> MAKE TAGS: Tagfile customization program
|
||
<li> TARGET: Select target directory [now: / ]
|
||
<li> SOURCE: Select source media
|
||
<li> DISK SETS: Decide which disk sets you wish to install
|
||
<li> INSTALL: Install selected disk sets
|
||
<li> CONFIGURE: Reconfigure your Linux system
|
||
<li> PKGTOOL: Install or remove packages with Pkgtool
|
||
<li> EXIT: Exit Slackware Linux Setup
|
||
OK Cancel
|
||
</ul>
|
||
<p>To transfer Slackware onto your system from here should involve
|
||
little more than selecting what you want off the menus. By filling
|
||
out the Section 3 worksheet in advance, you should be able progress
|
||
quickly through each menu in order, until you reach the INSTALL
|
||
option, at which point things may s l o w down: you are advised
|
||
to select the PROMPT feature and <I>read</I> about each software
|
||
package, deciding whether or not you'd like it to end up on your
|
||
Slackware system. The last part of a regular setup is the CONFIGURE
|
||
section on the setup menu, and the questions you must answer bear
|
||
a striking resemblance to the second half of the Section 3 worksheet.
|
||
|
||
|
||
|
||
<h3>Is That All?</h3>
|
||
|
||
<p>Definitely not! At this point, you've either got some annoying
|
||
obstacle that is preventing the setup from completing, or more
|
||
likely, you're looking at the root prompt
|
||
|
||
<tt>darkstar\~\#</tt><br>
|
||
|
||
and wondering "What Next?"
|
||
|
||
<p>Well, if you're plagued by problems, you'll want to proceed directly
|
||
to the next section on troubleshooting. If things appear to be
|
||
in working order, you've still got some details to attend to.
|
||
Sort of like purchasing a new automobile-after you've selected
|
||
an paid for a new car, there are still some things you need before
|
||
you can drive it with confidence-insurance, a steering wheel club,
|
||
and perhaps some luxuries that make the driving experience closer
|
||
to Fahrvergn\ügen than FAQ!
|
||
|
||
|
||
<a name="trouble"></a>
|
||
<h3>Troubleshooting Difficult Deliveries</h3>
|
||
|
||
<p>Not every Slackware installation is born on cue to expecting system
|
||
administrators. I've pulled a few all nighters, sitting down after
|
||
work one evening to upgrade a Slackware box and still there struggling
|
||
to get the damn thing back online at dawn, before people start
|
||
bitching about their missing mail and news. This section will
|
||
look at a few common Slackware setup problems, solutions, and
|
||
where to look for additional assistance.
|
||
|
||
|
||
<h3>Slackware Installation FAQs</h3>
|
||
|
||
<p>Patrick Volkerding, the father of Slackware, has dealt with the
|
||
many questions of new users by listening, answering, and anticipating
|
||
repeat queries. To catch the new Slackware users before they ask
|
||
the same question for the 5,000th time, Patrick has kindly created
|
||
documentation and included it with the Slackware distribution.
|
||
Three files that you may find very helpful in answering your initial
|
||
questions are FAQ.TXT, INSTALL.TXT, and BOOTING.TXT.
|
||
|
||
|
||
|
||
<p>Web Support For Slackware
|
||
|
||
<p>At this time, the Slackware-specific help you'll find on the Internet
|
||
tends to be highly customized---such as how to NFS-mount the distribution
|
||
on computers within a certain university or how to wire your dorm
|
||
room into a particular residential WAN using Slackware.
|
||
|
||
|
||
|
||
<p>Usenet Groups For Slackware
|
||
|
||
<p>The comp.os.linux.* hierarchy of the Usenet is a
|
||
treasure-trove of Linux information, not necessarily Slackware-specific.
|
||
At present, 11 separate Linux forums handle a high volume of discussion
|
||
in this hierarchy. Dozens of other general-Unix newsgroups are
|
||
also available. Some discussions relevant to getting Slackware
|
||
up and running are:
|
||
|
||
<ul>
|
||
<li>comp.os.linux.setup
|
||
<p>A group established for figuring out Linux installation and system
|
||
administration. The best place to look for clever setup strategies
|
||
and to network with others who may have recently installed Slackware.
|
||
|
||
<li>comp.os.linux.announce
|
||
<p>A must-read for Linux administrators and enthusiasts, C.o.l.a
|
||
is a sort of daily Linux digest for the Internet community. The
|
||
group is moderated, so only the relevant material makes it into
|
||
circulation. The newsgroup is designed as a low-traffic alert
|
||
service for announcing Linux-specific software, documentation,
|
||
and security warnings.
|
||
|
||
<li>comp.os.linux.answers
|
||
<p>Here's where to find (or post) the latest Linux FAQs, How-Tos,
|
||
READMEs and other documents that answer questions about Linux.
|
||
</ul>
|
||
|
||
<p>Mail Lists For Slackware
|
||
|
||
<p>At this time, there are no electronic mail discussions devoted
|
||
to Slackware per-se. You can participate in some excellent Linux-related
|
||
talk via e-mail, try www.linux.org and asking in the newsgroups
|
||
for a few good subscription lists.
|
||
|
||
|
||
|
||
<h3>You Get What You Pay For (Commercial Support)</h3>
|
||
|
||
<p>Commercial support for Linux is available from some of the CD-ROM
|
||
vendors and a long list of Linux Consultants, who can be contacted
|
||
through the Linux Commercial and Consultants HOWTO documents:
|
||
|
||
<a href="http://sunsite.unc.edu/LDP/HOWTO/Consultants-HOWTO.html">http://sunsite.unc.edu/LDP/HOWTO/Consultatns-HOWTO.html</a><br>
|
||
<a href="http://sunsite.unc.edu/LDP/HOWTO/Commercial-HOWTO.html">http://sunsite.unc.edu/LDP/HOWTO/Commercial-HOWTO.html</a><br>
|
||
|
||
<a name="basking"></a>
|
||
<h3>Basking In the Afterglow</h3>
|
||
|
||
<p>Don't rest on your laurels quite yet. Especially if your Slackware
|
||
machine is a shared computer or lives in a networked environment.
|
||
Grooming a computer for community and network use is a bit more
|
||
demanding than just running the setup program and
|
||
forgetting about it. We'll leave you with a few pointers to securing
|
||
and sharing your new Slackware system.
|
||
|
||
|
||
|
||
<h3>Consider Reinstalling!</h3>
|
||
|
||
<p>I know you just sat through what may have been a long and perplexing
|
||
installation session. But before you move into the house you just
|
||
built, consider tearing it down and starting over again. Friedrich
|
||
Nietzsche had a quote:
|
||
|
||
"A man learns what he needs to know about building his house only
|
||
after he's finished."
|
||
|
||
<p>If, in the process of installing the system, you had some thoughts
|
||
about how you might do it differently, now is the time. If your
|
||
Slackware Linux box will be a multi user machine or a network
|
||
server, there may never be such a convenient opportunity to reinstall
|
||
or reconfigure the system in radical ways.
|
||
|
||
|
||
<a name="install"></a>
|
||
<h3>Install And Test Key Applications</h3>
|
||
|
||
<p>Before you put away the CDROM or return the 50 floppy disks you
|
||
borrowed to run the Slackware installation, sit down and test
|
||
each application that your users may expect to find in working
|
||
order. If professor Bien absolutely has to have emacs humming
|
||
under X-Windows, you'd better test it out now, while you've still
|
||
got the workstation 'in the shop.'
|
||
|
||
<p>Did you set up this Linux box to serve a specific purpose in your
|
||
organization, such as...
|
||
|
||
<ul>
|
||
<li><b>File and Print Server for Macintoshes or Windows PCs:</b>
|
||
Better make sure netatalk, CAP and samba are configured and tested
|
||
<li><b>World Wide Web Server:</b>
|
||
Time to choose a www daemon and get it up and running
|
||
<li><b>Mail Server:</b>
|
||
Have you configured sendmail? How alternative
|
||
mail applications that offer improved performance, features, or
|
||
security over their Slackware-default counterparts? Most mail
|
||
servers would benefit from cucipop, procmail,
|
||
and Smarlist, to name a few.
|
||
<li><b>Remote Access Server:</b>
|
||
Got those serial ports or add-in boards working?
|
||
<li><b>Firewall:</b>
|
||
You might like to look at the second firewall toolkit from
|
||
TIS, as well as front-ends to ease firewall and network administration,
|
||
such as linuxconf.
|
||
</ul>
|
||
|
||
<a name="secure"></a>
|
||
<h3>Secure the System</h3>
|
||
|
||
<p><b>Get Off The LAN At Once</b>
|
||
|
||
<p>Out of the box, Slackware is an insecure system. Although Patrick
|
||
does his best to create a secure distribution, a few inevitable
|
||
holes become known, and patches or workarounds are made available
|
||
in the system administration (and cracker) communities. If you
|
||
installed Slackware from a network source such as an NFS-mounted
|
||
drive, you should temporarily disconnect your box from the LAN
|
||
after a successful installation, while you plug a few holes.
|
||
|
||
|
||
|
||
<p><b>Give Root a Password</b>
|
||
|
||
<p>By default, a new Slackware box will not require a password for
|
||
the root user. When you're comfortable that your
|
||
new Slackware system is stable (after a few hours, not days or
|
||
weeks), add a password to protect the root account.
|
||
Login as root and type:
|
||
|
||
<tt>passwd root</tt>
|
||
|
||
|
||
<p><b>Give Yourself An Account</b>
|
||
|
||
<p>On large shared systems, the super-user root account is not used as a
|
||
working login account by any individual. If you're interested in
|
||
system administration or are running a networked machine, this is a
|
||
good precedent to follow. Use the \texttt{/sbin/adduser} program to
|
||
make yourself a login account, rather than working out of the root
|
||
login. I always smile when I see students and hobbyists posting
|
||
proudly to the Usenet as root@mymachine.mydomain. Be humble and safe,
|
||
create another login account for your daily work and use su (rather
|
||
than login) to enter the root account sparingly.
|
||
|
||
|
||
|
||
<p><b>Deny Root Logins</b>
|
||
|
||
<p>Not only is it uncommon to <I>work</I> as the root user,
|
||
it is <I>not considered secure to login as root across the network</I>.
|
||
Administrative users usually connect to a Unix box as their regular
|
||
username login, and then use the su utility to become
|
||
the root user as needed. To prevent crackers, hackers, and ignorant
|
||
users from logging in directly as root, edit the file <tt>/etc/securetty</tt>
|
||
and comment out (prepend a pound \# sign before) all but the local
|
||
terminals:
|
||
|
||
<tt>console
|
||
|
||
tty1
|
||
tty2
|
||
\# ttyS0
|
||
\# ttyS1
|
||
</tt>
|
||
|
||
<p>After this fix, users who attempt to login in as root across
|
||
the network will be denied:
|
||
|
||
<tt>Linux 2.0.29 (durak.interactivate.com)<br>
|
||
durak login: root<br>
|
||
root login refused on this terminal.<br>
|
||
durak login:</tt>
|
||
|
||
|
||
<p><b>Apply the Simple Fixes</b>
|
||
|
||
<p>Slackware installs itself with some very real security problems.
|
||
Rather than master Unix security and sleuth out these vulnerabilities
|
||
yourself, you can jump start the hole-patching process by visiting
|
||
a web resource maintained for just this purpose, called <I>Slackware
|
||
SimpleFixes</I>:
|
||
|
||
<a href="http://cesdis.gsfc.nasa.gov/linux-web/simplefixes/simplefixes.html">http://cesdis.gsfc.nasa.gov/linux-web/simplefixes/simplefixes.html</a><br>
|
||
|
||
|
||
<p><b>Check For Patches On ftp.cdrom.com</b>
|
||
|
||
<p>As an actively maintained Linux distribution Slackware updates
|
||
and patches are available from:
|
||
|
||
<a href="ftp://ftp.cdrom.com/pub/linux/slackware/patches/">ftp://ftp.cdrom.com/pub/linux/slackware/patches/</a><br>
|
||
|
||
|
||
<p><b>Stay Current</b>
|
||
|
||
<p>You might like to subscribe to one or more electronic mail lists
|
||
that alert users to issues in Linux administration, such as:
|
||
|
||
<ul>
|
||
<li>linux-alert-request@tarsier.cv.nrao.edu
|
||
<li>linux-security-request@redhat.com
|
||
</ul>
|
||
|
||
<a name="backup"></a>
|
||
<h3>Back Up</h3>
|
||
|
||
<p>Like how things are running? Save it for a rainy day by backing
|
||
up. Amanda (The Advanced Maryland Automatic Network Disk Archiver)
|
||
is one of several backup options for Linux installations. You
|
||
can learn more about Amanda from:
|
||
|
||
<a href="http://www.cs.umd.edu/projects/amanda/index.html">http://www.cs.umd.edu/projects/amanda/index.html/</a><br>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Sean Dreilinger<BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./updates_17.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./texas.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2>Linux Installation Project</H2>
|
||
<H4>By Kendall G. Clark,
|
||
<a href="mailto:kclark@dal284.computek.net">kclark@dal284.computek.net</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
<h1>Linux Installation Project</h1>
|
||
|
||
<p>
|
||
It all started with a simple question: `Why don't we install
|
||
Linux at all our meetings instead of at only some of them?'
|
||
The <a href="http://www.ntlug.org/">North Texas Linux Users
|
||
Group</a> had been in existence for only about five months,
|
||
and we wanted to make sure to spread the word in North Texas
|
||
about Linux. We wanted to educate the computing public in our
|
||
area about Linux, but we also wanted to let experienced
|
||
computer users know that Linux could handle anything they
|
||
threw at it.
|
||
|
||
<p>
|
||
After meeting at Texas Christian University for our first few
|
||
meetings, we signed a contract with the <a
|
||
href="http://www.dfwxchange.com/dfwx.nsf/?Open">DFWXchange</a> that enabled NTLUG
|
||
to meet at the <a href="http://www.infomartusa.com">Dallas
|
||
Infomart</a>. The DFWXchange is an umbrella organization that
|
||
allows Dallas-Fort Worth users groups to meet at the Infomart
|
||
for free, with all costs being absorbed by the many commercial
|
||
vendors who also meet at the Infomart during the Super Satuday
|
||
Sale. So every month between 3,000 and 5,000 computer users
|
||
from the Dallas-Fort Worth Metroplex converge on the
|
||
Infomart---the premier meeting facility in the Southwest
|
||
devoted exclusively to computer and technology events and
|
||
organziations---to participate in users groups meetings and to
|
||
take advantage of some really good prices on computer-related
|
||
hardware. It's a big party.
|
||
|
||
<p>
|
||
It didn't take long for the NTLUG leadership to realize that
|
||
we had stumbled upon a great opportunity: we wanted to let
|
||
computer users in our area know about Linux, and we were now
|
||
meeting every month in a facility filled with thousands of
|
||
potential Linux converts. Our solution was to start the
|
||
<b>Linux Installation Project</b>, which we call the
|
||
<b>LIP</b>.
|
||
|
||
<p>
|
||
The goal of <b>LIP</b> is simply to install Linux on as many
|
||
computers as possible. Those of us who participate in this
|
||
project month-to-month have discovered that the very best way
|
||
to advocate the use of Linux is to make it easy and painless
|
||
for the unconverted to do just that: namely, run Linux on
|
||
their computer of choice. In other words, Linux is its own
|
||
best advocate. After a few weeks without a crash, most people
|
||
say goodbye to Windows 95 with zealous enthusiasm. We like to
|
||
think of <b>LIP</b> as an ongoing Linux Installation Festival
|
||
that allows us to convert computer users to Linux one at a
|
||
time.
|
||
|
||
<p>
|
||
The first step in establishing <b>LIP</b> as a well-run,
|
||
consistent endeavor was to find someone to lead the
|
||
effort. NTLUG is fortunate to have a technologically advanced
|
||
membership, and it was fairly easy to find someone to lead the
|
||
<b>LIP</b>; in fact, we found two such people: Mike Dunn and
|
||
Bill Petersen, both of whom are experienced Unix and Linux
|
||
Sysadmins. Under their guidance, and due to the generosity of
|
||
NTLUG members, NTLUG's <b>LIP</b> has solicited and organized
|
||
enough computer hardware to perform up to many simultaneous
|
||
installations of Linux by all the usual methods, although
|
||
we've found that cdrom installations are usually the most
|
||
trouble free.
|
||
|
||
<p>
|
||
The word has now spread in and around the Dallas-Fort Worth
|
||
Metroplex---from schools and universities to computer vendors
|
||
and other users groups---that NTLUG's <b>LIP</b> is the place
|
||
to go for a painless installation of Linux onto PCs, laptops,
|
||
servers, and even Alpha platforms. We have expanded our
|
||
efforts at the <b>LIP</b> booth to include Linux advocacy,
|
||
advertisement for Linux vendors who supply us with materials,
|
||
the sale of Linux CDs (thanks to Bradley Glonka at <a
|
||
href="http://www.lsl.com/">Linux Systems Labs</a>), and even
|
||
basic Linux system administration and maintenance. We also
|
||
spend a lot of time explaining to the uninitiated masses what
|
||
makes Linux <b><i>free</i></b> and what makes it so much fun.
|
||
|
||
<p>
|
||
While we have been happy with the results so far, the
|
||
<b>LIP</b> has more work to do. We want to expand our sales
|
||
efforts to include other kinds of Linux merchandise (the sales
|
||
of which go to support NTLUG and <b>LIP</b>), and we'd also
|
||
like to expand our hardware assets to enable more simultaneous
|
||
installations. Finally, we also want to develop our users
|
||
group assets to such an extent that we can go to other
|
||
DFW-area computer events and setup Linux installation and
|
||
advocacy booths. NTLUG's approach to the Linux Installation
|
||
Project can be summed up in the phrase: "Linux is free. Life
|
||
is good."
|
||
|
||
<p>
|
||
If you want to learn more about the North Texas Linux Users
|
||
Group or our Linux Installation Project, or if you're a Linux
|
||
Users Group and would like to talk about setting up your own
|
||
local version of <b>LIP</b>, please visit the <a
|
||
href="http://www.ntlug.org/">NTLUG</a> website or contact me
|
||
at <i><a
|
||
href="mailto:kclark@computek.net">kclark@computek.net</a></i>.
|
||
|
||
<p>
|
||
Finally, I would be guilty of ingratitude if I did not thank
|
||
the following people and organizations that have made the
|
||
<b>LIP</b> possible. Please forgive me if I've forgotten
|
||
anyone. It's just about impossible not to meet great people
|
||
when you work with Linux.
|
||
|
||
<ul>
|
||
<ul>
|
||
<b>NTLUG Members</b>
|
||
<li>Mike Dunn</li>
|
||
<li>Bill Petersen</li>
|
||
<li>Thomas Griffing</li>
|
||
<li>Bill Richards</li>
|
||
<li>Steve Brennan</li>
|
||
<li>Allen Prince</li>
|
||
<li>Pete Koren</li>
|
||
<li>Eric Chang</li>
|
||
<li>everyone else who made financial and hardware donations</li>
|
||
</ul>
|
||
<ul>
|
||
<b>Organizations</b>
|
||
<li><a href="http://www.lsl.com/">Linux Systems Labs</a>, especially Bradley Glonka</li>
|
||
<li><a href="http://www.redhat.com/">Red Hat Software</a></li>
|
||
<li><a href="http://www.swt.com/">SouthWest Technology</a></li>
|
||
<li><a href="http://www.dfwxchange.com/">DFWXchange</a>, especially Stuart Yarus, President.</li>
|
||
</ul>
|
||
</ul>
|
||
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1997, Kendall G. Clark <BR>
|
||
Published in Issue 17 of the Linux Gazette, May 1997</H5></center>
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
ALT="[ FRONT PAGE ]"></A>
|
||
<A HREF="./slackware.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./lg_backpage17.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
<center>
|
||
<H1><IMG SRC="../gx/backpage.gif" alt="Linux Gazette Back Page"></H1>
|
||
|
||
<H5>Copyright © 1997 Specialized Systems Consultants, Inc.<br>
|
||
For information regarding copying and distribution of this material see the
|
||
<A HREF="../copying.html">Copying License</A>.</H5>
|
||
</center>
|
||
|
||
<P> <hr> <P>
|
||
|
||
<H3>Contents:</H3>
|
||
<ul>
|
||
<li><a HREF="./lg_backpage17.html#authors">About This Month's Authors</a>
|
||
<li><a HREF="./lg_backpage17.html#notlinux">Not Linux</a>
|
||
</ul>
|
||
|
||
<a name="authors"></a>
|
||
<P> <HR> <P>
|
||
<!--======================================================================-->
|
||
|
||
<center><H3> About This Month's Authors </H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--======================================================================-->
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Larry Ayers</H4>
|
||
Larry Ayers lives on a small farm
|
||
in northern Missouri, where he is currently engaged in building a
|
||
timber-frame house for his family. He operates a portable band-saw mill,
|
||
does general woodworking, plays the fiddle and searches for rare
|
||
prairie plants, as well as growing shiitake mushrooms. He is also
|
||
struggling with configuring a Usenet news server for his local ISP.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Kendall G. Clark</H4>
|
||
Kendall Clark is a PHD candidate in systematic theology at
|
||
Southern Methodist University. He
|
||
is hard at work on his dissertation using Red Hat 4.1, LaTeX,
|
||
and AucTeX & Xemacs. He helped found <a
|
||
href="http://www.ntlug.org/">NTLUG</a> in the summer of 1996
|
||
with Stephen Denny and Tim Jones and currently serves as Acting
|
||
President. He makes his home with his wife Hope in Dallas,
|
||
Texas.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jim Dennis</H4>
|
||
Jim Dennis
|
||
is the proprietor of <A href="http://www.starshine.org">
|
||
Starshine Technical Services</A>.
|
||
His professional experience includes work in the technical
|
||
support, quality assurance, and information services (MIS)
|
||
departments of software companies like
|
||
<A href="http://www.quarterdeck.com"> Quarterdeck</A>,
|
||
<A href="http://www.symantec.com"> Symantec/
|
||
Peter Norton Group</A>, and
|
||
<A href="http://www.mcafee.com"> McAfee Associates</A> -- as well as
|
||
positions (field service rep) with smaller VAR's.
|
||
He's been using Linux since version 0.99p10 and is an active
|
||
participant on an ever-changing list of mailing lists and
|
||
newsgroups. He's just started collaborating on the 2nd Edition
|
||
for a book on Unix systems administration.
|
||
Jim is an avid science fiction fan -- and was
|
||
married at the World Science Fiction Convention in Anaheim.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Sean Dreilinger</H4>
|
||
Sean Dreilinger
|
||
suffered through two years of Los Angeles smog for a Masters degree in
|
||
library/information systems at UCLA. Linux swept him off his feet in grad
|
||
school and turned into a Network Administration career for the University.
|
||
Consulting on Internet strategy and info-system design in assorted
|
||
bored-rooms followed. Today he beams-in to www.interactivate.com from a
|
||
remote mountain cabin near Cuyamaca, California and is only required to
|
||
show his face at work once a week--nice job for the outdoors-loving and
|
||
socially inept. He lives with his lover Kathy and this incredible
|
||
high-altitude silence--punctuated only by the sound of wind rustling in the
|
||
Manzanita trees, hummingbirds fighting for a perch on the feeder, and that
|
||
reassuring whir of SCSI drives dancing with Linux under the desk. More life
|
||
story with explicit photos can be found at http://www.interactivate.com/people/sean/.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jon "maddog" Hall</H4>
|
||
Jon "maddog" Hall is Senior Leader of Digital UNIX
|
||
Base Product Marketing, Digital Equipment Corporation.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michael J. Hammel</H4>
|
||
Michael J. Hammel,
|
||
is a transient software engineer with a background in
|
||
everything from data communications to GUI development to Interactive Cable
|
||
systems--all based in Unix. His interests outside of computers
|
||
include 5K/10K races, skiing, Thai food and gardening. He suggests if you
|
||
have any serious interest in finding out more about him, you visit his home
|
||
pages at http://www.csn.net/~mjhammel. You'll find out more
|
||
there than you really wanted to know.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Rick Hohensee</H4>
|
||
Rick Hohensee is a guitar bum and former construction executive who has
|
||
so many irons in the fire he can't keep the fire going. Visit him on
|
||
the web at http://cqi.com/~humbubba.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Mike List </H4>
|
||
Mike List is a father of four teenagers, musician, printer (not
|
||
laserjet), and recently reformed technophobe, who has been into computers
|
||
since April,1996, and Linux since July.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jesper Pedersen</a></H4>
|
||
Jesper Pedersen lives in Odense, Denmark, where he has studied computer science
|
||
at Odense University since 1990. He expects to obtain his degree in a year and
|
||
a half. He has a great job as a system manager at the
|
||
university, and also teaches computer science two hours a week. He is very
|
||
proud of his "child," The Dotfile Generator, which he wrote as part of his
|
||
job at the university. The idea for it came a year and a half ago, when he had
|
||
to learn how to configure Emacs by reading about 700 pages of the lisp manual.
|
||
It started small, but as time went by, it expanded into a huge project.
|
||
In his spare time, he does Yiu-Yitsu, listens to music, drinks beer and has fun with
|
||
his girl friend. He loves pets, and has a 200 litre aquarium and two very cute
|
||
rabbits.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jay Painter</a></H4>
|
||
Jay Painter is the Systems Administrator at SSC.
|
||
|
||
<a name="notlinux"></a>
|
||
<P> <hr> <P>
|
||
<!--====================================================================-->
|
||
|
||
<center><H3> Not Linux </H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--======================================================================-->
|
||
<P>
|
||
Thanks to all our authors, not just the ones above, but also those who wrote
|
||
giving us their tips and tricks and making suggestions. Thanks also to our
|
||
new mirror sites. And many, many thanks to Amy for doing most of the work
|
||
this month.
|
||
<P>
|
||
<IMG ALIGN="LEFT" ALT="" SRC="../gx/rose.gif">
|
||
Seattle--always a wonderful event. Riley and I spent the morning working
|
||
in the yard, clearing out a flower bed that was overgrown with grass. It
|
||
felt like hard physical labor after sitting at a desk all week. We rewarded
|
||
ourselves by taking a spin on the motorcycle along the Sound. Even as
|
||
passenger there is something about riding on a motorcycle that puts a smile
|
||
on my face. I guess it helps that I have complete trust in Riley's driving
|
||
abilities.
|
||
<P>
|
||
Afterward I went to the Opera House for a talk about <I>Il Trovatore</I> by
|
||
Giuseppe Verdi (or Joe Green, as Riley likes to call him). I had seen
|
||
the opera itself on Wednesday night--a silly
|
||
story as usual but, oh, such
|
||
wonderful music! I think it has to be one of my favorites. At any rate
|
||
the talk was informative and fun and made a nice end to a very wonderful
|
||
day.
|
||
<P>
|
||
Have fun!
|
||
|
||
<P> <hr> <P>
|
||
<A HREF="http://www.ssc.com/ssc/Employees/Margie/margie.html">
|
||
Marjorie L. Richardson</a><br>
|
||
Editor, <i>Linux Gazette</i> <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
||
CONTENTS ]"></A>
|
||
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
||
PAGE ]"></A>
|
||
<A HREF="./texas.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<p><hr><p>
|
||
<I>Linux Gazette</I> Issue 17, May 1997, http://www.ssc.com/lg/<BR>
|
||
This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
||
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
|
||
<P>
|