Linux Gazette... making Linux just a little more fun!

Copyright © 1996-98 Specialized Systems Consultants, Inc.


Welcome to Linux Gazette!(tm)


Published by:

Linux Journal


Sponsored by:

InfoMagic

S.u.S.E.

Red Hat

LinuxMall

Linux Resources

Mozilla

Our sponsors make financial contributions toward the costs of publishing Linux Gazette. If you would like to become a sponsor of LG, e-mail us at sponsor@ssc.com.

Linux Gazette is a non-commercial, freely available publication and will remain that way. Show your support by using the products of our sponsors and publisher.


Table of Contents
August 1998 Issue #31


The Answer Guy


TWDT 1 (text)
TWDT 2 (HTML)
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.


Got any great ideas for improvements? Send your comments, criticisms, suggestions and ideas.


This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com

"Linux Gazette...making Linux just a little more fun!"


 The Mailbag!

Write the Gazette at gazette@ssc.com

Contents:


Help Wanted -- Article Ideas


 Date: Tue, 30 Jun 1998 17:59:52 -0600
From: Ernesto Vargas, evargas@aisinternational.com
Subject: email to pager gateway

I'm trying to find an e-mail to pager gateway. So for example if I send a e-mail to 123456@mydomain.com it will send it to the pager system but if I send and e-mail to evargas@mydomain.com leave the message in my pop account. Additional to this is not to specify each pager our company has more then 25,000 and is growing 1,000 per month.

Thanks,
Ernesto Vargas


 Date: Thu, 2 Jul 1998 14:44:52 -0600
From: "MARK C ZOLTON", mcz@wheat.ksu.edu
Subject: SyQuest EZ 135 and Linux...

For quite some time now I've been wondering how to set up my SyQuest EZ 135 removable disk drive under Linux. If you haven't seen one, it's kind of like a ZIP drive, but less of an industry standard. I got it for free, otherwise I don't think it would have been worth it. Anyway, I have about six 135MB disks for it and I'd like to give some of that to Linux. Any ideas? I've seen a driver around before, but I don't remember where to get it.

Mark


 Date: Mon, 06 Jul 1998 17:01:00 +0300
From: admin, admin@jrol.com
Subject: chroot how to?

I have been trying to lookup information on chroot command. i am trying to see if I can restrict my users to there home directories. Same concept like anonymous ftp. So each user will have his or hers own work space. Is there any documentation ? Thank you for your time. I have Red Hat5.0 and 5.1.

Khriss,


 Date: Sun, 05 Jul 1998 05:32:21 -0700
From: "Wizard Saturn", alexey@mailcity.com
Subject: problem mouse

I have Genius Net Mouse (with a Magic-Button for making browsing easy, hardware scrolling). I use Read Heat 5.0, but I cannot use Magic-Button for scrolling in Xwindows.What shall I do for using it.

Thank you in advance.
alexey


 Date: Fri, 3 Jul 1998 17:47:35 +0100 (BST)
From: Sean Kelly, S.Kelly@newcastle.ac.uk
Subject: Recognising the AMD K5-PR166

I'm wondering whether any other readers have used the AMD K5-PR166 with Linux. It's just that my system seems to think it's a K5-PR133 and states that it's running at 100MHz. Also, the BogoMips value indicates that the processor is running at 100MHz. Anyone any advice?

Thanks in advance,
Sean.


 Date: 08 Jul 98 16:10:03 +0000
From: James Spenceley, creative@create.com.au
Subject: PPP help

I'd like to set my Linux box up as a PPP remote access server. Can you give me an idea of where i can find some info on how to do this ? Or maybe someone who has done it with a positive outlook and an email address. Any help would be great

Thanks
James


 Date: Sat, 18 Jul 1998 02:20:45 +0200
From: silvia ballmann, sballmann@usa.net
Subject: Linux AND Lanprinter

Can I manage 800 lanprinter with one Linux system? Thanks.

bye, Thomas


 Date: Thu, 16 Jul 1998 16:50:41 -0700
From: al00584, al00584@snetsy.cpg.com.au
Subject: DStealth Linux FVWM driver

I have a Diamond Stealth 3D 2000 Virge card. In initial drivers even 16 bit display modes were patchy. Now I'm wondering if there would be new drivers developed which are stable since. Furthermore I seem to have trouble installing and uninstalling files. No Uninstallshield equivalent of windows??

Keep up the great service.
Andrew

(No need for an uninstall with Linux, rm -rf will remove all the way down a directory tree. Be careful when you use it though. Also, if you feel the need to write C code to this, there is an article in the August issue of Linux Journal about how to write a "deltree" command. --Editor)


 Date: Tue, 21 Jul 1998 10:07:36 -0700 (PDT)
From: dhelm@linknet.kitsap.lib.wa.us
Subject: CHAOS

I would like more information on the CHAOS article in the July (#30) issue of LG. Are there any HOW-TO's on how to set a thing like that up? Since I cant afford (OK, to cheap to buy..) one of the new systems, a little network of cheap PC's sounds fun.

GreatDane


 Date: Wed, 22 Jul 1998 00:08:57 EDT
From: Kilgorecom@aol.com
Subject: notebook

I have an OLD laptop that is probably only good for a doorstop or running DOS. (I did download DR. DOS, and may give it a try, but am more interested in putting a Linux system on it if possible. It is a DTK model DLT-3311 which has a whopping Cx486dlc 33 Mhz processor and 4 MB of ram. It has a monochrome monitor, and runs windows 3.x slow. I can't find any more ram for it and am interested in finding out if there is a distribution of Linux, BSD, or something of the like that would turn this into a suitable companion for sales calls, including a database, pim, and anything else slick I could get this to do until I can afford something less paeliolithic.

Any info you could send would be greatly appreciated, as well as being a big feather in your Karmic hat.

Thanks in advance, Kent


 Date: Wed, 29 Jul 1998 08:18:28 +0000
From: Abduraghmaan Phillips, phillips@srvnac3.nac.ac.za
Subject: Intel Celeron Processor

I would like to know whether Linux will have any problems with the Intel Celeron Processor.

Thanks, A. Phillips


General Mail


 Date: Mon, 27 Jul 1998 12:19:00 -0700
From: Antony Chesser, antonyc3@integritas.com
Subject: The Other Side of the Story

In the article, Installing Microsoft & Linux, by Manish P. Pagey, we were treated to a (possibly justified) diatribe about the difficulties in integrating Linux and Win95. However, to have a more balanced view, one might also note the following:

I like Linux thus far. But I never mistake what I like with that is simpler for the average person out there to use. Linux is as user friendly as a hurled brick. Installing Linux puts you at a $ or # prompt with no clue of where to go afterwards. I'm a Novell CNE with many years experience working with PCs and networks, so I'm not daunted by a non-intuitive prompt. And I already had a WIN95 machine set up so I could access the net, download the truly excellent Linux Journal online, and get support on how to install RPMs, etc. Had that not been the case, however, I'd have been hard pressed to iron our the wrinkles in my install, or to know which files to edit, or programs to run, to do basic configuration. By comparison, win95 starts off in the gui mode, allowing for rather intuitive productivity immediately. And yes, I agree...it IS less stable. But crashing once a week (and I don't, by the way... I applied the service pack to it, and I am very stable) is still far better than not being able to even find out how to connect to the net.

When Linux finishes installing, you're left with a # prompt. When WIN95 finishes installing, you've a fairly intuitive GUI that allows you to quickly and easily install and run programs, connect to the net, and **apply updates without re-compiling the kernel**.

So is win95 better than Linux? Nope. But neither is it inferior. Each tool for the right job. If someone wants to set up their own PC and get working quickly, the average person without experience in EITHER of the OS's will have an easier time with win95. The trade off for that is that yes, it IS less stable in the long run, and yes, you DO have to pay for it. But considering that for the novice, the alternative is a PC that he/she cannot use, the answer seems clear that one should get the more easily installed and usable system. And that is not yet Linux.

I believe firmly that it one day WILL be. Many of the Linux Accolytes have decried the attempt to enhance the functionality and ease of use for Linux as the equivalent of "Starting down the Dark path of the Force." (shrug) A bit melodramatic, if you ask me. Consider this... that if we don't make it more user friendly, it will STAY a tiny share of the home and small business market, which in turn means less software written for it, and less call for us to support it for a living. Which, given all it's virtues, seems a shame, doesn't it?

Let's keep the tight, elegant kernel that is Linux, and add ease of use to it. If we do this, then like IBM's iron fisted dominance of the PC market that faded, so too will Microsoft be "The Giant That Was." However, if we insist on keeping Linux the OS that commands a religious like fervor with a select few, and keeping it un-usable for the vast majority of home and small business users, we'll continue to watch Mr. Gates... the richest man in the world... sell upgrades to a kludgy OS for more money than ANY current version of Linux gets. And we'll hear his laughter.

Antony Chessor


 Date: Tue, 07 Jul 1998 20:01:16 -0400
From: Kevin Fortin, kfortin@ufl.edu
Subject: RedHat Service Pack 1

A badly organized yet sketchy editorial, upon these themes:

Just when Linux was starting to get a little more of the limelight, Red Hat releases a new version of its popular distribution, the regrettably buggy RH5.1 (a few weeks ahead of whatever product from Redmond).

Many Linux beginners will probably start with Red Hat, because of the ease of installation and the collection of software. bo Many or most beginners who want to give Linux a try will be installing on their home machines, and will want to connect to the Internet by modem afterwards (sorry -- PPP module not supported by kernel). Note: this feature makes it difficult for home users to download patches from FTP sites.

Furthermore, all users might want to install additional RPMs from CDROMS (sorry -- unable to mount iso9660 filesystem).

[Strangely, when I upgraded an RH4.2 system to RH5.1, I did not have trouble with PPP or CD-ROM support, but when I did an RH5.1 installation from scratch, I did have problems. On that troublesome system, I reformatted and reinstalled RH4.2.]

Many (or at least I) passed over RH5.0 (because I had read it needed a lot of patching) and waited for RH5.1 to come out.

The Linux press doesn't appear to have commented on this situation. Maybe I'm not looking hard enough, but I haven't come across any product reviews or editorials in the on-line Linux press chastising RedHat for rushing a defective product to market (ala Microsoft).

In spite of the above, "Me, I'm a Red Hat Man".

I'm no expert user, but I am a fan of the Linux phenomenon and certainly of Red Hat, and I guess I'm just disappointed by the possibility that potential newcomers might be frustrated and turned away from Linux by the current Red Hat distribution.

I wish the people at Red Hat well, and will probably even send some money their way, in appreciation of their 4.2 distrib as well as their ongoing efforts. However, I might wait for RH5.2 or at least give the most crucial of the RH5.1 patches enough time to make it onto the official CD pressings.

[To be fair, I should note that I obtained RH5.1 on a $1.99 CD from CheapBytes, but from reading the newsgroups, I don't believe that this undermines the points made above. Also, I don't imagine that RedHat's own commercial CD releases and their FTP site would be much out-of-sync, and CheapBytes probably relies on the RH FTP site for its pressings.]

Kevin Fortin


 Date: Mon, 06 Jul 1998 11:59:33 +0900
From: Tom Holroyd, tomh@taz.ccs.fau.edu
Subject: Compaq Unix Support

Since the recent acquisition of Digital by Compaq, I think it's important to let everybody know how they can show their support of Linux on Compaq's AXP platform. Jon Hall, Unix Software Group Senior Leader inside Compaq, and also Executive director of Linux International, has posted the following announcement to axp-list@redhat.com

url: http://archive.redhat.com//axp-list/1998-June/0567.html

Remember that if a major player such as Compaq started shipping machines (and not only axps) with Linux pre-loaded, it would do much for Linux popularity.

Since sending them all one at a time to Mr. Pfeiffer will only make him pissed off in the long run, you are welcome to send them to me, and I will roll them up for him, and present them all at once. I would suggest including in the letter (along with whatever else you want): Your name, Your occupation, Whether you are buying the machine for personal or business use, How many machines per year you buy (ONE is an o.k. number!! Even one, every two or three years...he will understand, and they mount up over many people), What type of machine you would buy (Alpha, Intel), What size (how many megs memory, disk, etc.), and Whether you would be interested in buying support. Put as the subject line: YET ANOTHER UNIX USER
I will guarantee you that my immediate management will look at them, at a minimum, and I am fairly sure that they will get all the way up to Mr. Pfeiffer, at least as a report. -- Jon "maddog" Hall, maddog@zk3.dec.com

Dr. Tom Holroyd


 Date: Wed, 1 Jul 1998 12:04:27 +0100 (BST)
From: Karsten Ballueder, karsten@phy.hw.ac.uk
Subject: Portable GUI C++ Libraries

I have just read your article about "Portable GUI C++ Libraries" and found it to be not very well researched. The information given about wxWindows is outdated and a bit inaccurate.

You mentioned that Version 2.0 "is rumoured to be available in the near future". Fact is, it has already been available in different alpha releases for quite some time. While the code is still under development, it is worth mentioning that it is already very usable and=20=

the turnaround time for bug fixes is quite low. At present there are two implementations of wxWindows 2.0, the Windows version, available from the main wxWindows web page mentioned in your article, and the GTK based Unix version wxGTK, available from http://www.freiburg.linux.de/~wxxt/ . Both versions are ready for development right now ( We are using it to implement quite a large e-mail application, http://Ballueder.home.ml.org/M ). A third version,=20=

based on Motif is under development.

You also mentioned the "side project" of a port of wxWindows which doesn't require the Motif libraries. This "port", called wxXt has been=20=

around for many years and is probably the most-used wxWindows version on Linux. It provides a complete Motif-lookalike interface, without requiring Motif.

I find that if you look at the newer wxWindows releases, especially wxGTK, they provide a much more complete environment and a much improved user interface than other toolkits. Unfortunately, your screenshots based on the older Motif version don't show this.

Regards, Karsten


 Date: Sun, 05 Jul 1998 00:09:07 +0000
From: general, general@gis.net
Subject: LG30 article by Manish Pagey

The most intelligent statement in this persons article was " Because I'm stupid thats why". This article was not anything of general interest but only a tirade about Bill Gates and Microsoft.

If your Linux is so great why must you degenerate the efforts and products of others. Evidently, you people all live in the ivory towers of academia and not the real world. Manish cites that the Feds and the state ag's are after MS.

His vehemence smacks so much of hate that they may come for him next for committing "hate crimes or if not hate crimes the incidence of a hate crime", to quote one great liberal mayor here in Marxachusettes.

Why must all of Linux literature be permeated with the stink of egotistical minds rotting putridly in the sun. Linux may be the operating system of the future, that is if we can get by humid putrification of your egotism.

Quite frankly, LG should hide in shame for printing such childish gibberish. When I downloaded your recent issue to my Linux box, it was with the hope that it might enlighten my experience with another operating system and broaden my limited computer knowledge.

However, this trash will not deter my efforts to learn about Linux as it has presented quite a challenge to run both it and W95. Here's hoping that you and others can present a journal that will teach not disgust.

Thanks for letting me vent.

Robert E. Lee

I frankly don't have time to read every word of every article. I try to avoid articles that are just hate mail. Obviously, I missed on this one if it is as bad as you say. People are always asking for articles about installing both Linux and Microsoft and the problems incurred while doing so and this one looked to fit the bill. I am sorry you were offended and that I did not do a better filtering job. Thanks for writing -- Editor

Thank you for responding to my e-mail. However, my feelings were not of offense but of total irritation that the Linux literature at all levels is saturated with the debasing of others and their operating system.

There are forums where people can vent their dislikes but they do a disservice to the Linux community by littering Linux literature all of types their personal dislikes of others and their efforts.

Linux is being touted as the operating system of the future and it could very well be that some day it will mature to this status. However, the Linux community will have to mature with it if they expect this to happen. The type of article will only repel people rather than attract them. Sell the features and benefits of the Linux operating system and people will use it, denigrate others and their efforts and Linux will languish.

Perhaps, it would be timely to include the 'Advocacy Mini How-to' by Paul L. Rogers in a future edition in an effort help Linux users understand that tirades and even snide remarks are counter to their goal of promoting Linux and are destructive instead.

Thank you for lending an ear.
Robert E. Lee


 Date: Tue, 07 Jul 1998 20:00:20 -0400
From: "Donald N. McKay", fstop@a-znet.com
Subject: Promoting Linux

I listened intently to the Internet audio broadcast when Steve Jobs supplied the voice over to the great race between a 333 MHz Pentium II and Apple's G3. Of course, for those who did listen, we were to learn that G3 ate Pentium's lunch when the two processors 'drag raced' through a run-time application of Photoshop followed by animation, courtesy of Macromedia Director. After listening to the Inter-cast, the world suddenly became aware of the power of G3.

So.... Why not host a drag race on the Internet between Win 95, Win NT 4 and Win 98 and Linux? Hell, throw OS/2 Warp and Novell in there also. (of course, using identical computers - processors, networking cards, etc.). Ballyhoo the event with home page and search engine banner ads (paid for by Red Hat, Caldera, and anyone else who'll make a buck out of the event). Invite C|NET, Andover Net and ZDNet to cover the event. Run Linux on Apache or however the Linux-meisters see fit, but let's see once and for all just what this OS can do not only for speed but for reliability. Then, and only then, will people not only take notice of the product, but will, in fact, try it (buy it in some cases) and use it.

What do you think?

Don McKay


 Date: Tue, 14 Jul 1998 13:18:39 -0300
From: Michael Rasmusson, miker@bdamicro.com
Subject: the cruel reality

Note: This essay assumes that the DoJ (Department of Justice) is nonexistent.

While I am a vocal Linux (and Unix) advocate and am deeply alarmed at the thought of a Redmond controlled world, once in a while it helps to sit down and examine reality.

Linux, at this point in its development, is still too much of a learning curve for the majority of PC users. Most of the Linux users I know, including myself, are software engineers, systems programmers, system administrators, or some other variant of systems professional. All but one use a commercial Unix variant at work. Some PC aficionados showed genuine interest in my Linux box with its various GUIs during its lifetime. The interest seemed to fade when they saw the command line tricks still lurking under most of the more interesting things you can do with Linux, even if these tricks are eventually launched from the window manager. Until the time comes that Linux can be installed, configured and maintained from a fright free interface, it will stay in the realm of techies.

All is not hopeless though. Looking back 20 years to the beginning of personal computing we see that the innovators and early adopters were overwhelmingly techies and electronic hobbyists. We also see that traditional IT types dismissed the early PC as inappropriate for business use. Big Iron would rule the glass tower forever. PC advocates retorted that they would eventually take over and the centralised systems of MIS would be phased out as dinosaurs. Even respectable periodicals like The Economist spouted drivel about PCs replacing mainframes. The reality that has developed since the early 80's has been neither a continuation of Big Iron nor a clean sweep by Wintel. Centralised computing in the form of servers, including the new generation of mainframe class systems, is doing just fine. Wintel PCs have occupied most of the lower niches and are rising into new ones, but will this rise continue until Wintel everywhere is a reality?

Most of the decision makers in IT right now are either managers who were flexible enough to allow PCs into the systems framework back in the 80's or they rose through the ranks during the last 15 years of PC centric computing. Many of them honestly believe in Wintel's manifest destiny. They have either known no other reality except Wintel dominance, or if they have, it was one of IBM dominance. In either case the mind set is very similar. Just like in the early 80's, a closed IS mind set seems dead against branching from the safe and tried road and into new and fresh territory. Fortunately, similar to what happened in the 80's, a few courageous thinkers can see the widening cracks in the Windows.

To these "aware" techies the dream of an inexorable upward rise of the Wintel PC into the world of workhorse systems is turning into a nightmare. More people are starting to see this. The interest in Java, the NC concept, managed PCs, Citrix ICA, all are early signs of a growing dissatisfaction with the legacy of DOS. Windows boxes are notoriously troublesome, but where are the alternatives? Linux is showing itself to be promising, but it is _not_ yet ready to be adopted by the herd. PC makers are aware of this and continue to bundle MS OSes, you're better off with the devil you know.

The great hope of the Windows world is NT. With Windows98 showing itself to be a yet another troublesome incarnation of DOS/Windows, NT is the last refuge.

Strangely, instead of making NT the solid crash proof system people crave, Redmond hacks and bloats up NT in hopes of getting it into higher margin roles that are still too much for it to handle. Redmond pushes, and reacts to criticism of its baby with patches, hacks and bloat. Redmond keeps pushing, and NT continues to show itself as being unready for the big leagues. Redmond say, "Wait! NT version 5.0 will have all sorts of new features and capabilities that will make it perfect for enterprise computing." More likely is NT 5.0, with it's 30+ million lines of code, 24+ million of them new and untested, may just turn out to be the most bug ridden bloated carcass of ugly hacks we've ever seen. Redmond will once again have egg on its face, but this time will it be a permanent stain?

If NT 5.0 turns out to be a huge disappointment, then the alternatives will have to be ready to entice a growing pool of would-be defectors. Linux will have to be more usable and manageable by the WinHerd. It will have to be viable enough to convince OEMs that they can afford to break their devil's bargains with Microsoft. If Redmond trips and once again the lack of viable alternatives allows it to get on its feet and continue building its empire, we have only ourselves to blame. We have two years, can we do it?

Regards,
Mike


 Date: Wed, 22 Jul 1998 10:37:33 -0500
From: "Pronovici, Kenneth", Kenneth.Pronovici@mchugh.com
Subject: CHAOS

Please pass on my congratulations on a wonderful article to Alex - his CHAOS system apparently caused my coworkers to think of me, and my WHOPPeRS (Wacky Hastily Organized Parallel Processesing Research Scheme) system, which looks a lot like CHAOS. Only difference is that mine is sitting on my bedroom floor... ;-)

Ken Pronovici


Published in Linux Gazette Issue 31, August 1998


[ TABLE OF 
CONTENTS ] [ FRONT 
PAGE ]  Next

This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com
Copyright © 1998 Specialized Systems Consultants, Inc.

"Linux Gazette...making Linux just a little more fun!"


More 2¢ Tips!


Send Linux Tips and Tricks to gazette@ssc.com


Contents:


RE: Photogrammetry tools for Linux? in Issue 30

Date: Wed, 29 Jul 1998 10:01:14 -0500
From: John Prindle, jprindle@mail.eden.com

In the July 1998 issue of LG, this message was listed in the "Help Wanted" section.

From: Maurizio Ferrari, Maurizio.Ferrari@tin.it
I am looking for a Linux program to do some close-range photogrammetry. Close range photogrammetry is a technique that enables to reconstruct 3D images from a series of 2D pictures. There are a few powerful (and relatively inexpensive) tools for Windows but none so far for Linux, that I know of. There was something once upon a time called Photo4D. Despite my massive Internet search, any occurrence of Photo4D seems to have been wipe erased from the face of earth. It is listed in SAL but all the links fail. I don't want to resort to buy and use Windows software for this. Help, anyone?
I have tried to e-mail the user back at his given address with some info found on the company and product, but the address given is not valid. So, here it is:

CompInt
712 Seyton Drive
Nepean, Ontario K2H 9R9
Canada
General e-mail : compint@igs.net
http:/www.igs.net/~compint/
This page updated 8/15/97 at 5:45:19 AM ET.

I found this article about the product on Computer Graphics World's site.

http://www.cgw.com/cgw/Archives/1996/09/09prod1_05.html

Product Spotlight
New Motion-Capture Tool
CGW Magazine - September 1996

With CompInt's Photo4D-Pro, animators can now capture 2D and 3D motion based on video recordings. The Windows 95/NT-based program, available for $490, features auto-detection and auto-marking tools which use pattern recognition technology to automatically detect and mark similar feature points in images, making it possible to effectively digitize a large number of points. The software enables users to capture accurate 3D motion from multiple video recordings of a subject by tracking the feature points in videos and computing their x, y, and z coordinates in each frame. Furthermore, its advanced algorithms can synchronize recorded videos to sub-frame accuracy, allowing the use of low-cost home video cameras.

Coinciding with this product launch, the company is also releasing Photo4D-Lite V2.0, a $99 product designed for users who require only 3D digitizing and modeling capabilities. Both products will be available on Windows 95/NT, SGI, Sun, HP, and Linux platforms. (Nepean, Ontario; 613-721-1643)

The web page that is listed is not valid, but hopefully this may help people trying to locate this product.

John


Re: Suggestion for Article, simultaneous versions of Kernels

Date: Wed, 01 Jul 1998 10:39:21 +0100
From: Hans-Georg Esser, esser@i2.informatik.rwth-aachen.de

From: Renato Weiner, reweiner@yahoo.com
Recently I was looking at the Gazette and I think I have a good suggestion of an article that will be very useful for the Linux community. I have had some technical difficulties of having two simultaneous versions of Kernels in my system. I mean a stable one and a developing one. I searched the net looking for information of how to co-exist both but it's completely fragmented. If somebody more experienced could put all this information together, it will certainly help a lot of people from kernels developers to end-users.
Let me state the following:

HOW TO HAVE COEXISTING KERNELS

First let me assume that, with "coexisting kernels", you meant to have several different kernels (with different kernel numbers such as 2.0.34 and 2.1.101) each of which can be chosen at boot time to be started. (The point is: I suppose, you don't want to simultaneously __run__ different kernels, which of course is impossible.)

So, all you have to do is this:

For each kernel you want to use, get the kernel sources, e.g. as .tgz file, cd to /usr/src, do a

 
  tar xzf ../where/ever/it/is/package.tgz
then cd to /usr/src/linux-2.0.34 (e.g.) and do the ordinary kernel configuration / compilation, i.e.
 
  make config  (or menuconfig or xconfig, whatever you like)
  make zImage modules modules_install
  cp arch/i386/boot/zImage /linux-2.0.34  (e.g.)
The last bit of the make will generate a directory /lib/modules/2.0.34 (e.g.) where the modules are put.

Then edit the /etc/lilo.conf. Copy the parts that configure your "normal" system start and change the name of the configuration. Also change the name of the kernel binary to /linux-2.0.34 (e.g.).

Then proceed with the next kernel in identic behaviour. Nothing can be overwritten during this process, because all of the kernel compilation is done in its separate directory /usr/src/linux-2.x.y, and all the generated modules will be put in a separate directory /lib/modules/2.x.y, and your zImage copy (residing in /) will have a new name, as you have used an other kernel version.

When you're through with all your kernel versions and have added the last portion to the /etc/lilo.conf file do a

 
  lilo
at the prompt which will make lilo reinstall the boot manager with the changed values. Now reboot, press [TAB] at the LiLo prompt and choose a kernel to use. If you followed these steps, you will not have deleted your original entry in /etc/lilo.conf, so if none of your newly compiled kernels can boot properly, you can still boot the old kernel.

Hope it helps,

H.-G. Esser


Secondary IDE interface CDROM detection/automounting tip

Date: Wed, 1 Jul 1998 14:09:24 -0400
From: Jim Reith, reith@racores.com
In the Linux Gazette #28 the question was asked:
Hello.I have the Linux Slackware 2.0.30 Walnut Creek.I installed it on a Pentium 200 MMX with a 24x CD-ROM. During the installation I had to write "ramdisk hdd=cdrom" for reading the CD-ROM, but after the installation Linux doesn't see the CD-ROM. I have an atapi CD-ROM, and when I tried to compile my kernel another time, I saw that atapi is the default !!! So I don't understand where is the problem . What can I do?
I ran into this same problem on my home machine. I found that the rc.cdrom script wasn't checking for my drive properly. It couldn't find /dev/hdc and I had to change/add in /dev/hd1a in order to get the master on the secondary IDE interface. Once I put that in the list it worked fine. I would suspect you should use /dev/hd1b for the slave?

Jim Reith reith@racores.com


Re ext2 partitions

Date: Thu, 2 Jul 1998 21:25:27 +0100
From: Alex Hornby, ahornby@plasma.ddns.org

A much simpler solution to Albert T. Croft's file finding troubles of only wanting to look at ext2 drives so as to exclude the vfat partitions is:

 
find . -fstype ext2 -name foo
Replacing foo with whatever you are looking for.

Cheers, Alex.


pdf resumes: pdflatex

Date: 04 Jul 1998 11:42:17 -0700
From: Karl M. Hegbloom, karlheg@inetarena.com

Dave Cook, the man who wrote the 2cent tip about createing a .pdf file of a resume, must not have the latest TeTeX installed. Either that, or he's not explored it much. ;-)

There is a `pdflatex' now, that creates .pdf files directly. It works really well. There is also `pdftex', and `pdftexinfo'. You can typeset texinfo documents with `info2pdf' now.

Last time I tried it, there was an off by one bug, apparently... When you click a section heading in the table of contents panel, it would jump to one section lower than the one you click. The bug has been reported to the Debian bug tracking system.

Karl


Re: CHAOS

Date: Fri, 03 Jul 1998 16:07:14 +0100
From: Dom Mitchell, dom@phmit.demon.co.uk

A point to note: the IP addresses used for the network should probably be modified to be in one of the ranges set aside in RFC 1918. In summary, they are:

 
     10.0.0.0        -   10.255.255.255  (10/8 prefix)
     172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
     192.168.0.0     -   192.168.255.255 (192.168/16 prefix)
These addresses are guaranteed to not be in use on the Internet, should you get connected later. See the RFC for the full rational.

Dom Mitchell


Re: 3com network cards

Date: Fri, 03 Jul 1998 20:33:13 +1000
From: leon, leon@desiin.com

Re: complaint about 3com network card being slow in 2c tips.

3com 3c590 3c900 and 3c905 cards have a setting stored into them. Unlike traditional settings like IO port , Interrupt, or media type, these cards just take one setting ...

They actually have a setting that slows down the card so that the CPU time isnt chewed up with a flood of network traffic.

There is also a maximum throughput setting and a medium setting.

leon


ext2 Partitions

Date: Thu, 2 Jul 1998 17:58:32 -0700 (PDT)
From: David Rudder, drig@noses.org

In your 30th issue, Albert Croft wrote in with a script to search only ext2 partitions. I believe you can do the same thing by using

 
find / -fstype ext2
David Rudder


RE: Searching (somewhat in vain) for sources on shell scripting

Date: Mon, 06 Jul 1998 12:37:05 -0400
From: "Paul L. Lussier", plussier@BayNetworks.COM

Well, my 2 sec search turned this up. In addition, www.oreilly.com is the only site you need for the definitive source on anything related to Unix.

Unix Shell Programming Revised Ed.
Kochan, Stephen G.; Wood, Patrick H.
0-672-48448-X
Hayden Books

Korn Shell Programming Tutorial
Rosenberg, Barry
0-201-56324-X
Addison Wesley

AWK Language Programming; A User's Guide for GNU AWK
Robbins, Arnold D.
1-882114-26-4
Free Software Foundation

Learning Perl, 2nd Edition
2nd Edition July 1997
Randal L. Schwartz & Tom Christiansen Foreword by Larry Wall
1-56592-284-0
302 pages, $29.95

Programming Perl, 2nd Edition
Larry Wall, Tom Christiansen & Randal L. Schwartz
2nd Edition September 1996
1-56592-149-6
670 pages, $39.95

Advanced Perl Programming
By Sriram Srinivasan
1st Edition August 1997
1-56592-220-4
434 pages, $34.95

Paul


Re: $.02 tips on ext2 Partitions

Date: Mon, 06 Jul 1998 13:23:42 -0400
From: "Paul L. Lussier", plussier@BayNetworks.COM
In the July 1998 issue of Linux Gazette, Albert T. Croft said:
We knew the files we were looking for would only be on the ext2 partitions. We tried writing a batch file, using grep and gawk to get the mount points for the ext2 partitions and handing them to find. This proved unworkable if we were looking for patterns, such as h2*. We then tried to write just a find command, using gawk and grep to get the mount points. This was somewhat better, but using a print statement in gawk to get the names of the mount points wouldn't work. Some help came with remembering that gawk has a printf statement,allow. Our final product, which we found quite useful and now have in our .bashrc > files as linuxfind, is the following:
find `mount|grep ext2|gawk '{printf "%s ", $3}'` -name
A quick perusal of the mount man page would have revealed the -t flag obviating the necessity of the grep and gawk in the above command. Therefore the command could have been shortened to:
 
	find `mount -t ext2` -name
Also, the "locate" command is also available on linux (and has been documented within the pages of LG and LJ a number of times). From the man page:
locate searches one or more databases of file names and displays the file names that contain the pattern.
In addition, one could use 'which', 'whence' and 'whereis' to assist in the location of files.

Paul


LG30 ext2 Partition tip

Date: Fri, 10 Jul 1998 21:31:03 +0100 (BST)
From: Simon Huggins, huggie@dial.pipex.com

Thanks for your tip which I saw in the Linux Gazette.

I think you may want to add the -mount switch to your command line though.

That way find won't go onto other filesystems except those listed.

Since on my system, / is ext2 and /hdd/c is vfat, without the mount switch, find *WOULD* search the vfat partitions too. The mount switch limits it to those partitions which you list with your grep/gawk combination

Hope that helps.


Modem Connecting Speed

Date: Wed, 22 Jul 1998 23:06:27 +0000
From: NP, np@cableinet.co.uk

What speed is my modem connecting at ?

Got a new 56K modem and wondering how it's doing ? Fed up with seeing "115200" ?

(This assumes Red Hat 5.0)...

Edit /etc/sysconfig/network-scripts/chat-ppp1 (or whatever chat file you use) Insert a line:

 
'REPORT' 'CONNECT'
Edit /etc/sysconfig/network-scripts/ifup-ppp

Change this line:

 
connect "/usr/sbin/chat $chatdbg -f $CHATSCRIPT"
to:
 
connect "/usr/sbin/chat $chatdbg -f $CHATSCRIPT" 2>/dev/console
- to log to the console, or:
 
connect "/usr/sbin/chat $chatdbg -r /var/log/modem-speed -f $CHATSCRIPT"
- to log to a file /var/log/modem-speed

You'll see entries like:

 
chat:  Jul 22 22:31:06 CONNECT 52000/ARQ/V90/LAPM/V42BIS
(If you're lucky!)

NP


Short Article on upgrading to SMP

Date: Mon, 27 Jul 1998 16:06:08 -0500 (CDT)
From: Andy Carlson, andyc@andyc.carenet.org

My son and I upgraded to an SMP machine this last weekend. We encountered some problems, and thought it might make an interesting short article. Use it if you can :).

About a month ago, I acquired two 4.3GB UW SCSI drives from IBM. At the time, I was running an old Adaptec 1542 SCSI card (with no problems I might add), but it does not support Ultra Wide, and it was an ISA card. In the process of looking at PCI Ultra Wide SCSI Cards (I was going to purchase an Adaptec 2940UW since I had some experience with them), I came across a Micronics W6-LI motherboard, dual Pentium Pro, with builtin Adaptec AIC7880 SCSI UW chip. This is the story of that project.

My son and I started at 8:00 Saturday morning. We took my existing ATX machine, which housed an Intel VS440 motherboard, 2GB IDE drive, 2GB SCSI drive, and SCSI cdrom apart. We removed everything - Motherboard, Drives, Powersupply, etc. This is because the Micronics board is big, and we wanted as few obstructions as possible while we put the motherboard in. We put the motherboard, two 4.3GB UW drives, CDROM, and powersupply back in. I only needed the data from the IDE drive, so we hooked that up also, but did not install it in the case. We booted into the bios, and set a few things, including setting it to use the MP1.4 spec. We inserted the Slackware 3.4 boot and root disks, and it booted just fine. The hardware portion was a snap.

We set up the partitions on the two UW drives, and copied the data from the IDE drive to a partition on the frist UW drive. We then started the installation of Linux. We installed the Slackware 3.4, with kernel 2.0.30. This went well. We booted, and this came up. We were anxious to try SMP, so we compiled a kernel with SMP, and this was where the problems started. The machine would hang after running about a minute in SMP mode. We decided to download a newer kernel, so we tried 2.0.34. There is apparently a nasty bug in 2.0.34 on SMP machines. The SCSI chip could not be reset, and was looping trying to do this. We also tried 2.0.35, with no luck. This behaviour happened whether we compiled for single or multiple processor. The next step was to try a development kernel (this was the first time for me). We downloaded 2.1.107, and installed it. We also found that to use this kernel, we need updated binutils, modutils, libc, ld.so, procps, procinfo, and mount. The upshot of this was, that 17 hours after we started, we had a running multiprocessor machine.

Some things to keep in mind:


Cross-platform Text Conversions

Date: Thu, 30 Jul 1998 14:28:37 +0900
From: Matt Gushee, matt@it.osha.sut.ac.jp

Well, I had some text files that I needed to convert from UNIX to DOS format. Downloaded the 'unix2dos' program ... and discovered to my horror that it was an A.OUT BINARY! Thought they'd purged all of those from the archives ;-) But seriously, I couldn't run the program, so I came up with a Tcl script to do the job. It can convert text files in any direction between UNIX, DOS and Mac formats. It has only been tested w/ Tcl 8.0, but since it's very simple, I imagine it'll work with earlier versions too. It has a small bug: when converting from DOS format, it adds one extra newline at the end of the file.

Why Tcl? Well ...

To use the script, you should:
  1. If necessary, edit the pathname for tclsh.
  2. Save it wherever you want to, with any name (I call it textconv.tcl), and make it executable.
  3. symlink it to any or all of the following names, depending on which conversions you want to do, in a directory in $PATH:
    d2m	d2u	m2d	m2u	u2d	u2m
    
    These names must be exactly as shown in order for the script to work.
  4. To use, type the appropriate command with a source file and destination file as arguments. For example, to convert a Mac text file to UNIX format:
    $ m2u macintosh.txt unix.txt
    
That's it! Hope you find it useful.
------ cut below this line ------------------------------
#!/usr/bin/tclsh

# capture the command name that invoked us and the
# source and destination filenames
set convtype $argv0
set infile [lindex $argv 0]
set outfile [lindex $argv 1]

set inchannel [open $infile "r"]
set outchannel [open $outfile "w"]

# according to the command name, set the end-of-line
# and end-of-file characters to the appropriate values
switch -glob -- $convtype {

    *2d {
	fconfigure $outchannel -translation "crlf" -eofchar "\x1a"
    }

    *2m {
	fconfigure $outchannel -translation cr
    }

    *2u {
 	fconfigure $outchannel -translation lf -eofchar ""
    }

    default {
	error "Invalid command name. This script must be \n\
invoked through a symbolic link with\n one of the following \
names:\n d2m, d2u, m2d, m2u, u2d, or u2m."
    }
    
}

while {[gets $inchannel line] >= 0} {

    # if converting from DOS, lose the end-of-file character
    if {[string match "*d2*" $convtype]} {
	set line [string trimright $line "\x1a"]
    }

    puts $outchannel $line

}

close $inchannel
close $outchannel
#------------ end Tcl script--------------------------------
Matt Gushee Oshamanbe, Hokkaido, Japan


Published in Linux Gazette Issue 31, August 1998


[ TABLE OF 
CONTENTS ] [ FRONT PAGE ]  Back  Next


This page maintained by the Editor of Linux Gazette, gazette@ssc.com
Copyright © 1998 Specialized Systems Consultants, Inc.

"Linux Gazette...making Linux just a little more fun!"


News Bytes

Contents:


News in General


 September Linux Journal

The September issue of Linux Journal will be hitting the newsstands August 7. The focus of this issue is Graphics and Multimedia and we have feature articles on LibGGI, Open Inventor, XIE, VTK, SGI audio applications and more. Check out the Table of Contents at http://www.linuxjournal.com/issue53/index.html. To subscribe to Linux Journal, go to http://www.linuxjournal.com/ljsubsorder.html.


 StarOffice Promotional Price

Date: Fri, 17 Jul 1998 09:49:44 GMT
Caldera is pleased to announce that for a limited time, the Office Suite StarOffice 4.0 for Linux is on sale for $49 (regularly $99).

This price is for a commercial license to the most popular and full- featured application suite on Linux. StarOffice 4.0 includes:

In a recent product review, SCO World declared StarOffice "better than MS Office", and with "No crashing and no waiting, the only reason people are still using other office packages is they haven't tried StarOffice yet!" (June/July 1998, page 34)

For more information: http://www.caldera.com/
Bryan Standley, bryanst@caldera.com


 Atlanta Linux Showcase Registration is Open

Date: Fri, 17 Jul 1998 10:30:48 GMT
Online registration for the 2nd Annual Atlanta Linux Showcase is now open!

The registration process has been automated this year, and pre-registration for the conference sessions will require payment with a credit-card from our secure web server. Prices for the showcase are as follows:

Exhibition Hall Admission: FREE! (A registration is required)
Conference pre-registration: $60/day ($35/day for students/seniors)
Conference after October 1: $75/day ($50/day for students/seniors)

The 2nd Annual Atlanta Linux Showcase will be held October 23rd and 24th at the Atlanta Apparel Mart and is presented by the Atlanta Linux Enthusiasts and Linux International. The showcase will feature an exhibition hall for vendors of Linux related hardware, software, and services, live demonstrations of Linux related products, and conference sessions featuring some of the most respected members of the Linux community.

For more information:
http://www.ale.org/showcase/
registration@ale.org


 The Antarctic Project - OpenSource WWW/FTP/mailing list hosting

Date: Mon, 20 Jul 1998 10:40:15 GMT
Have a killer OpenSource application, but no where to host the web pages? Want to let the world read your Perl tutorial? Need a home for your Linux Users Group?

Penguin Computing is proud to announce the Antarctic Project, an internet server specifically for OpenSource/Linux web pages, mailing lists and ftp sites. If you have a site that needs a home, we may be able to host it on the Antarctic Server. This service is completely free.

The Antarctic Project is limited to sites having to do with Linux or other OpenSource projects. All sites must be non-commercial. Internet connectivity is provided by Penguin Computing ISP services. The Antarctica Server is located in Silicon Valley, and has a 100 Megabit connection to Mae-West and CIX-PAIX.

For more information: isp@penguincomputing.com
http://www.penguincomputing.com/antarctic.html


 Microsoft ordered to show Windows95 source with Caldera (fwd)

Date: Wed, 29 Jul 1998 10:42:11 -0700 (PDT)

http://www.sltrib.com/07291998/utah/45304.htm

"Microsoft Corp. must hand over the computer source code for Windows 95 to Caldera Inc., a small Orem software company suing it for alleged antitrust violations, a Utah federal judge ruled Tuesday. "

[...]

"The judge did agree to warn the Caldera experts and lawyers the code cannot be used for any purpose other than the litigation. Jardine said Microsoft will provide the code within five days. "

Three Point's Linux News --- http://www.threepoint.com/


 Linux Links

"Choice is Not a Four Letter Word" by Joshua Galun, http://www.shawmag.com/archive/0105/01.html

Oracle and inofrmix now on Linux: http://www.infoworld.com/cgi-bin/displayStory.pl?980717.whorlinux.htm

"Engineers and Linux": matsumoto.txt

Linux in the Enterprise? (Wired News Daily): http://www.wired.com/news/news/email/explode-infobeat/technology/story/13621.html

Pre-installation checklistnini-HOWTO: http://members.tripod.com/~algolog/lnxchk.htm

SmallEiffel is a GPL implementation of Eiffel, a simple yet full-featured object-oriented programming language: http://sunsite.unc.edu/pub/Linux/devel/lang/eiffel/
http://www.loria.fr/SmallEiffel

Linux questionnaire: http://aachen.heimat.de/alug/fragebogen/

Beowulf questionnaire: http://aachen.heimat.de/alug/beowulf/


 Digital Library Project

Date: Fri, 17 Jul 1998 10:30:19 GMT
Announcing a new Linux project: The Digital Image Library Project (DILP). DLIP is an online image database that would be used to archive images for searching and viewing. Currently slide libraries used by art historians consist of tens of thousands of individual 35 mm slides. These slides are organized, and sometimes there information is index in a computer. But never all of images and there information. The goal of this project is to create a database with a web interface that can be used from multiple locations to allow researchers access a digital index.

For more information:
http://www.hp.uab.edu/digital-library
Ed Kujawski, kujawski@cter.eng.uab.edu


 Subject: Linux Hardware Certification Laboratory Announced

July 1, 1998, Dallas, Texas

Aegis Data Systems and Best4u Internet Services today announced a joint collaboration to establish a testing center for Linux hardware compatibility. The focal point of the center will be a web site at http://Linux.Best4u.com/, which will be online by August 1, 1998. The web site will be used to publish results of tests and provide a central registration for hardware manufacturers and Linux device driver programmers.

For more information:
Mark Stingley, sarge@AegisData.com


Software Announcements


 Informix SE on Linux

Informix Corporation has announced the release of Informix SE on Linux. Informix SE is a SQL-based database engine for small to medium-range applications. It is a solution for businesses that want the power of SQL without the complex database administration requirements. Linux application developers are now able to download a free developer<\#146>s kit that includes Informix SE, ESQL/C for Linux, Informix<\#146>s SQL toolkit, I-Connect (the runtime version of ESQL/C). Informix SE and ESQL/C in Linux is available from Caldera and S.u.S.E on the Intel platform.

For more information:
Informix Software, Inc., http://www.informix.com/


 CALDERA ANNOUNCES SUPPORT OF KDE TECHNOLOGY

OREM, UT July 16, 1998 Caldera, Inc. today announced the adoption and support of KDE technology. Caldera will include the K Desktop Environment in the OpenLinux 1.2.2 maintenance release due out the end of September. KDE will be the default desktop in the Caldera OpenLinux 2.0 product, scheduled for release the fourth quarter of this year.

Caldera is supporting KDE technology by hosting the official KDE U.S. FTP site at ftp.us.kde.org. Provided by Caldera, KDE 1.0 binary and source rpms for OpenLinux 1.2 are available for download from the site.

The K Desktop Environment is an international Internet based volunteer project which develops the freely available graphical desktop environment for the UNIX platform.

For more information:
Caldera, Inc., http://www.caldera.com/
KDE, http://www.kde.org


 Ingres port to Linux

Date: Thu, 9 Jul 1998 12:32:13 -0700
The NAIUA (North American Ingres Users Association) would like to announce that Computer Associates has committed to porting the Ingres II RDBMS to Linux by the end of Q3 1998. It will be included on the UNIX Software Development Kit which will be available for free on the CA Web site at http://www.cai.com/. (Note: the SDK currently available on CA's web site is for Windows NT only and does not yet include Ingres for Linux)

Ingres II for Linux was demoed with Red Hat at CA-World 98 and will be available for Linux platforms running Red Hat 2.0 pl27 as well as other compatible versions. It will be free with the Ingres II SDK for UNIX. Support structures have not been determined by CA at this time.

For more information: Bob Griffith, tech_tools@naiua.org


 Java Released Under Open Source

Date: Tue, 14 Jul 1998 14:34:03 -0700
Berkeley, CA - Transvirtual Technologies, Inc. announces the release of Kaffe OpenVM(TM), the first complete independent implementation of Java(TM) available under the ``Open Source'' initiative. Unlike other third-party VMs, Kaffe comes with a "just-in-time" compiler and a complete set of class libraries, including Beans and AWT.

Kaffe was designed from day one to be highly portable and to provide a complete Java environment in the smallest possible memory footprint. It has already been ported to a number of processors, including the x86, StrongARM, MIPs, 68K and Alpha, and can provide a full graphical environment in as little as 500K (including VM and class libraries).

For more information:
http://www.transvirtual.com/
Tim Wilkinson, tim@transvirtual.com


 Game Textures CD1

Date: Tue, 21 Jul 1998 19:52:04 -0500
AUSTIN, TX- Crack dot Com, developer of the cult-hit Abuse and the anticipated 3D real-time strategy title Golgotha, has made available a CD specifically tailored for game artists titled "Game Textures CD1".

Crack dot Com released "Game Textures CD1" today for sale. CD1 is a compilation of textures gathered from outdoor environments, buidling faces, and military and civilian vehicles. These high-resolution textures were specifically designed by Crack artist Kevin Tyler for use by game artists who demand high-detail tileable textures for use in 3D games, and many of the textures appear in Crack's upcoming title Golgotha.

CD1 is currently available only directly through Crack dot Com. An order form and index of the textures is available at http://crack.com/.

For more information:
textures@crack.com
Dave Taylor, ddt@crack.crack.com


 JPython-1.0 Provides a Powerful Companion to Java

Date: Thu, 23 Jul 1998 08:59:43 -0700 (PDT)
Reston, VA -- The Corporation for National Research Initiatives has announced the release of JPython-1.0. JPython is a freely available implementation of the high-level, dynamic, object-oriented language Python -- integrated seamlessly with the Java(TM) platform and certified as 100% Pure Java(TM).

JPython's integration with Java draws on the strengths of the Java platform. JPython code can easily access any existing Java libraries and JavaBeans. The Java virtual machine allows JPython to statically compile Python source code to Java bytecodes that will run anywhere that Java does. Through Java's support for dynamic class loading, JPython can dynamically compile Python code to allow interactive use while still achieving the performance of a true compiler.

Guido van Rossum created the Python language in the early 1990s, and it has been used successfully in many interesting software projects since then.

JPython completely implements the Python language in 100% Pure Java, and is freely available in both source and binary form. In order to implement Python's Perl5-compatible regular expressions, JPython includes the outstanding OROMatcher(TM) regular expression engine developed by Original Reusable Objects(TM) at http://www.oroinc.com/ By agreement, this regular expression engine is only distributed in binary form. JPython can be found at http://www.python.org/jpython/.

For more information:
Jim Hugunin, hugunin@python.org


 NetStreamer 0.16 available: Streame audio over 28k8, ISDN or LAN

Date: Thu, 9 Jul 1998 10:48:02 GMT
NetStreamer offers the possibility to stream audio over your 28k8 modem or ISDN at a sample rate of 8 or 16 kHz. It offers a fancy radio-alike frontend that allows you to tune in on "radio-programs" that are offered by the NetStreamer Server, which is a kind of reflector that passes on audio that may be offered by several transmitters.

Currently NetStreamer-0.16 is available. You can download the NetStreamer software (The Server, Receiver and Transmitter) from:

http://flits102-126.flits.rug.nl/~rolf/NetStreamer.html

The software is distributed in source and binary form under GPL.

For more information:
Rolf Fokkens, rolf@flits102-126.flits.rug.nl


 CurVeS 0.8.3 -- console UI for CVS

Date: Thu, 9 Jul 1998 10:41:51 GMT
CurVeS performs two functions. It provides a menu and command completion interface to CVS so that inexperienced users can learn the features of CVS without documentation. This also involves adding some meta-features that are built from CVS commands which are used together in some common-use circumstances. The second function of Curves is to provide visual presentation of a project directory so that the status of each file is comprehensible at a glance. CurVeS uses color, when available, to accent the file classification marks.

ftp://ftp.netcom.com/pub/el/elf/curves/ in the file curves-0.8.3.tar.gz and curves-0.8.3.lsm

Runs on any UN*X. Tested on GNU/Linux and Solaris. C++ necessary to build from source. CVS and possibly RCS to use.

For more information:
Marc Singer, elf@netcom.com


 urlmon 3.0 -- URL monitoring software

Date: Thu, 9 Jul 1998 10:50:08 GMT
urlmon version 3.0 is released, now with ability to filter out portions of HTML data so that things like rotating advertisements don't give false positives. The filtering capability is quite flexible, and it user-extensible. The code has been cleaned up, making it much more elegant and simple. The format of the urlmonrc database file has changed, and this causes problems addressed in the various documentation files. Some enhancements have been made to make urlmon more conducive to scripting.

urlmon is the URL Monitor. It reports changes to web sites (and ftp sites, too).

http://sunsite.unc.edu/pub/Linux/apps/www/mirroring/urlmon-3.0.tgz (soon)
http://source.syr.edu/~jdimpson/proj/urlmon-3.0.tgz

For more information:
http://source.syr.edu/~jdimpson/urlmon/
Jeremy D. Impson, jdimpson@acm.org


 GramoFile 1.1 - Gramophone records to CDs

Date: Wed, 15 Jul 1998 11:28:30 GMT
GramoFile is a computer program, running under the Linux operating system, with the main goal of putting the sound of gramophone records on CDs. The program is not finished yet (and maybe never), but it is able to do a lot of useful things already. Like removing ticks and splitting a long sound file into separate tracks. This program was originally written by Anne Bezemer and Ton Le as a study project at the department of Information Technology and Systems (sub-department of Electrical Engineering) of the Delft University of Technology, The Netherlands. However, development has continued after the end of the project, resulting in the program as it is now (read: much more functional :).

The new version 1.1 is available at the GramoFile Home Page:
http://cardit.et.tudelft.nl/~card06/

For more information:
J.A. Bezemer, J.A.Bezemer@ITS.TUDelft.NL


 WavPlay/GnuWave Update

Date: Wed, 15 Jul 1998 09:39:55 GMT
WavPlay-1.0 was the last LINUX sound play/record program that was released to the net, with 2 levels of patches.

This a short note to announce that the "home web page" for the WavPlay software is moving (since I am also moving, and will change ISP + email addresses etc.)

To find out what is currently happening with the new WavPlay software, visit the new "home page" at:

http://members.tripod.com/~ve3wwg/

For more information:
Warren Gay VE3WWG, ve3wwg@yahoo.com


 aumix 1.9: adjust an audio mixer

Date: Wed, 15 Jul 1998 10:33:10 GMT
I've uploaded aumix 1.9, a program for adjusting an audio mixer from the console, a terminal, the command line or scripts. Here's what's new:

* interactive screen won't show channels that don't exist * should build without automake or autoconf * might compile under FreeBSD * muting function should work for everyone now * left and right levels shown with "L" and "R" in interactive screen * fixed small bug with adjustment by mouse * usage text printed when mixer file can't be opened

WWW access: http://jpj.net/~trevor/aumix.html
Primary-site: http://sunsite.unc.edu/pub/Linux/apps/sound/mixers/ Files: 40898 aumix-1.9.tar.gz and 638 aumix-1.9.lsm

For more information:
Trevor Johnson, trevor@jpj.net


 locus 0.85 - a fulltext database

Date: Mon, 20 Jul 1998 10:22:43 GMT
locus lets you find words in your texts: newsgroup messages, Web page mirrors, electronic books - whatever you have. It uses word patterns (order, locality etc.) to match queries to texts, makes reasonable choices by default yet does exactly what you want when you specify it.

locus homepage: http://www.cermak.cz/~vbarta/

For more information:
Vaclav Barta, vbar@comp.cz


 S-PLUS 5.0 for UNIX & LINUX

Date: Mon, 27 Jul 1998 11:53:59 -0700
On August 10, MathSoft will be announcing/shipping a new version of S-PLUS called S-PLUS 5.0 for UNIX and LINUX, a key new addition to MathSoft's statistical data mining family. This addition to the broadest line of statistical data mining software for business and academia comes with several significant upgrades, including:

  1. next generation S language, designed specifically for data visualization and exploration from Lucent Technologies,
  2. improved memory resourcing for large, rapid data set analysis,
  3. import & export data from virtually any source (SAS, SPSS, Excel, Lotus, and more),
  4. more statistical modeling and analysis functions,
  5. complete system for calender time series analysis and
  6. support for additional UNIX operating systems, such as HP, IBM and SGI.
For more information:
Lisa Hiland, lisah@schwartz-pr.com


 NetBeans Developer 2.0, Beta 2

Date: Tue, 28 Jul 1998 12:02:08 +0200
Prague, Czech Republic, July 28, 1998 - NetBeans, Inc. today released the second Beta version of its well-received Integrated Development Environment (IDE) written entirely in the Java(TM) language and based on Sun's Java Foundation Classes framework. NetBeans Developer 2.0 - Beta 2 is available for free download from the company's web site, http://www.netbeans.com. NetBeans IDE is a full-featured visual programming environment that allows flexible development on any platform which supports JDK 1.1.x, including NT, Win95, Linux, OS/2, Solaris, HP-UX, and others.

NetBeans IDE will ship in two versions - Developer and Enterprise. NetBeans Developer was created for the single developer working on a desktop PC. NetBeans Enterprise was designed as a multi-user, multi-platform product. Users can fully exploit the object-oriented nature of the IDE, design distributed applications based on RMI/CORBA, share virtual filesystems, debug remotely, and access source control systems.

The second beta version of NetBeans Developer 2.0 is now available and can be downloaded from the NetBeans Website at http://www.netbeans.com. NetBeans Developer 2.0 is scheduled for release in the third quarter of 1998, and will retail for approximately $149. Pricing and availability of NetBeans Enterprise will be announced in September, 1998.

For more information:
NetBeans, Inc. Helena Stolka, helena.stolka@netbeans.com


 Caldera Releases NetWare for Linux 1.0

OREM, Utah, July 30 /PRNewswire/ -- Caldera(R), Inc. today announced the release of NetWare(R) for Linux 1.0. Caldera NetWare for Linux provides NetWare file, print and directory services ready to run (native) on a Linux distribution. With NetWare for Linux, Caldera brings the most-widely used networking operating system to Linux with full client support and integrated administration utilities. NetWare for Linux is a component of the Caldera Small Business Server scheduled for release later this year.

A NetWare for Linux three-user version is now available for download at no cost from the Caldera Web site (http://www.caldera.com/products/netware). Bump packs can be purchased in user license increments of 1 ($95), 5 ($450), 25 ($1,875), or 50 ($2,750). A $59 two-CD jewel case version offering a complete NetWare solution including NetWare for Linux, NetWare utilities and OpenLinux Lite 1.2 will be available mid-August.

For more information:
Caldera, Inc., http://www.caldera.com/


Published in Linux Gazette Issue 31, August 1998


[ TABLE OF 
CONTENTS ] [ FRONT 
PAGE ]  Back  Next


This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com
Copyright © 1998 Specialized Systems Consultants, Inc.

"Linux Gazette...making Linux just a little more fun!"


(?) The Answer Guy (!)


By James T. Dennis, answerguy@ssc.com
Starshine Technical Services, http://www.starshine.org/


Contents:

(?)Greetings From Jim Dennis

(?)Remote Backups (Yet Again) --or--
Remote Backups: GNU 'tar' through 'rsh'
(?)Assigning UID/GID --or--
UID/GID Synchronization and Management
(?)How to check your modems connect speed?
(?)win95 slowdown --or--
Win '95 Hesitates After Box Has Run Linux?
(?)Bad Cluster
(?)XFree86 on Trident Providia 9685
(?)redhat linux 5.0 and reveal sc400 rev a sound card --or--
Reveal SC400 Sound Card: OSS/Linux and OSS/Free Supported?
(?)Kernel Overview needed....
(?)Printing Solaris -> Linux --or--
Remote lpd Solaris to Linux
(?)Lilo not working on SCSI when IDE drives installed
(?)Yggdrasil: A Breath of Life for the Root of the Linux Distributions? ...and what about OpenLinux Base?
(?)115K Baud from a Modem: In your dreams!
(?)Linux NDS --or--
Linux as a Netware Directory Srvices Printer Client?
(?)What is an RPM?
(?)Stupid question --or--
AnswerGUY? Who is Heather?
(?)'sendmail' requires DNS ... won't use /etc/hosts
(?)Question on Memory Leak --or--
Memory Leaks and the OS that Allows Them
(?)X Window with two monitors...
(?)DAO software for linux?


(?)Greetings From Jim Dennis, August 1998

By now you've probably heard it a dozen times:

Oracle Announces Intent to Support Linux
Informix Releases Linux version of their SQL Engine

... so, what does that mean.

Well, the good part is that Linux will get more respect from many IT departments. It will be easier for sysadmins to recommend Linux, FreeBSD, and similar solutions. There also will be a flurry of other software companies that will also jump in and port their software to this new, upstart Unix implementation. The Informix announcement was re-iterated at just about the same time and Inprise (formerly Borland) had already made Interbase available awhile back). I expect that Lotus Notes and Domino aren't too far behind, and I wouldn't be surprised to hear that SAP (publishers of the R/3 ERP system) were quietly talking to S.u.S.E. (I seem to have heard that Adabas is one of the supported db engines for SAP R/3, and that has been available for Linux for some time).

There's also an interesting teaser at the Caldera website (http://www.caldera.com/openlinux/index.html) regarding an impending "Netware for Linux" --- which should be an interesting server platform (Netware's implementation of ACL's, access control lists -- always seemed better then the others I've seen. So, if you really need them on a fileserver, this might be the way to go).

We've also heard that the server software isn't the only niche that's discovering Linux. Regulars of Slashdot () and the Linux Weekly News (http://www.lwn.net), and any of the major Linux newsgroups and mailing lists are also probably aware that Corel has announced projects to port their whole office suite to Linux (they've had versions of WordPerfect available for awhile, and one of their affiliates, Corel Computing --- a hardware concern --- is using a StrongARM port of Linux which they helped develop as the core of their NC --- network computer). Presumably they will also consider porting their flagship CorelDraw package, which has been been available for some other Unix platforms for some time).

http://www.corel.com/news/1998/may/linux.htm

Of course it's already joining the fray with Applixware, StarOffice, Cliq Suite, Wingz, XessLite, and NeXS, among others.

So, the commercial software is coming. Linux will take yet another step from hobbyist "do-it-yourself" project towards a widespread platform for the masses.

Is there a downside to all of this? Naturally there are some risks. While I welcome the availability of Oracle, Informix and other major players to the Linux world --- I'd like to remind everyone that there are alternatives. See Christopher B. Browne's excellent list of these under his website at:

http://www.hex.net/~cbbrowne/

... Some of the commercial SQL engines for Linux that I've heard good reports about are Solid, JustLogic, and Infoflex. That's not to mention the free and shareware packages like PostgreSQL, mSQL, MySQL, and Beagle.

(There are differences in capacity and scalability --- many of these are currently limited to table locking rather than being able to lock individual records).

The big risk we now face is that we'll adopt and promote (or perpetuate) some application suite or tool with a proprietary set of file formats or interfaces. If Microsoft were to ship MS Office for Linux tomorrow --- we'd have the same essential problem that we have today. When someone sends you a Word .DOC, an Excel .XLS or a PowerPoint .PPT you're expected (by an alarming percentage of your correspondents) to be able to handle those files.

Everyone, (freeware and commercial third party vendors alike) is has been playing "catch-up" to this tune for far too long.

This issue of "open document formats" is far more important than choice of operating systems. What you run on your machine is none of my business. What you send to me in our business transactions is. Applix and StarOffice (and the free 'catdoc' and LAOLA filters) make a truly valiant effort to deal with some of these proprietary formats. They do so with some success (Word 2.0 seems fine, Word 6.x might be a bit dicey --- Word '97 documents die a horrible death).

If Microsoft moved quickly they might be able to "take over the Linux desktop" by providing "MS Office '98 for Linux." Personally I think that would be a shame. I think it would squelch some of the interesting work being done on LyX and Cicero, and various other "word processor" and desktop publishing interfaces for Linux.

So, before you rush out to embrace Oracle, and buy one of their servers --- take a look at some of the other DBMS packages that are out there. Give them a real try (feasibility and capacity test) before you commit.

On another note: I'd like to grant the first "Answer Guy Support Award" of the month to Sam Trenholme. He practically owns the comp.linux.misc newsgroups and answers alot more questions there than I get to in a month here. Thanks, Sam. We all owe, ya!

(I'll try to give these out about once a month --- to someone, somewhere, who answers lots of questions in some Linux tech support venue).

One final tidbit: I guess the press isn't getting all mushy on us. Either someone at Miller-Freeman's _sysadmin_Magazine_ doesn't like Linux or they were typing too fast when they wrote:

.... Linux is a 2-bit multi-user, multitasking variant of the UNIX operating system. (p 68, August, 1998; vol. 7 no. 8)

Can anyone find an extra 30-bits to send them?


(?)Remote Backups: GNU 'tar' through 'rsh'

From Ken Plumbly on 18 Jul 1998 in the comp.unix.questions newsgroup

Hi :

I'm sure this one will probably drive you crazy, I read your answer in LG issue 29 for remote backups, and did what the article said, but I get the response back from the server with the tape drive:

(!)Getting things like this working for the first time have driven me crazy in the past. So, it's certainly possible for them to do so again.
(Some friends might say that "crazy" is a state they've come to expect of me).

(?)permission denied.
tar: Cannot open user@host.our.domain:/dev/st0: I/O error

and in the messages file on the tape host is:

pam_rhosts_auth[7300]: denied to root@hostname.our.domain as user:
access not allowed

We are running redHat 4.2 with a connor 4gb tape drive.

I created a user on the tape server, and put a .rhosts file in the ~user directory but still no joy.

Any Ideas?
Ken

(!)Can you just run a command like:
rsh -l operator tapehost "id; pwd; ls -l /dev/st0"
... and get the desired results?
In my example I make some assumptions:
I'd run this command from root on the client and use the "-l operator" switch and argument to specify that I want rsh to access the "operator" account on the tapehost.
I'd create an account named "operator" on the tapehost machine. It would have no special privileges except that it would be a member of the "tape" group.
My copy of /dev/st0 on the tapehost would be owned by root.tape (the "tape" group) and would be mode 770 (writable by group).
This should allow what you want. Until you can use stock 'rsh' commands through this context --- your 'tar' commands are doomed. (Since GNU tar actually calls 'rsh' for that part of this work).
For more security you can use 'ssh' instead of 'rsh'
Next I would not use the command as you described it.
Tape drives are very sensitive to inconsistent latency (caused by transport of the data over a network and by any compression you attempt to do). If the data is not fed to the interface fast enough and at an even rate then the drive will have to stop, rewind a bit, and restart to get back to the right speed and tape position to continue writing.
This is called "shoeshining."
To prevent shoeshining we run a program called 'buffer' (Lee McLoughlin) on the "tapehost" (the machine that recieves the data over the network and writes it to the tape drive).
So that command would look like:
# tar czSf - .... | rsh -l operator tapehost "buffer -o /dev/st0"
Note the -S switch that we use to preserve "sparsity" in files --- that is to detect cases where the data blocks have not be continously allocated to the file --- where there are "holes" in the allocation map for the "empty" parts of the file's data. These sorts of files are commonly created with dbm libraries and other "hashing" algorithms that use file seek offsets as "indexes" into a file --- your /etc/aliases.pag file might be one of them. If you don't understand "holes" and "sparse" files (which are features of the Unix filesystem that aren't supported in some others --- though I know that Netware had them) --- don't worry about it. Just add the -S and it won't hurt anything even if there are no such files in the data set that you're working with.
Note that I use the c (create), z (compress) and f (file target) flags, and that the file target I specify is "-" (a dash). In Unix this usually indicates that the "standard output" device should be used. In other words, "-" (dash) is an idiom in a number of Unix/Linux commands. So, this command will write all of the tar file into the pipe.
On the recieving side of the pipe we have a local copy of 'rsh' that will try to connect to the "tapehost" as the user named "operator" and thereon try to run a command named "buffer" with the -o (output) of that pointed to the tape device.
How much difference does 'buffer' make? About an order of magnitude. Yes. You read that right --- on my network (which was completely idle at the time) I ran experiements with and without buffer (and with and without compression) and it would take 10 times longer to write the tape without 'buffer'. On top of all of that the tapes created without 'buffer' are much less reliable. So, failing to use that can be harmful to your data, and add immense amounts of wear and tear to the drive (shortening its useful life).
The 'buffer' command came with my copies of S.u.S.E. and might come with your copy of RH 5.x (although I don't think 4.2 had it). You can find that at:
http://src.doc.ic.ac.uk/public/public/packages/buffer
Imperial College, U.K./Great Britain where Lee McLoughlin is a a system manager, and programmer.
Lee McLoughlin is also known for an FTP mirror package he wrote and maintained in PERL a few years ago. He maintains a web page (http://www.doc.ic.ac.uk/~lmjm/) which doesn't mention this or the 'buffer' program but highlights some of his other work.
With RH 4.2 you might also be suffering from some confusion with your PAM configuration. You might have to change that around a bit or upgrade it to a new version.
If you were trying to access the root or any "root equivalent" account -- that is anyone with a UID of 0 (zero) you might have been bumping into the "/etc/securettys" problem. This is one of the other reasons why I configure my systems with an "operator" account and give that account access to the 'buffer' program and to the /dev/st0 node.
If you did tests with 'rlogin' that seemed successful (you were able to 'rlogin' to the account but not to run 'rsh' commands, keep in mind that these are separately configurable services in PAM.
Another constraint that is a bit more subtle: you cannot access 'rsh' and 'rlogin' commands through IP Masquerading. This is because the source IP port for an rsh or rlogin connection must be set to specific values
It's a very weak form of "authentication" on the part of the protocol, it was intended to ensure that the process on the client side of the machine was running with 'root's authority --- that it wasn't a random user's process just claiming to be anybody. That was almost reasonably 20 years ago before people had TCP/IP capable workstation on their desktops --- back when all of the "computers" were locking in server rooms and you wanted to create loosely coupled computing clusters within your domain. It is wholly inadequate and inappropriate on today's networks. That's why we have 'issh' and why I spend all night last night playing with the "Linux Free S/WAN" project (just search Yahoo! on that phrase).
(Free S/WAN is a project to implement secure, network level IP --- so that we can use transparent cryptography to protect applications layer protocols like rsh, and so many others. It's being developed internationally --- so that it will have to be imported into the U.S. --- this is because we're a "free nation" except when it comes to the practical application of advanced mathematics as a medium of expression).
In any event --- I really doubt that you're trying to access your tapehost through a masquerading router --- but if you are, you can expect that to fail.
From the error messages you show it looks like you do have the appropriate /etc/services entry and the appropriate entries in the /etc/inetd.conf. It also looks like you are not having a TCP wrappers problem in this case (since that would have given a different error message in the tapehost's syslog).


(?)UID/GID Synchronization and Management

From Gordon Haverland on 16 Jul 1998 in the comp.unix.questions newsgroup

Hi:

I inherited sys admin stuff as part of a job. At first, this wasn't a problem: GIS work on a single Linux machine. I did development and analysis, others did just analysis. Soon we got another Linux machine, so development moved to there. To share printing, Ethernet was installed and LPRng. Then a Solaris 2.5.1 machine was added. So, the 2 linux machines have a handful of users, the Sun has those plus a few other groups of users, and I plan to add a Beowulf cluster "real soon now". Is there any rationale out there for assigning UID and GID in a hetrogeous cluster/network like this? It sure looks like users common among machines have to have the same UID and GIDs. The Solaris has NIS on it, so I guess whatever I do should get administered from there. Thanks for any light you might shed on this.

Gordon Haverland

(!)I'm not sure what you mean by "rationale" on this context.
Do you mean:
"Why should I co-ordinate and synchronize the account management on the systems throughout my network?"
... or do you mean:
"How should I ....."
... or do you mean something else entirely?
I'll answer the first two questions (probably in far more detail than you wanted):
There are two principle reasons why you want to co-ordinate the user/UID and group/GID management across your network. The first is relatively obvious --- it has to do with user and administrative convenience.
If each of your users are expected to have relatively uniform access to the systems throughout the network, then they'll expect the same username and password to work on each system that they are supposed to use. If they change their password they will expect that change to be global.
When you --- as the admin --- add, remove, disable, or change an account, you want to do it once, in one place. You don't want to have to manually copy those changes to every system.
Of course these reasons don't require that the UID/GID's match. As you probably know names and group names in Unix and Linux are mapped into numeric forms (UID's and GID's respectively). All file ownership (inodes) and processes use these numerics for all access and identity determination throughout the kernel and drivers. These numeric values are reverse mapped back to their corresponding principle symbolic representations (the names) by the utilities that display or process that information. Thus the 'ls -l' command is doing a lookup on each directory entry to find the name that corresponds to the the owner and group ID's.
Most of the commands you use actually do this through library calls. In deed most of these commands are "dynamically linked" (use shared libraries) which perform the calls through common external files (the libc). As we'll see this is very important as we look at the implications of consolidating the account mapping information into a networked model (such as NIS).
As I said, you could maintain a network of systems which co-ordinated username/password data, and group membership lists without synchronizing the UID's and GID's across the systems. Most network protocols and utilities (the r* gang: rsh, rlogin, rcp, and things like telnet, ftp, etc) exchange this data in "text" (symbolic) form.
However, we then come to NFS!
The NFS protocols use numeric forms to represent ownership. Therefore an NFS server provides access based on an implicit trust that the NFS client is providing a compatible and legimate mapping of the cient's UID/GID to the server's.
It is possible in Linux' NFS implementation to run a ugidd (a UID/GID mapping daemon). Thus you could create maps for every NFS server to map each clients UIDs to this server's UID's, etc. Yes, that idea is as ugly as it sounds!
I won't go into the security implications of NFS' mechanism here. I'll just point out that my pet expansion of NFS is "no flippin' security." I'm told that it is possible to enable a "secure RPC" portmapper which implements host-to-host authentication. I'd like to know more about that.
However, it is still the case that any users who can get root access to any trusted NFS client can impersonate any non-root user so far as the NFS servers in that domain are concerned. Since "sufficient" physical access virtually guarantees that workstation users can get root access (possibly by resorting to a screwdriver and CMOS battery jumper) I come to the conclusion that NFS hopelessly insecure in today's common network configurations (which workstations and PC's at everyone's desks).
(In defense of NFS I should point out that its security model, and the one's we see in the r* gang were not unreasonable when most Unix installations had a small cluster of multi-user systems locked in a server room --- and all user access was via terminals and X-terminals. This suggests that there are some situations where they are still justified).
Despite these limitations and implications, NFS is the most commonly deployed networked filesystem between Unix and Linux systems. I have high hopes for CODA, but even the most optimistic dreams reveal that it will take a long time to be widely adopted.
So, it is in your best interests to synchronize your UID/GID to user/group name mappings throughout your enterprise. It is also recommended that you adopt a policy that UID's are not re-used. When a user leaves your organization you "retire" their UID (disabling their access by *'ing out their passwd, removing them from the groups maps, setting their "shell" to some /bin/denied binary and their "home" directory to a secured "graveyard" --- I use /home/.graveyard on my systems). The reason for this may not be obvious. However, if you are maintaining archival backups for several years (or indefinitely) you'll want to avoid any ambiguities and confusion that might result from restoring one (long gone) user's files and finding them owned by one of your new users.
(This "UID retirement" policy is obviously not feasible for larger ISP's and usually difficult for Universities and other high turnover environments. You can still make it a policy to cycle all the way around the UID/GID space before re-use).
That should answer the questions about "why" we want to co-ordinate account information (user/password, and group/membership data) and why many (most) of us want to synchronize the UID's and GID's that the accounts map to.
Now, we think about "how" to do so.
One common method is to use 'rdist' to distribute a set of files (usually /etc/passwd, /etc/group, and /etc/hosts) to every machine in a "domain" (this being the "administrative" sense of the term, which might or might not match a DNS domain or subdomain). For this to work we have to declare one system to be the "master" and we have to ensure that all account changes occur on that system.
This can be done by manually training everyone to always issue their 'passwd' 'chfn' 'chsh' and similar commands from a shell on that system, or you can create wrappers for each of the affected commands (replacing the client copies of these commands with a script that doesn't something like: 'ssh $master "$0"' for example).
The nice things about this approach are:
It works for just about any Unix and any Linux (regardless of the libraries and programs running on the client).
The new risks and protocols are explicitly put in place by the sysadmin --- we don't introduce new protocols that might affect our security.
There is no additional network latency and overhead for most programs running most of the time. You are never waiting for 'ls' to resolve user and group names over the network!
The concerns about this method are:
You have to ensure the integrity and security of the master --- I'd suggest requiring 'ssh' access to it and using PAM and possibly a chroot jail to limit the access of most users to just the appropriate commands.
All clients must "trust" the master -- they must allow that system to "push" new root owned system configuration files to them. I'd use 'rdist' or 'rsync' over 'ssh' for this as well.
You may have unacceptable propagation delays (a user's new password may take hours to get propagated to all systems).
It doesn't "scale" well and it doesn't conform to any standards. You (as the sysadmin) will have to do your own scripting to deploy it. Any bugs in your scripts are quite likely to take down the entire administrative domain.
Then there's NIS.
NIS is a protocol and a set of utilities and libraries which basically implement exactly the features we've just described. I've deliberately used several NIS terms in my preceding discussion.
NIS distributes various sorts of "maps" (different "maps" for passwords, groups, hosts, etc). The primary NIS server for a domain is called the "master" --- and secondary servers are called "slaves." Nodes (hosts, workstations, etc) that request data from these "maps" are called "clients."
One of the big features of glibc (the GNU libc version 2.x which is being integrated into Linux distributions as libc.6.x) is support for NIS. It used to be the case that supporting NIS on a Linux client required a special version of the shared libraries (a variant compilation of libc.5).
In Red Hat 5.x and Debian 2.x this will not be necessary. We expect that most other Linux distributions will follow suit in their next major releases. (This transition is similar to the a.out to ELF transition we faced a couple of years ago, and much less of a hassle than the infamous "procps" fiasco that we went through between the 1.x and 2.x kernels. Notably it is possible to have libc.5 and glibc concurrently installed on a system --- the major issue is which way your base system binaries and utilities are linked).
The advantages of NIS:
It's a standard. Most modern forms of Unix support it.
It's scaleable and robust. It automatically deals with capacity and availability issues by having two tiers of servers (master and slave).
It's already been written. You won't be re-inventing this wheel. (At the same time it is more generalized --- so this wheel may have more spokes, lug nuts, and axle trimmings than you needed or wanted).
The disadvantages of NIS:
NIS is designed to do more than you might want. It will default to providing host mapping services (which might conflict with your DNS scheme and might give you a bit of extra grief while configuring 'sendmail' --- at least the Solaris default version of 'sendmail'). These are relatively easy issues to resolve --- once you understand the underlying model. However they are cause for sysadmin confusion and frustration in the early stages.
It's not terribly secure. There is a NIS+ which uses cryptographic means to tighten up some of that. However, NIS+ doesn't seem to be available for Linux yet. That is probably largely the result of the U.S. federal government's unpopular and idiotic attitudes towards cryptography --- which has a generally chilling effect on the development and deployment of robust security. The fact that U.S. policy also recognizes patents on software and algorithms (particularly the very broad RSA held patents on public key cryptography) also severely constrains our programmers (they are liable if they re-invent any protected algorithm --- no matter how "obvious" it seemed to them nor how "independently" their derivation). Regardless of these political issues, I still have technical concerns about NIS security.
Hybrid:
You can use NIS within your domain, and you can distribute your NIS maps out to systems that are on the periphery (for example out to your web servers and bastion/proxy systems out on the "firewall" or "perimeter network segment." This can be combined with some custom filtering (to disable shell access by most users to these machines --- helping to ensure that the UID/GID mappings are used solely for marking file ownership --- for example).
NIS maps are is the same format as the files to which they correspond. Thus the NIS passwd map is a regular looking passwd file, and the NIS group map is in the conventional format you'd expect in your /etc/group file.
You might have to fuss with these files a bit to "shadow" them (or "star out" the passwords on accounts that shouldn't be give remote access to a given host).
Ideally I'd like to see a hybrid of NIS and Kerberos. We'd see NIS used to provide the names/UID's --- and Kerberos used for the authentication. However, I haven't yet heard of any movement to do this. I have heard rumblings of LDAP used in a way that might overlap with NIS quite a bit (and I'd hope that there'd be an LDAP to NIS gateway so we wouldn't have to transition all those libraries again).
Back to your case.
NIS sounds like a natural choice. However, you don't have to pick the Solaris system for the administration. You can use any of the Linux systems or any Solaris system (among others) as the NIS master. Since your Solaris system is probably installed on more expensive SPARC hardware, and it probably was purchased to run some services or applications that aren't readily available on your Linux systems --- it would probably be wiser to put up an extra Linux box as a dedicated NIS master and administrative console.
It doesn't sound like internal security is even on your roadmap. That's fine and fairly common. All the members of your team probably have sufficient physical access to all of the systems in your group that significant efforts at intranet (internal) security in software would probably be pointless.
I'd still recommend that you use "private net" addressing (RFC1918 --- 10.*.*.*, 192.168.*.* and the range of class B's from 172.16.*.* through 172.31.*.*) --- and make your systems go through a masquerading router (Linux or any of several others) or a set of proxies or some combination of these.
In fact I highly recommend that you fire up a DNS caching server on at least one system --- and point all of your clients at that, and that you install a caching web proxy (Apache can be configured for this, or you can use Squid --- which is my personal favorite). These caches can save a significant amount of bandwidth for even a small workgroup and they only cost a little bit of installation and configuration time and a bit of disk space and memory.
(The default Red Hat configuration for their 'named' rc file is to just run in caching mode. So that's truly a no brainer --- just distribute a new resolv.conf file to all the clients so that it refers *first* to the host that runs the cache. My squid configuration on a S.u.S.E. machine and has run, unmodified, for months. I vaguely remember having to edit a configuration file. It must not have been too bad. Naturally you have to get users to point their web browsers at the proxy --- that might be a hassle. With 'lynx' I just edit the global lynx.cfg file and send it to each host. Similar features are available in Netscape Navigator --- but you have to touch everyone's configuration at least once).
Once you have your workgroup/LAN isolated on its own group of addresses and working through proxies --- it is relatively easy to configure your router to filter most sorts of traffic that should not be trusted across domains and, especially, to prevent "address spoofing" (incoming packets that claim to be from some point inside of your domain).
You can certainly spend all of your time learning about and implementing security. However, the cost of that effort may exceed your management's valuation of the resources that are accessible on your LAN. Obviously they'll have to do their own risk and cost/benefit analyses on those issues.
I pay an undue amount of attention to systems security because it is my hobby. As a consultant it turns out to be useful since I can explain these concerns and concepts to my customers, and refer to them to specialists when they want "real" security.
To learn more details about how to setup and use NIS under Linux read the "The Linux NIS(YP)/NYS/NIS+ HOWTO" at: (http://www.ssc.com/linux/LDP/HOWTO/NIS-HOWTO.html). This was just updated a couple of weeks ago.
I guess there is support for NIS+ clients in glibc --- so that's new to me. I've copied Thorsten Kukuk (the author of this HOWTO) so he can correct any errors I've made or otherwise comment.
By the way: What is GIS? I've heard references to it --- and I gather that it has to do with geography and informations systems. Would you consider writing an overview of how Linux is being used in GIS related work for LJ or LG?


(?)Modem Connect Speed

From James R. Ebright on 15 Jul 1998 in the comp.unix.questions newsgroup

Dear Answer Guy,

I have a question that I can't seem to find any refernce to in any of the regular documentation, (though I must admit, I only searched for about an hour this time, and sporadically over the last month or so).

How can you tell the connection speed that a modem auto-negotiates when dialing an ISP? My system log (/var/log/messages in RH5.1) does tell me the line speed I have set in the chat script, but I would like to know the connect speed as well (56K, 33.6, etc). I know this info must be available somewhere/somehow.

(!)I've gotten questions like this before and I never did find an answer. Indeed I actually beg the question itself.
My problem with the question amounts to a couple of rhetorical questions in return:
Who cares?
What are you going to do based on this metric?
At first these questions may seem hostile. But they aren't intended in that sense. There are both practical and philosophical aspects to this.
Are you going to return the modem to your vendor or retailer if it doesn't "live up to" some speed?
Are you going to switch to a different ISP if their connect speed is better than your current average?
Are you going to force the phone company to pull new wire to your home, resplice their cables, or replace equipment in their CO based on these results?
You used the term "info" --- the "info must be available somewhere" --- but what is the real informational content of this number. Let's say you connect at 49000 bps --- your effective throughput is likely to vary throughout the duration of each call. The factors involved may be quite different but they all have one thing in common --- they are probably not anything you can effectively do anything about.
Certainly you can do metrics on latency and throughput by running scripts between two hosts (after synchronizing their clocks). That could give you highly accurate data.
I personally still question the informational content of that data.
So, I'm going to sound like a curmudgeon and say:
I don't know how to get that data, and I don't care to spend more time trying to find out.
... However, I'll forward this for publication in this months LG --- and I'll forward any responses back to you. (To respect your privacy we normally don't publish your e-mail addresses in LG. That does result in a bit of extra work on my part --- but I don't mind).
On an academic level I'm curious what answers and suggestions we'll see. I'll be curious where this number comes from and what it "means."
On a practical level I try to configure my systems and my work habits so I just don't have to care if my modem is working at 28.8, 33.6, 14.4 or whatever.
If you search the Answer Guy archives on the terms "modem" or "benchmark and you'll probably also find some other choice comments I've made about the marketing claims of modem vendors (and CPU vendors for that matter).
I have similar opinions about most claims of "speed" as a feature.

(?)PS, I am using the standard RH5.1 "if-up" scripts, but have used my own "ppp-on" style script in the past. I currently wrap my "if-up" script with a ppp-on script that looks like:

>-------------------------------------------------
#!/bin/bash


cd /etc/sysconfig/network-scripts
./ifup-ppp ifcfg-ppp0 &
-------------------------------------------------

and "ppp-off" looks like:

>-------------------------------------------------
#!/bin/bash


cd /etc/sysconfig/network-scripts
./ifdown-ppp ifcfg-ppp0 &
-------------------------------------------------

I can offer more information if needed. Thank you for any light you can shed on this issue.

(!)I don't think these have anything to do with how fast or slow your modems are. If you want to reduce the amount of traffic that flows over these lines while running PPP --- run a caching named/etc/resolv.conf to the localhost address: 127.0.0.1) and a copy of Squid or Apache's cache proxy and configure your browsers to use this WWW cache.

(?)James R. Ebright
IT Professional, CoastalNet

(!)Sorry if I sound grumpy on this issue.
Your frustration with slow modems seems palpable --- and the great backward regulatory morass that is our telecommunications infrastructure doesn't leave you (or me) many alternatives.
(Cable modems are currently a pipe dream in my area).


(?)Win '95 Hesitates After Box Has Run Linux?

From Frank & Mary Veldkamp on 15 Jul 1998 in the comp.unix.questions newsgroup

Hi Jim;

To let you in on what I have done:-

I have an AMD 586/133 processor, 24M RAM, 2 x HDD (2.5G and 635M) run Linux off the 635M and boot in with floppy using LILO.

Win95 is resident on the main 2.5G which is formatted as C: and D:,

The problem occurrs any time that Win is run from a restart, be it a warm boot (Ctrl-Alt-Del), full power off, or reset button.

Its as if its trying to ascertain what is on the second drive and can't. It finally allocates it as a 2nd CDRom drive. You can't access it or get any more info from it.

I've tried re-installing the OP/SYS and have tried it with Win95 on its own but the same thing happens.

(!)It sounds like this problem occurs with Win '95 regardless of whether Linux has been installed or not.
What sort of controller are you using? Is it IDE? SCSI? If it is IDE you'll want to double-check the settings with regards to "master/slave/standalone." If you have two IDE channels (pretty common these days) you might try putting the second drive on its own cable, on the other controller channel.
If this is a SCSI controller, double and triple check the ID's, any pin settings and options on the drives and the termination settings/resistor packs on the drives and on the controller, and any settings on the controller or accessible via its "setup program" (firmware or software).
In either case, try replacing the cables.
The 635Mb drive is pretty small these days. You might consider setting it aside and springing for an extra 2 or 4 Gb drive.

(?)If you can't help maybe you know of some one who can. I'm in no hurry and can manage other things without the solution, but any help you can give would be greatfully accepted.

Kind regards Frank.

(!)At 01:43 11/07/98 -0700, you wrote:

(?) Hi,

I'm sorry if you've had this one before and I don't want to waste your time but I've put Linux on for the first time and have no previous experience. I really put it on because I would like to learn something new. Anyway the problem is that when I boot to Win95 in which I have most of my programs, the first time that I try to do anything that requires reading of the hard-drives the computer stops responding for a considerable period. Some times up to 10 mins. Is this normal or can I bypass this problem with some sort of configuration. It's not too big a problem because it only happens once during any session but it is a pain in the @$#%^$. Your help would be greatly appreciated.

Many thanks
Frank.

(!) If I understand you correctly you're saying that, since you installed Linux when you reboot into Win '95 your first subsequent access of the hard drive causes a hestitation of several minutes.
Is that a proper understanding?
If so I'd just simply be baffled.
Does that only happen after a "vulcan PC pinch" warm boot (Ctrl-Alt-Del), or after a hard boot (reset button on the case), or does it happen after a full power cycle (wait about 15 to 30 seconds between power off and powering back up)?
Does this happen only once? Or does it happen periodically?
I've seen some devices (ether cards mostly) that could "stay confused" through a hard boot. However, I can't imagine anything that Linux would do to your hardware that would cause this behaviour.
In cases like this (where something inexplicable is going on and the secondary OS seems to be involved) I suggest removing the new software (Linux) and testing again. If that doesn't work try backing up all of your data and doing an IPL (initial program load --- i.e. a complete re-installation of your system software).
Please note that Linux can run off of removable drives and can be loaded from a DOS prompt (Win '95 "Safe mode"). So, once you have your system behaving properly again you can explore alternative ways to access Linux that are even less likely to affect the rest of your system.
If you're really motivated, and you can isolate it to a particular module, driver, or application under Linux that is causing the problem, it will be very helpful. If you're really motivated, and more of a programmer than I, you might even track down and fix the bug --- since that's what the sources are for. At least you might try building a couple of different kernels (try stripping out everything except the disk/controller driver that applies to the controller on which you've installed your root filesystem -- leave out the the sound, and ether drivers, and boot up into single-user mode --- don't start X or xdm and just reboot back If the problem never occurs in this configuration then you can keep adding things back until the problem recurs --- or you've got Linux running the way you want).


(?)Bad Cluster

From Ron Bautista on 13 Jul 1998
in the
comp.unix.questions newsgroup

Hi..

I have a toshiba laptop...1.2gig. has like 10 bad cluster. Do I have to say goodbye to this one, and buy a new one If not--- what software or downloadable app can I get to get it fix.... I would very much appreciate your help.

Thank you, Ron Bautista

(!)I thought I answered this awhile ago. But I don't find it in my archives and I do find it in my inbox. So,
You usually can't "fix" bad clusters --- though you can instruct your OS to "map them out" (refuse to use them). There used to be a software package for MS-DOS called Spinrite (Gibson Software?) which would do surface analysis of many types of drives and might be able to restore bad clusters to use (although it was never recommended).
There used to also be procedures for many ST-506 (MFM and RLL) hard drives and some SCSI drives which would allow the user to do a "low level format" of the drive. However with modern IDE and SCSI drives this option is generally unavailable --- some drives will let you sent the low-level format command to them, and their electronics will blithely ignore your command and send a "success" signal back (I've even heard that some will use a suitable delay factor).
The point is that modern drives are much more sophisticated than the old ST-506 drives. Their electronics usually already manage a number of extra blocks per track (cylinder) and automatically map the extra blocks into use. Thus you usually don't see any bad blocks on a modern drive until you have enough errors on some of the tracks that the are no extras for them.
Thus, when you see "10" back blocks on a drive, it might be that there are many more that have been automatically mapped out by the drives electronics (and are thus not visible to the OS, even at the device driver layer).
For using such a drive with Linux you simply use the -c option to 'mke2fs' when you make (format) new filesystems. This will call the 'badblocks' program and make the appropriate adjustments to the filesystems tables. I think these adjustments amount to permanently marking those blocks as unavailable by adding them to a special 'inode' that's maintained by the fs --- they'll never appear in the free list.
To add more/new bad blocks you can use the -c option to e2fsck. You can also run 'badblocks' by hand, save it's output/report to a file, and use that as input to e2fsk's -l switch.
That's about all there is to say about bad blocks under Linux.
Obviously you want to maintain good backup procedures --- and knowing that you have bad blocks on this drive may encourage you to be extra careful about your data on that system.


(?)XFree86 on Trident Providia 9685

From Simon Zlachevsky on 13 Jul 1998 in the comp.unix.questions newsgroup

Hi, kind of linux guru, I was tring to configure my X window manager for about two weeks using XFree86, but i didn't get results.... I have a trident providia 9685 vga card, and a view sonic E51 monitor, any advice?

I also download the latest version of xfree86 and ipgrade my own but still without results, so any advice?, hint?, tip? or such

Simon Zlachevsky

(!)Technically you don't configure your window manager for the video card, you configure the X server for the combination of video card and monitor that you have, then you configure the window manager to suit your prefences within any constraints imposed by you X server (and the underlying hardware).
This card is listed as "supported" by recent versions of XFree86 (though the support is listed as "limited" or "not maintained). It's also been listed on the "Red Hat Linux Hardware Compatibility List for Intel" (http://www.redhat.com/support/docs/rhl/intel/rh42-hardware-intel-10.html) since at least version 4.2.
You don't give any clue as to what the problem is or what steps you've taken. Also, as I've pointed out many times I'm not much of an eXpert. I'm sorry that the XFree86 crew doesn't have an "answer" crew of their own --- but you should at least read throught their FAQ at: http://www.xfree86.org
Unfortunately there don't even appear to be any vendors providing commercial technical support for XFree86. That might be subsumed in some of the vendors that will sell you support for Linux (I would think it would).
You can also read through the LDP "XFree86 Video Timings HOWTO" by Eric S. Raymond (http://sunsite.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html) and the more general: XFree86 HOWTO (http://sunsite.unc.edu/LDP/HOWTO/XFree86-HOWTO.html).


(?)Reveal SC400 Sound Card: OSS/Linux and OSS/Free Supported?

From kifox on 13 Jul 1998 in the comp.unix.questions newsgroup

Do you know if the Reveal SC400 rev 4a soundcard is directly supported by Redhat 5.0 and how would I go about setting it up under Linux if it isn't?

I'm not really sure but I think this card was manufactured by Aztech for Reveal if it helps any

(!)Sound drivers is one area that I know less about than X. I've never used them much (under Linux, DOS, or Windows) and I know nothing special about them.
You might try a 2.1.xxx kernel (since there was a quite a bit of work done on those drivers back in the 2.1.70's or 2.1.80's). You could also look at the OSS/Linux (open sound system), which is at:
http://www.4front-tech.com/linux.html
... this is unusual in the Linux community in that the authors of this commercial (shareware?) package are also the principle authors of the sound drivers that are built into the Linux kernel (called OSS/Free). This oddity has been debated a bit --- but the widely held opinion is that the overall benefits outweigh the concerns.
Anyone who really doesn't like this arrangement is free to derive their own version and enhancements off of the code that has been contributed to the the Linux kernel --- which is why it is still in compliance with the GPL.
The commercial OSS only costs $20 and the authors seem to contribute as much back to the freeware/GPL code as they reasonably can (they have to sign NDA's --- non-disclosure agreements to get the specs for some cards).
Looking at their web site I note that the Reveal SC300 is listed --- which suggests that the SC400 is not currently supported (unless it is also known as the Wave Extreme Pro).
In any event, check out their web site yourself for details.
And, once again, remember, if you want it supported under Linux, you have your choices --- and if you buy it despite the lack of support then you are failing to communicate your prefences back to the hardware vendors in any meaningful way.
I've taken the liberty of copying the support@opensound.com (the OSS support people) on this request so that they can comment on, or clarify anything that I've said.


(?)Kernel Overview needed....

From The Saint (mlkong) on 13 Jul 1998 the comp.unix.questions newsgroup

Hello Answer Guy,

I need infos on:-

(!)There are several ways to start up a Linux kernel.
The most common is to use a package called LILO which involves using a Linux program called /sbin/lilo to read a configuration program (usually /etc/lilo.conf) and use the directives and declarations therein to build a "boot record." A LILO boot record can be written to the "master boot record" (MBR) of a hard drive, to a floppy or to a "logical boot record" (a Linux filesystem's "superblock").
Using LILO you can prompt the user for options (multi-boot and others), and even password protect specific boot modes. LILO is pretty flexible and allows one to define upto sixteen different boot configurations.
It is also possible to write a Linux kernel directly to a floppy diskette. If this is done (using a Unix/Linux command like: dd if=./kenelimage of=/dev/fd0, or using the appropriate "rawrite" commands for your OS) than the floppy will boot the kernel. However, the major limitation of this technique is that no parameters can be passed to the kernel, making it very inflexible.
Another method involves the use of the DOS program LOADLIN.EXE. I'm told there is also an NT native version of this program. LOADLIN allows you to load a Linux kernel which is stored in a normal DOS file. Once it is loaded it effectively kicks the previously loaded OS out of memory underneath it. This is very similar to the way that one loads Netware 3.x (SERVER.EXE).
LOADLIN can be called via a DOS batch file, or it can be configured as at SHELL= or INSTALL= directive in the MS-DOS CONFIG.SYS. This allows one to use the multi-boot features of MS-DOS 6.x and later to boot Linux.
LOADLIN also allows you to pass parameters to your kernels. You can have as many kernels and configurations as you can fit on your MS-DOS filesystems.
Note that the Linux kernel is not required to "be on" its root filesystem. You can use a boot record on one device to load a Linux kernel from another device which in turns mounts its root filesystem from some other device (or even from "no device" --- the kernel can have a RAM disk and use the initrd feature which we'll cover in a few more paragraphs).
It is also possible to create "El Torito" CD's for Linux. The "El Torito" format for CD's allows many of the newer systems and CD-ROM controllers to boot an OS directly off of the drive. Red Hat Inc.'s CD's have been for the last few versions (at least since 4.2 if I recall correctly). Note that this only works if your BIOS or CD-ROM controller includes the right features.
There is also a program called SYSLINUX which allows a Linux kernel to be written to an MS-DOS formatted floppy and booted therefrom. I've never used that.
On the PowerPC (Macintosh compatible systems, and others) there are different mechanisms. These systems use an "OpenBoot Firmware" which allows one to specify things like boot devices, usually through an interactive process, possibly involving a serial terminal connected to the "modem" (RS-422?) port on these systems). There are different versions of the OpenBoot firmware in different Macs and Mac clones. This can be used to boot LinuxPPC (the "monolithic" kernel). It is also possible to use a MacOS "Finder" application to boot MkLinux (the microkernel implementation of Linux for that platform).
SPARC Linux uses SILO (and all SPARC machines that I've ever heard of use OpenBoot --- or its predecessor "FCODE" --- Sun introduced and published the whole OpenBoot specification, which is essentially a small Forth kernel in ROM for doing diagnostics, booting, and device initialization and configuration). OpenBoot is used on a number of workstation platforms --- I think recent HP workstations all use it, too.
On Alphas there are a couple of different (hardware level) monitors that lead to the OS boot. I haven't played with any of them, yet, but I'm told that MILO is used on some (most?).
As we move away from the question of "how does it get into memory" we can ask what other features are unique to the Linux start-up. On unusual feature is "initrd" the option to create an "initial RAM disk image" --- this is a compressed archive that is extracted into a RAM disk, and it allows one to have a modular kernel and a script that loads the desired modules from the RAM disk. It is also possible to create multi-volume "boot/root" and "boot/init/root" sets of Linux.

(?)

(!)I don't know what a "totally modular kernel" means. You still have the option to compile a Linux kernel with various options "built-in" and others built as separate modules. You can do this in many combinations.
With initrd you can create a kernel that doesn't even have the driver for its primary drive controllers built-in (it would be a module in the initrd image and would be auto loaded by either the "kerneld" (or "kmod") feature or by using an "insmod" or "modprobe" command from the /initrc script that's extracted unto the RAM disk).
I personally don't do this. I build my primary disk controller driver and my primary ethernet card drivers directly into my kernels.

(?)

(!)see below.

(?)

(!)I have no idea what a "task oriented 'splinter, splinter' tree" would be.

(?)For your information i'm an undergraduate doing a research on this topics. Please help cause i'm in a dark over Linux operating system!!

(!)These last two questions are far deeper into the Linux kernel code that I have gone.
You'll probably want to start by reading:
Linux Kernel Internals, 2nd Ed. (ISBN: 0-201-33143-8)
by:
Beck, M.
B\"ohme, H
Dziadzka, M
Kunitz, U.
Magnus, R. and
Verworner, D.
Published by Addison-Wesley in 1997
... you'll want to look at the LDP KHG (the Linux Documentation Project's Kernel Hacker's Guide) (http://sunsite.unc.edu/LDP/ and many mirrors).
You'll undoubtedly want to also extract a copy of the sources, possible for several versions of the Linux kernel, and look at the directory structures and read some of the code. That will reveal everything that's important about the organization of the kernel.
One of these days I'd like to see a "Linux Kernel Sources Annoted Study Guide" --- telling me where to start (/usr/src/linux/arch/i386/boot --- bootsect.S or setup.S?) and walks through all of the code until a simple, hypothetical system completes a shutdown. Of course it would be nice to see the video, too!
Another thing you could do is look through the archives of the kernel mailing list, even join it and read through some of the traffic that flows through there. That is the principle medium of communications for the developers who collaborate on the Linux kernel.
For comparison you might also look for overviews of the NetBSD, and OpenBSD development projects.

(?)Thanks. Email me back ASAP please...


The original thread appeared in Issue 30, Solaris -> Linux. The entire thread below was also posted in the comp.unix.questions newsgroup.


(!)Remote lpd from Solaris to Linux

From The Answer Guy on 08 Jul 1998

Kuksi,
Here's another suggestion forwarded from one of my readers:

(?) I like to print from Solaris to Linux. (...repeat of thread...)

(!) To which "Joe Ellis" adds:
Wasn't sure how to reply to this (no email address that I saw) but whoever had this question:
You have to (under redhat 5.0 anyway) add an account for each username on the remote system whom you wish to be able to print. I.E. if user 'foo' on the Solaris machine wants to remote print to the Linux box, you have to add a user account 'foo' to the Linux box. This is in addition to the host/ip in the /etc/hosts.lpd file. I haven't figured out WHY but I know in a stock redhat 5 box thats how it works. I cannot validate this for other Linux systems other than redhat as thats the only dist. I have access to at the moment.
-joe
That makes sense. You could probably edit the appropriate PAM (pluggable authentication module) configuration to allow anonymous access --- but I don't know, just off hand, which file that would be or what the magic configuration would look like.
I suppose we could ask on the PAM mailing list...
I've been meaning to install LPRng (the "next generation" print spooling suite) but haven't taken the time to do it. For now I actually rcp and print my files manually. I've had lpd working on some of my systems, sometimes. But I hardly ever print anything, so there's little inconvenience and not nearly enought to track it down.
For the first few years I used Linux I printed everything by preparing a file and using:
'cat ... > /dev/lp0'
... on that.
Let's just say, I don't like printers very much.


(?)printing Solaris->Linux

From kuksi on 13 Jul 1998

You have to (under redhat 5.0 anyway) add an account for each username on the remote system whom you wish to be able to print.

--: joe

There is no need to add an account, but thanks to Joe for the answer

Now it is working !!!! Yeahuj!! *** The problem was idiocity... : I installed the remote printer under Solaris:

1. #lpsystem -t bsd linux_machine_name
/Identifies the print server system and its type(bsd for BSD)/

2. #lpadmin -p printer_name -s linux_machine_name -T unknown -I any
/Identifies the printer on the printer server./

3. #accept printer_name
#enable printer_name

^^^^^^^^^^^^^^^^^^^
/Specifies that the print client can send print request to the printer./

4. #lpadmin -d printer_name
/Set's the printer as the system's default printer destination./

BUT! In the point 3. "enable printer_name" it isn't enough, because:

5. #lpstat -t 
scheduler is running
system default destination: printer_name
system for printer_name: linux_machine_name
printer_name accepting request since Mon Jul 13 10:25:43 MET DST 1988

printer printer_name is ready. disabled since Mon Jul 13 10:25:55 MET

^^^^^^^^

DST 1988

new printer

/Verifies that the printer is ready./

It needs a second "#enable printer_name" command, and after this it is working...

Shhhhh.. ! ***

Otherwise..

= (think i am

Thank for your answers

kuksi


(?)printing Solaris->Linux

From kuksi on 14 Jul 1998

(?) You have to (under redhat 5.0 anyway) add an account for each username on the remote system whom you wish to be able to print.

--: joe

However joe has right....the linux account to be a must.

(gondolom en

kuksi

(!)Well, if that's a problem you could always try LPRng. Otherwise you might want to set up Linux as a NIS client on this LAN (if you're using NIS) --- or configure it so that it's passwd files are kept in sync with the others (assuming you're maintaining synchronized passwd files, which you really want if you're running any NFS throughout that site).


(?)Lilo not working on SCSI when IDE drives installed

From Timm Gleason on Wed, 08 Jul 1998 in Newsgroups: comp.unix.questions

We have several Debian/Linux workstations around the office that contain both SCSI and IDE devices. Now we almost exclusively use SCSI hard drives but occasionally we will stick an extra IDE drive into a box when more disk space is needed. My problem is this, when we recompile a new kernel after a security patch of fix, and then run lilo it gives the error `Warning:/dev/sda2 is not the first disk`. So then I have to halt the machine, physically remove the IDE device, boot with a rescue disk, rerun lilo, halt the machine, reinstall the IDE device and reboot. Now while I admit that this does work, it can be a real pain to have to do that to every workstation we have that has mixed devices installed.

Thanks
Timm Gleason

(?) Normally there is no problem with integrating SCSI and IDE drives in a system (under Linux).

However I think I have a hint as to your problem. A normal PC BIOS will boot off of the first IDE drive on a system. It will only look at the MBR (master boot record) on the first hard drive (usually after looking for a boot record on only the first floppy).

The normal consequence of this is that you usually have to install your OS on the first hard drive. IDE drives conform to an interface which is built into the BIOS. With SCSI there is a BIOS extension on the controller's ROM that allows the system to boot.

BIOS extensions are code that's contained on the ROM's of any expansion card -- so long as it contains a specified header and calling convention. Part of a normal PC boot process is to scan the reserved address space between A0000 and E0000 (or so -- it might be from B0000 through D0000, I don't have a BIOS reference handy) for this "BIOS extension signature" --- and then to call setup routines an give offsets from any of these signature blocks that it finds. That is how SCSI controllers and ethernet boot PROMS (and other "bootable" devices) work.

The problem is that most SCSI controllers and PC BIOS' will give the IDE drives precedence over any SCSI drives.

One approach would be to let the system have "its" way and let lilo write the MBR to the IDE drive. So long as your BIOS (with extensions) can see the SCSI drives it doesn't matter that the lilo boot block refers to another drive.

An odd and confusing thing about Linux is that the boot block, the kernel, and the root filesystem can all be on different devices. In fact you don't need a "boot block" at all --- you can use LOADLIN.EXE to start a Linux kernel (I've heard it can be used to load a FreeBSD kernel, too --- but they have their own program for that anyway).

So, if you have a /etc/lilo.conf that looks like:
boot=/dev/hda
read-only
prompt
timeout=200

image = /vmlinuz
root = /dev/sda1
label = example
... and you run /sbin/lilo to "compile" this set of configuration directives into a boot block here's what it will do:
Write the boot block to /dev/hda

note: we use the raw device, so it goes to the MBR, if we use /dev/hda1, it goes to the "logical boot record" or "superblock" of the specified (first) partition.

The 'read-only' directive is passed to any Linux kernels that you load --- it specifies that the root filesystem will be initially mounted read-only to allow the fsck to work properly on it.

The 'prompt' directive is used to control the behavior of the LILO boot program at it's runtime (it forces it to print an interactive prompt to the console during boot) and the 'timeout' directive specifies how long the prompt will wait before continuing to the default boot "stanza" (the first, and in this case, only one).

The image directive points /sbin/lilo to the location of a kernel image (file). Note the distinction between /sbin/lilo's "compile time" and the lilo boot code's "run time" (that's why I push this analogy of treating the lilo package as a "boot block compiler" --- it helps put these distinctions in familiar terms).

This directive causes /sbin/liloi to "map" the device number and address of the image file. That address can be in different formats depending on whether the "linear" directive is used to inform /sbin/lilo that the device is being accessed through "sector translation."

The 'root' directive specifies where the root filesystem for this "stanza" is located. That is passed to the kernel unless over-ridden by parameters that are entered interactively at the prompt.

Obviously the 'label' directive allows the user to select different boot stanzas by name at the lilo prompt. (Not that the "lilo prompt" refers to run-time rather than "compile-time" --- it is the "boot block code" that is doing the prompting and /sbin/lilo is utterly uninvolved at that point).
I've played with a number of configurations of lilo.conf over the years. I've written boot blocks to floppies, specified image files that were on mounted (non-root) filesystems, and done other silly things. Lilo's flexibility can be very confusing and I've tried many things that didn't work (usually for good reason --- Lilo is constrained by the limitations and conventions employed by your BIOS).

If you try this and it doesn't work you might need to put a tiny partition on that drive. You can put a very small minix filesystem on that (conceptually you could put a kernel and no fs in a single track --- but /sbin/lilo doesn't have a way to "find" that).

For that matter you can put a Linux kernel file on any fs that you put on that IDE drive. If you put a kernel image on an MS-DOS filesystem and run /sbin/lilo while that fs is mounted (it will complain if it cant find the kernel images at "compile time") you should be fine (until you run a DOS defrag utility!).

A wholly different approach is to to lie to your CMOS setup and tell it that you have no IDE drives installed.

Linux doesn't rely on your CMOS settings or BIOS to detect or use IDE drives. So, once Linux is loaded you should be able to see your IDE drives even if they are not listed in your CMOS configuration.

(I'm pretty sure I did that once and I don't remember having to do any tweaking to get it to work. It might be dependent on your kernel version and compilation options, though).

Obviously, you're doing something a little different --- most people who mix IDE and SCSI drives start with the IDE's and always let them be the boot devices. That's the path of least resistance. However, you can try the tricks I've described --- let me know if removing the CMOS parameters for the drives works (or if I'm suffering from delusional memories).


(?)Lilo not working on SCSI when IDE drives installed

From Timm Gleason on Fri, 10 Jul 1998 in the comp.unix.questions newsgroup

Thanks for your prompt reply. Many of the things you mentioned we have tried at one time or another with limited results. We are suing Asus P2L97 motherboards which have the ability to set in the BIOS which drive type you want it to look at first. We have even removed the IDE drive from the BIOS settings. The problem is that since Linux does not rely on BIOS settings for IDE drives it always detects them first. And typically we are adding old extra IDE drives for expanding storage or the CD-ROM drive in the machine is an IDE.

(!) It's true that Linux doesn't rely on BIOS settings. However, the lilo boot loader does. It is the boot loader that is looking in the wrong place. This is probably a bug in your BIOS (or still in your configuration of that BIOS, as it sits in the CMOS registers).

(?) I have yet to try setting boot=/dev/hda and root=/dev/sda in the lilo.conf. I was under the impression (mistakenly I guess) that the MBR and root disks had to be on the same partition.

(!) The fact that this is a very common misconception explains why I take such pains to explain it in so much detail. I must have gone over this about twenty times in LG and about a hundred in the newsgroups.

Also, a nitpick, don't think of them as "root disks" --- think of them as root filesystems.

An MBR consists of a boot record and a partition table. The boot loader points to a kernel (or several) --- or it might point to a secondary boot loader. The Linux kernel contains a pointer to the default root fs. The LILO boot loader (from the MBR or from a floppy or any logical boot record) may pass parameters (such as video mode and root fs parameters) to the kernel to over-ride the one that's built-in. The 'rdev' command can write a new rootfs string into a kernel (and it can tweak other values like "video mode" --- look at the 'rdev' man page for details).

(?)Thanks Again

(!) You're welcome.


(?)Yggdrasil: A Breath of Life for the Root of CD Linux Distributions?

From Mike on Sun, 05 Jul 1998 in the comp.unix.questions newsgroup

What do you know about Yggdrasil linux distribution? They purport significant advances in OS/SOFTWARE/DOCUMENTATION not achieved by others. Is it real or make believe or worthy of mention? I was impressed by what I read, however I am not all knowing but just researching linux to find the best distribution/version to begin learning yet have an os that is versatile enough to keep using once abilities exceed beginner/amateur. Mike

(!) Yggdrasil's ``Plug and Play'' Linux was the first CD-ROM distribution ever produced. They also developed and released the first CDR recording software that was available under Linux. Yggdrasil was also one of the earliest companies to compile, print and bind "dead tree" versions of the LDP (Linux Documentation Project). Back near the beginning of 1997 they released an 8-CD set of Linux archives (not including their own distribution). They are the only company that I know of which has produced a video documentary on using Linux.

Adam Richter, founder of Yggdrasil, is still active in the community. He frequently shows up and local user group meetings (http://www.svlug.org) and he occasionally participates in discussions on the 'Linux-kernel' mailing list. In fact I saw him at the "midnight rally" that the SVLUG and some other bay area Linux enthusiasts hosted in front of Fry's and CompUSA on the night that Microsoft officially shipped Win '98(*).

Recently (just last February --- a few months ago), he announced his experimental "Ground Zero" repository --- which is an effort to provide a comprehensive and dynamic repository of all of the available Linux packages in tarball (Slackware compatible .tar.gz), RPM (Red Hat), and .deb formats.

Apparently Adam also has some interesting processes running at his site --- based on some custom programming he's done. It monitors certain FTP sites (and some other sites?) and automatically fetches, builds and tests new kernels (and some other packages?). I don't know the details --- but it sounds very cool.

One of the things I really liked about Yggdrasil's distribution was that it had an integrated source tree. You could easily find the sources for anything in the distribution (I think it included a 'whence' command which was similar to the 'which' command except in that it pointed you to the source code for a command, rather than just to the binary).

I mention that in the past tense since I haven't used "Plug and Play" Linux in a number of years --- it hasn't been updated recently. In response to your note I raced over to the Yggdrasil web site (http://www.yggdrasil.com/) in the hopes that they actually have a new release.

(I keep asking Adam and he just quietly assures me not to worry about it!).

So, I'd like to know what you've read (and if there was a date on it).

As for the relative merits of Yggdrasil's "Plug and Play" vs. Red Hat, S.u.S.E., Debian, Caldera, and the most recent Slackware --- it's not a fair comparison. All of these other major, general purpose distributions have been updated several times since the last "Plug and Play" release.

So, I cannot recommend the old Yggdrasil version except for historical (almost archealogical) purposes. That's why I want them to release a new version.

(Meanwhile the "Ground Zero" effort is very up-to-date and completely independent of your distribution --- so you should definitely bookmark their site and check on it regularly).


(?)More on Distribution Preferences

Answerguy, What do you think of this distribution? OpenLinux Base

OpenLinux®: A complete Linux operating system with all the system tools you’ll need. Plus valuable add-ons, like Netscape® Communicator and backup utilities.

US and Canadian orders can take advantage of a $20.00 rebate from Caldera, bringing the price of OpenLinux Base to $31.95

(!) I haven't used any of the Caldera distributions recently. This is a much more recent version the those that I've used. So, I don't have an informed opinion on them.

Since you just asked about Yggdrasil yesterday I'm wondering if this is a pattern. I hope you aren't going to send me of these every day.

My opinion about Caldera Standard is that it is the best choice for a site that has existing Netware servers or clients. It was also the first distribution that was supported by WordPerfect for Linux. There are a number of other commercial software companies that work with Caldera for releasing Linux versions of their product.

If the Caldera Base includes a copy of StarOffice (as your press release says it does) than that is a very good reason to try it. (The installation of StarOffice that I have from an early 4.0 CD is very unstable --- it dies quickly and horribly under my S.u.S.E. 5.1 system. I've heard that that there are new libraries and releases that fix that --- but I haven't been particularly motivated to go get them since I still mostly live in text consoles).

StarOffice is a very promising product --- and the competition between it Corel Office, and Applixware should be interesting. The most important feature of either is to provide me with stable, reliable access to MS Office .DOC and .XLS files. The first one to successfully do that with MS Office '97 wins my vote. (Since that is one of the few reasons for me to get out of a text console and into X --- the others being Netscape Navigator (when I need something that just doesn't look right in Lynx), 'xfig' (to draw diagrams for the book that I'm working on), and 'xdvi', and 'gv' (to preview the LaTeX and dvips output for same).

At the same time I recognize the potential of these office suites (and some others). As these get better we see Linux as a more serious contender on the desktops of home and corporate users. According to some surveys we're already winning against NT in a number of server categories (including web, mail, DNS, and SMB/Samba). We've gained a lot of ground in the technical and scientific workstation market (although the push to get EDA and CAD/CAM suites ported is just barely started). But all the "mom's" and "pop's" out there that have their college kids buying systems for them need something a bit less intimidating than 'emacs' and 'vi' --- and TeX and friends.

KDE and GNOME will provide the main interface and many of the toys and widgets. StarOffice, Applixware, Corel Office, SIAG, LyX, Wingz, Xess, and others are all vying to provide the main user applications.

(I personally think we'll also need multi-media GUI "Welcome to Linux/XFree86/KDE" and "Welcome to Linux/XFree86/GNOME" interactive tutorials --- with sound, music, via, and a dancing, talking Tux. I want a system I can install on a box and send to my Mom!).

Getting back to your implicit question:
Which Linux distribution should you try?
... the answer is:
I have no idea!
Unlike the marketeering weenies that you encounter in every magazine, and newspaper, on every TV and radio show and on billboard and busses every time you drive anywhere ... unlike them, I don't want to push a bunch of features on you and I have nothing to sell you (except my time --- which is pretty expensive).

Helping someone select a Linux distribution (or anything else) is a matter of requirements analysis. What do you need? What do you want? How much are you willing to spend? (Time and money). It is quite possible that I would recommend FreeBSD, NetBSD, OpenBSD, BSDI/OS, or even Win '95, NT, or MS-DOS --- if I understood your requirements sufficiently.

Before you send me a list or essay on your requirements consider that the Answer Guy is time I volunteer to show my appreciation for all the work that people like Richard Stallman, Linus Torvalds, Alan Cox, Arnold Robbins, and so many others have put into the GNU project, Linux and other freeware. I try to answer questions that I think are of broad interest to many Linux users and potential Linux users. (And possibly of interest to *BSD'ers and eventually GNU HURD'ers).

The easy answer to selecting a distribution is: pick one! Since many of them are freely distributable you might want to start with one of those. Debian and Red Hat are definitely freely accessible. I think Slackware is still available online --- and I suspect that it's perfectly O.K. to borrow a friend's copy of the CD. Walnut Creek might have exclusive rights on CD distribution of Slackware --- I don't know. I think S.u.S.E. is free for "personal" use (although it is a bit unclear my S.u.S.E. 5.2 manual says:
Copyright This work is copyrighted [sic] by S.u.S.E. GmbH and is placed under conditions of the GNU General Public License. You may copy it in whole or in part as long as the copies retain this copyright statement.
... (overleaf of the title page). It's not clear whether "this work" is intended to refer to the book or to the distribution that included it. The box and CD case (4CD's) don't list any other copyright or licensing notices that I can find. The only index entry under the term "license" points that the Appendix of their manual that contains the full text of the FSF GPL. That would suggest that you can borrow my set of S.u.S.E. CD's and install it, and would even suggest that someone could start creating derivative works (other CD sets) to sell in competition with S.u.S.E.

However, I've always been under the impression that S.u.S.E. is a commercial distribution. I purchased both of my copies for it -- 5.1 and 5.2 --- and I've purchased many copies of various Red Hat versions (the boxed set and the lower-priced archives sets). So, you might want to ask a S.u.S.E. rep before you go into production against them. However, I doubt that they'd even want you to waste their time asking if it's O.K. to install from a friend's set on an evaluation basis.

You're clearly willing to buy some distribution once you find one you like. Personally I usually select Red Hat for my customers (after I've considered their needs) simply because Red Hat has a pretty good balance of the various factors they care about.

Debian has more packages (slightly) -- but the last copy of dpkg that I used was very convoluted (I'm hoping to get a 2.0 CD as soon as it goes out of beta). Slackware was nice when I needed it --- but most of my customers aren't interested in fussing with tarballs --- they want something with a decent package manager (one that can be operated easily from command lines as well as throught a GUI).

Under RH it's pretty simple to write a script to poll an internal FTP site for package updates and automatically apply any of them that appear. (I think there's a package called 'rpmwatch' floating around some 'contrib' directories somewhere that does precisely that). I haven't looked at RH 5.1 yet.

S.u.S.E. and Caldera both use the RPM format.

S.u.S.E. includes more packages that the last couple RH CD's I used (4.2 and 5.0). It seems to have a pretty good installation interface though I have mixed feelings about their interpretation of the SysV init scripts. They have a large shell script named /etc/rc.config (mine is about 770 lines long --- of which about 500 are comments). This file contains a long list of shell variables and values. You can edit this file by hand or you can use YaST (Yet another Setup Tool) which is their curses based system's administration interface. The idea is that the other scripts all "source" this one file and use the variables that apply to their operation.

On the one hand this is very nice. Concievably I could create a particular installation profile (which they support via their installation interface), install the system, configure it via YaST and put it into production.

Let's assume I use the 'chattr +i +d' (immutable and no-dump) flags on all the files that came with the distribution and unset them as a pair whenever I change any of them; this would allow me to use the 'dump' program and never backup files that were from the initial installation off of the CD). This is for a "data+config" backup strategy.

If I've stored the rescue floppy they created, and the rc.config file --- I should be able to restore the whole system to its configuration with just my installation CD's, my rescue diskette, and the rc.config file. (Naturally, I'll have to restore all my data as well).

Another nice thing is that I might be able to create a little script to generate new rc.config files from a master form and a couple of other data files. If I have lots of new machine trickling in I might have a few files that contain lists of IP addresses, hostnames, NIS domain names, shared printers, and other local (LAN) data. I might conceivably be able to generate a new custom rc.config file for each new box and automate even more of the deployment.

Under other distributions I have to mess with over a dozen separate files. Unfortunately it's not that easy even under S.u.S.E. If you use NFS you really want to use NIS or synchronize the 'passwd' and 'group' files across your systems (since maintaining ugidd maps is not scaleable and NFS relies on the uid/gid values to determine access and permissions.

None of the distributions I've seen prompt me for a passwd/group file set prior to installation. So, if I use Red Hat on one system and S.u.S.E. on another (I do) --- there will be some base files that differ between them (most of the uid's created by most of the distributions do match -- there were only a couple that I had to run through a "masschown" script). (Distribution Dudes!: This is my enhancement plea for the month! Please let me hand you a passwd/group file set --- from floppy or over ftp/nfs/http --- and use that to map the ownership as you install).

These days, for large sites, I recommend creating one "template" installation one a typical box, cutting that whole installation to tape or CDR after configuration but before any use (data). Now you can do all new system installations as "restores" from your backups. You can also take that opportunity to make sure that your recovery plans, rescue diskettes and backup media are all in working order. One reason I recommend that is that it takes me about four hours to fix various permissions and configurations (hosts.allow, hosts.deny, etc) after I've completed a new installation.

One final note about choosing a distribution: don't just ask me. I'm only one person. I've only used about a half dozen Linux distributions (some of which no longer exist!). Don't just go to the newsgroups and mailings lists and ask "Which is best?"

Ask questions that relate to your situation: Will you be integrating this into a Novell network? Do you have friends or family that will be working on your Linux box? Do any of them have experience with a Linux distribution? Do any of them use some other form of Unix (free or otherwise)? Do you have any particular applications preferences? Is system security a concern? What are the risk profiles that are acceptable to you? What is your native language (German speakers will probably be much happier with the German S.u.S.E. or the DLD (?) distributions, Japanese users seem to prefer FreeBSD, the French have their own distribution, etc.)?


(?)115K Baud from a Modem: In your dreams!

From WEMehl on Fri, 03 Jul 1998

I purchased an
IBM Aptiva last fall. It came with a LTwin modem installed. It tells me that its max speed is 115K, but I never seem to be able to run at more than 34K. Is it the modem (if so can I upgrade) or is it something to do with AOL? Thanks.

(?) I think that this is a shameful bit of marketeering on the part of whatever docs tell you this. They probably mean "115K if you get better than average compression under ideal phone line conditions."

Currently the highest speeds attainable by modems over traditional telephone lines is about 56Kbps --- and that is asymetric. In other words you can download stuff at close to 56K under ideal line conditions --- but your upload speed will not approach that (a non-issue for most Internet "web surfers" --- but it would have been a major issue for the old BBS users who used to run their Fido boards and use QWK messaging.

I have no idea what AOL is currently doing. It is likely that they haven't upgraded all of their modems (Points of Presence) to 56K at this point --- and it's even more unlikely that they would have upgraded their entire infrastructure to ensure that their hosts and LAN's would have the capacity and bandwidth to feed those thousands of high speed modems at full speed.

As for upgrading --- you can almost certainly upgrade your modem. I've been working with PC clones for over a decade and I've never seen one that had a *modem* hardwired into the motherboard. I've seen some with inferior serial ports --- serial ports with buggy and slow 16450 UART chips that couldn't be replaced or disabled. However, this is probably a typical internal modem --- just rip it out and throw it away. I personally recommend external modems.

For real speed upgrades you can get ISDN and FRAD (frame relay access devices) for PC's that are supported by Linux and can take you past modem speeds all the way up do T1. You can also pop in an ethernet card (10Mbps) and get an ADSL or a cablemodem (router). Naturally you can't use this over your existing telco lines --- and you'd probably really hate to see how much a leased line (frame relay) or ISDN (metered service in most areas --- a penny a minute adds up pretty quick!) would cost. As for ADSL and cablemodem services --- the coverage and availability are pretty spotty and the pricing isn't what an AOL user is likely to be interested in spending.

What really makes me curious about your message are two things:
Are you running Linux? Is that a "Winmodem"? (The model designation certainly sounds like one).

If you're running Linux to access AOL --- what are you using to do it? The AOL reps I've talked to have shown no interest in making Linux, Unix, Java, or other portable versions of their interfaces avaialable --- and hostility at the notion of documenting their protocols and API's to the point where anyone else could do a free implementation.

[ Actually, their Instant Messenger is available in Java, and a recent note I sent their web staff asking after a Linux version of the main client got a friendly "we've forwarded that suggestion" note back, from two different people. So, times change? Meanwhile WINE is rumored to have some success with AOL. But if you're using something Linux native, I'd really like to know what it is. -- Heather ]

If you're not running Linux, and you're not asking about anything that's even vaguely Linux or Unix related... why are you posting a message to the Linux Gazette "Answer Guy"? (No, I didn't pick the title --- my editors did that).
As a final comment, I usually don't care much about questions like this one. People read a bit of marketing fluff on the box or in the ads for a product --- they draw an unrealistic conclusion based on an interpretation that's best described with the phrase "wishful thinking" then they perform highly unscientific metrics and benchmarks on which the fail to perform the most elementary critical analysis (of their experimental design, their results or their conclusions) --- and then, unsatisfied with their results they write to some unrelated support guy hoping for a magical incantation that will make the product work as they thought it would from what they thought the marketers meant in the advertising that they read.

If you're getting unsatisfactory results from this product --- talk to your vendor. You paid them for it. If you're just trying to see if your "missing out" (that some other people might actually be getting consistent 115K throughput on these) --- don't worry, it's not happening.


(?)Linux as an NDS (Netware Directory Services) Printer Client

From Phill Kenoyer on Fri, 03 Jul 1998

I use linux at work, but I can not print to the Netware 4.0 servers. They are using NDS and I have found out that Linux does not have any NDS clients. Is there a way I can print to the netware printers?

I know that MIS is not going to help me because the MIS manager hates unix or something. Linux is like very bad in MIS land.

Phill Kenoyer
MicroProse, Inc.

(!) Linux maybe "very bad" in your MIS jungle -- but out here we are find the IS guys sneaking it in behind them M's backs at just about every turn.

In any event the simple solution for you is to go get a copy of Caldera. Caldera's "OpenLinux" (I forget which release --- Standard and not Base, if I recall correctly, I've copied their sales department) includes a set of Netware bindery and NDS clients that allow you to connect your Linux client for file and print services.

This particular component is not free --- it is covered under some licenses (I think the licenses are imposed on Caldera by their vendors). So plan on spending a couple hundred bucks.

However, it is possible. I've used this --- and I recommend Caldera for any Linux installation that's got to interoperate with any Netware systems!


(?)What is an RPM?

From Andre Solheim on Fri, 03 Jul 1998

I am in the process og getting hold of Linux. Could you please tell me what RPM is, and what it does?

I hope you can mail the answer to me directly
André L Solheim

(!) RPM is the Red Hat Package Management system. This is an freely published set of specifications and tools to allow Linux and Unix vendors to package their software in a way that is amenable to automated installation upgrade, removable and administration.

Although it has Red Hat's name in it --- it has been adopted by most of the major Linux distribution maintainers. The only to major holdouts are Debian and Slackware. (There are a number of small, special purpose Linux distributions that don't use any package management --- many fit on a single diskette or designed to be installed into a DOS subdirectory and run via LOADLIN).

Debian has developed their own package management format (usually seen with the .deb extension) and Slackware continues to use the tried and true "tarball" format with pkgadd (?) and some other tools to help a little bit.

However, you can easily install the RPM subsystem into any Linux that you want. You can also use RPM on some packages and continue to manually build others from tarballs (.tar.gz files). You can also convert between package formats using tools like 'alien' and 'rpm2cpio' (or you can just use Midnight Commander to open and work with .rpm files, just as you would any directory, .zip or .tar file etc --- what how I usually delve into RPM files if I'm not going to install them).

The RPM system as been ported to several flavors of Unix and is no longer a purely "Linux" thing. Some sites are using it to help maintain their Solaris, and HP-UX systems.

In the simplest form you can use commands like:
rpm -i foo-1.2.rpm
... to install a package (foo version 1.2 in this example).

There are also GUI and menu drive frontends to using RPM .... but I usually use the command line.

You can also let rpm do the FTP for you with a command like:
rpm -U ftp://myserver.myorg.net/upgrades/bar-2.2.rpm
... and this will upgrade the bar version 2.2 package off of an internal ftp server (where I presumably have placed it after testing it on one of my sacrificial admin systems).

Another trick I've used is to get the description of an rpm file without bothering to get the whole file (to decide which files I wanted to fetch). I do this with a command like:
rpm -qpi ftp://ftp.redhat.com/..../contrib/.....rpm
(I don't have a specific path and filename handy --- but this should show the idea). You can also get a list of the contents of a package with:
rpm -qpl $SOME_RPM_FILE
... or a list of files from an installed package with
rpm -ql $SOME_INSTALLED_PACKAGE
You can also do things like list all of the packages that you have installed on the whole system (at least those that you've installed using RPM) with a command like:
rpm -qa
... and you can verify a package with a command like:
rpm -V foobar
... which will give you a summary of every change to the checksums, ownership, permission, timestamp, etc --- of every file that was part of the "foobar" package.

Combining these in a relatively obvious way you can check every package on your system with the following:
rpm -qa | xargs rpm -V
You can also find out which package a given file "belongs to" with a command like:
rpm -qf /some/file/that/was/installed/by/something
You can learn more about the RPM system by looking at their very own web site: http://www.rpm.org.

So, good luck on your new adventure. Have fun with Linux.


(?)AnswerGUY? Who is Heather?

From Thomas L. Gossard on Fri, 03 Jul 1998

Answerguy,

Forgive me if I'm about to insult you. All the replies I've read seem to be answered by Heather. Is Heather not a girls name? If so, why is this column called the answerGUY, not person or girl?

Tom Gossard

(!) Heather is my wife. She usually doesn't answer any of the questions (though sometimes she helps --- she's been using Unix longer than I have --- and she's a professional sysadmin).

However, Heather does convert my mail into HTML and she does all the links and graphics (I just answer the e-mail, do the web research and find URL's to point my correspondents at for more information).

As for why this is called the "Answer Guy" --- I just volunteered to help out with the occasional stray technical question that I knew would find it's way to SSC when they took over the editorial duties of the Linux Gazette from John Fisk (its creator). Marjorie Richardson and her crew decided to post my answers and picked the name. I'd wanted to start doing the HTML (at least to wrap the URL's in anchor tags) since I noticed that these were going up --- but I never had the time.

Finally Heather stepped in, pulled down a couple of mail to HTML filters (like MHOnArc, hypermail, and babymail) and played with them --- tweaking one of them until it suited her tastes in HTML and my style of e-mail (text). She still hand massages the messages for a bit, too.

The other advantage to this way of doing it is that I don't see the whole column going up as one big page --- it's broken into lots of separate pages, like HTML is meant to be. This is hopefully going to help quite a bit in my future since I was starting to hit my own column every time I did a Yahoo search --- usually those were false hits because I'm usually trying to find "something for Linux" (and I'd find sets of keywords in one LG article -- that were in no way related to one another in the article).

So, hopefully the new format will be more "search engine friendly" (for everyone).


(?)Heather replied too.

From Tom Grossard on Mon, 6 Jul 1998 in the comp.unix.questions newsgroup



Heather,

Thank you for the reply. I hope I wasn't rude in my question, just nosey.

Thank you
Tom

Thomas L. Gossard

:D No problem, really. Glad we could clarify.

Oh yeah, I'd like to add for our lynx-using readers, or those reading the text of TWDT, I plan to improve the textmode result. But not this time, I just started a new job (still sysadmin'ing) and didn't have time.

For web visitors, the interesting parts:
I ate the fortune cookie first, then read what Jim Dennis copied me on:
However, Heather does convert my mail into HTML and she does all the links and graphics (I just answer the e-mail, do the web research and find URL's to point my correspondents at for more information).

The confusion probably arises from the one message (Love the New Look!!!, http://www.linuxgazette.com/issue30/tag_newlook.html) where I answered someone who loves the new format... since I am responsible for formatting... and linked my name there so respondents on that question could reply to me instead.

Jim answers all the Linux questions; in the original mail to the querent, he has his Answer Guy .sig, but the dressed up column doesn't need that also, so it is trimmed for clarity. Most querent's .sigs are trimmed to enhance their privacy. So seeing most messages .sig-less might be affecting you.

"just answer and research" is plenty, but he loves to do it, and every new discovery could add to his book, so he plays it down. I don't think the column would be nearly as good if our roles were reversed :)

Finally Heather stepped in, pulled down a couple of mail to HTML filters (like MHOnArc, hypermail, and babymail) and played with them --- tweaking one of them until it suited her tastes in HTML and my style of e-mail (text). She still hand massages the messages for a bit, too.

I merged some perl fragments, and added some of my own, to a script I use to preprocess the month's load of Answers. However, I also read his messages, and try to maintain the original "look and feel" of Jim's reply.

Sometimes this means a list type or a blockquote where my script doesn't know any better. Each month I improve it but I will probably never trust it to do the whole job ... cleaning .sigs for privacy, clearing up levels of indirection when Jim draws in a message from mailing lists, and posting a thread as one file are specific examples.

There is also a little bit extra that I add. Most of the URL's I add after-the-fact are things that aren't really special overall (such as hotlinking vendor names) so someone reading the plaintext TWDT version isn't really missing anything; they are simply seeing the reply pretty much as Jim sent it. (It's not exactly as Jim sent it -- it's the posted column run through lynx.) If I actually say anything that Jim didn't, it is emphasized and in brackets [] , as I have been taught editors' comments should be. I haven't seen Jim use brackets, except in example code.


(?)'sendmail' requires DNS ... won't use /etc/hosts

From Carlos Javier Castro Pe\qa on Fri, 03 Jul 1998 Hi,

I have been looking for an answer for my question for a long time, but I could find no useful solution. I am building a Linux LAN and I cannot send mail with sendmail ! I do not have a DNS server. I have found a lot of people with the same problem and no answer.

I am using Red Hat 5 with the version of sendmail distributed by them. My kernel 2.0.33 and networking enabled. The mails don't get delivered because a 'hostname lookup failure'. The manual of Red Hat 5 says how to configure sendmail, but that does not work if you don't have a DNS server. I was also suggested to change the /etc/nsswitch.conf file, but it didn't work. Can you help me, please?

Regards, javier

(!) I understand your problem and feel your pain.

The problem is that 'sendmail' is conforming to the SMTP standards --- which require that it look up the MX record for any host prior to sending mail to it.

This sort of record (MX) can only be served over DNS (there isn't any way that I know of to mark an /etc/hosts entry as an "MX" record) (There might be some weird NIS or NIS+ way to do it -- but I don't know much about those protocols).

I've worked around that here at my house (I don't run DNS internally --- I just point to a caching DNS server on my gateway router (a Linux box doing masquerading for external references).

Internally I just use a mailertable that relays all mail from my systems to the mail router (which then spools them out over uucp). That mailertable refers to the gateway system using its IP address (which forces sendmail to skip the DNS MX query). On another system I just use uucp over TCP (for outgoing mail) and POP (for incoming).

It would be much easier for me to set up DNS and leave it at that -- but I can be incredibly stubborn sometimes and my main mail feed is over uucp in any event --- so it's just as easy to use that internally.

The reason modifying your /etc/nsswitch.conf (or /etc/host.conf --- as it's usually done under the Linux resolvers) doesn't work for sendmail --- but does work for normal programs using other protocols is that other protocols are normally only interested in address and reverse address records (using the gethostbyname() and gethostbyadd() library calls). 'sendmail' is looking for MX records since it is common to require special routing for mail.

As I said --- the easiest solution is to create a local DNS domain or subdomain for yourself. For example I'd create the lan.starshine.org domain and name my local systems things like antares.lan.starshine.org etc. This would allow me to set up an "authoritive" set of records on my internal LAN and still defer to my ISP for the virtually hosted www.starshine.org ftp.starshine.org, and mail.starshine.org (I'd list myself as an "unregistered secondary" to my ISP's nameservers for the starshine.org zone).

(I could also just copy his records into my own db and essentially lie to my system about being authoritative for the whole zone. This would break any time my ISP changed any of my publicly accessible address records --- but that would probably only be a minor issue. It would only affect my systems while they were resolving my virtual hosts. My ISP would never refer to my name servers as authorities or secondaries --- and I could use IPFW (now IPChains) to prevent any such requests from getting through to my internal nameserver in any event).

The point is that SMTP (the mail transport protocol to which sendmail defaults) relies on DNS --- and it is not trivial to get SMTP working with DNS disabled. You can use a different transport protocol (such as I do with uucp) or you can configure your systems to use direct IP addresses rather than names in their configuration files. This last option isn't so bad if your plan is to set up masquerading and null clients (a sort of sendmail client that forward all of its mail to a hub, even the local addressed items -- and lets the hub deal with it).

Naturally I'm glossing over the details here. I have the
O'Reilly 'sendmail' and 'DNS & BIND' books here at my side --- and I have the notes from a week long seminar I took on these topics (Robert Harker --- http://www.harker.com) --- which are also about 1000 pages. It is basically impossible to comprehensively explain DNS and sendmail in this column, or on the newsgroups and mailing lists.

I hope though that this helps. If you like I'll post (sanitized) copies of my sendmail.mc files and my uucp configuration files to show a couple of examples of how I do it --- with the warning that my configuration is uniquely atypical!


(?)More on: 'sendmail' requires DNS ... won't use /etc/hosts

From Carlos Javier Castro Pe\qa on Thu, 09 Jul 1998 in the comp.unix.questions newsgroup

Dennis,

Thank you for your answer. Maybe the most important thing is that you let me know that I cannot use sendmail for my purpouses wihthout a DNS server. If I knew that from the beginning, I would have spared a lot of time trying different configurations. If you don't mind, I'll post your answer in some Linux mailing lists, because a lot of people has the same question, and there is no usefull answer.

(!) Like the rest of the Linux Gazette all of my articles are covered by the LDP GPL (the variation of the GNU General Public License that is applied to the Linux Documentation Project). Please feel free to post, copy, modify, publish, sell, spindle, mutilate, cite it to your heart's content.
I hope it helps. I don't get into the newsgroups as much as I'd like (and I spend a bit more of my time in the comp.text.tex and comp.unix.security and comp.unix.admin groups when I do make it out there).
Over the years I've always drifted from one newsgroup and mailing list to another (except for the security stuff --- I always stay up on that, though mostly as a "lurker"). For awhile I was the most frequent poster on the comp.lang.awk (formerly the alt.lang.awk) newsgroup. About 5 years ago I was in the top 5 or 10 posted on Compuserve's "UNIXFORUM"
I start by reading and lurking. When I've read for a few weeks (and usually done some experimentation and other research) I start to recognize the common questions, and start to piece things together. After about a month I start answering questions. For a few months I'll answer questions in the NG or ML. Eventually, I move on.
That turns out to have been good experience for answering questions in LG --- since the run the gamut of Unix, Linux, and PC related questions.

(?) You can use a different transport protocol (such as I do with uucp) or you can configure your systems to use direct IP addresses rather than names in their configuration files. This last option isn't so bad if your plan is to set up masquerading and null clients (a sort of sendmail client that forward all of its mail to a hub, even the local addressed items -- and lets the hub deal with it).

Is it possible to make that sendmail uses IP addresses. I need to forward the mail of the Linux host, to the Linux gateway. The users of the Linux host can download the mail from the gateway with POP and IMAP.

(!) I think the one time I did this was with a slight variant of the "clientproto.mc" file that ships with 'sendmail'
It looks like this:
divert(-1)
divert(0)dnl
VERSIONID(`@(#)clientproto.mc	8.7 (Berkeley) 3/23/96')

OSTYPE(linux)
FEATURE(nullclient, `[192.168.1.1]')
... replacing the IP address with the one for your smart hub or gateway. You use the m4 package (also include with all recent versions of sendmail) to generate a cf file from this using a command like:
m4 ../m4/cf.m4 betel.mc > /etc/sendmail.cf
(after making backups of your existing cf file, of course).
The important thing is that is will define a line like:
DM[192.168.64.1.1]
... which should prevent 'sendmail' from using DNS to do any resolution.
Try that and see if it works. I really can't set up a test environment for that at the moment. If that doesn't work, try changing the address to an arbitrary name, adding the "mailertable" FEATURE and creating a small mailertable that points the name at the IP address using the syntax:
myhub: smtp:[192.168.1.1]
Please let me know how it goes.


The original message in this thrread appeared in Issue 30, Linux Memory Usage vs. Leakage


(?)Memory Leaks and the OS that Allows Them

From Thomas L. Gossard on Fri, 03 Jul 1998

Answerguy,

Regarding the recent question you received on memory leakage under 2.0.29. I don't believe it is a memory leakage under the normal sense where a program quits and won't give the memory back to the OS.

(!) Once a program has quit (exited) it is the OS' responsibility to reclaim all RAM and normalize all other resources (process table entries, filed descriptors and handles, etc) that were allocated to that process.

If it fails to do so, that is a bug in the OS (the kernel and/or its drivers or core user space processes, like 'init'). Under Linux (and Unix in general) it is very rare to see this sort of bug. (I've never heard of any kernel memory leaks in Linux).

Under NT there is apparently a problem because the system is very complex and so much of the programming doesn't respect the intended modularity between "kernel" and "user space" --- so DLLs and drivers, (particularly video drivers) will end up locked into memory with no references. Since I'm not an NT programmer (and not a systems programmer of any sort I'll have to accept the considered opinions of others who've said that this is why NT has a notorious poor stability record compared to any form of Unix. The fact that they've added some process memory protection and imposed some modularity and process isolation means that NT's stability is orders of magnitude better than MS-DOS, Windows 3.x, and Windows '95 ever were. However, it's reported to be very poor compared to any of the multi-user OS' like Unix or VMS.

(?) I also use .29 and saw the same problem. I sent out several e-mails and found out that what is really happening is the OS has the memory but is not reporting it as free but has saved it for cache purposes. Notice the guy with the question said "ls" the first time took memory but not the second time. A memory leak will take the memory each time. The OS is keeping the memory for itself. The real problem is in the way the OS or top or whatever is reporting the memory usage and the way we expect to see it.

(!) The way that memory is used by the Linux cache is fairly complex. Consequently the output from 'top' and 'free' and 'vmstat' are not easy to interpret (and I don't consider myself to be an expert in them by any means).

The intended design is supposed to use all "available" free memory for disk caching (and I guess the 2.2 kernels will implement disk and directory entry caching --- which should yield much better performance for several reasons). It is certainly possible that there were bugs in the caching and memory management code in some of the 2.0.x kernels. You could certainly go to the Linux kernel mailing list archives and read through the various change summaries to see. Or you could ugrade to a newer kernel and look for symptoms.

(?) The only true way to check on the problem seems to be to execute some memory hog routines, like graphics and watch the swap useage. In particular my mail program seemed to suck up 8 or 9 megs at a time yet even going in and out of that and xv my swap was barely touched. With a sufficient memory leak after a period of time the swap should see a great deal of activity due to the lack of memory.

Tom G

(!) Most memory leaks are in user space --- in long running daemons like 'named', a web server, 'sendmail', X, etc. Your test doesn't isolate the cuase of the memory leak. I think my message covered some suggestions to do that (like run with init=/bin/sh and run some tests from there)

If exiting doesn't return your memory to availability for cache/free space --- you have a problem in your kernel. However, it can be deceiving. For example --- I remember a situation where BIND ('named') was leaking --- and it looked like 'sendmail' was the culprit. In actuality 'sendmail' was making DNS queries on the named, causing it to lose it's cookies. (At the same time that 'sendmail' was segfaulting (dying a horrible death) because the old resolver libraries (against which it was linked) were return lots of MX records for sites like Compuserve and AOL (which back then had just started deploying dozens of mail servers each --- so that one DNS request would return more records than the resolver could handle).

At first I thought someone had discovered a new remote sendmail exploit and was hacking into my site (this was actually on an old SunOS box). Then I realized that it was related to DNS --- and finally I upgraded to a newer DNS and set of resolver libraries. The newer version of named still had a memory leak back then --- but my other sysadmin friends said "Oh yeah! It's been doing that --- just set up a 'cron' job to kill it once a day or so" (I'd been sure that it was my fault and that I'd built and installed it incorrectly).

As for the "true way" to look for memory leaks --- I think most programmers would disagree with your analysis on this one. They might suggest Electric Fence (a debugging form of the malloc() and new() calls that's designed to catch the sorts of allocation and reference problems that 'lint' won't --- and that might not be immediately fatal). Another option might be for someone to link this with Insure++ (http://www.linuxjournal.com/issue51/2951.html) and do their testing with that.

Certainly, we, as sysadmins are usually constrained to more hueristic and less "invasive" approaches --- but we definitely want to isolate the problem to a specific component (program, module, kernel configuration whatever) or combination. That's what "tech support" is all about.


(?)X Window with two monitors...

From Mark Thomas Mercado on Tue, 30 Jun 1998 in the comp.unix.questions newsgroup

I've looked around on the web, and couldn't find any documentation on setting up X with two monitors (myhost:0 and myhost:1)... I would love to RTFM if anyone could point me in the right direction...

Thanks,
Mark.

(!) This would usually be called "multi-headed" mode and the different screens would be addressed as "myhost:0.0" and "myhost:0.1" -- "myhost:1.0" and "myhost:1.1" (etc) would refer to a different server or instance running on the same machine.

I don't know what this means on other forms of Unix --- but I think you'd usually see it on a system that was hosting multiple X Terminals via XDMCP. On my Linux boxes I usually see it as an extra instance of the X server running on a different virtual console (so my wife and I can each have a running copy on any of the systems around the house without having to disturb the other's).

In our case we run startx -- :1 to start the 2nd instance of our X server. We can then switch between them with the [Ctrl]+[Alt]+[Fx] sequence (or the [Alt]+[Fx] sequence to get to either of them from any of our text mode virtual consoles. (If you don't use a PC Unix that supports VC's this probably won't make any sense -- don't worry about it).

Getting back to multi-headed support:

This depends on your X server. Last I heard XFree86 servers (the suite of X servers that's most commonly used with Linux FreeBSD, NetBSD (PC) etc) don't currently support multi-headed operation.

I know that some of the commercial X servers for Linux (and presumably FreeBSD, etc) support it. Unfortunately I've never used a PC or Mac Unix that was configured this way. So, I don't know how it works. I've used an old Sun system set up this was --- but I didn't configure it or even look at it very closely --- it was just used for some compatability at a place where I was working, so I barely touched it.

I've used Macs that were multi-headed. That was a piece of cake to configure. I also noticed that Win '98 has this feature available --- so it might become much more common in the next year or so.

Anyway, check out the XFree86 FAQ at http://www.xfree86.org/ for more pointers.


The beginning of this thread was published in Issue 30, DAO (Disk At Once) CDR? Stump Me!


(?)DAO software for linux?

From Mark Heath on Sat, 27 Jun 1998

On Thu, 25 Jun 1998, Jim Dennis wrote:

Well, you have me stumped.

I don't know anything about the difference between DAO and other forms of CDR recording. Normally, I'd spend an


There are 3 different types of cd recording: Track at once, Disk at once and session at once.

(!) I figured it was probably something like that.

(?) cdrecord, cdwrite and many others do Track at once.

Its where the software writes a track turns off the laser, turns it back on then writes the next track, after all the tracks are done it writes the leadin and lead out tracks.

(!) I've always been curious about multi-session CD's and how they maintain the directory/indices on them. But never curious enough to look for the rainbow of books that define the spec. --- more of a "layperson's armchair" curiousity that would be satisfied with a five minute description and a couple of diagrams.

(?) With disk at once, the laser is turned on, the leadin is written, then the first track, second track etc, then te lead out and then the laser is turned off.

The has the advantage of being able to master music disks which have no pauses in between the tracks, which is manditory for TAO.

(!) I think you mean "which is an avoidable result when using TAO." It's just a semantic nitpick --- but I had to read this statement several times to guess what you (probably) meant.

(?) Session at once is basically multi session DAO.

(!) Huh? I am also a bit foggy on multi-session CD's --- but I'd thought that the sessions on multi-session CD's were supposed to be on track boundaries. Are you saying there's a multi-session per track option?

(?) hour or two hunting around on Alta Vista, Yahoo!, Savvy Search, DejaNews, etc and pulling out more of my hair to find out. However, I have a book to write and a wife to feed, and it is just too close to my deadline for me to wait until tomorrow.

So, what is DAO and why would you need it? What is the difference between cdrecord and cdwrite (the one I use with my Ricoh CDR)? Have you tried them both? What is MMC? Who is Jeff Arnold? Who are HyCD and should we


cdrecord is the replacement for cdwrite, Jorg Schilly supports every unix platform that can have a cdr plugged into.

MMC is the latest multi media specification for CDRs so that all drives have the same command set for recording.

(!) I did guess that MMC stood for "multi-media CD" or "multi-media CDR." I take it that MMC doesn't define a standard for DAO mode recording? (Or were you simply saying that your HP SureStore CDR doesn't support the MMC CDR spec?).

(?) Jeff Arnold is synonimous (sp?) with DAO software he wrote the First and most widely used DAO software for DOS. Its a pity that he won't support Unix because his tools are very unix like.

(!) Maybe he could be bribed. Does he distribute his package as shareware? Would he be willing to license the code and let someone else do the port?

(?) HyCD are who alta vista turned up when I did A search for +unix +cdr +software. They support mixed mode disk duplication, which why I thought it did DAO. Unfortunately it does not.

(!) I'm afraid to ask.... what is the difference between "mixed mode" and DAO? Is it that HyCD can duplicate CD's that have mixed data and audio (etc?), and/or that it can read tracks that were laid down in TAO and DAO (and other?) modes but it must write them in TAO?

(?) I was trying to eliminate a need for my Windows box but things keep popping onto it.

I use it for 3 things:

  1. Audio manipulation. I'm waiting for a good tool (Atech is being developed) to do this under Linux ala Cooledit (not to be confused with the Linux text editor)
  2. DAO writing.
  3. Epson Stylus colour printing. Ghostscript just doesn't match the quality.

(!) Well, hopefully this will inspire someone out there to "raise the bar" and help you purge Windows from your system at long last.

(?) I did use it for Playstation development but now I have the tools for Linux.

Thank you very much for your help.
Mark.

(!) Well, I obviously wasn't much help --- but we'll see if our readership will give us a scoop...


(?)Mark Heath fills us in...

From The Answer Guy on Mon, 29 Jun 1998

On Sat, 27 Jun 1998, Jim Dennis wrote:

Its where the software writes a track turns off the laser, turns it back on then writes the next track, after all the tracks are done it writes the leadin and lead out tracks.

I've always been curious about multi-session CD's and how they maintain the directory/indices on them. But never curious enough to look for the rainbow of books that define the spec. --- more of a "layperson's armchair" curiousity that would be satisfied with a five minute description and a couple of diagrams.

(!) I've never successfully written a multisession CD either. I've made a few open disks but never managed to import the previous session properly so I didn't bother trying to continue writing to them. Just in case I lost the first session.

(?) Session at once is basically multi session DAO.

Huh? I am also a bit foggy on multi-session CD's --- but I'd thought that the sessions on multi-session CD's were supposed to be on track boundaries. Are you saying there's a multi-session per track option?

(!) This is correct. For example you can write 3 tracks multisession using DAO. Then come back later and write a few more tracks using DAO.

(?) MMC is the latest multi media specification for CDRs so that all drives have the same command set for recording.

I did guess that MMC stood for "multi-media CD" or "multi-media CDR." I take it that MMC doesn't define a standard for DAO mode recording? (Or were you simply saying that your HP SureStore CDR doesn't support the MMC CDR spec?).

(!) The 4020i doesn't support MMC. Only new drives do (most of the IDE CD-Rs do, and the CD-RW do)

(?) Jeff Arnold is synonimous (sp?) with DAO software he wrote the First and most widely used DAO software for DOS. Its a pitty that he wont support Unix because his tools are very unix like.

Maybe he could be bribed. Does he distribute his package as shareware? Would he be willing to license the code

(!) He does. The downloadable version is available at:
http://www.goldenhawk.com/

(?) and let someone else do the port?

(!) I'd really like that but I dont know how Jeff feels about Linux.

He seemed rather hostile when I asked about doing a linux port. All his reply was: no.

(?) HyCD are who alta vista turned up when I did A search for +unix +cdr +software. They support mixed mode disk duplication, which why I thought it did DAO. Unfortunately it does not.

I'm afraid to ask.... what is the difference between "mixed mode" and DAO? Is it that HyCD can duplicate CD's that have mixed data and audio (etc?), and/or that it can read tracks that were laid down in TAO and DAO (and other?) modes but it must write them in TAO?

(!) Mixed mode is simply multiple tracks with different data formats. The most common is Computer games with 1 data track followed by several Audio tracks, these can be written with TAO.

The main difference between DAO and TAO is that for DAO the laser is never turned off during the recording. You can even do a single track in DAO mode. The difference here is that DAO disks can be taken to CD publishing company while TAO disks can not (due to gaps in the track data, where the laser has been turned off)

(?) Well, hopefully this will inspire someone out there to "raise the bar" and help you purge Windows from your system at long last.

(!) Well I did this some time ago, purge windows. Then a piece of hardware came out which was built into the motherboard so I built a new machine and put both Linux and 95 on it.

My primary box is Linux only.

(?) Well, I obviously wasn't much help --- but we'll see if our readership will give us a scoop...

(!) Well Its always good to hear that someone understands and says Lets see what we can do.


Copyright © 1998, James T. Dennis
Published in Linux Gazette Issue 31 August 1998


[ Table Of Contents ] [ Front Page ] [ Previous Section ] [ Next Section ]



Copyright © 1998, James T. Dennis
Published in Linux Gazette Issue 31 August 1998


[ Table Of Contents ] [ Front Page ] [ Previous Section ] [ Next Section ]

"Linux Gazette...making Linux just a little more fun!"

BETTING ON DARWIN, PART 2: WATCHING THE MUCK
MARC ANDREESSEN AND TOM PAQUIN ON NETSCAPE'S OPEN SOURCE STRATEGY, ONE MONTH LATER

PART 1
By Doc Searls
May 16, 1998


On May 13, I followed up on the April 8 interview, just before the photo shoot for the June issue of Linux Journal, where the first interview would run. While little more than a month isn't much time to measure distance on an evolutionary path, I thought Internet Time might accelerate things a bit, so I began by asking Tom how things now stood.


Waiting for tyranosaurs

DOC: I'm interested in seeing how the conversation looks different than it did a month ago when we still had muzzle blast. Back then we were talking in evolutionary terms: "betting on Darwin" was how you put it. Have you seen any new life forms start to emerge?

TOM: Some life forms have begun to emerge, but there haven't been too many tyrannosaurs stomping out of the muck. There have been some interesting life forms, though. I'm really happy with the XML parser that was donated. I'm pretty happy with a couple of low-hanging fruit for external ownership. I think that's moving along. On the whole it's been very pleasing; but I don't think it's fair to say the initiation phase is complete. We haven't really gotten the entire Communicator out there yet. For example, the Messenger source — mail, news and all that — is just flowing out now, starting yesterday.

MARC: There hasn't been a snapshot of the code that's ... done, or anything like that. A fully stable release. So we're still early here.

TOM: We're way, way away from a fully stable release.

See, most public sources work by a process of piling on to something that works but isn't complete. Somebody goes out and says "Here's something that works, everybody. Let's all pile on." As opposed to "Here's a pile of code that's early in its development, that we're going to turn into something."

So some people are piling on, diving in, and what we're seeing at this early stage are chunks of code that are not tightly interwoven with the existing code. The XML parser is a perfect example. A guy writes an XML parser on the side, and says "Here it is. It parses XML. It produces a data structure. You can take the data structure and do stuff with it." Okay, that's really valuable and straightforward. It contributes, and it's a good thing.

What we haven't had is, say, ten guys from IBM popping up and saying "Okay, we thoroughly understand this product now. We're ready to do everything we can to make it do what we want it to do." It's too early for that. And it's a little hard to say when and how that will happen. What I've been beating on in my shop is: "Let's get this thing to a point where people feel like it's a product that needs polishing, as opposed to a pile of code that needs to be turned into a product." When we're at that stage, we'll get more people contributing.

Meanwhile, we're not starving for contribution; but we're working on a chicken/egg problem that has to be solved one way or another. Our goal is to to toss a chicken in the ring and give it away. And that's pretty much what we've been doing all along, though not all at once. We've got parts of the source out, and we're finishing other parts. The Communicator 5.0 team is working away.

The world of all possibilities

DOC: Let's take an example of something that might come from the outside that we touched on in our last talk. At that point you didn't have an ORB (Object Request Broker). Has anybody come up and created one?

TOM: I don't think anybody has done an ORB yet.

MARC: We had the Visigenic ORB, but I think it's gone now. We've been trying to keep the client pretty small.

TOM: The problem wouldn't be the ORB, it would be getting it to behave in a useful manner.

DOC: In a world of all possibilities, and this may not be possible, what would happen if somebody came along and created a DCOM (Microsoft) ORB? Would you care?

MARC: Contribute it.

DOC: So you're agnostic about object models at this point.

MARC: On the application server side, it's both DCOM and CORBA.

TOM: I'm not agnostic if you produce an object model that binds me to a platform. So, when any proposal is made to Mozilla that is not going to migrate to a cross-platform universe, including platforms I don't know about today, I won't take it on. For example, if somebody says, "I want to contribute this thing to Mozilla; but I don't want to contribute the source. I only want to give you a binary. It'll run on all the platforms you're currently supporting." That's not really what Mozilla is all about. I may have to make trade-offs I can't see today; but that's not really what we're for. What we're for is platform independence. Any suggestion, object model or otherwise, we're open to. If you've got a platform issue, I want to solve it. But guess what: we can pile a million people on solving it.

Now the Raptor thing that was contributed halfway through April, they have a thing they call XP/COM, which is a small, lightweight component model thing... I really don't know what kind of mapping that has; but I think it tries to solve the same kind of problems: load a module, unload a module, interrogate a module for supported interfaces, blah blah blah.

MARC: But it's not OLE, it's just COM. That is, it's built on the COM primitives. It uses the COM ideas, but it's not OLE.

TOM: He knows more about it than I do.

MARC: Barely.

DOC: This interests me because this is one of those areas where we've got a large delta between the real and the ideal. A year ago we were all talking about how the world was going to be objects, and that one object model would take care of that, and it looked like a big argument was brewing between two different object models. Now we're you're saying it's still too early in the evolution toward this thing even to talk very much about it.

MARC: I would argue that it's happening, but from the bottom up. Much as to say that C++ and Java intrinsically programs to consist of objects; but it's a programming tool more than a concern right now. But a distributed object world is quite a ways off. It presumes the existence of everything from management systems to application servers, a whole new generation of APIs and many other things that still don't, for the most part, exist. So it has to be built incrementally.

DOC: And you expect the Open Source world to deliver that.

MARC: It could, but it's a little bit tricky. There are sort of three worlds that are relevant here. One is the Open Source world. Another is the professional commercial software development world. The third is the theoretical world where you find most of the people who are passionate about creating a world full of distributed objects. Most of these guys are coming from a relatively intellectual orientation. And so there needs to be an intersection between those three worlds. The intellectuals have traditionally tried to appeal to the commercial software developers, with limited success. They could attempt to appeal to the Open Source developers, perhaps with more success. We'll see.

Meanwhile the main problem is that your average commercial software developer is far too busy trying to put products out the door to try to create a world full of distributed objects.

TOM: On the other hand, there are some objects that they find themselves constantly revisiting. So if they could agree on a nomenclature and interface and get it well-known that, okay, a color-picker is a color-picker, and we can spell it "c-o-l-o-r" or "c-o-l-o-u-r" so let's make a decision move on with it. That's how it could grow up. Incremental agreement based on the need for everybody to move on. But when you sit down and say "let's come up with an object model to solve the planet's problems," it ain't gonna happen in an afternoon.

DOC: Since the dawn of time there have been ideals, and this is the one of the latest of these, I suppose. Looking back, I can remember when "machine independent software" was one of those. It's still with us.

MARC: Machine independent software happened with FORTRAN.

DOC: I remember it from, like, 1980.

MARC: At one of these Java events somebody played a video of an IBM promotional film from 1954, about one of the structured programming languages of the time, and the pitch was that you could write it once and run it anywhere. (laughter)

DOC: Let's look at the Open Source thing for a moment. There's a population out there of Open Source guys that you say is moving toward, or already has, critical mass. The statistics work such that somewhere in this larger population there will emerge some original solutions to problems. But solving problems and pursuing ideals are very different things. One tends to be incremental and trial-and-error while the other tends to be theoretical. Now I'm curious about what brings the Open Source world — this practically-oriented problem-solving population — into the market conversation.

I just saw an interesting story in Interactive Week (http://www.zdnet.com/intweek/printhigh/51198/nt511.html) about how Linux is in the intranet OS conversation, but not at the top executive level. It tells how this IDC guy went to the chief financial officer at a bank in New York, and the guy said they weren't using Linux, because "they didn't want to run the bank on unsupported software." But when the guy talked to the IS staff, they said they had a hundred servers running on Linux. So when this guy told the staffers what the CFO said, they said he's the guy who gave them a mandate with no budget, so they went out and got Linux." That kind of thing got no coverage before, and now it's getting some.

So where has the browser conversation moved? Has it changed from "hey, they've released the family jewels" to "Hey, isn't it interesting what's happening with those jewells?"

MARC: People are still trying to figure it out. There's quite a bit more knowledge of the product that needs to gather before the understanding breaks through.

TOM: There are some cutting edge people who we'd rather not name who get it, and who are saying "Netscape did that? Yup. Let's go." But they're still in the minority.

MARC: And there are some people at the Department of Defense who are responsible for some of their investment directions. Internally they find a lot of this highly attractive. Because historically they've built all their own systems, and they can fix them if something goes wrong. But since that's prohibitively expensive, they've moved to commercial off-the-shelf hardware and software. The problem with that, however, is that when it needs fixing they have to call a Microsoft 800 hotline just like everyone else. And they're not happy about the idea of building the entire U.S. military infrastructure just on Microsoft products, for obvious reasons. So the prospect of an Open Source world for them is a very exciting one. The prospect of Linux specifically is exciting because it gives them something that gets them the benefit of commercial off-the-shelf software without the risks they see with single commercial sourcing.

The whole point of commercial off-the-shelf for the military is a much broader base of investment happening by a broader community that they can take advantage of, rather than having do it all themselves. Open Source gives them many of those benefits, plus some new ones, like: they can fix it when it breaks, and they're not dependent on an outside vendor. And they certainly have the technical ability to do what they need to do to an existing piece of code.

All of which is why they are getting extremely interested in this development, and in Linux especially. Which is why I think we are going to see the intelligence community be an early adopter of this stuff.

DOC: How much do the Linux and Open Source conversations overlap?

MARC: The Open Source conversation is mostly around specific examples. Linux, Mozilla, Apache. Because the world doesn't yet know is how to extrapolate Mozilla, Linux and Apache to more things. So your commercial IT world looks at it and says "this is never gonna fly with an Oracle database, or with SAP manufacturing applications. So we say fine, let's concentrate on the areas where it's easy to apply the kinds of things we can do today.

Burning cash

DOC: This conversation is so far away from what's going on at Microsoft that it might be worth visiting the difference. Marc, tell me more about how you understand Microsoft's vertical integration strategy — especially since what you said about it last time got munged by my tape recorder.

MARC: Well, what I said before was spontaneous. I'm not sure I can repeat it exactly.

TOM: Maybe we can reconstruct from what led into it.

DOC: Okay, I remember a scenario. What would happen if the whole client world is running on Explorer?

MARC: Yeah, if the world goes 100% Microsoft clients, then Microsoft locks down the protocols and the APIs and the access methods to the servers, and then takes over the servers.

TOM: As well as the content creation tools.

MARC: —As well as the tools, and then the next step is the content services themselves. Basically I think what we were talking about was, you see over and over again in unrelated industries, a pattern. Historically, computer industries were totally vertically integrated. IBM, DEC, Apple and other companies all built verticalized businesses and then found they were under attack by vendors like Intel and Microsoft and Dell and others that came in with a more open approach at some horizontal level. So if you've got someone who's a vertical provider, with the cost structure implied by that, in a rapidly exploding market, and it's not able to fulfill the market demand fast enough, then that vendor is subject to attack by horizontal providers who are coming in with fundamentally better economics, such as Microsoft with commodity software and Intel with commodity chips, and Dell with commodity PCs.

But then what happens is you get into these situations — specifically the one Microsoft is in today — where, due to increasing returns and a series of other developments, you have a monopoly, for example with the operating system. So, at that point, for to grow faster than the market's growing, the logical thing is to leverage your monopoly vertically up into adjacent spaces in the stack.

TOM: It's required.

MARC: It's required. They have to, or at least they have to try, to grow faster than the market is growing. That is Microsoft's big problem right now. And they thought they were well on their way to doing exactly that. They thought they were going to leverage the client straignt onto the server. If the world was using a Windows desktop and not all these browsers, they would have been done with this by now. But this browser thing came along between Windows and the user, so they have to establish control of what turned out to be a new level: the browser level, the network user interface level. If they can successfully go to 100% on that, then they can by inference lock down the protocols on 100% of the servers.

In a networked environment, the desktop/browser is the moral equivalent of the TV tuner for content and services. They're going to leverage up into those spaces exactly the same way. So what they're basically doing is going from a horizontal strategy to a vertical one: from a position of monopoly in one horizontal slice — where they have monopoly profits — and using those monopoly profits to subsidize verticalizing.

And they have a fundamental economic advantage in that they have all this monopoly cash coming in. So they can arbitrarily subsidize losses in other markets.

DOC: Which is why they could nail the KMPG/Peat Marwick deal. (Essentially giving away something at a loss — in this case service — that Netscape needed to charge for, and winning the business that way.)

MARC: Right. They can write a check to get whatever business they want in a new market, because they have all these monopoly profits coming in from existing markets where their control is absolute. Which is why in the Senate hearings, Senator Cole's questions to Gates about his profit margins were actually very relevant. One of the ways you can tell when a company really has a monopoly is by their profit margins. Because normally competitive technology markets tend to have ten, twenty, twenty-five percent profit margins, net profits. Not forty to sixty percent. So that's one of the ways to see if a monopoly exists.

They actually have so much cash coming in the door now that they actually have a problem nobody has ever had before in this market, which is to find ways to burn as much cash as fast as possible, and in as many creative ways as possible: ways that are going to lose money in the short term. So it is in their interest to burn cash. This is an interesting position to be in.

DOC: And they can do it.

MARC: Yes, but it isn't just that they can, it's that they need to. Because if they don't they'll report even bigger profit margins and the regulators will get real interested. They don't want to prove they have a monopoly. Burning cash is one way to reduce the appearance of monopoly.

Now, this strategy only works as long as you have your core monopoly. The minute you lose that monopoly, you have to compete in that core horizontal slice, and your margins go down. And every other part of your stack becomes vulnerable to attack because you can't sustain your tactics. You don't have all this cash coming in, subsidizing everything.

DOC: I see you compete with that monopoly by changing the game. You did that with the browser in the first place. You made the browser the network interface; and since most of the real business of computing happened on the network, you changed everything. Suddenly what you saw at every trade show, regardless of platform, was a sea of monitors all with browsers that masked the OS in each case.

MARC: Right.

DOC: And in '96 you did the same thing with LDAP. Changed the game.

MARC: Um hmm.

DOC: The way things were headed before that, Microsoft was going to squeeze the world into the Cairo directory.

MARC: Right. ODSI. Open Directory Services Interface (a Microsoft protocol), was going to be the way everybody was going to do it. Same with mail: MAPI on one side versus POP and SMTP on the other.

DOC: So I'm wondering if you imagine something will arise out of the Mozilla conversation that's a game-changer like the browser itself was, or LDAP was.

TOM: It certainly will. It's a question of when.

MARC: My guess is that there will be a grad student somewhere, say the Netherlands, who's doing a Ph.D. dissertation on a new advanced user interface. And instead of just building something that nobody will ever see, they'll build it on the Mozilla source code base and release it to the Net. Why not? It's not going to sell anyway — it's a Ph.D. dissertation, after all. They're going to want as many people as possible to see it, and to get as many job offers as possible. And it's going to change the world. So my guess is we're going to see stuff like that popping up over the next couple of years. No reason not to. We've got something like critical mass here. We have virtually the entire world of computer professionals, especially in the highly creative areas of research and computer science.

TOM: And imagine the alternatives. Here we're going to have this public source and all these people will have the freedom to work in this space, in a space that a hundred million people use in their daily lives all the time. Can you say there won't be any such innovations in the next five years? That's almost ludicrous.

The free world

MARC: It's interesting that one of the changes that has happened in the market over the last five years is that client software is now free. Not just browser software and email software, but personal organizers and word processors, spreadsheets. It is now impossible in the software market to make money doing client software of any kind for anything. Microsoft Outlook, for example, is wiping out the independent personal information management (PIM) market.

So you can't expect new innovations to emerge out of the commercial software world that will be highly relevant to end users that come in the form of client software. You can expect them to come as on-line services, perhaps. Or as server software, perhaps, because you can still make money on those without being Microsoft. But innovation in end user software is only going to come out of the Open Source community. It's not going to come out of Microsoft. They don't do innovation here, and they don't have to. And you know the venture capitalists are not going to fund the next company to do the next computer interface, because there's no way to make money on that. And that could end up being the biggest threat to Microsoft two, four, five, ten years from now. Because that's when its core monopoly comes under attack by something that is technologically far superior, with a business model that's far superior. That's when they're really in trouble. Because free is a pretty good business model.

DOC: And you're counting on that grad student out there, writing in Mozilla code, to come up with the killer paradigm shift on the client side.

MARC: First, it would be better for that to happen than for it not to happen, regardless of whether or not we benefit directly. De-stabilization and the heterogeneity of the market is good for us. Stabilization and homogeneity is bad for us. So that's the first part of the decision tree. The next part of the tree is that as these things happen presumably there will be ways for us to make money, either through online service offerings or server software offerings or programming tools or something that wraps around that and provides commercial support.

DOC: So it's wrong to believe it was ever in Netscape's interest to have stabilization occurring around itself.

MARC: That could be true.

DOC: People default to thinking that every company wants a stable situation where they've locked something down and don't need to do anything new in that space for a long time — until something comes along that changes the business so totally that they have to start all over again.

MARC: Yeah. Let me put it this way. Every company would like to be in Microsoft's situation, a completely stable situation, with abundant money flowing in. But if that's not reasonable, then the next best thing is to have a constantly de-stabilized situation. It means you have to keep running and doing new things. But that's what makes it fun.

DOC: And you want Microsoft's tractor trailer to chase your four-wheel drive all over new landscape.

MARC: Sure. Definitely.

Links

The Netscape Open Source White Paper provides an excellent background on Netscape's approach to the open source movement.

"New Rules for a New Economy" is an outstanding piece that ran recently in WIRED.Most of Netscape's moves have been in complete alignment with Kelly's rules — which makes sense because in many ways Netscape wrote them. Or at least discovered them.

A Platform is a Chinese Household givesDave Winer's alternative software community metaphor.


Copyright © 1998, Doc Searls
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


Copying Red Hat Legalities

By Eric Canal


I posted a question last month and I received help from some people and some others asked me to send them my results. I think that this article can interest some of your readers that's why I send it to you. You can make all the arrangements you want and I don't care for the mention of my name. Do what you want... I just want to collaborate at my level to the fantastic Linux Community.

I insist on only one thing : thanking all the people that helped me about this topic : the burning of a RedHat CD ROM.

Here is a sum up of all the information I received and some additional one that I discovered in my experiments.

As I am Francophone, i hope that you won't find to many English mistakes. :(

1. It is legal to make his own RedHat CD ROM if you mention all the copyrighted stuff and the different owners of trademarks, etc. 2. It is cheaper to buy a CD from different organizations such as RedHat, InfoMagic or CheapBytes if you are connected to the Internet with a modem and if you pay your communications. The only interesting way to burn a RedHat CD ROM is when you have a fast Internet connection and above all if you don't pay for it (for example in an university or at work (your boss will be happy for the bill ;p))). 3. You need all the RPMS files, all the "instimage" directory and the file "i386". With this email you will find an attached text file that describes all the directories involved in a RedHat CD ROM, but most of them are facultative. You have to respect the hierarchy between the directories you want to put on your own CD ROM. 4. When you burn your CD ROM you must have an ISO 9660 file system with Rock Ridge Extensions (to let Linux recognize the long filenames). That implies that you must burn it from Linux with "mkisofs", "mkhybrid" (using option -r for RR extensions) with a former Linux system or a minimal Linux system (see the corresponding HowTo for that) because most of Windows burners don't do Rock Ridge extensions. 5. With RedHat 5.1 and only with this version you can burn your CD ROM with a ISO9660 / Joliet file system which is more comfortable if you don't already have a Linux system. It doesn't work at all with RedHat 5.0 and former versions (this is due to the kernel 2.0.34 which is the first stable version to directly recognize Joliet extensions). 6. I didn't try a bootable CD, but I know it is feasible. In this case you need the autoboot directory. The file system you have to use is "El Torito". 7. You can take all the updates and put them in the RPMS directory in order to replace the deficient ones. I did it for all the RPMS except the ones involved with the kernel and the libs (libc5 and glibc), all the funny things that are at the heart of the system. When I first tried all the updates without any care, it didn't work at all (system halted). In my second try, I didn't copy the files I mentioned above and it worked... But the problem can be elsewhere (deficient burned image, etc.).

Two more advices : a. Linux is case sensitive, so be careful with that. In particular you must have the RPMS directory name in capital letters. The hierarchy of directories joined with this message indicates the where the capital letters must be. b. Some CD burners might not work with Linux. In order to know that you must have the firmware version of your burner and see if it is compatible with mkisofs or mkhybrid or cdrecord. You can check it at http://www.guug.de:8080/cgi-bin/winni/lsc.pl. If it is not the case, you can upgrade it from the CD burner manufacturer (see their website).

In any case you can have a look on the CD Writing HowTo at your favorite mirror (I personaly use www.freenix.fr which is in french, but I guess that not everybody might want to go there ;p)).

Good luck and thank you very much for the support i received

May be the (Linux) Force be with you (and do go to the dark (NT) side of the Force) ;p)

and long life to the Linux Gazette.

Eric CANAL

.
|-- COPYING
|-- DOCS.FR
| |-- 41REDHAT
| | |-- TRANS.TBL
| | |-- a4
| | | |-- 300-dpi
| | | | |-- TRANS.TBL
| | | | |-- complet.zip
| | | | |-- impaires.zip
| | | | `-- paires.zip
| | | |-- 600-dpi
| | | | |-- TRANS.TBL
| | | | |-- complet.zip
| | | | |-- impaires.zip
| | | | `-- paires.zip
| | | `-- TRANS.TBL
| | |-- index.htm
| | |-- lf-pdf.htm
| | |-- manuel.tgz
| | |-- rh4-.htm
| | |-- rh4-01.gif
| | |-- rh4-01.htm
| | |-- rh4-02.gif
| | |-- rh4-02.htm
| | |-- rh4-03.gif
| | |-- rh4-03.htm
| | |-- rh4-04.gif
| | |-- rh4-04.htm
| | |-- rh4-05.gif
| | |-- rh4-05.htm
| | |-- rh4-06.gif
| | |-- rh4-06.htm
| | |-- rh4-07.gif
| | |-- rh4-07.htm
| | |-- rh4-08.gif
| | |-- rh4-08.htm
| | |-- rh4-09.gif
| | |-- rh4-09.htm
| | |-- rh4-10.gif
| | |-- rh4-10.htm
| | |-- rh4-11.gif
| | |-- rh4-11.htm
| | |-- rh4-12.gif
| | |-- rh4-12.htm
| | |-- rh4-13.gif
| | |-- rh4-13.htm
| | |-- rh4-14.gif
| | |-- rh4-14.htm
| | |-- rh4-15.gif
| | |-- rh4-15.htm
| | |-- rh4-16.gif
| | |-- rh4-16.htm
| | |-- rh4-17.gif
| | |-- rh4-17.htm
| | |-- rh4-18.gif
| | |-- rh4-18.htm
| | |-- rh4-19.gif
| | |-- rh4-19.htm
| | |-- rh4-20.gif
| | |-- rh4-20.htm
| | |-- rh4-21.gif
| | |-- rh4-21.htm
| | |-- rh4-22.gif
| | |-- rh4-22.htm
| | |-- rh4-23.gif
| | |-- rh4-23.htm
| | |-- rh4-24.gif
| | |-- rh4-24.htm
| | |-- rh4-25.gif
| | |-- rh4-25.htm
| | |-- rh4-26.gif
| | |-- rh4-26.htm
| | |-- rh4-27.gif
| | |-- rh4-27.htm
| | |-- rh4-28.gif
| | |-- rh4-28.htm
| | |-- rh4-29.gif
| | |-- rh4-29.htm
| | |-- rh4-30.gif
| | |-- rh4-30.htm
| | |-- rh4-31.gif
| | |-- rh4-31.htm
| | |-- rh4-32.gif
| | |-- rh4-32.htm
| | |-- rh4-33.gif
| | |-- rh4-33.htm
| | |-- rh4-34.gif
| | |-- rh4-34.htm
| | |-- rh4-35.gif
| | |-- rh4-35.htm
| | |-- rh4-36.gif
| | |-- rh4-36.htm
| | |-- rh4-37.gif
| | |-- rh4-37.htm
| | |-- rh4-38.gif
| | |-- rh4-38.htm
| | |-- rh4-39.gif
| | |-- rh4-39.htm
| | |-- rh4-40.gif
| | |-- rh4-40.htm
| | |-- rh4-41.gif
| | |-- rh4-41.htm
| | |-- rh4-42.gif
| | |-- rh4-42.htm
| | |-- rh4-43.gif
| | |-- rh4-43.htm
| | |-- rh4-44.gif
| | |-- rh4-44.htm
| | |-- rh4-45.gif
| | |-- rh4-45.htm
| | |-- rh4-46.gif
| | |-- rh4-46.htm
| | |-- rh4-47.htm
| | |-- rh4-48.htm
| | |-- rh4-49.htm
| | |-- rh4-50.htm
| | |-- rh4-51.htm
| | |-- rh4-52.htm
| | |-- rh4-53.htm
| | |-- rh4-54.htm
| | |-- rh4-55.htm
| | |-- rh4-56.htm
| | |-- rh4-57.htm
| | |-- rh4-58.htm
| | |-- rh4-59.htm
| | |-- rh4-60.htm
| | |-- rh4-61.htm
| | |-- rh4-62.htm
| | |-- rh4-63.htm
| | |-- rh4-64.htm
| | |-- rh4-65.htm
| | |-- rh4-66.htm
| | |-- rh4-67.htm
| | |-- rh4-68.htm
| | |-- rh4-69.htm
| | |-- rh4-70.htm
| | |-- rh4-71.htm
| | |-- rh4-72.htm
| | |-- rh4-73.htm
| | |-- rh4-74.htm
| | |-- rh4-75.htm
| | |-- rh4-76.htm
| | |-- rh4-77.htm
| | |-- rh4-78.htm
| | |-- rh4-79.htm
| | |-- rh4-80.htm
| | `-- rh4-_c.htm
| |-- FAQ
| | |-- HTML
| | | |-- TRANS.TBL
| | | |-- meta-faq.fr-1.html
| | | |-- meta-faq.fr-2.html
| | | |-- meta-faq.fr-3.html
| | | |-- meta-faq.fr-4.html
| | | |-- meta-faq.fr-5.html
| | | |-- meta-faq.fr-6.html
| | | |-- meta-faq.fr-7.html
| | | |-- meta-faq.fr-8.html
| | | |-- meta-faq.fr-9.html
| | | `-- meta-faq.fr.html
| | |-- TRANS.TBL
| | `-- meta-faq.fr
| |-- FDISK-Linux
| | |-- MANUEL.TXT
| | `-- TRANS.TBL
| |-- FIPS-15
| | |-- MANUEL.TXT
| | `-- TRANS.TBL
| |-- HOWTO
| | |-- Boot-disk-HOWTO
| | |-- BootPrompt-HOWTO
| | |-- Busmouse-HOWTO
| | |-- CDROM-HOWTO
| | |-- Commercial-HOWTO
| | |-- DOSEMU-HOWTO
| | |-- Distribution-HOWTO
| | |-- ELF-HOWTO
| | |-- Firewall-HOWTO
| | |-- Ftape-HOWTO
| | |-- GCC-HOWTO
| | |-- HAM-HOWTO
| | |-- HOWTO-Index
| | |-- HTML
| | | |-- Boot-disk-HOWTO-html.tar.gz
| | | |-- BootPrompt-HOWTO-html.tar.gz
| | | |-- Busmouse-HOWTO-html.tar.gz
| | | |-- CDROM-HOWTO-html.tar.gz
| | | |-- Commercial-HOWTO-html.tar.gz
| | | |-- DOSEMU-HOWTO-html.tar.gz
| | | |-- Distribution-HOWTO-html.tar.gz
| | | |-- ELF-HOWTO-html.tar.gz
| | | |-- Firewall-HOWTO-html.tar.gz
| | | |-- Ftape-HOWTO-html.tar.gz
| | | |-- GCC-HOWTO-html.tar.gz
| | | |-- HAM-HOWTO-html.tar.gz
| | | |-- HOWTO-Index-html.tar.gz
| | | |-- Hardware-HOWTO-html.tar.gz
| | | |-- IPX-HOWTO-html.tar.gz
| | | |-- Installation-HOWTO-html.tar.gz
| | | |-- Java-HOWTO-html.tar.gz
| | | |-- Kernel-HOWTO-html.tar.gz
| | | |-- Keyboard-HOWTO-html.tar.gz
| | | |-- MGR-HOWTO-html.tar.gz
| | | |-- Mail-HOWTO-html.tar.gz
| | | |-- Modems-HOWTO-html.tar.gz
| | | |-- NIS-HOWTO-html.tar.gz
| | | |-- Net2-HOWTO-html.tar.gz
| | | |-- PCI-HOWTO-html.tar.gz
| | | |-- PPP-FAQ-html.tar.gz
| | | |-- PPP-HOWTO-html.tar.gz
| | | |-- Printing-HOWTO-html.tar.gz
| | | |-- SCSI-HOWTO-html.tar.gz
| | | |-- SCSI-Programming-HOWTO-html.tar.gz
| | | |-- Serial-HOWTO-html.tar.gz
| | | |-- Slip-ProxyARP-html.tar.gz
| | | |-- Sound-HOWTO-html.tar.gz
| | | |-- TRANS.TBL
| | | |-- Term-HOWTO-html.tar.gz
| | | |-- Tips-HOWTO-html.tar.gz
| | | |-- UPS-HOWTO-html.tar.gz
| | | |-- UUCP-HOWTO-html.tar.gz
| | | |-- Video-HOWTO-html.tar.gz
| | | |-- Win95-Win3x-Linux-html.tar.gz
| | | `-- XFree86-HOWTO-html.tar.gz
| | |-- Hardware-HOWTO
| | |-- IPX-HOWTO
| | |-- Installation-HOWTO
| | |-- Java-HOWTO
| | |-- Kernel-HOWTO
| | |-- Keyboard-HOWTO
| | |-- MGR-HOWTO
| | |-- Mail-HOWTO
| | |-- Modems-HOWTO
| | |-- NIS-HOWTO
| | |-- Net2-HOWTO
| | |-- PCI-HOWTO
| | |-- PPP-FAQ
| | |-- PPP-HOWTO
| | |-- Printing-HOWTO
| | |-- SCSI-HOWTO
| | |-- SCSI-Programming-HOWTO
| | |-- Serial-HOWTO
| | |-- Slip-ProxyARP
| | |-- Sound-HOWTO
| | |-- TRANS.TBL
| | |-- Term-HOWTO
| | |-- Tips-HOWTO
| | |-- UPS-HOWTO
| | |-- UUCP-HOWTO
| | |-- Video-HOWTO
| | |-- Win95-Win3x-Linux
| | `-- XFree86-HOWTO
| |-- HOWTO-mini
| | |-- Anon-ftp
| | |-- Assembleur
| | |-- Colour-ls
| | |-- HTML
| | | |-- Anon-ftp-html.tar.gz
| | | |-- Assembleur-html.tar.gz
| | | |-- Colour-ls-html.tar.gz
| | | |-- IO-Port-html.tar.gz
| | | |-- JAZ-drive-html.tar.gz
| | | |-- LILO-html.tar.gz
| | | |-- Large-IDE-html.tar.gz
| | | |-- Man-Page-html.tar.gz
| | | |-- NFS-Root-html.tar.gz
| | | |-- Postgres-html.tar.gz
| | | |-- Proxy-ARP-html.tar.gz
| | | |-- Slip+ProxyARP-html.tar.gz
| | | |-- TRANS.TBL
| | | |-- Term-Firewall-html.tar.gz
| | | |-- Token-Ring-html.tar.gz
| | | |-- X-Terminal-html.tar.gz
| | | `-- ZipIomega-html.tar.gz
| | |-- IO-Port
| | |-- JAZ-drive
| | |-- LILO
| | |-- Large-IDE
| | |-- Man-Page
| | |-- NFS-Root
| | |-- Postgres
| | |-- Proxy-ARP
| | |-- Slip+ProxyARP
| | |-- TRANS.TBL
| | |-- Term-Firewall
| | |-- Token-Ring
| | |-- X-Terminal
| | `-- ZipIomega
| |-- INFO-sht
| | |-- HTML
| | | |-- TRANS.TBL
| | | |-- info-sheet.fr-1.html
| | | |-- info-sheet.fr-10.html
| | | |-- info-sheet.fr-11.html
| | | |-- info-sheet.fr-12.html
| | | |-- info-sheet.fr-2.html
| | | |-- info-sheet.fr-3.html
| | | |-- info-sheet.fr-4.html
| | | |-- info-sheet.fr-5.html
| | | |-- info-sheet.fr-6.html
| | | |-- info-sheet.fr-7.html
| | | |-- info-sheet.fr-8.html
| | | |-- info-sheet.fr-9.html
| | | `-- info-sheet.fr.html
| | |-- TRANS.TBL
| | `-- info-sht.fr
| |-- INTRO-Linux
| | |-- HTML
| | | |-- TRANS.TBL
| | | |-- intro-1.html
| | | |-- intro-2.html
| | | |-- intro-3.html
| | | |-- intro-4.html
| | | |-- intro-5.html
| | | |-- intro-6.html
| | | |-- intro-7.html
| | | `-- intro.html
| | |-- TRANS.TBL
| | `-- intro
| |-- KERNEL-2.0
| | |-- 00-INDEX
| | |-- CHASSE-AUX-BOGUES
| | |-- Changements
| | |-- Configure.help
| | |-- SMP.txt
| | |-- StyleDuCodage
| | |-- TRANS.TBL
| | |-- chiendegarde.txt
| | |-- digiboard.txt
| | |-- disqueram.txt
| | |-- ide.txt
| | |-- initrd.txt
| | |-- java.txt
| | |-- logo.gif
| | |-- logo.txt
| | |-- modules.txt
| | |-- numero-ioctl.txt
| | |-- numero-magique.txt
| | |-- obligatoire.txt
| | |-- oups-trace.txt
| | |-- racinenfs.txt
| | |-- riscom8.txt
| | |-- rtc.txt
| | |-- scsi.txt
| | |-- smp.tex
| | |-- svga.txt
| | |-- unicode.txt
| | `-- verrous.txt
| |-- LINUX-FACILE
| | |-- TRANS.TBL
| | |-- a4
| | | |-- 300-dpi
| | | | |-- TRANS.TBL
| | | | |-- complet.pdf
| | | | |-- impaires.pdf
| | | | `-- paires.pdf
| | | |-- 600-dpi
| | | | |-- TRANS.TBL
| | | | |-- complet.pdf
| | | | |-- impaires.pdf
| | | | `-- paires.pdf
| | | `-- TRANS.TBL
| | `-- html
| | |-- TRANS.TBL
| | |-- images
| | | |-- 002.gif
| | | |-- TRANS.TBL
| | | |-- blankg.gif
| | | |-- contg.gif
| | | |-- dbledag.gif
| | | |-- indexg.gif
| | | |-- leftg.gif
| | | |-- linuxf.gif
| | | |-- noleftg.gif
| | | |-- norightg.gif
| | | |-- notopg.gif
| | | |-- noupg.gif
| | | |-- points.gif
| | | |-- r2harc1.gif
| | | |-- r2harc2.gif
| | | |-- r2harc3.gif
| | | |-- r2harc4.gif
| | | |-- r2harch.gif -> 002.gif
| | | |-- rightg.gif
| | | |-- sectmark.gif
| | | |-- sigma_.gif
| | | |-- square.gif
| | | |-- topg.gif
| | | |-- trait.gif
| | | `-- upg.gif
| | `-- linux-f
| | |-- TRANS.TBL
| | |-- index.htm -> lf2.htm
| | |-- lf2.htm
| | |-- lf201.gif
| | |-- lf201.htm
| | |-- lf202.gif
| | |-- lf202.htm
| | |-- lf203.gif
| | |-- lf203.htm
| | |-- lf204.gif
| | |-- lf204.htm
| | |-- lf205.gif
| | |-- lf205.htm
| | |-- lf206.gif
| | |-- lf206.htm
| | |-- lf207.gif
| | |-- lf207.htm
| | |-- lf208.gif
| | |-- lf208.htm
| | |-- lf209.gif
| | |-- lf209.htm
| | |-- lf210.gif
| | |-- lf210.htm
| | |-- lf2100.htm
| | |-- lf2101.htm
| | |-- lf2102.htm
| | |-- lf2103.htm
| | |-- lf2104.htm
| | |-- lf2105.htm
| | |-- lf2106.htm
| | |-- lf2107.htm
| | |-- lf2108.htm
| | |-- lf2109.htm
| | |-- lf211.gif
| | |-- lf211.htm
| | |-- lf2110.htm
| | |-- lf2111.htm
| | |-- lf2112.htm
| | |-- lf2113.htm
| | |-- lf2114.htm
| | |-- lf2115.htm
| | |-- lf2116.htm
| | |-- lf2117.htm
| | |-- lf2118.htm
| | |-- lf2119.htm
| | |-- lf212.gif
| | |-- lf212.htm
| | |-- lf2120.htm
| | |-- lf2121.htm
| | |-- lf2122.htm
| | |-- lf2123.htm
| | |-- lf2124.htm
| | |-- lf2125.htm
| | |-- lf2126.htm
| | |-- lf2127.htm
| | |-- lf2128.htm
| | |-- lf2129.htm
| | |-- lf213.gif
| | |-- lf213.htm
| | |-- lf2130.htm
| | |-- lf2131.htm
| | |-- lf2132.htm
| | |-- lf2133.htm
| | |-- lf2134.htm
| | |-- lf2135.htm
| | |-- lf2136.htm
| | |-- lf2137.htm
| | |-- lf2138.htm
| | |-- lf2139.htm
| | |-- lf214.gif
| | |-- lf214.htm
| | |-- lf2140.htm
| | |-- lf2141.htm
| | |-- lf2142.htm
| | |-- lf2143.htm
| | |-- lf2144.htm
| | |-- lf2145.htm
| | |-- lf2146.htm
| | |-- lf2147.htm
| | |-- lf2148.htm
| | |-- lf2149.htm
| | |-- lf215.gif
| | |-- lf215.htm
| | |-- lf2150.htm
| | |-- lf2151.htm
| | |-- lf2152.htm
| | |-- lf2153.htm
| | |-- lf216.gif
| | |-- lf216.htm
| | |-- lf217.gif
| | |-- lf217.htm
| | |-- lf218.gif
| | |-- lf218.htm
| | |-- lf219.gif
| | |-- lf219.htm
| | |-- lf220.gif
| | |-- lf220.htm
| | |-- lf221.gif
| | |-- lf221.htm
| | |-- lf222.gif
| | |-- lf222.htm
| | |-- lf223.gif
| | |-- lf223.htm
| | |-- lf224.gif
| | |-- lf224.htm
| | |-- lf225.gif
| | |-- lf225.htm
| | |-- lf226.gif
| | |-- lf226.htm
| | |-- lf227.gif
| | |-- lf227.htm
| | |-- lf228.gif
| | |-- lf228.htm
| | |-- lf229.gif
| | |-- lf229.htm
| | |-- lf230.gif
| | |-- lf230.htm
| | |-- lf231.gif
| | |-- lf231.htm
| | |-- lf232.gif
| | |-- lf232.htm
| | |-- lf233.gif
| | |-- lf233.htm
| | |-- lf234.gif
| | |-- lf234.htm
| | |-- lf235.gif
| | |-- lf235.htm
| | |-- lf236.gif
| | |-- lf236.htm
| | |-- lf237.gif
| | |-- lf237.htm
| | |-- lf238.gif
| | |-- lf238.htm
| | |-- lf239.gif
| | |-- lf239.htm
| | |-- lf240.gif
| | |-- lf240.htm
| | |-- lf241.gif
| | |-- lf241.htm
| | |-- lf242.gif
| | |-- lf242.htm
| | |-- lf243.gif
| | |-- lf243.htm
| | |-- lf244.gif
| | |-- lf244.htm
| | |-- lf245.gif
| | |-- lf245.htm
| | |-- lf246.htm
| | |-- lf247.htm
| | |-- lf248.htm
| | |-- lf249.htm
| | |-- lf250.htm
| | |-- lf251.htm
| | |-- lf252.htm
| | |-- lf253.htm
| | |-- lf254.htm
| | |-- lf255.htm
| | |-- lf256.htm
| | |-- lf257.htm
| | |-- lf258.htm
| | |-- lf259.htm
| | |-- lf260.htm
| | |-- lf261.htm
| | |-- lf262.htm
| | |-- lf263.htm
| | |-- lf264.htm
| | |-- lf265.htm
| | |-- lf266.htm
| | |-- lf267.htm
| | |-- lf268.htm
| | |-- lf269.htm
| | |-- lf270.htm
| | |-- lf271.htm
| | |-- lf272.htm
| | |-- lf273.htm
| | |-- lf274.htm
| | |-- lf275.htm
| | |-- lf276.htm
| | |-- lf277.htm
| | |-- lf278.htm
| | |-- lf279.htm
| | |-- lf280.htm
| | |-- lf281.htm
| | |-- lf282.htm
| | |-- lf283.htm
| | |-- lf284.htm
| | |-- lf285.htm
| | |-- lf286.htm
| | |-- lf287.htm
| | |-- lf288.htm
| | |-- lf289.htm
| | |-- lf290.htm
| | |-- lf291.htm
| | |-- lf292.htm
| | |-- lf293.htm
| | |-- lf294.htm
| | |-- lf295.htm
| | |-- lf296.htm
| | |-- lf297.htm
| | |-- lf298.htm
| | |-- lf299.htm
| | `-- lf2_c.htm
| |-- LOADLIN16
| | |-- TRANS.TBL
| | |-- initrd.txt
| | |-- manuel.txt
| | `-- params.doc
| |-- LOCALE
| | |-- TRANS.TBL
| | `-- locale.fr
| |-- MAN-FR-0.3
| | |-- LISEZ_MOI
| | |-- TRANS.TBL
| | |-- changements
| | |-- html
| | | |-- TRANS.TBL
| | | |-- icones
| | | | |-- TRANS.TBL
| | | | |-- blanc.gif
| | | | |-- contg.gif
| | | | |-- fond-bl.gif
| | | | |-- logokh.gif
| | | | |-- point-bl.gif
| | | | |-- topg.gif
| | | | `-- upg.gif
| | | |-- index.htm
| | | |-- man1
| | | | |-- TRANS.TBL
| | | | |-- basename.1.html
| | | | |-- cat.1.html
| | | | |-- chgrp.1.html
| | | | |-- chmod.1.html
| | | | |-- chown.1.html
| | | | |-- cksum.1.html
| | | | |-- comm.1.html
| | | | |-- cp.1.html
| | | | |-- csplit.1.html
| | | | |-- cut.1.html
| | | | |-- date.1.html
| | | | |-- dd.1.html
| | | | |-- dirname.1.html
| | | | |-- du.1.html
| | | | |-- echo.1.html
| | | | |-- env.1.html
| | | | |-- expand.1.html
| | | | |-- expr.1.html
| | | | |-- false.1.html
| | | | |-- find.1.html
| | | | |-- fmt.1.html
| | | | |-- fold.1.html
| | | | |-- free.1.html
| | | | |-- grep.1.html
| | | | |-- groups.1.html
| | | | |-- head.1.html
| | | | |-- id.1.html
| | | | |-- index.html
| | | | |-- join.1.html
| | | | |-- logname.1.html
| | | | |-- ls.1.html
| | | | |-- md5sum.1.html
| | | | |-- mkdir.1.html
| | | | |-- mkfifo.1.html
| | | | |-- mknod.1.html
| | | | |-- mv.1.html
| | | | |-- nice.1.html
| | | | |-- nl.1.html
| | | | |-- nohup.1.html
| | | | |-- od.1.html
| | | | |-- paste.1.html
| | | | |-- pathchk.1.html
| | | | |-- pr.1.html
| | | | |-- printenv.1.html
| | | | |-- printf.1.html
| | | | |-- pwd.1.html
| | | | |-- rm.1.html
| | | | |-- rmdir.1.html
| | | | |-- sleep.1.html
| | | | |-- sort.1.html
| | | | |-- split.1.html
| | | | |-- stty.1.html
| | | | |-- su.1.html
| | | | |-- sum.1.html
| | | | |-- tac.1.html
| | | | |-- tail.1.html
| | | | |-- tee.1.html
| | | | |-- test.1.html
| | | | |-- touch.1.html
| | | | |-- tr.1.html
| | | | |-- true.1.html
| | | | |-- tty.1.html
| | | | |-- uname.1.html
| | | | |-- unexpand.1.html
| | | | |-- uniq.1.html
| | | | |-- users.1.html
| | | | |-- wc.1.html
| | | | |-- who.1.html
| | | | |-- whoami.1.html
| | | | `-- yes.1.html
| | | |-- man2
| | | | |-- TRANS.TBL
| | | | |-- _exit.2.html
| | | | |-- accept.2.html
| | | | |-- access.2.html
| | | | |-- acct.2.html
| | | | |-- adjtimex.2.html
| | | | |-- afs_syscall.2.html
| | | | |-- alarm.2.html
| | | | |-- bdflush.2.html
| | | | |-- bind.2.html
| | | | |-- break.2.html
| | | | |-- brk.2.html
| | | | |-- cacheflush.2.html
| | | | |-- chdir.2.html
| | | | |-- chmod.2.html
| | | | |-- chown.2.html
| | | | |-- chroot.2.html
| | | | |-- clone.2.html
| | | | |-- close.2.html
| | | | |-- connect.2.html
| | | | |-- creat.2.html
| | | | |-- create_module.2.html
| | | | |-- delete_module.2.html
| | | | |-- dup.2.html
| | | | |-- dup2.2.html
| | | | |-- execve.2.html
| | | | |-- fchdir.2.html
| | | | |-- fchmod.2.html
| | | | |-- fchown.2.html
| | | | |-- fcntl.2.html
| | | | |-- fdatasync.2.html
| | | | |-- flock.2.html
| | | | |-- fork.2.html
| | | | |-- fstat.2.html
| | | | |-- fstatfs.2.html
| | | | |-- fsync.2.html
| | | | |-- ftruncate.2.html
| | | | |-- get_kernel_syms.2.html
| | | | |-- getdents.2.html
| | | | |-- getdomainname.2.html
| | | | |-- getdtablesize.2.html
| | | | |-- getegid.2.html
| | | | |-- geteuid.2.html
| | | | |-- getgid.2.html
| | | | |-- getgroups.2.html
| | | | |-- gethostid.2.html
| | | | |-- gethostname.2.html
| | | | |-- getitimer.2.html
| | | | |-- getpagesize.2.html
| | | | |-- getpeername.2.html
| | | | |-- getpgid.2.html
| | | | |-- getpgrp.2.html
| | | | |-- getpid.2.html
| | | | |-- getppid.2.html
| | | | |-- getpriority.2.html
| | | | |-- getrlimit.2.html
| | | | |-- getrusage.2.html
| | | | |-- getsid.2.html
| | | | |-- getsockname.2.html
| | | | |-- getsockopt.2.html
| | | | |-- gettimeofday.2.html
| | | | |-- getuid.2.html
| | | | |-- gtty.2.html
| | | | |-- idle.2.html
| | | | |-- index.html
| | | | |-- init_module.2.html
| | | | |-- intro.2.html
| | | | |-- ioctl.2.html
| | | | |-- ioctl_list.2.html
| | | | |-- ioperm.2.html
| | | | |-- iopl.2.html
| | | | |-- ipc.2.html
| | | | |-- kill.2.html
| | | | |-- killpg.2.html
| | | | |-- link.2.html
| | | | |-- listen.2.html
| | | | |-- llseek.2.html
| | | | |-- lock.2.html
| | | | |-- lseek.2.html
| | | | |-- lstat.2.html
| | | | |-- mkdir.2.html
| | | | |-- mknod.2.html
| | | | |-- mlock.2.html
| | | | |-- mlockall.2.html
| | | | |-- mmap.2.html
| | | | |-- modify_ldt.2.html
| | | | |-- modules.2.html
| | | | |-- mount.2.html
| | | | |-- mprotect.2.html
| | | | |-- mpx.2.html
| | | | |-- mremap.2.html
| | | | |-- msgctl.2.html
| | | | |-- msgget.2.html
| | | | |-- msgop.2.html
| | | | |-- msgrcv.2.html
| | | | |-- msgsnd.2.html
| | | | |-- msync.2.html
| | | | |-- munlock.2.html
| | | | |-- munlockall.2.html
| | | | |-- munmap.2.html
| | | | |-- nanosleep.2.html
| | | | |-- nice.2.html
| | | | |-- obsolete.2.html
| | | | |-- oldfstat.2.html
| | | | |-- oldlstat.2.html
| | | | |-- oldolduname.2.html
| | | | |-- oldstat.2.html
| | | | |-- olduname.2.html
| | | | |-- open.2.html
| | | | |-- outb.2.html
| | | | |-- pause.2.html
| | | | |-- personality.2.html
| | | | |-- phys.2.html
| | | | |-- pipe.2.html
| | | | |-- prof.2.html
| | | | |-- profil.2.html
| | | | |-- ptrace.2.html
| | | | |-- quotactl.2.html
| | | | |-- read.2.html
| | | | |-- readdir.2.html
| | | | |-- readlink.2.html
| | | | |-- readv.2.html
| | | | |-- reboot.2.html
| | | | |-- recv.2.html
| | | | |-- recvfrom.2.html
| | | | |-- recvmsg.2.html
| | | | |-- rename.2.html
| | | | |-- rmdir.2.html
| | | | |-- sbrk.2.html
| | | | |-- sched_get_priority_max.2.html
| | | | |-- sched_get_priority_min.2.html
| | | | |-- sched_getparam.2.html
| | | | |-- sched_getscheduler.2.html
| | | | |-- sched_rr_get_interval.2.html
| | | | |-- sched_setparam.2.html
| | | | |-- sched_setscheduler.2.html
| | | | |-- sched_yield.2.html
| | | | |-- select.2.html
| | | | |-- semctl.2.html
| | | | |-- semget.2.html
| | | | |-- semop.2.html
| | | | |-- send.2.html
| | | | |-- sendmsg.2.html
| | | | |-- sendto.2.html
| | | | |-- setdomainname.2.html
| | | | |-- setegid.2.html
| | | | |-- seteuid.2.html
| | | | |-- setfsgid.2.html
| | | | |-- setfsuid.2.html
| | | | |-- setgid.2.html
| | | | |-- setgroups.2.html
| | | | |-- sethostid.2.html
| | | | |-- sethostname.2.html
| | | | |-- setitimer.2.html
| | | | |-- setpgid.2.html
| | | | |-- setpgrp.2.html
| | | | |-- setpriority.2.html
| | | | |-- setregid.2.html
| | | | |-- setreuid.2.html
| | | | |-- setrlimit.2.html
| | | | |-- setsid.2.html
| | | | |-- setsockopt.2.html
| | | | |-- settimeofday.2.html
| | | | |-- setuid.2.html
| | | | |-- setup.2.html
| | | | |-- shmat.2.html
| | | | |-- shmctl.2.html
| | | | |-- shmdt.2.html
| | | | |-- shmget.2.html
| | | | |-- shmop.2.html
| | | | |-- shutdown.2.html
| | | | |-- sigaction.2.html
| | | | |-- sigblock.2.html
| | | | |-- sigmask.2.html
| | | | |-- signal.2.html
| | | | |-- sigpause.2.html
| | | | |-- sigpending.2.html
| | | | |-- sigprocmask.2.html
| | | | |-- sigreturn.2.html
| | | | |-- sigsuspend.2.html
| | | | |-- sigvec.2.html
| | | | |-- socket.2.html
| | | | |-- socketcall.2.html
| | | | |-- socketpair.2.html
| | | | |-- stat.2.html
| | | | |-- statfs.2.html
| | | | |-- stime.2.html
| | | | |-- stty.2.html
| | | | |-- swapoff.2.html
| | | | |-- swapon.2.html
| | | | |-- symlink.2.html
| | | | |-- sync.2.html
| | | | |-- sysctl.2.html
| | | | |-- sysfs.2.html
| | | | |-- sysinfo.2.html
| | | | |-- syslog.2.html
| | | | |-- time.2.html
| | | | |-- times.2.html
| | | | |-- truncate.2.html
| | | | |-- umask.2.html
| | | | |-- umount.2.html
| | | | |-- uname.2.html
| | | | |-- undocumented.2.html
| | | | |-- unimplemented.2.html
| | | | |-- unlink.2.html
| | | | |-- uselib.2.html
| | | | |-- ustat.2.html
| | | | |-- utime.2.html
| | | | |-- vfork.2.html
| | | | |-- vhangup.2.html
| | | | |-- vm86.2.html
| | | | |-- wait.2.html
| | | | |-- wait3.2.html
| | | | |-- wait4.2.html
| | | | |-- waitpid.2.html
| | | | |-- write.2.html
| | | | `-- writev.2.html
| | | |-- man3
| | | | |-- TRANS.TBL
| | | | |-- abort.3.html
| | | | |-- abs.3.html
| | | | |-- acos.3.html
| | | | |-- acosh.3.html
| | | | |-- addmntent.3.html
| | | | |-- alloca.3.html
| | | | |-- alphasort.3.html
| | | | |-- asctime.3.html
| | | | |-- asin.3.html
| | | | |-- asinh.3.html
| | | | |-- assert.3.html
| | | | |-- atan.3.html
| | | | |-- atan2.3.html
| | | | |-- atanh.3.html
| | | | |-- atexit.3.html
| | | | |-- atof.3.html
| | | | |-- atoi.3.html
| | | | |-- atol.3.html
| | | | |-- bcmp.3.html
| | | | |-- bcopy.3.html
| | | | |-- bsearch.3.html
| | | | |-- bstring.3.html
| | | | |-- byteorder.3.html
| | | | |-- bzero.3.html
| | | | |-- calloc.3.html
| | | | |-- catclose.3.html
| | | | |-- catgets.3.html
| | | | |-- catopen.3.html
| | | | |-- cbrt.3.html
| | | | |-- ceil.3.html
| | | | |-- cfgetispeed.3.html
| | | | |-- cfgetospeed.3.html
| | | | |-- cfmakeraw.3.html
| | | | |-- cfsetispeed.3.html
| | | | |-- cfsetospeed.3.html
| | | | |-- clearerr.3.html
| | | | |-- clock.3.html
| | | | |-- closedir.3.html
| | | | |-- closelog.3.html
| | | | |-- confstr.3.html
| | | | |-- copysign.3.html
| | | | |-- cos.3.html
| | | | |-- cosh.3.html
| | | | |-- crypt.3.html
| | | | |-- ctermid.3.html
| | | | |-- ctime.3.html
| | | | |-- cuserid.3.html
| | | | |-- difftime.3.html
| | | | |-- div.3.html
| | | | |-- dn_comp.3.html
| | | | |-- dn_expand.3.html
| | | | |-- drand48.3.html
| | | | |-- drem.3.html
| | | | |-- ecvt.3.html
| | | | |-- endgrent.3.html
| | | | |-- endhostent.3.html
| | | | |-- endmntent.3.html
| | | | |-- endnetent.3.html
| | | | |-- endprotoent.3.html
| | | | |-- endpwent.3.html
| | | | |-- endservent.3.html
| | | | |-- endusershell.3.html
| | | | |-- endutent.3.html
| | | | |-- erand48.3.html
| | | | |-- erf.3.html
| | | | |-- erfc.3.html
| | | | |-- errno.3.html
| | | | |-- exec.3.html
| | | | |-- execl.3.html
| | | | |-- execle.3.html
| | | | |-- execlp.3.html
| | | | |-- exect.3.html
| | | | |-- execv.3.html
| | | | |-- execvp.3.html
| | | | |-- exit.3.html
| | | | |-- exp.3.html
| | | | |-- expm1.3.html
| | =20| | |-- fabs.3.html
| | | | |-- fclose.3.html
| | | | |-- fcvt.3.html
| | | | |-- fdopen.3.html
| | | | |-- feof.3.html
| | | | |-- ferror.3.html
| | | | |-- fflush.3.html
| | | | |-- ffs.3.html
| | | | |-- fgetc.3.html
| | | | |-- fgetgrent.3.html
| | | | |-- fgetpos.3.html
| | | | |-- fgetpwent.3.html
| | | | |-- fgets.3.html
| | | | |-- fileno.3.html
| | | | |-- finite.3.html
| | | | |-- floor.3.html
| | | | |-- fmod.3.html
| | | | |-- fnmatch.3.html
| | | | |-- fopen.3.html
| | | | |-- fpathconf.3.html
| | | | |-- fprintf.3.html
| | | | |-- fpurge.3.html
| | | | |-- fputc.3.html
| | | | |-- fputs.3.html
| | | | |-- fread.3.html
| | | | |-- free.3.html
| | | | |-- freopen.3.html
| | | | |-- frexp.3.html
| | | | |-- fscanf.3.html
| | | | |-- fseek.3.html
| | | | |-- fsetpos.3.html
| | | | |-- ftell.3.html
| | | | |-- ftime.3.html
| | | | |-- ftok.3.html
| | | | |-- ftw.3.html
| | | | |-- fwrite.3.html
| | | | |-- gcvt.3.html
| | | | |-- get_current_dir_name.3.html
| | | | |-- getc.3.html
| | | | |-- getchar.3.html
| | | | |-- getcwd.3.html
| | | | |-- getdirentries.3.html
| | | | |-- getenv.3.html
| | | | |-- getgrent.3.html
| | | | |-- getgrgid.3.html
| | | | |-- getgrnam.3.html
| | | | |-- gethostbyaddr.3.html
| | | | |-- gethostbyname.3.html
| | | | |-- getlogin.3.html
| | | | |-- getmntent.3.html
| | | | |-- getnetbyaddr.3.html
| | | | |-- getnetbyname.3.html
| | | | |-- getnetent.3.html
| | | | |-- getopt.3.html
| | | | |-- getopt_long.3.html
| | | | |-- getopt_long_only.3.html
| | | | |-- getpass.3.html
| | | | |-- getprotobyname.3.html
| | | | |-- getprotobynumber.3.html
| | | | |-- getprotoent.3.html
| | | | |-- getpw.3.html
| | | | |-- getpwent.3.html
| | | | |-- getpwnam.3.html
| | | | |-- getpwuid.3.html
| | | | |-- gets.3.html
| | | | |-- getservbyname.3.html
| | | | |-- getservbyport.3.html
| | | | |-- getservent.3.html
| | | | |-- getusershell.3.html
| | | | |-- getutent.3.html
| | | | |-- getutid.3.html
| | | | |-- getutline.3.html
| | | | |-- getw.3.html
| | | | |-- getwd.3.html
| | | | |-- glob.3.html
| | | | |-- globfree.3.html
| | | | |-- gmtime.3.html
| | | | |-- hasmntopt.3.html
| | | | |-- hcreate.3.html
| | | | |-- hdestroy.3.html
| | | | |-- herror.3.html
| | | | |-- hsearch.3.html
| | | | |-- htonl.3.html
| | | | |-- htons.3.html
| | | | |-- hypot.3.html
| | | | |-- index.3.html
| | | | |-- index.html
| | | | |-- inet.3.html
| | | | |-- inet_addr.3.html
| | | | |-- inet_aton.3.html
| | | | |-- inet_lnaof.3.html
| | | | |-- inet_makeaddr.3.html
| | | | |-- inet_netof.3.html
| | | | |-- inet_network.3.html
| | | | |-- inet_ntoa.3.html
| | | | |-- infnan.3.html
| | | | |-- initgroups.3.html
| | | | |-- initstate.3.html
| | | | |-- insque.3.html
| | | | |-- intro.3.html
| | | | |-- isalnum.3.html
| | | | |-- isalpha.3.html
| | | | |-- isascii.3.html
| | | | |-- isatty.3.html
| | | | |-- isblank.3.html
| | | | |-- iscntrl.3.html
| | | | |-- isdigit.3.html
| | | | |-- isgraph.3.html
| | | | |-- isinf.3.html
| | | | |-- islower.3.html
| | | | |-- isnan.3.html
| | | | |-- isprint.3.html
| | | | |-- ispunct.3.html
| | | | |-- isspace.3.html
| | | | |-- isupper.3.html
| | | | |-- isxdigit.3.html
| | | | |-- j0.3.html
| | | | |-- j1.3.html
| | | | |-- jn.3.html
| | | | |-- jrand48.3.html
| | | | |-- killpg.3.html
| | | | |-- labs.3.html
| | | | |-- lcong48.3.html
| | | | |-- ldexp.3.html
| | | | |-- ldiv.3.html
| | | | |-- lfind.3.html
| | | | |-- lgamma.3.html
| | | | |-- localeconv.3.html
| | | | |-- localtime.3.html
| | | | |-- log.3.html
| | | | |-- log10.3.html
| | | | |-- log1p.3.html
| | | | |-- longjmp.3.html
| | | | |-- lrand48.3.html
| | | | |-- lsearch.3.html
| | | | |-- malloc.3.html
| | | | |-- mblen.3.html
| | | | |-- mbstowcs.3.html
| | | | |-- mbtowc.3.html
| | | | |-- memccpy.3.html
| | | | |-- memchr.3.html
| | | | |-- memcmp.3.html
| | | | |-- memcpy.3.html
| | | | |-- memfrob.3.html
| | | | |-- memmem.3.html
| | | | |-- memmove.3.html
| | | | |-- memset.3.html
| | | | |-- mkfifo.3.html
| | | | |-- mkstemp.3.html
| | | | |-- mktemp.3.html
| | | | |-- mktime.3.html
| | | | |-- modf.3.html
| | | | |-- mrand48.3.html
| | | | |-- nrand48.3.html
| | | | |-- ntohl.3.html
| | | | |-- ntohs.3.html
| | | | |-- on_exit.3.html
| | | | |-- opendir.3.html
| | | | |-- openlog.3.html
| | | | |-- pathconf.3.html
| | | | |-- pclose.3.html
| | | | |-- perror.3.html
| | | | |-- popen.3.html
| | | | |-- pow.3.html
| | | | |-- printf.3.html
| | | | |-- psignal.3.html
| | | | |-- putc.3.html
| | | | |-- putchar.3.html
| | | | |-- putenv.3.html
| | | | |-- putpwent.3.html
| | | | |-- puts.3.html
| | | | |-- pututline.3.html
| | | | |-- putw.3.html
| | | | |-- qsort.3.html
| | | | |-- raise.3.html
| | | | |-- rand.3.html
| | | | |-- random.3.html
| | | | |-- re_comp.3.html
| | | | |-- re_exec.3.html
| | | | |-- readdir.3.html
| | | | |-- readv.3.html
| | | | |-- realloc.3.html
| | | | |-- realpath.3.html
| | | | |-- regcomp.3.html
| | | | |-- regerror.3.html
| | | | |-- regexec.3.html
| | | | |-- regfree.3.html
| | | | |-- remove.3.html
| | | | |-- remque.3.html
| | | | |-- res_init.3.html
| | | | |-- res_mkquery.3.html
| | | | |-- res_query.3.html
| | | | |-- res_querydomain.3.html
| | | | |-- res_search.3.html
| | | | |-- res_send.3.html
| | | | |-- resolver.3.html
| | | | |-- rewind.3.html
| | | | |-- rewinddir.3.html
| | | | |-- rindex.3.html
| | | | |-- rint.3.html
| | | | |-- scandir.3.html
| | | | |-- scanf.3.html
| | | | |-- seed48.3.html
| | | | |-- seekdir.3.html
| | | | |-- setbuf.3.html
| | | | |-- setbuffer.3.html
| | | | |-- setenv.3.html
| | | | |-- setgrent.3.html
| | | | |-- sethostent.3.html
| | | | |-- setjmp.3.html
| | | | |-- setlinebuf.3.html
| | | | |-- setlocale.3.html
| | | | |-- setmntent.3.html
| | | | |-- setnetent.3.html
| | | | |-- setprotoent.3.html
| | | | |-- setpwent.3.html
| | | | |-- setservent.3.html
| | | | |-- setstate.3.html
| | | | |-- setusershell.3.html
| | | | |-- setutent.3.html
| | | | |-- setvbuf.3.html
| | | | |-- sigaddset.3.html
| | | | |-- sigdelset.3.html
| | | | |-- sigemptyset.3.html
| | | | |-- sigfillset.3.html
| | | | |-- siginterrupt.3.html
| | | | |-- sigismember.3.html
| | | | |-- sigsetops.3.html
| | | | |-- sin.3.html
| | | | |-- sinh.3.html
| | | | |-- sleep.3.html
| | | | |-- snprintf.3.html
| | | | |-- sprintf.3.html
| | | | |-- sqrt.3.html
| | | | |-- srand.3.html
| | | | |-- srand48.3.html
| | | | |-- srandom.3.html
| | | | |-- sscanf.3.html
| | | | |-- stdarg.3.html
| | | | |-- stdio.3.html
| | | | |-- stpcpy.3.html
| | | | |-- strcasecmp.3.html
| | | | |-- strcat.3.html
| | | | |-- strchr.3.html
| | | | |-- strcmp.3.html
| | | | |-- strcoll.3.html
| | | | |-- strcpy.3.html
| | | | |-- strcspn.3.html
| | | | |-- strdup.3.html
| | | | |-- strerror.3.html
| | | | |-- strfry.3.html
| | | | |-- strftime.3.html
| | | | |-- string.3.html
| | | | |-- strlen.3.html
| | | | |-- strncasecmp.3.html
| | | | |-- strncat.3.html
| | | | |-- strncmp.3.html
| | | | |-- strncpy.3.html
| | | | |-- strpbrk.3.html
| | | | |-- strptime.3.html
| | | | |-- strrchr.3.html
| | | | |-- strsep.3.html
| | | | |-- strsignal.3.html
| | | | |-- strspn.3.html
| | | | |-- strstr.3.html
| | | | |-- strtod.3.html
| | | | |-- strtok.3.html
| | | | |-- strtol.3.html
| | | | |-- strtoul.3.html
| | | | |-- strxfrm.3.html
| | | | |-- swab.3.html
| | | | |-- sysconf.3.html
| | | | |-- syslog.3.html
| | | | |-- system.3.html
| | | | |-- tan.3.html
| | | | |-- tanh.3.html
| | | | |-- tcdrain.3.html
| | | | |-- tcflow.3.html
| | | | |-- tcflush.3.html
| | | | |-- tcgetattr.3.html
| | | | |-- tcgetpgrp.3.html
| | | | |-- tcsendbreak.3.html
| | | | |-- tcsetattr.3.html
| | | | |-- tcsetpgrp.3.html
| | | | |-- tdelete.3.html
| | | | |-- telldir.3.html
| | | | |-- tempnam.3.html
| | | | |-- termios.3.html
| | | | |-- tfind.3.html
| | | | |-- tmpfile.3.html
| | | | |-- tmpnam.3.html
| | | | |-- toascii.3.html
| | | | |-- tolower.3.html
| | | | |-- toupper.3.html
| | | | |-- tsearch.3.html
| | | | |-- ttyname.3.html
| | | | |-- twalk.3.html
| | | | |-- tzset.3.html
| | | | |-- undocumented.3.html
| | | | |-- ungetc.3.html
| | | | |-- unsetenv.3.html
| | | | |-- usleep.3.html
| | | | |-- utmpname.3.html
| | | | |-- va_arg.3.html
| | | | |-- va_end.3.html
| | | | |-- va_start.3.html
| | | | |-- vfprintf.3.html
| | | | |-- vfscanf.3.html
| | | | |-- vprintf.3.html
| | | | |-- vscanf.3.html
| | | | |-- vsnprintf.3.html
| | | | |-- vsprintf.3.html
| | | | |-- vsscanf.3.html
| | | | |-- wcstombs.3.html
| | | | |-- wctomb.3.html
| | | | |-- writev.3.html
| | | | |-- y0.3.html
| | | | |-- y1.3.html
| | | | `-- yn.3.html
| | | |-- man4
| | | | |-- TRANS.TBL
| | | | |-- charsets.4.html
| | | | |-- console.4.html
| | | | |-- console_codes.4.html
| | | | |-- fd.4.html
| | | | |-- hd.4.html
| | | | |-- index.html
| | | | |-- intro.4.html
| | | | |-- kmem.4.html
| | | | |-- lp.4.html
| | | | |-- mem.4.html
| | | | |-- mouse.4.html
| | | | |-- null.4.html
| | | | |-- port.4.html
| | | | |-- ram.4.html
| | | | |-- sd.4.html
| | | | |-- st.4.html
| | | | |-- tty.4.html
| | | | |-- ttys.4.html
| | | | |-- vcs.4.html
| | | | |-- vcsa.4.html
| | | | |-- wavelan.4.html
| | | | `-- zero.4.html
| | | |-- man5
| | | | |-- TRANS.TBL
| | | | |-- environ.5.html
| | | | |-- exports.5.html
| | | | |-- fs.5.html
| | | | |-- fstab.5.html
| | | | |-- group.5.html
| | | | |-- index.html
| | | | |-- intro.5.html
| | | | |-- ipc.5.html
| | | | |-- issue.5.html
| | | | |-- lilo.conf.5.html
| | | | |-- motd.5.html
| | | | |-- nfs.5.html
| | | | |-- nologin.5.html
| | | | |-- passwd.5.html
| | | | |-- protocols.5.html
| | | | |-- securetty.5.html
| | | | |-- services.5.html
| | | | |-- shells.5.html
| | | | |-- ttytype.5.html
| | | | |-- utmp.5.html
| | | | `-- wtmp.5.html
| | | |-- man6
| | | | |-- *.html
| | | | |-- TRANS.TBL
| | | | `-- index.html
| | | |-- man7
| | | | |-- TRANS.TBL
| | | | |-- ascii.7.html
| | | | |-- bootparam.7.html
| | | | |-- hier.7.html
| | | | |-- index.html
| | | | |-- intro.7.html
| | | | |-- iso_8859_1.7.html
| | | | |-- latin1.7.html
| | | | |-- locale.7.html
| | | | |-- mailaddr.7.html
| | | | |-- man.7.html
| | | | |-- signal.7.html
| | | | |-- suffixes.7.html
| | | | |-- unicode.7.html
| | | | `-- utf-8.7.html
| | | `-- man8
| | | |-- TRANS.TBL
| | | |-- index.html
| | | |-- intro.8.html
| | | `-- lilo.8.html
| | |-- liste_section_1
| | |-- liste_section_2
| | |-- liste_section_3
| | |-- liste_section_4
| | |-- liste_section_5
| | |-- liste_section_7
| | |-- liste_section_8
| | |-- man-fr-0.3-Annonce
| | |-- man-fr03.tgz
| | |-- man1
| | | |-- TRANS.TBL
| | | |-- basename.1
| | | |-- cat.1
| | | |-- chgrp.1
| | | |-- chmod.1
| | | |-- chown.1
| | | |-- cksum.1
| | | |-- comm.1
| | | |-- cp.1
| | | |-- csplit.1
| | | |-- cut.1
| | | |-- date.1
| | | |-- dd.1
| | | |-- dirname.1
| | | |-- du.1
| | | |-- echo.1
| | | |-- env.1
| | | |-- expand.1
| | | |-- expr.1
| | | |-- false.1
| | | |-- find.1
| | | |-- fmt.1
| | | |-- fold.1
| | | |-- free.1
| | | |-- grep.1
| | | |-- groups.1
| | | |-- head.1
| | | |-- id.1
| | | |-- join.1
| | | |-- logname.1
| | | |-- ls.1
| | | |-- md5sum.1
| | | |-- mkdir.1
| | | |-- mkfifo.1
| | | |-- mknod.1
| | | |-- mv.1
| | | |-- nice.1
| | | |-- nl.1
| | | |-- nohup.1
| | | |-- od.1
| | | |-- paste.1
| | | |-- pathchk.1
| | | |-- pr.1
| | | |-- printenv.1
| | | |-- printf.1
| | | |-- pwd.1
| | | |-- rm.1
| | | |-- rmdir.1
| | | |-- sleep.1
| | | |-- sort.1
| | | |-- split.1
| | | |-- stty.1
| | | |-- su.1
| | | |-- sum.1
| | | |-- tac.1
| | | |-- tail.1
| | | |-- tee.1
| | | |-- test.1
| | | |-- touch.1
| | | |-- tr.1
| | | |-- true.1
| | | |-- tty.1
| | | |-- uname.1
| | | |-- unexpand.1
| | | |-- uniq.1
| | | |-- users.1
| | | |-- wc.1
| | | |-- who.1
| | | |-- whoami.1
| | | `-- yes.1
| | |-- man2
| | | |-- TRANS.TBL
| | | |-- _exit.2
| | | |-- accept.2
| | | |-- access.2
| | | |-- acct.2
| | | |-- adjtimex.2
| | | |-- afs_syscall.2
| | | |-- alarm.2
| | | |-- bdflush.2
| | | |-- bind.2
| | | |-- break.2
| | | |-- brk.2
| | | |-- cacheflush.2
| | | |-- chdir.2
| | | |-- chmod.2
| | | |-- chown.2
| | | |-- chroot.2
| | | |-- clone.2
| | | |-- close.2
| | | |-- connect.2
| | | |-- creat.2
| | | |-- create_module.2
| | | |-- delete_module.2
| | | |-- dup.2
| | | |-- dup2.2
| | | |-- execve.2
| | | |-- fchdir.2
| | | |-- fchmod.2
| | | |-- fchown.2
| | | |-- fcntl.2
| | | |-- fdatasync.2
| | | |-- flock.2
| | | |-- fork.2
| | | |-- fstat.2
| | | |-- fstatfs.2
| | | |-- fsync.2
| | | |-- ftruncate.2
| | | |-- get_kernel_syms.2
| | | |-- getdents.2
| | | |-- getdomainname.2
| | | |-- getdtablesize.2
| | | |-- getegid.2
| | | |-- geteuid.2
| | | |-- getgid.2
| | | |-- getgroups.2
| | | |-- gethostid.2
| | | |-- gethostname.2
| | | |-- getitimer.2
| | | |-- getpagesize.2
| | | |-- getpeername.2
| | | |-- getpgid.2
| | | |-- getpgrp.2
| | | |-- getpid.2
| | | |-- getppid.2
| | | |-- getpriority.2
| | | |-- getrlimit.2
| | | |-- getrusage.2
| | | |-- getsid.2
| | | |-- getsockname.2
| | | |-- getsockopt.2
| | | |-- gettimeofday.2
| | | |-- getuid.2
| | | |-- gtty.2
| | | |-- idle.2
| | | |-- init_module.2
| | | |-- intro.2
| | | |-- ioctl.2
| | | |-- ioctl_list.2
| | | |-- ioperm.2
| | | |-- iopl.2
| | | |-- ipc.2
| | | |-- kill.2
| | | |-- killpg.2
| | | |-- link.2
| | | |-- listen.2
| | | |-- llseek.2
| | | |-- lock.2
| | | |-- lseek.2
| | | |-- lstat.2
| | | |-- mkdir.2
| | | |-- mknod.2
| | | |-- mlock.2
| | | |-- mlockall.2
| | | |-- mmap.2
| | | |-- modify_ldt.2
| | | |-- modules.2
| | | |-- mount.2
| | | |-- mprotect.2
| | | |-- mpx.2
| | | |-- mremap.2
| | | |-- msgctl.2
| | | |-- msgget.2
| | | |-- msgop.2
| | | |-- msgrcv.2
| | | |-- msgsnd.2
| | | |-- msync.2
| | | |-- munlock.2
| | | |-- munlockall.2
| | | |-- munmap.2
| | | |-- nanosleep.2
| | | |-- nice.2
| | | |-- obsolete.2
| | | |-- oldfstat.2
| | | |-- oldlstat.2
| | | |-- oldolduname.2
| | | |-- oldstat.2
| | | |-- olduname.2
| | | |-- open.2
| | | |-- outb.2
| | | |-- pause.2
| | | |-- personality.2
| | | |-- phys.2
| | | |-- pipe.2
| | | |-- prof.2
| | | |-- profil.2
| | | |-- ptrace.2
| | | |-- quotactl.2
| | | |-- read.2
| | | |-- readdir.2
| | | |-- readlink.2
| | | |-- readv.2
| | | |-- reboot.2
| | | |-- recv.2
| | | |-- recvfrom.2
| | | |-- recvmsg.2
| | | |-- rename.2
| | | |-- rmdir.2
| | | |-- sbrk.2
| | | |-- sched_get_priority_max.2
| | | |-- sched_get_priority_min.2
| | | |-- sched_getparam.2
| | | |-- sched_getscheduler.2
| | | |-- sched_rr_get_interval.2
| | | |-- sched_setparam.2
| | | |-- sched_setscheduler.2
| | | |-- sched_yield.2
| | | |-- select.2
| | | |-- semctl.2
| | | |-- semget.2
| | | |-- semop.2
| | | |-- send.2
| | | |-- sendmsg.2
| | | |-- sendto.2
| | | |-- setdomainname.2
| | | |-- setegid.2
| | | |-- seteuid.2
| | | |-- setfsgid.2
| | | |-- setfsuid.2
| | | |-- setgid.2
| | | |-- setgroups.2
| | | |-- sethostid.2
| | | |-- sethostname.2
| | | |-- setitimer.2
| | | |-- setpgid.2
| | | |-- setpgrp.2
| | | |-- setpriority.2
| | | |-- setregid.2
| | | |-- setreuid.2
| | | |-- setrlimit.2
| | | |-- setsid.2
| | | |-- setsockopt.2
| | | |-- settimeofday.2
| | | |-- setuid.2
| | | |-- setup.2
| | | |-- shmat.2
| | | |-- shmctl.2
| | | |-- shmdt.2
| | | |-- shmget.2
| | | |-- shmop.2
| | | |-- shutdown.2
| | | |-- sigaction.2
| | | |-- sigblock.2
| | | |-- sigmask.2
| | | |-- signal.2
| | | |-- sigpause.2
| | | |-- sigpending.2
| | | |-- sigprocmask.2
| | | |-- sigreturn.2
| | | |-- sigsuspend.2
| | | |-- sigvec.2
| | | |-- socket.2
| | | |-- socketcall.2
| | | |-- socketpair.2
| | | |-- stat.2
| | | |-- statfs.2
| | | |-- stime.2
| | | |-- stty.2
| | | |-- swapoff.2
| | | |-- swapon.2
| | | |-- symlink.2
| | | |-- sync.2
| | | |-- sysctl.2
| | | |-- sysfs.2
| | | |-- sysinfo.2
| | | |-- syslog.2
| | | |-- time.2
| | | |-- times.2
| | | |-- truncate.2
| | | |-- umask.2
| | | |-- umount.2
| | | |-- uname.2
| | | |-- undocumented.2
| | | |-- unimplemented.2
| | | |-- unlink.2
| | | |-- uselib.2
| | | |-- ustat.2
| | | |-- utime.2
| | | |-- vfork.2
| | | |-- vhangup.2
| | | |-- vm86.2
| | | |-- wait.2
| | | |-- wait3.2
| | | |-- wait4.2
| | | |-- waitpid.2
| | | |-- write.2
| | | `-- writev.2
| | |-- man3
| | | |-- TRANS.TBL
| | | |-- abort.3
| | | |-- abs.3
| | | |-- acos.3
| | | |-- acosh.3
| | | |-- addmntent.3
| | | |-- alloca.3
| | | |-- alphasort.3
| | | |-- asctime.3
| | | |-- asin.3
| | | |-- asinh.3
| | | |-- assert.3
| | | |-- atan.3
| | | |-- atan2.3
| | | |-- atanh.3
| | | |-- atexit.3
| | | |-- atof.3
| | | |-- atoi.3
| | | |-- atol.3
| | | |-- bcmp.3
| | | |-- bcopy.3
| | | |-- bsearch.3
| | | |-- bstring.3
| | | |-- byteorder.3
| | | |-- bzero.3
| | | |-- calloc.3
| | | |-- catclose.3
| | | |-- catgets.3
| | | |-- catopen.3
| | | |-- cbrt.3
| | | |-- ceil.3
| | | |-- cfgetispeed.3
| | | |-- cfgetospeed.3
| | | |-- cfmakeraw.3
| | | |-- cfsetispeed.3
| | | |-- cfsetospeed.3
| | | |-- clearerr.3
| | | |-- clock.3
| | | |-- closedir.3
| | | |-- closelog.3
| | | |-- confstr.3
| | | |-- copysign.3
| | | |-- cos.3
| | | |-- cosh.3
| | | |-- crypt.3
| | | |-- ctermid.3
| | | |-- ctime.3
| | | |-- cuserid.3
| | | |-- difftime.3
| | | |-- div.3
| | | |-- dn_comp.3
| | | |-- dn_expand.3
| | | |-- drand48.3
| | | |-- drem.3
| | | |-- ecvt.3
| | | |-- endgrent.3
| | | |-- endhostent.3
| | | |-- endmntent.3
| | | |-- endnetent.3
| | | |-- endprotoent.3
| | | |-- endpwent.3
| | | |-- endservent.3
| | | |-- endusershell.3
| | | |-- endutent.3
| | | |-- erand48.3
| | | |-- erf.3
| | | |-- erfc.3
| | | |-- errno.3
| | | |-- exec.3
| | | |-- execl.3
| | | |-- execle.3
| | | |-- execlp.3
| | | |-- exect.3
| | | |-- execv.3
| | | |-- execvp.3
| | | |-- exit.3
| | | |-- exp.3
| | | |-- expm1.3
| | | |-- fabs.3
| | | |-- fclose.3
| | | |-- fcvt.3
| | | |-- fdopen.3
| | | |-- feof.3
| | | |-- ferror.3
| | | |-- fflush.3
| | | |-- ffs.3
| | | |-- fgetc.3
| | | |-- fgetgrent.3
| | | |-- fgetpos.3
| | | |-- fgetpwent.3
| | | |-- fgets.3
| | | |-- fileno.3
| | | |-- finite.3
| | | |-- floor.3
| | | |-- fmod.3
| | | |-- fnmatch.3
| | | |-- fopen.3
| | | |-- fpathconf.3
| | | |-- fprintf.3
| | | |-- fpurge.3
| | | |-- fputc.3
| | | |-- fputs.3
| | | |-- fread.3
| | | |-- free.3
| | | |-- freopen.3
| | | |-- frexp.3
| | | |-- fscanf.3
| | | |-- fseek.3
| | | |-- fsetpos.3
| | | |-- ftell.3
| | | |-- ftime.3
| | | |-- ftok.3
| | | |-- ftw.3
| | | |-- fwrite.3
| | | |-- gcvt.3
| | | |-- get_current_dir_name.3
| | | |-- getc.3
| | | |-- getchar.3
| | | |-- getcwd.3
| | | |-- getdirentries.3
| | | |-- getenv.3
| | | |-- getgrent.3
| | | |-- getgrgid.3
| | | |-- getgrnam.3
| | | |-- gethostbyaddr.3
| | | |-- gethostbyname.3
| | | |-- getlogin.3
| | | |-- getmntent.3
| | | |-- getnetbyaddr.3
| | | |-- getnetbyname.3
| | | |-- getnetent.3
| | | |-- getopt.3
| | | |-- getopt_long.3
| | | |-- getopt_long_only.3
| | | |-- getpass.3
| | | |-- getprotobyname.3
| | | |-- getprotobynumber.3
| | | |-- getprotoent.3
| | | |-- getpw.3
| | | |-- getpwent.3
| | | |-- getpwnam.3
| | | |-- getpwuid.3
| | | |-- gets.3
| | | |-- getservbyname.3
| | | |-- getservbyport.3
| | | |-- getservent.3
| | | |-- getusershell.3
| | | |-- getutent.3
| | | |-- getutid.3
| | | |-- getutline.3
| | | |-- getw.3
| | | |-- getwd.3
| | | |-- glob.3
| | | |-- globfree.3
| | | |-- gmtime.3
| | | |-- hasmntopt.3
| | | |-- hcreate.3
| | | |-- hdestroy.3
| | | |-- herror.3
| | | |-- hsearch.3
| | | |-- htonl.3
| | | |-- htons.3
| | | |-- hypot.3
| | | |-- index.3
| | | |-- inet.3
| | | |-- inet_addr.3
| | | |-- inet_aton.3
| | | |-- inet_lnaof.3
| | | |-- inet_makeaddr.3
| | | |-- inet_netof.3
| | | |-- inet_network.3
| | | |-- inet_ntoa.3
| | | |-- infnan.3
| | | |-- initgroups.3
| | | |-- initstate.3
| | | |-- insque.3
| | | |-- intro.3
| | | |-- isalnum.3
| | | |-- isalpha.3
| | | |-- isascii.3
| | | |-- isatty.3
| | | |-- isblank.3
| | | |-- iscntrl.3
| | | |-- isdigit.3
| | | |-- isgraph.3
| | | |-- isinf.3
| | | |-- islower.3
| | | |-- isnan.3
| | | |-- isprint.3
| | | |-- ispunct.3
| | | |-- isspace.3
| | | |-- isupper.3
| | | |-- isxdigit.3
| | | |-- j0.3
| | | |-- j1.3
| | | |-- jn.3
| | | |-- jrand48.3
| | | |-- killpg.3
| | | |-- labs.3
| | | |-- lcong48.3
| | | |-- ldexp.3
| | | |-- ldiv.3
| | | |-- lfind.3
| | | |-- lgamma.3
| | | |-- localeconv.3
| | | |-- localtime.3
| | | |-- log.3
| | | |-- log10.3
| | | |-- log1p.3
| | | |-- longjmp.3
| | | |-- lrand48.3
| | | |-- lsearch.3
| | | |-- malloc.3
| | | |-- mblen.3
| | | |-- mbstowcs.3
| | | |-- mbtowc.3
| | | |-- memccpy.3
| | | |-- memchr.3
| | | |-- memcmp.3
| | | |-- memcpy.3
| | | |-- memfrob.3
| | | |-- memmem.3
| | | |-- memmove.3
| | | |-- memset.3
| | | |-- mkfifo.3
| | | |-- mkstemp.3
| | | |-- mktemp.3
| | | |-- mktime.3
| | | |-- modf.3
| | | |-- mrand48.3
| | | |-- nrand48.3
| | | |-- ntohl.3
| | | |-- ntohs.3
| | | |-- on_exit.3
| | | |-- opendir.3
| | | |-- openlog.3
| | | |-- pathconf.3
| | | |-- pclose.3
| | | |-- perror.3
| | | |-- popen.3
| | | |-- pow.3
| | | |-- printf.3
| | | |-- psignal.3
| | | |-- putc.3
| | | |-- putchar.3
| | | |-- putenv.3
| | | |-- putpwent.3
| | | |-- puts.3
| | | |-- pututline.3
| | | |-- putw.3
| | | |-- qsort.3
| | | |-- raise.3
| | | |-- rand.3
| | | |-- random.3
| | | |-- re_comp.3
| | | |-- re_exec.3
| | | |-- readdir.3
| | | |-- readv.3
| | | |-- realloc.3
| | | |-- realpath.3
| | | |-- regcomp.3
| | | |-- regerror.3
| | | |-- regexec.3
| | | |-- regfree.3
| | | |-- remove.3
| | | |-- remque.3
| | | |-- res_init.3
| | | |-- res_mkquery.3
| | | |-- res_query.3
| | | |-- res_querydomain.3
| | | |-- res_search.3
| | | |-- res_send.3
| | | |-- resolver.3
| | | |-- rewind.3
| | | |-- rewinddir.3
| | | |-- rindex.3
| | | |-- rint.3
| | | |-- scandir.3
| | | |-- scanf.3
| | | |-- seed48.3
| | | |-- seekdir.3
| | | |-- setbuf.3
| | | |-- setbuffer.3
| | | |-- setenv.3
| | | |-- setgrent.3
| | | |-- sethostent.3
| | | |-- setjmp.3
| | | |-- setlinebuf.3
| | | |-- setlocale.3
| | | |-- setmntent.3
| | | |-- setnetent.3
| | | |-- setprotoent.3
| | | |-- setpwent.3
| | | |-- setservent.3
| | | |-- setstate.3
| | | |-- setusershell.3
| | | |-- setutent.3
| | | |-- setvbuf.3
| | | |-- sigaddset.3
| | | |-- sigdelset.3
| | | |-- sigemptyset.3
| | | |-- sigfillset.3
| | | |-- siginterrupt.3
| | | |-- sigismember.3
| | | |-- sigsetops.3
| | | |-- sin.3
| | | |-- sinh.3
| | | |-- sleep.3
| | | |-- snprintf.3
| | | |-- sprintf.3
| | | |-- sqrt.3
| | | |-- srand.3
| | | |-- srand48.3
| | | |-- srandom.3
| | | |-- sscanf.3
| | | |-- stdarg.3
| | | |-- stdio.3
| | | |-- stpcpy.3
| | | |-- strcasecmp.3
| | | |-- strcat.3
| | | |-- strchr.3
| | | |-- strcmp.3
| | | |-- strcoll.3
| | | |-- strcpy.3
| | | |-- strcspn.3
| | | |-- strdup.3
| | | |-- strerror.3
| | | |-- strfry.3
| | | |-- strftime.3
| | | |-- string.3
| | | |-- strlen.3
| | | |-- strncasecmp.3
| | | |-- strncat.3
| | | |-- strncmp.3
| | | |-- strncpy.3
| | | |-- strpbrk.3
| | | |-- strptime.3
| | | |-- strrchr.3
| | | |-- strsep.3
| | | |-- strsignal.3
| | | |-- strspn.3
| | | |-- strstr.3
| | | |-- strtod.3
| | | |-- strtok.3
| | | |-- strtol.3
| | | |-- strtoul.3
| | | |-- strxfrm.3
| | | |-- swab.3
| | | |-- sysconf.3
| | | |-- syslog.3
| | | |-- system.3
| | | |-- tan.3
| | | |-- tanh.3
| | | |-- tcdrain.3
| | | |-- tcflow.3
| | | |-- tcflush.3
| | | |-- tcgetattr.3
| | | |-- tcgetpgrp.3
| | | |-- tcsendbreak.3
| | | |-- tcsetattr.3
| | | |-- tcsetpgrp.3
| | | |-- tdelete.3
| | | |-- telldir.3
| | | |-- tempnam.3
| | | |-- termios.3
| | | |-- tfind.3
| | | |-- tmpfile.3
| | | |-- tmpnam.3
| | | |-- toascii.3
| | | |-- tolower.3
| | | |-- toupper.3
| | | |-- tsearch.3
| | | |-- ttyname.3
| | | |-- twalk.3
| | | |-- tzset.3
| | | |-- undocumented.3
| | | |-- ungetc.3
| | | |-- unsetenv.3
| | | |-- usleep.3
| | | |-- utmpname.3
| | | |-- va_arg.3
| | | |-- va_end.3
| | | |-- va_start.3
| | | |-- vfprintf.3
| | | |-- vfscanf.3
| | | |-- vprintf.3
| | | |-- vscanf.3
| | | |-- vsnprintf.3
| | | |-- vsprintf.3
| | | |-- vsscanf.3
| | | |-- wcstombs.3
| | | |-- wctomb.3
| | | |-- writev.3
| | | |-- y0.3
| | | |-- y1.3
| | | `-- yn.3
| | |-- man4
| | | |-- TRANS.TBL
| | | |-- charsets.4
| | | |-- console.4
| | | |-- console_codes.4
| | | |-- fd.4
| | | |-- hd.4
| | | |-- intro.4
| | | |-- kmem.4
| | | |-- lp.4
| | | |-- mem.4
| | | |-- mouse.4
| | | |-- null.4
| | | |-- port.4
| | | |-- ram.4
| | | |-- sd.4
| | | |-- st.4
| | | |-- tty.4
| | | |-- ttys.4
| | | |-- vcs.4
| | | |-- vcsa.4
| | | |-- wavelan.4
| | | `-- zero.4
| | |-- man5
| | | |-- TRANS.TBL
| | | |-- environ.5
| | | |-- exports.5
| | | |-- fs.5
| | | |-- fstab.5
| | | |-- group.5
| | | |-- intro.5
| | | |-- ipc.5
| | | |-- issue.5
| | | |-- lilo.conf.5
| | | |-- motd.5
| | | |-- nfs.5
| | | |-- nologin.5
| | | |-- passwd.5
| | | |-- protocols.5
| | | |-- securetty.5
| | | |-- services.5
| | | |-- shells.5
| | | |-- ttytype.5
| | | |-- utmp.5
| | | `-- wtmp.5
| | |-- man7
| | | |-- TRANS.TBL
| | | |-- ascii.7
| | | |-- bootparam.7
| | | |-- hier.7
| | | |-- intro.7
| | | |-- iso_8859_1.7
| | | |-- latin1.7
| | | |-- locale.7
| | | |-- mailaddr.7
| | | |-- man.7
| | | |-- signal.7
| | | |-- suffixes.7
| | | |-- unicode.7
| | | `-- utf-8.7
| | `-- man8
| | |-- TRANS.TBL
| | |-- intro.8
| | `-- lilo.8
| |-- PDF-UTILS
| | |-- TRANS.TBL
| | |-- acroread.311
| | | |-- TRANS.TBL
| | | |-- acroread.exe
| | | |-- acroread.txt
| | | `-- install.txt
| | |-- xpdf-0.6-linux2.0-elf
| | | |-- CHANGES
| | | |-- README
| | | |-- TRANS.TBL
| | | |-- pdftops
| | | |-- pdftops.1
| | | |-- xpdf
| | | `-- xpdf.1
| | `-- xpdf-0.6-sources
| | |-- ANNOUNCE
| | |-- CHANGES
| | |-- Makefile
| | |-- Makefile.config
| | |-- README
| | |-- TRANS.TBL
| | |-- goo
| | | |-- GString.cc
| | | |-- GString.h
| | | |-- Makefile
| | | |-- TRANS.TBL
| | | |-- cover.c
| | | |-- cover.h
| | | |-- fileNames.cc
| | | |-- fileNames.h
| | | |-- gmem.c
| | | |-- gmem.h
| | | |-- gmempp.cc
| | | |-- gtypes.h
| | | |-- parseargs.c
| | | |-- parseargs.h
| | | |-- vmscomp.com
| | | `-- vmsdecccomp.com
| | |-- ltk
| | | |-- LTKAll.h
| | | |-- LTKApp.cc
| | | |-- LTKApp.h
| | | |-- LTKBorder.cc
| | | |-- LTKBorder.h
| | | |-- LTKBox.cc
| | | |-- LTKBox.h
| | | |-- LTKButton.cc
| | | |-- LTKButton.h
| | | |-- LTKCanvas.cc
| | | |-- LTKCanvas.h
| | | |-- LTKConfig.h
| | | |-- LTKDblBufCanvas.cc
| | | |-- LTKDblBufCanvas.h
| | | |-- LTKEmpty.cc
| | | |-- LTKEmpty.h
| | | |-- LTKLabel.cc
| | | |-- LTKLabel.h
| | | |-- LTKMisc.cc
| | | |-- LTKMisc.h
| | | |-- LTKResources.cc
| | | |-- LTKResources.h
| | | |-- LTKScrollbar.cc
| | | |-- LTKScrollbar.h
| | | |-- LTKScrollingCanvas.cc
| | | |-- LTKScrollingCanvas.h
| | | |-- LTKTextIn.cc
| | | |-- LTKTextIn.h
| | | |-- LTKWidget.cc
| | | |-- LTKWidget.h
| | | |-- LTKWindow.cc
| | | |-- LTKWindow.h
| | | |-- Makefile
| | | |-- TRANS.TBL
| | | |-- ltkbuild-widgets.h
| | | |-- ltkbuild.cc
| | | |-- vmscomp.com
| | | `-- vmsdecccomp.com
| | |-- pdftops.1
| | |-- pdftops.hlp
| | |-- vmscomp.com
| | |-- vmsdecccomp.com
| | |-- xpdf
| | | |-- Array.cc
| | | |-- Array.h
| | | |-- Catalog.cc
| | | |-- Catalog.h
| | | |-- Dict.cc
| | | |-- Dict.h
| | | |-- Error.cc
| | | |-- Error.h
| | | |-- FontInfo.h
| | | |-- Gfx.cc
| | | |-- Gfx.h
| | | |-- GfxFont.cc
| | | |-- GfxFont.h
| | | |-- GfxState.cc
| | | |-- GfxState.h
| | | |-- Lexer.cc
| | | |-- Lexer.h
| | | |-- Link.cc
| | | |-- Link.h
| | | |-- Makefile
| | | |-- Object.cc
| | | |-- Object.h
| | | |-- OutputDev.cc
| | | |-- OutputDev.h
| | | |-- PDFDoc.cc
| | | |-- PDFDoc.h
| | | |-- PSOutputDev.cc
| | | |-- PSOutputDev.h
| | | |-- Page.cc
| | | |-- Page.h
| | | |-- Params.cc
| | | |-- Params.h
| | | |-- Parser.cc
| | | |-- Parser.h
| | | |-- Stream-CCITT.h
| | | |-- Stream.cc
| | | |-- Stream.h
| | | |-- TRANS.TBL
| | | |-- XOutputDev.cc
| | | |-- XOutputDev.h
| | | |-- XOutputFontInfo.h
| | | |-- XRef.cc
| | | |-- XRef.h
| | | |-- about.xbm
| | | |-- config.h
| | | |-- dblLeftArrow.xbm
| | | |-- dblRightArrow.xbm
| | | |-- leftArrow.xbm
| | | |-- pdftops.cc
| | | |-- postscript.xbm
| | | |-- rightArrow.xbm
| | | |-- rotateCCW.xbm
| | | |-- rotateCW.xbm
| | | |-- vms_unlink.c
| | | |-- vmscomp.com
| | | |-- vmsdecccomp.com
| | | |-- xpdf-ltk.h
| | | |-- xpdf.cc
| | | |-- xpdf.ltk
| | | |-- zoomIn.xbm
| | | `-- zoomOut.xbm
| | |-- xpdf.1
| | `-- xpdf.hlp
| |-- PPP
| | |-- TRANS.TBL
| | |-- intmodem.txt
| | |-- ppp.htm
| | |-- rouge.gif
| | `-- tkppp.gif
| |-- TEX
| | |-- TRANS.TBL
| | `-- tex-book.pdf
| |-- TRANS.TBL
| |-- VI
| | |-- TRANS.TBL
| | `-- memovif.pdf
| `-- bds222
| |-- TRANS.TBL
| |-- bds222.tgz
| |-- bds_dvi.gz
| |-- bdsps.gz
| |-- html
| | |-- TRANS.TBL
| | |-- footnode.html
| | |-- gs.html
| | |-- img1.gif
| | |-- img10.gif
| | |-- img100.gif
| | |-- img101.gif
| | |-- img102.gif
| | |-- img103.gif
| | |-- img104.gif
| | |-- img105.gif
| | |-- img106.gif
| | |-- img107.gif
| | |-- img108.gif
| | |-- img109.gif
| | |-- img11.gif
| | |-- img110.gif
| | |-- img111.gif
| | |-- img112.gif
| | |-- img113.gif
| | |-- img114.gif
| | |-- img115.gif
| | |-- img116.gif
| | |-- img117.gif
| | |-- img118.gif
| | |-- img119.gif
| | |-- img12.gif
| | |-- img120.gif
| | |-- img121.gif
| | |-- img122.gif
| | |-- img123.gif
| | |-- img124.gif
| | |-- img125.gif
| | |-- img126.gif
| | |-- img127.gif
| | |-- img128.gif
| | |-- img129.gif
| | |-- img13.gif
| | |-- img130.gif
| | |-- img131.gif
| | |-- img132.gif
| | |-- img133.gif
| | |-- img134.gif
| | |-- img135.gif
| | |-- img136.gif
| | |-- img137.gif
| | |-- img138.gif
| | |-- img139.gif
| | |-- img14.gif
| | |-- img140.gif
| | |-- img141.gif
| | |-- img142.gif
| | |-- img143.gif
| | |-- img144.gif
| | |-- img145.gif
| | |-- img146.gif
| | |-- img147.gif
| | |-- img148.gif
| | |-- img149.gif
| | |-- img15.gif
| | |-- img150.gif
| | |-- img151.gif
| | |-- img152.gif
| | |-- img153.gif
| | |-- img154.gif
| | |-- img155.gif
| | |-- img156.gif
| | |-- img157.gif
| | |-- img158.gif
| | |-- img159.gif
| | |-- img16.gif
| | |-- img160.gif
| | |-- img161.gif
| | |-- img162.gif
| | |-- img163.gif
| | |-- img164.gif
| | |-- img165.gif
| | |-- img166.gif
| | |-- img167.gif
| | |-- img168.gif
| | |-- img169.gif
| | |-- img17.gif
| | |-- img170.gif
| | |-- img171.gif
| | |-- img172.gif
| | |-- img173.gif
| | |-- img174.gif
| | |-- img175.gif
| | |-- img176.gif
|=20 | |-- img177.gif
| | |-- img178.gif
| | |-- img179.gif
| | |-- img18.gif
| | |-- img180.gif
| | |-- img181.gif
| | |-- img182.gif
| | |-- img183.gif
| | |-- img184.gif
| | |-- img185.gif
| | |-- img186.gif
| | |-- img187.gif
| | |-- img188.gif
| | |-- img189.gif
| | |-- img19.gif
| | |-- img190.gif
| | |-- img191.gif
| | |-- img192.gif
| | |-- img193.gif
| | |-- img194.gif
| | |-- img195.gif
| | |-- img196.gif
| | |-- img197.gif
| | |-- img198.gif
| | |-- img199.gif
| | |-- img2.gif
| | |-- img20.gif
| | |-- img200.gif
| | |-- img201.gif
| | |-- img202.gif
| | |-- img203.gif
| | |-- img204.gif
| | |-- img205.gif
| | |-- img206.gif
| | |-- img207.gif
| | |-- img208.gif
| | |-- img209.gif
| | |-- img21.gif
| | |-- img210.gif
| | |-- img211.gif
| | |-- img212.gif
| | |-- img213.gif
| | |-- img214.gif
| | |-- img215.gif
| | |-- img216.gif
| | |-- img217.gif
| | |-- img218.gif
| | |-- img219.gif
| | |-- img22.gif
| | |-- img220.gif
| | |-- img221.gif
| | |-- img222.gif
| | |-- img223.gif
| | |-- img224.gif
| | |-- img225.gif
| | |-- img226.gif
| | |-- img227.gif
| | |-- img228.gif
| | |-- img229.gif
| | |-- img23.gif
| | |-- img230.gif
| | |-- img231.gif
| | |-- img232.gif
| | |-- img233.gif
| | |-- img234.gif
| | |-- img235.gif
| | |-- img236.gif
| | |-- img237.gif
| | |-- img238.gif
| | |-- img239.gif
| | |-- img24.gif
| | |-- img240.gif
| | |-- img241.gif
| | |-- img242.gif
| | |-- img243.gif
| | |-- img244.gif
| | |-- img245.gif
| | |-- img246.gif
| | |-- img247.gif
| | |-- img248.gif
| | |-- img249.gif
| | |-- img25.gif
| | |-- img250.gif
| | |-- img251.gif
| | |-- img252.gif
| | |-- img253.gif
| | |-- img254.gif
| | |-- img255.gif
| | |-- img256.gif
| | |-- img257.gif
| | |-- img258.gif
| | |-- img259.gif
| | |-- img26.gif
| | |-- img260.gif
| | |-- img261.gif
| | |-- img262.gif
| | |-- img263.gif
| | |-- img264.gif
| | |-- img265.gif
| | |-- img266.gif
| | |-- img267.gif
| | |-- img268.gif
| | |-- img269.gif
| | |-- img27.gif
| | |-- img270.gif
| | |-- img271.gif
| | |-- img272.gif
| | |-- img273.gif
| | |-- img274.gif
| | |-- img275.gif
| | |-- img276.gif
| | |-- img277.gif
| | |-- img278.gif
| | |-- img279.gif
| | |-- img28.gif
| | |-- img280.gif
| | |-- img281.gif
| | |-- img282.gif
| | |-- img283.gif
| | |-- img284.gif
| | |-- img285.gif
| | |-- img286.gif
| | |-- img287.gif
| | |-- img288.gif
| | |-- img289.gif
| | |-- img29.gif
| | |-- img290.gif
| | |-- img291.gif
| | |-- img292.gif
| | |-- img293.gif
| | |-- img294.gif
| | |-- img295.gif
| | |-- img296.gif
| | |-- img297.gif
| | |-- img298.gif
| | |-- img299.gif
| | |-- img3.gif
| | |-- img30.gif
| | |-- img300.gif
| | |-- img301.gif
| | |-- img302.gif
| | |-- img303.gif
| | |-- img304.gif
| | |-- img305.gif
| | |-- img306.gif
| | |-- img307.gif
| | |-- img308.gif
| | |-- img309.gif
| | |-- img31.gif
| | |-- img310.gif
| | |-- img311.gif
| | |-- img312.gif
| | |-- img313.gif
| | |-- img314.gif
| | |-- img315.gif
| | |-- img316.gif
| | |-- img317.gif
| | |-- img318.gif
| | |-- img319.gif
| | |-- img32.gif
| | |-- img320.gif
| | |-- img321.gif
| | |-- img322.gif
| | |-- img323.gif
| | |-- img324.gif
| | |-- img325.gif
| | |-- img33.gif
| | |-- img34.gif
| | |-- img35.gif
| | |-- img36.gif
| | |-- img37.gif
| | |-- img38.gif
| | |-- img39.gif
| | |-- img4.gif
| | |-- img40.gif
| | |-- img41.gif
| | |-- img42.gif
| | |-- img43.gif
| | |-- img44.gif
| | |-- img45.gif
| | |-- img46.gif
| | |-- img47.gif
| | |-- img48.gif
| | |-- img49.gif
| | |-- img5.gif
| | |-- img50.gif
| | |-- img51.gif
| | |-- img52.gif
| | |-- img53.gif
| | |-- img54.gif
| | |-- img55.gif
| | |-- img56.gif
| | |-- img57.gif
| | |-- img58.gif
| | |-- img59.gif
| | |-- img6.gif
| | |-- img60.gif
| | |-- img61.gif
| | |-- img62.gif
| | |-- img63.gif
| | |-- img64.gif
| | |-- img65.gif
| | |-- img66.gif
| | |-- img67.gif
| | |-- img68.gif
| | |-- img69.gif
| | |-- img7.gif
| | |-- img70.gif
| | |-- img71.gif
| | |-- img72.gif
| | |-- img73.gif
| | |-- img74.gif
| | |-- img75.gif
| | |-- img76.gif
| | |-- img77.gif
| | |-- img78.gif
| | |-- img79.gif
| | |-- img8.gif
| | |-- img80.gif
| | |-- img81.gif
| | |-- img82.gif
| | |-- img83.gif
| | |-- img84.gif
| | |-- img85.gif
| | |-- img86.gif
| | |-- img87.gif
| | |-- img88.gif
| | |-- img89.gif
| | |-- img9.gif
| | |-- img90.gif
| | |-- img91.gif
| | |-- img92.gif
| | |-- img93.gif
| | |-- img94.gif
| | |-- img95.gif
| | |-- img96.gif
| | |-- img97.gif
| | |-- img98.gif
| | |-- img99.gif
| | |-- node1.html
| | |-- node10.html
| | |-- node100.html
| | |-- node101.html
| | |-- node102.html
| | |-- node103.html
| | |-- node104.html
| | |-- node105.html
| | |-- node106.html
| | |-- node107.html
| | |-- node108.html
| | |-- node109.html
| | |-- node11.html
| | |-- node110.html
| | |-- node111.html
| | |-- node112.html
| | |-- node113.html
| | |-- node114.html
| | |-- node115.html
| | |-- node116.html
| | |-- node117.html
| | |-- node118.html
| | |-- node119.html
| | |-- node12.html
| | |-- node120.html
| | |-- node121.html
| | |-- node122.html
| | |-- node123.html
| | |-- node124.html
| | |-- node125.html
| | |-- node126.html
| | |-- node127.html
| | |-- node128.html
| | |-- node129.html
| | |-- node13.html
| | |-- node130.html
| | |-- node131.html
| | |-- node132.html
| | |-- node133.html
| | |-- node134.html
| | |-- node135.html
| | |-- node136.html
| | |-- node137.html
| | |-- node138.html
| | |-- node139.html
| | |-- node14.html
| | |-- node140.html
| | |-- node141.html
| | |-- node142.html
| | |-- node143.html
| | |-- node144.html
| | |-- node145.html
| | |-- node146.html
| | |-- node147.html
| | |-- node148.html
| | |-- node149.html
| | |-- node15.html
| | |-- node150.html
| | |-- node151.html
| | |-- node152.html
| | |-- node153.html
| | |-- node154.html
| | |-- node155.html
| | |-- node156.html
| | |-- node157.html
| | |-- node158.html
| | |-- node159.html
| | |-- node16.html
| | |-- node160.html
| | |-- node161.html
| | |-- node162.html
| | |-- node163.html
| | |-- node164.html
| | |-- node165.html
| | |-- node166.html
| | |-- node167.html
| | |-- node168.html
| | |-- node169.html
| | |-- node17.html
| | |-- node170.html
| | |-- node171.html
| | |-- node172.html
| | |-- node173.html
| | |-- node174.html
| | |-- node175.html
| | |-- node176.html
| | |-- node177.html
| | |-- node178.html
| | |-- node179.html
| | |-- node18.html
| | |-- node180.html
| | |-- node181.html
| | |-- node182.html
| | |-- node183.html
| | |-- node184.html
| | |-- node185.html
| | |-- node186.html
| | |-- node187.html
| | |-- node188.html
| | |-- node189.html
| | |-- node19.html
| | |-- node190.html
| | |-- node191.html
| | |-- node192.html
| | |-- node193.html
| | |-- node194.html
| | |-- node195.html
| | |-- node196.html
| | |-- node197.html
| | |-- node198.html
| | |-- node199.html
| | |-- node2.html
| | |-- node20.html
| | |-- node200.html
| | |-- node201.html
| | |-- node202.html
| | |-- node203.html
| | |-- node204.html
| | |-- node205.html
| | |-- node206.html
| | |-- node207.html
| | |-- node208.html
| | |-- node209.html
| | |-- node21.html
| | |-- node210.html
| | |-- node211.html
| =20| |-- node212.html
| | |-- node213.html
| | |-- node214.html
| | |-- node215.html
| | |-- node216.html
| | |-- node217.html
| | |-- node218.html
| | |-- node219.html
| | |-- node22.html
| | |-- node220.html
| | |-- node221.html
| | |-- node222.html
| | |-- node223.html
| | |-- node224.html
| | |-- node225.html
| | |-- node226.html
| | |-- node227.html
| | |-- node228.html
| | |-- node229.html
| | |-- node23.html
| | |-- node230.html
| | |-- node231.html
| | |-- node232.html
| | |-- node233.html
| | |-- node234.html
| | |-- node235.html
| | |-- node236.html
| | |-- node237.html
| | |-- node238.html
| | |-- node239.html
| | |-- node24.html
| | |-- node240.html
| | |-- node241.html
| | |-- node242.html
| | |-- node243.html
| | |-- node244.html
| | |-- node245.html
| | |-- node246.html
| | |-- node247.html
| | |-- node248.html
| | |-- node249.html
| | |-- node25.html
| | |-- node250.html
| | |-- node251.html
| | |-- node252.html
| | |-- node253.html
| | |-- node254.html
| | |-- node255.html
| | |-- node256.html
| | |-- node257.html
| | |-- node258.html
| | |-- node259.html
| | |-- node26.html
| | |-- node260.html
| | |-- node261.html
| | |-- node262.html
| | |-- node263.html
| | |-- node264.html
| | |-- node265.html
| | |-- node266.html
| | |-- node267.html
| | |-- node268.html
| | |-- node269.html
| | |-- node27.html
| | |-- node270.html
| | |-- node271.html
| | |-- node28.html
| | |-- node29.html
| | |-- node3.html
| | |-- node30.html
| | |-- node31.html
| | |-- node32.html
| | |-- node33.html
| | |-- node34.html
| | |-- node35.html
| | |-- node36.html
| | |-- node37.html
| | |-- node38.html
| | |-- node39.html
| | |-- node4.html
| | |-- node40.html
| | |-- node41.html
| | |-- node42.html
| | |-- node43.html
| | |-- node44.html
| | |-- node45.html
| | |-- node46.html
| | |-- node47.html
| | |-- node48.html
| | |-- node49.html
| | |-- node5.html
| | |-- node50.html
| | |-- node51.html
| | |-- node52.html
| | |-- node53.html
| | |-- node54.html
| | |-- node55.html
| | |-- node56.html
| | |-- node57.html
| | |-- node58.html
| | |-- node59.html
| | |-- node6.html
| | |-- node60.html
| | |-- node61.html
| | |-- node62.html
| | |-- node63.html
| | |-- node64.html
| | |-- node65.html
| | |-- node66.html
| | |-- node67.html
| | |-- node68.html
| | |-- node69.html
| | |-- node7.html
| | |-- node70.html
| | |-- node71.html
| | |-- node72.html
| | |-- node73.html
| | |-- node74.html
| | |-- node75.html
| | |-- node76.html
| | |-- node77.html
| | |-- node78.html
| | |-- node79.html
| | |-- node8.html
| | |-- node80.html
| | |-- node81.html
| | |-- node82.html
| | |-- node83.html
| | |-- node84.html
| | |-- node85.html
| | |-- node86.html
| | |-- node87.html
| | |-- node88.html
| | |-- node89.html
| | |-- node9.html
| | |-- node90.html
| | |-- node91.html
| | |-- node92.html
| | |-- node93.html
| | |-- node94.html
| | |-- node95.html
| | |-- node96.html
| | |-- node97.html
| | |-- node98.html
| | `-- node99.html
| `-- icones
| |-- TRANS.TBL
| |-- bdlinux.gif
| |-- contg.gif
| |-- cross_ref_motif.gif
| |-- foot_motif.gif
| |-- indexg.gif
| |-- leftg.gif
| |-- point-rg.gif
| |-- previgr.gif
| |-- rightg.gif
| |-- rouge.gif
| |-- square.gif
| |-- topg.gif
| |-- up_motgr.gif
| `-- upg.gif
|-- FAQ -> docs/misc/RedHat-FAQ.txt
|-- INSTALL
| |-- TRANS.TBL
| |-- autoboot
| | |-- TRANS.TBL
| | |-- autoboot.bat
| | |-- initrd.img
| | |-- loadlin.exe
| | `-- vmlinuz
| |-- autoboot.bat
| |-- choix.exe
| |-- flop1440.bat
| |-- images
| | |-- TRANS.TBL
| | |-- generic
| | | |-- TRANS.TBL
| | | |-- boot.img
| | | `-- supp.img
| | |-- lisezmoi.txt
| | `-- scsi
| | |-- TRANS.TBL
| | |-- aha1540
| | | |-- TRANS.TBL
| | | |-- aha1540.img
| | | `-- config
| | |-- aha1740
| | | |-- TRANS.TBL
| | | |-- aha1740.img
| | | `-- config
| | |-- aic7xxx
| | | |-- TRANS.TBL
| | | |-- aic7xxx.img
| | | `-- config
| | |-- buslogic
| | | |-- TRANS.TBL
| | | |-- buslogic.img
| | | `-- config
| | |-- eata_dma
| | | |-- TRANS.TBL
| | | |-- config
| | | `-- eata_dma.img
| | |-- lisezmoi.txt
| | |-- supp.img
| | | |-- TRANS.TBL
| | | |-- readme
| | | `-- supp.img
| | `-- ultrstor
| | |-- TRANS.TBL
| | |-- config
| | `-- ultrstor.img
| |-- install.bat
| |-- man-rh41.txt
| |-- rawrite.exe
| `-- voir.com
|-- README
|-- RPM-PGP-KEY
|-- RedHat
| |-- RPMS
| | |-- ElectricFence-2.0.5-4.i386.rpm
| | |-- ImageMagick-3.7-5.i386.rpm
| | |-- ImageMagick-devel-3.7-5.i386.rpm
| | |-- MAKEDEV-2.2-9.i386.rpm
| | |-- NetKit-B-0.08-13.i386.rpm
| | |-- SysVinit-2.64-7.i386.rpm
| | |-- TRANS.TBL
| | |-- TheNextLevel-1.0-2.i386.rpm
| | |-- X11R6-contrib-3.2-1.i386.rpm
| | |-- XFree86-100dpi-fonts-3.2-4.i386.rpm
| | |-- XFree86-3.2-4.i386.rpm
| | |-- XFree86-75dpi-fonts-3.2-4.i386.rpm
| | |-- XFree86-8514-3.2-4.i386.rpm
| | |-- XFree86-AGX-3.2-4.i386.rpm
| | |-- XFree86-I128-3.2-4.i386.rpm
| | |-- XFree86-Mach32-3.2-4.i386.rpm
| | |-- XFree86-Mach64-3.2-4.i386.rpm
| | |-- XFree86-Mach8-3.2-4.i386.rpm
| | |-- XFree86-Mono-3.2-4.i386.rpm
| | |-- XFree86-P9000-3.2-4.i386.rpm
| | |-- XFree86-S3-3.2-4.i386.rpm
| | |-- XFree86-S3V-3.2-4.i386.rpm
| | |-- XFree86-SVGA-3.2-4.i386.rpm
| | |-- XFree86-VGA16-3.2-4.i386.rpm
| | |-- XFree86-W32-3.2-4.i386.rpm
| | |-- XFree86-XF86Setup-3.2-4.i386.rpm
| | |-- XFree86-devel-3.2-4.i386.rpm
| | |-- XFree86-libs-3.2-4.i386.rpm
| | |-- Xaw3d-1.3-6.i386.rpm
| | |-- Xaw3d-devel-1.3-6.i386.rpm
| | |-- Xconfigurator-2.6-5.i386.rpm
| | |-- acm-4.7-5.i386.rpm
| | |-- adduser-1.2-1.i386.rpm
| | |-- adjtimex-1.2-4.i386.rpm
| | |-- amd-920824upl102-6.i386.rpm
| | |-- anonftp-2.3-2.i386.rpm
| | |-- aout-libs-1.4-6.i386.rpm
| | |-- apache-1.1.1-8.i386.rpm
| | |-- arena-0.98.beta3-3.i386.rpm
| | |-- ash-0.2-7.i386.rpm
| | |-- at-2.9b-2.i386.rpm
| | |-- aumix-0.2-4.i386.rpm
| | |-- autoconf-2.12-1.i386.rpm
| | |-- bash-1.14.7-1.i386.rpm
| | |-- basic-1.20-7.i386.rpm
| | |-- bc-1.03-6.i386.rpm
| | |-- bdflush-1.5-5.i386.rpm
| | |-- bin86-0.3-3.i386.rpm
| | |-- bind-4.9.5-2.i386.rpm
| | |-- bind-utils-4.9.5-2.i386.rpm
| | |-- binutils-2.7.0.2-4.i386.rpm
| | |-- bison-1.25-1.i386.rpm
| | |-- blt-1.9-5.i386.rpm
| | |-- blt-devel-1.9-5.i386.rpm
| | |-- bm2font-3.0-6.i386.rpm
| | |-- bootp-2.4.3-2.i386.rpm
| | |-- bootpc-050-2.i386.rpm
| | |-- bsd-games-1.3-6.i386.rpm
| | |-- byacc-1.9-4.i386.rpm
| | |-- caching-nameserver-1.0-1.i386.rpm
| | |-- cdecl-2.5-3.i386.rpm
| | |-- cdp-0.33-6.i386.rpm
| | |-- christminster-3-2.i386.rpm
| | |-- cmu-snmp-3.2-3.i386.rpm
| | |-- cmu-snmp-devel-3.2-3.i386.rpm
| | |-- cmu-snmp-utils-3.2-3.i386.rpm
| | |-- colour-yahtzee-1.0-3.i386.rpm
| | |-- control-panel-2.6-1.i386.rpm
| | |-- cpio-2.4.2-3.i386.rpm
| | |-- cproto-4.4-4.i386.rpm
| | |-- cracklib-2.5-1.i386.rpm
| | |-- cracklib-dicts-2.5-1.i386.rpm
| | |-- crontabs-1.5-1.i386.rpm
| | |-- csh-5.2.6-5.i386.rpm
| | |-- cvs-1.8.1-1.i386.rpm
| | |-- cxhextris-1.0-5.i386.rpm
| | |-- db-1.85-10.i386.rpm
| | |-- db-devel-1.85-10.i386.rpm
| | |-- dev-2.4-1.i386.rpm
| | |-- dialog-0.6-7.i386.rpm
| | |-- diffstat-1.25-1.i386.rpm
| | |-- diffutils-2.7-5.i386.rpm
| | |-- dip-3.3.7o-8.i386.rpm
| | |-- doom-1.8-7.i386.rpm
| | |-- dosemu-0.64.1-1.i386.rpm
| | |-- dump-0.3-5.i386.rpm
| | |-- e2fsprogs-1.04-8.i386.rpm
| | |-- e2fsprogs-devel-1.04-8.i386.rpm
| | |-- ed-0.2-5.i386.rpm
| | |-- efax-0.8a-1.i386.rpm
| | |-- eject-1.4-3.i386.rpm
| | |-- elm-2.4.25-7.i386.rpm
| | |-- emacs-19.34-3.i386.rpm
| | |-- emacs-X11-19.34-3.i386.rpm
| | |-- emacs-el-19.34-3.i386.rpm
| | |-- emacs-nox-19.34-3.i386.rpm
| | |-- etcskel-1.1-1.i386.rpm
| | |-- exmh-1.6.9-2.i386.rpm
| | |-- expect-5.21-2.i386.rpm
| | |-- ext2ed-0.1-8.i386.rpm
| | |-- f2c-19960205-6.i386.rpm
| | |-- f2c-libs-19960205-6.i386.rpm
| | |-- faces-1.6.1-6.i386.rpm
| | |-- faces-devel-1.6.1-6.i386.rpm
| | |-- faces-xface-1.6.1-6.i386.rpm
| | |-- faq-4.0-1.i386.rpm
| | |-- fetchmail-2.2-2.i386.rpm
| | |-- file-3.20-3.i386.rpm
| | |-- filesystem-1.2-1.i386.rpm
| | |-- fileutils-3.13-3.i386.rpm
| | |-- findutils-4.1-9.i386.rpm
| | |-- flex-2.5.3-3.i386.rpm
| | |-- flying-6.20-3.i386.rpm
| | |-- fort77-1.11-1.i386.rpm
| | |-- fortune-mod-1.0-3.i386.rpm
| | |-- fstool-2.5-1.i386.rpm
| | |-- fvwm-1.24r-10.i386.rpm
| | |-- fvwm95-2.0.42a-6.i386.rpm
| | |-- fvwm95-icons-2.0.42a-6.i386.rpm
| | |-- fwhois-1.00-5.i386.rpm
| | |-- gawk-3.0.0-5.i386.rpm
| | |-- gcal-1.00-1.i386.rpm
| | |-- gcc-2.7.2.1-2.i386.rpm
| | |-- gcc-c++-2.7.2.1-2.i386.rpm
| | |-- gcc-objc-2.7.2.1-2.i386.rpm
| | |-- gdb-4.16-5.i386.rpm
| | |-- gdbm-1.7.3-8.i386.rpm
| | |-- gdbm-devel-1.7.3-8.i386.rpm
| | |-- gencat-022591-4.i386.rpm
| | |-- gettext-0.10-5.i386.rpm
| | |-- getty_ps-2.0.7h-3.i386.rpm
| | |-- ghostscript-3.33-4.i386.rpm
| | |-- ghostscript-fonts-4.0-2.i386.rpm
| | |-- ghostview-1.5-6.i386.rpm
| | |-- giftrans-1.11.1-4.i386.rpm
| | |-- git-4.3.11-4.i386.rpm
| | |-- glint-2.1.5-1.i386.rpm
| | |-- gn-2.24-2.i386.rpm
| | |-- gnuchess-4.0.pl77-1.i386.rpm
| | |-- gnuplot-3.5-6.i386.rpm
| | |-- gpm-1.10-8.i386.rpm
| | |-- gpm-devel-1.10-8.i386.rpm
| | |-- grep-2.0-5.i386.rpm
| | |-- groff-1.10-7.i386.rpm
| | |-- groff-gxditview-1.10-7.i386.rpm
| | |-- gzip-1.2.4-6.i386.rpm
| | |-- hdparm-3.1-2.i386.rpm
| | |-- helptool-2.2-1.i386.rpm
| | |-- howto-4.1-1.i386.rpm
| | |-- howto-dvi-4.1-1.i386.rpm
| | |-- howto-html-4.1-1.i386.rpm
| | |-- howto-ps-4.1-1.i386.rpm
| | |-- howto-sgml-4.1-1.i386.rpm
| | |-- howto-translations-4.1-1.i386.rpm
| | |-- iBCS-2.0-4.i386.rpm
| | |-- ical-2.0p2-9.i386.rpm
| | |-- imap-4.1.BETA-2.i386.rpm
| | |-- indent-1.9.1-5.i386.rpm
| | |-- indexhtml-4.0-1.i386.rpm
| | |-- inews-1.4unoff4-4.i386.rpm
| | |-- info-3.7-5.i386.rpm
| | |-- initscripts-2.81-1.i386.rpm
| | |-- inn-1.4unoff4-4.i386.rpm
| | |-- intimed-1.10-3.i386.rpm
| | |-- ipfwadm-2.3.0-2.i386.rpm
| | |-- ipxutils-1.0-1.i386.rpm
| | |-- ircii-2.8.2-7.i386.rpm
| | |-- ircii-help-2.8.2-7.i386.rpm
| | |-- ispell-3.1.20-3.i386.rpm
| | |-- jdk-1.0.2.2-2.i386.rpm
| | |-- jed-0.97.14-3.i386.rpm
| | |-- jed-xjed-0.97.14-3.i386.rpm
| | |-- joe-2.8-7.i386.rpm
| | |-- kbd-0.91-9.i386.rpm
| | |-- kbdconfig-1.3-1.i386.rpm
| | |-- kernel-2.0.27-5.i386.rpm
| | |-- kernel-headers-2.0.27-5.i386.rpm
| | |-- kernel-modules-2.0.27-5.i386.rpm
| | |-- kernel-source-2.0.27-5.i386.rpm
| | |-- kernelcfg-0.3-3.i386.rpm
| | |-- koules-1.2-2.i386.rpm
| | |-- koules-sound-1.2-2.i386.rpm
| | |-- kterm-6.1.0-6.i386.rpm
| | |-- ld.so-1.7.14-4.i386.rpm
| | |-- ldp-4.0-2.i386.rpm
| | |-- less-321-3.i386.rpm
| | |-- lha-1.00-4.i386.rpm
| | |-- libc-5.3.12-17.i386.rpm
| | |-- libc-debug-5.3.12-17.i386.rpm
| | |-- libc-devel-5.3.12-17.i386.rpm
| | |-- libc-profile-5.3.12-17.i386.rpm
| | |-- libc-static-5.3.12-17.i386.rpm
| | |-- libelf-0.5.2-5.i386.rpm
| | |-- libg++-2.7.1.4-4.i386.rpm
| | |-- libg++-devel-2.7.1.4-4.i386.rpm
| | |-- libgr-2.0.9-6.i386.rpm
| | |-- libgr-devel-2.0.9-6.i386.rpm
| | |-- libgr-progs-2.0.9-6.i386.rpm
| | |-- libpng-0.89c-1.i386.rpm
| | |-- libpng-devel-0.89c-1.i386.rpm
| | |-- libtermcap-2.0.8-4.i386.rpm
| | |-- libtermcap-devel-2.0.8-4.i386.rpm
| | |-- lilo-0.19-1.i386.rpm
| | |-- linuxdoc-sgml-1.5-6.i386.rpm
| | |-- linuxthreads-0.5-1.i386.rpm
| | |-- linuxthreads-devel-0.5-1.i386.rpm
| | |-- locale-5.3.12-17.i386.rpm
| | |-- logrotate-2.0.2-2.i386.rpm
| | |-- losetup-2.5l-1.i386.rpm
| | |-- lout-3.08-1.i386.rpm
| | |-- lout-doc-3.08-1.i386.rpm
| | |-- lpr-0.13-1.i386.rpm
| | |-- lrzsz-0.12a-7.i386.rpm
| | |-- lynx-2.6-2.i386.rpm
| | |-- m4-1.4-6.i386.rpm
| | |-- macutils-2.0b3-4.i386.rpm
| | |-- mailcap-1.0-3.i386.rpm
| | |-- mailx-5.5.kw-6.i386.rpm
| | |-- make-3.74-8.i386.rpm
| | |-- man-1.4h-4.i386.rpm
| | |-- man-pages-1.12-2.i386.rpm
| | |-- maplay-1.2-4.i386.rpm
| | |-- mars-nwe-0.98-5.i386.rpm
| | |-- mawk-1.2.2-5.i386.rpm
| | |-- mb-5.0-6.i386.rpm
| | |-- mc-3.2.11-2.i386.rpm
| | |-- metamail-2.7-6.i386.rpm
| | |-- mh-6.8.3-13.i386.rpm
| | |-- mingetty-0.9.4-3.i386.rpm
| | |-- minicom-1.75-2.i386.rpm
| | |-- mkdosfs-ygg-0.3b-4.i386.rpm
| | |-- mkinitrd-1.4-1.i386.rpm
| | |-- mkisofs-1.10b2-4.i386.rpm
| | |-- mkxauth-1.7-4.i386.rpm
| | |-- modemtool-1.1-2.i386.rpm
| | |-- modules-2.0.0-5.i386.rpm
| | |-- moonclock-1.0-6.i386.rpm
| | |-- mount-2.5l-1.i386.rpm
| | |-- mouseconfig-1.4-1.i386.rpm
| | |-- mpage-2.3-1.i386.rpm
| | |-- mt-st-0.4-2.i386.rpm
| | |-- mtools-3.0-4.i386.rpm
| | |-- multimedia-2.1-5.i386.rpm
| | |-- mxp-1.0-5.i386.rpm
| | |-- mysterious-1.0-2.i386.rpm
| | |-- ncftp-2.3.0-4.i386.rpm
| | |-- ncompress-4.2.4-7.i386.rpm
| | |-- ncpfs-2.0.5-3.i386.rpm
| | |-- ncurses-1.9.9e-4.i386.rpm
| | |-- ncurses-devel-1.9.9e-4.i386.rpm
| | |-- nenscript-1.13++-7.i386.rpm
| | |-- net-tools-1.32.alpha-2.i386.rpm
| | |-- netcfg-2.13-1.i386.rpm
| | |-- netpbm-1mar1994-10.i386.rpm
| | |-- newt-0.7-2.i386.rpm
| | |-- newt-devel-0.7-2.i386.rpm
| | |-- nfs-server-2.2beta16-5.i386.rpm
| | |-- nfs-server-clients-2.2beta16-5.i386.rpm
| | |-- nls-1.0-2.i386.rpm
| | |-- open-1.3-5.i386.rpm
| | |-- p2c-1.20-7.i386.rpm
| | |-- p2c-devel-1.20-7.i386.rpm
| | |-- pam-0.54-4.i386.rpm
| | |-- pamconfig-0.50-5.i386.rpm
| | |-- paradise-2.3p19-5.i386.rpm
| | |-- passwd-0.50-2.i386.rpm
| | |-- patch-2.1-4.i386.rpm
| | |-- pcmcia-cs-2.8.23-5.i386.rpm
| | |-- pdksh-5.2.8-1.i386.rpm
| | |-- perl-5.003-6.i386.rpm
| | |-- pidentd-2.5.1-5.i386.rpm
| | |-- pine-3.95-2.i386.rpm
| | |-- pinfocom-3.0-3.i386.rpm
| | |-- playmidi-2.3-7.i386.rpm
| | |-- playmidi-X11-2.3-7.i386.rpm
| | |-- pmake-1.0-5.i386.rpm
| | |-- portmap-4.0-3.i386.rpm
| | |-- ppp-2.2.0f-2.i386.rpm
| | |-- printtool-3.0-12.i386.rpm
| | |-- procinfo-0.9-1.i386.rpm
| | |-- procmail-3.10-9.i386.rpm
| | |-- procps-1.01-11.i386.rpm
| | |-- procps-X11-1.01-11.i386.rpm
| | |-- psacct-6.2-1.i386.rpm
| | |-- psmisc-11-4.i386.rpm
| | |-- pwdb-0.53-2.i386.rpm
| | |-- python-1.4-3.i386.rpm
| | |-- python-devel-1.4-3.i386.rpm
| | |-- python-docs-1.4-3.i386.rpm
| | |-- pythonlib-1.12-1.i386.rpm
| | |-- quota-1.55-2.i386.rpm
| | |-- rcs-5.7-4.i386.rpm
| | |-- rdate-0.960923-1.i386.rpm
| | |-- rdist-1.0-5.i386.rpm
| | |-- readline-2.0-10.i386.rpm
| | |-- readline-devel-2.0-10.i386.rpm
| | |-- redhat-release-4.1-1.i386.rpm
| | |-- rootfiles-1.3-1.i386.rpm
| | |-- rpm-2.3-1.i386.rpm
| | |-- rpm-devel-2.3-1.i386.rpm
| | |-- rxvt-2.19-1.i386.rpm
| | |-- samba-1.9.16p9-6.i386.rpm
| | |-- scottfree-1.14-2.i386.rpm
| | |-- screen-3.7.1-3.i386.rpm
| | |-- sed-2.05-6.i386.rpm
| | |-- sendmail-8.8.4-3.i386.rpm
| | |-- sendmail-cf-8.8.4-3.i386.rpm
| | |-- sendmail-doc-8.8.4-3.i386.rpm
| | |-- setup-1.7-1.i386.rpm
| | |-- seyon-2.14c-7.i386.rpm
| | |-- sh-utils-1.12-13.i386.rpm
| | |-- shadow-utils-960530-6.i386.rpm
| | |-- sharutils-4.2-5.i386.rpm
| | |-- slang-0.99.37-2.i386.rpm
| | |-- slang-devel-0.99.37-2.i386.rpm
| | |-- sliplogin-2.1.0-3.i386.rpm
| | |-- slrn-0.9.2.0-1.i386.rpm
| | |-- smbfs-0.8-1.i386.rpm
| | |-- sox-11g-5.i386.rpm
| | |-- spice-2g6-4.i386.rpm
| | |-- spider-1.0-4.i386.rpm
| | |-- stat-1.5-5.i386.rpm
| | |-- statnet-2.00-4.i386.rpm
| | |-- statserial-1.1-7.i386.rpm
| | |-- strace-3.1-3.i386.rpm
| | |-- svgalib-1.2.10-2.i386.rpm
| | |-- svgalib-devel-1.2.10-2.i386.rpm
| | |-- swatch-2.1-4.i386.rpm
| | |-- symlinks-1.0-5.i386.rpm
| | |-- sysklogd-1.3-15.i386.rpm
| | |-- taper-6.7.4-2.i386.rpm
| | |-- tar-1.11.8-9.i386.rpm
| | |-- tcl-7.6-2.i386.rpm
| | |-- tclx-7.6.0b1-2.i386.rpm
| | |-- tcp_wrappers-7.4-3.i386.rpm
| | |-- tcpdump-3.0.2-5.i386.rpm
| | |-- tcsh-6.06-9.i386.rpm
| | |-- termcap-9.12.6-5.i386.rpm
| | |-- tetex-0.4-7.i386.rpm
| | |-- tetex-afm-0.4-7.i386.rpm
| | |-- tetex-dvilj-0.4-7.i386.rpm
| | |-- tetex-dvips-0.4-7.i386.rpm
| | |-- tetex-latex-0.4-7.i386.rpm
| | |-- tetex-xdvi-0.4-7.i386.rpm
| | |-- texinfo-3.7-5.i386.rpm
| | |-- textutils-1.19-4.i386.rpm
| | |-- time-1.7-1.i386.rpm
| | |-- timeconfig-1.6-1.i386.rpm
| | |-- timetool-2.2-1.i386.rpm
| | |-- tin-1.22-5.i386.rpm
| | |-- tix-4.1.0b1-2.i386.rpm
| | |-- tk-4.2-2.i386.rpm
| | |-- tksysv-0.91-1.i386.rpm
| | |-- tmpwatch-1.1-1.i386.rpm
| | |-- traceroute-1.0.4.4bsd-2.i386.rpm
| | |-- tracker-4.3-4.i386.rpm
| | |-- transfig-3.1.2-c.i386.rpm
| | |-- tree-1.0-3.i386.rpm
| | |-- trn-3.6-8.i386.rpm
| | |-- trojka-1.1-7.i386.rpm
| | |-- tunelp-1.3-5.i386.rpm
| | |-- typhoon-1.10.3-4.i386.rpm
| | |-- umb-scheme-3.2-2.i386.rpm
| | |-- umsdos_progs-0.9-2.i386.rpm
| | |-- unarj-2.41a-3.i386.rpm
| | |-- units-1.0-5.i386.rpm
| | |-- unzip-5.12-5.i386.rpm
| | |-- usercfg-3.2-1.i386.rpm
| | |-- util-linux-2.5-33.i386.rpm
| | |-- uucp-1.06.1-6.i386.rpm
| | |-- vga_cardgames-1.3.1-6.i386.rpm
| | |-- vga_gamespack-1.3-5.i386.rpm
| | |-- vga_tetris-0.4-3.i386.rpm
| | |-- vim-4.2-8.i386.rpm
| | |-- vim-X11-4.2-8.i386.rpm
| | |-- vixie-cron-3.0.1-12.i386.rpm
| | |-- vlock-1.0-4.i386.rpm
| | |-- which-1.0-5.i386.rpm
| | |-- words-2-3.i386.rpm
| | |-- wu-ftpd-2.4.2b11-11.i386.rpm
| | |-- x3270-3.1.0.7-4.i386.rpm
| | |-- xanim-27063-2.i386.rpm
| | |-- xbill-1.1-4.i386.rpm
|=20 | |-- xbl-1.0f-5.i386.rpm
| | |-- xboard-3.2.pl0-6.i386.rpm
| | |-- xboing-2.3-4.i386.rpm
| | |-- xchomp-1.0-6.i386.rpm
| | |-- xdaliclock-2.07-2.i386.rpm
| | |-- xdemineur-1.1-5.i386.rpm
| | |-- xdosemu-0.64.1-1.i386.rpm
| | |-- xearth-1.0-5.i386.rpm
| | |-- xevil-1.5-3.i386.rpm
| | |-- xfig-3.1.4-8.i386.rpm
| | |-- xfishtank-2.0-6.i386.rpm
| | |-- xfm-1.3.2-5.i386.rpm
| | |-- xgalaga-1.6c-3.i386.rpm
| | |-- xgammon-0.98-7.i386.rpm
| | |-- xgopher-1.3.3-2.i386.rpm
| | |-- xinitrc-1.1-1.i386.rpm
| | |-- xjewel-1.6-5.i386.rpm
| | |-- xkoules-1.2-2.i386.rpm
| | |-- xlander-1.2-5.i386.rpm
| | |-- xlispstat-3.44-6.i386.rpm
| | |-- xloadimage-4.1-6.i386.rpm
| | |-- xlockmore-3.12-1.i386.rpm
| | |-- xmailbox-2.4-4.i386.rpm
| | |-- xmorph-1996.07.12-2.i386.rpm
| | |-- xmplay-1.0-7.i386.rpm
| | |-- xosview-1.4.1-3.i386.rpm
| | |-- xpaint-2.4.4-3.i386.rpm
| | |-- xpat2-1.04-3.i386.rpm
| | |-- xpilot-3.5.1-3.i386.rpm
| | |-- xpm-3.4i-1.i386.rpm
| | |-- xpm-devel-3.4i-1.i386.rpm
| | |-- xpuzzles-5.3.1-2.i386.rpm
| | |-- xrn-8.02-3.i386.rpm
| | |-- xscreensaver-1.26-4.i386.rpm
| | |-- xsnow-1.40-2.i386.rpm
| | |-- xsysinfo-1.5-2.i386.rpm
| | |-- xterm-color-1.1-3.i386.rpm
| | |-- xtetris-2.6-5.i386.rpm
| | |-- xtoolwait-0.3-3.i386.rpm
| | |-- xtrojka-1.2.2-2.i386.rpm
| | |-- xv-3.10a-6.i386.rpm
| | |-- xview-3.2p1.pl2-4.i386.rpm
| | |-- xview-clients-3.2p1.pl2-4.i386.rpm
| | |-- xview-devel-3.2p1.pl2-4.i386.rpm
| | |-- xview-devel-examples-3.2p1.pl2-4.i386.rpm
| | |-- xwpe-1.4.2-10.i386.rpm
| | |-- xwpe-X11-1.4.2-10.i386.rpm
| | |-- xwpick-2.20-5.i386.rpm
| | |-- xxgdb-1.12-1.i386.rpm
| | |-- xzip-140-4.i386.rpm
| | |-- yp-clients-2.2-7.i386.rpm
| | |-- yppasswd-0.8-6.i386.rpm
| | |-- ypserv-1.0.4-3.i386.rpm
| | |-- ytalk-3.0.2-5.i386.rpm
| | |-- zgv-2.7-5.i386.rpm
| | |-- zip-2.1-1.i386.rpm
| | |-- zlib-1.0.4-1.i386.rpm
| | |-- zlib-devel-1.0.4-1.i386.rpm
| | |-- zoneinfo-96i-4.i386.rpm
| | `-- zsh-3.0.1-2.i386.rpm
| |-- SRPMS -> ../SRPMS
| |-- TRANS.TBL
| |-- base
| | |-- TRANS.TBL
| | |-- comps
| | |-- comps.new
| | |-- comps.orig
| | |-- fsstnd.cgz
| | |-- hdlist
| | |-- rpmconvert
| | |-- skeleton.cgz
| | `-- uglist
| |-- i386
| |-- instimage
| | |-- TRANS.TBL
| | |-- etc
| | | |-- TRANS.TBL
| | | `-- X11
| | | |-- TRANS.TBL
| | | `-- fvwm
| | | |-- TRANS.TBL
| | | `-- system.fvwmrc
| | |-- lib
| | | |-- TRANS.TBL
| | | |-- ld-linux.so.1 -> ld-linux.so.1.7.14
| | | |-- ld-linux.so.1.7.14
| | | |-- libc.so.5 -> libc.so.5.2.18
| | | |-- libc.so.5.2.18
| | | |-- libcom_err.so.2 -> libcom_err.so.2.0
| | | |-- libcom_err.so.2.0
| | | |-- libe2p.so.2 -> libe2p.so.2.1
| | | |-- libe2p.so.2.1
| | | |-- libext2fs.so.2 -> libext2fs.so.2.0
| | | |-- libext2fs.so.2.0
| | | |-- libm.so.5 -> libm.so.5.0.5
| | | |-- libm.so.5.0.5
| | | |-- libtermcap.so.2 -> libtermcap.so.2.0.5
| | | `-- libtermcap.so.2.0.5
| | `-- usr
| | |-- TRANS.TBL
| | |-- bin
| | | |-- TRANS.TBL
| | | |-- ash
| | | |-- badblocks
| | | |-- bash
| | | |-- cat -> install2
| | | |-- chmod -> install2
| | | |-- cp
| | | |-- cpio
| | | |-- df
| | | |-- fdisk
| | | |-- gdb
| | | |-- grep
| | | |-- gunzip -> gzip
| | | |-- gzip
| | | |-- install2
| | | |-- ldd
| | | |-- ln
| | | |-- ls
| | | |-- lsmod -> install2
| | | |-- mkdir -> install2
| | | |-- mke2fs
| | | |-- mknod -> install2
| | | |-- mount -> install2
| | | |-- open
| | | |-- ping
| | | |-- ps
| | | |-- rm -> install2
| | | |-- route
| | | |-- rpm
| | | |-- runinstall2 -> install2
| | | |-- sh -> bash
| | | |-- strace
| | | |-- umount -> install2
| | | |-- vi
| | | `-- wc
| | `-- lib
| | `-- TRANS.TBL
| `-- rpmcontents.gz
|-- SRPMS
| |-- ElectricFence-2.0.5-4.src.rpm
| |-- ImageMagick-3.7-5.src.rpm
| |-- MAKEDEV-2.2-9.src.rpm
| |-- NetKit-B-0.08-13.src.rpm
| |-- SysVinit-2.64-7.src.rpm
| |-- TRANS.TBL
| |-- TheNextLevel-1.0-2.src.rpm
| |-- X11R6-contrib-3.2-1.src.rpm
| |-- X11R6.1-pl1-18.src.rpm
| |-- XFree86-3.2-4.src.rpm
| |-- Xaw3d-1.3-6.src.rpm
| |-- Xconfigurator-2.6-5.src.rpm
| |-- aboot-0.5-1.src.rpm
| |-- acm-4.7-5.src.rpm
| |-- adduser-1.2-1.src.rpm
| |-- adjtimex-1.2-4.src.rpm
| |-- amd-920824upl102-6.src.rpm
| |-- anonftp-2.3-2.src.rpm
| |-- aout-libs-1.4-6.src.rpm
| |-- apache-1.1.1-8.src.rpm
| |-- arena-0.98.beta3-3.src.rpm
| |-- ash-0.2-7.src.rpm
| |-- at-2.9b-2.src.rpm
| |-- aumix-0.2-4.src.rpm
| |-- autoconf-2.12-1.src.rpm
| |-- bash-1.14.7-1.src.rpm
| |-- bc-1.03-6.src.rpm
| |-- bdflush-1.5-5.src.rpm
| |-- bin86-0.3-3.src.rpm
| |-- bind-4.9.5-2.src.rpm
| |-- binutils-2.7.0.2-4.src.rpm
| |-- bison-1.25-1.src.rpm
| |-- blt-1.9-5.src.rpm
| |-- bm2font-3.0-6.src.rpm
| |-- bootp-2.4.3-2.src.rpm
| |-- bootpc-050-2.src.rpm
| |-- bsd-games-1.3-6.src.rpm
| |-- byacc-1.9-4.src.rpm
| |-- caching-nameserver-1.0-1.src.rpm
| |-- cdecl-2.5-3.src.rpm
| |-- cdp-0.33-6.src.rpm
| |-- christminster-3-2.src.rpm
| |-- clock-1.0-1.src.rpm
| |-- cmu-snmp-3.2-3.src.rpm
| |-- colour-yahtzee-1.0-3.src.rpm
| |-- control-panel-2.6-1.src.rpm
| |-- cpio-2.4.2-3.src.rpm
| |-- cproto-4.4-4.src.rpm
| |-- cracklib-2.5-1.src.rpm
| |-- crontabs-1.5-1.src.rpm
| |-- csh-5.2.6-5.src.rpm
| |-- cvs-1.8.1-1.src.rpm
| |-- cxhextris-1.0-5.src.rpm
| |-- db-1.85-10.src.rpm
| |-- dev-2.4-1.src.rpm
| |-- dialog-0.6-7.src.rpm
| |-- diffstat-1.25-1.src.rpm
| |-- diffutils-2.7-5.src.rpm
| |-- dip-3.3.7o-8.src.rpm
| |-- doom-1.8-7.src.rpm
| |-- dosemu-0.64.1-1.src.rpm
| |-- dump-0.3-5.src.rpm
| |-- e2fsprogs-1.04-8.src.rpm
| |-- ed-0.2-5.src.rpm
| |-- efax-0.8a-1.src.rpm
| |-- eject-1.4-3.src.rpm
| |-- elftoaout-1.0-1.src.rpm
| |-- elm-2.4.25-7.src.rpm
| |-- emacs-19.34-3.src.rpm
| |-- etcskel-1.1-1.src.rpm
| |-- exmh-1.6.9-2.src.rpm
| |-- ext2ed-0.1-8.src.rpm
| |-- f2c-19960205-6.src.rpm
| |-- faces-1.6.1-6.src.rpm
| |-- faq-4.0-1.src.rpm
| |-- fetchmail-2.2-2.src.rpm
| |-- file-3.20-3.src.rpm
| |-- filesystem-1.2-1.src.rpm
| |-- fileutils-3.13-3.src.rpm
| |-- findutils-4.1-9.src.rpm
| |-- flex-2.5.3-3.src.rpm
| |-- flying-6.20-3.src.rpm
| |-- fort77-1.11-1.src.rpm
| |-- fortune-mod-1.0-3.src.rpm
| |-- fstool-2.5-1.src.rpm
| |-- fvwm-1.24r-10.src.rpm
| |-- fvwm95-2.0.42a-6.src.rpm
| |-- fwhois-1.00-5.src.rpm
| |-- gawk-3.0.0-5.src.rpm
| |-- gcal-1.00-1.src.rpm
| |-- gcc-2.7.2.1-2.src.rpm
| |-- gccmakedep-1.0-1.src.rpm
| |-- gdb-4.16-5.src.rpm
| |-- gdbm-1.7.3-8.src.rpm
| |-- gencat-022591-4.src.rpm
| |-- gettext-0.10-5.src.rpm
| |-- getty_ps-2.0.7h-3.src.rpm
| |-- ghostscript-3.33-4.src.rpm
| |-- ghostscript-fonts-4.0-2.src.rpm
| |-- ghostview-1.5-6.src.rpm
| |-- giftrans-1.11.1-4.src.rpm
| |-- git-4.3.11-4.src.rpm
| |-- glibc-0.961212-3.src.rpm
| |-- glint-2.1.5-1.src.rpm
| |-- gn-2.24-2.src.rpm
| |-- gnuchess-4.0.pl77-1.src.rpm
| |-- gnuplot-3.5-6.src.rpm
| |-- gpm-1.10-8.src.rpm
| |-- grep-2.0-5.src.rpm
| |-- groff-1.10-7.src.rpm
| |-- gzip-1.2.4-6.src.rpm
| |-- hdparm-3.1-2.src.rpm
| |-- helptool-2.2-1.src.rpm
| |-- howto-4.1-1.src.rpm
| |-- iBCS-2.0-4.src.rpm
| |-- ical-2.0p2-9.src.rpm
| |-- imap-4.1.BETA-2.src.rpm
| |-- indent-1.9.1-5.src.rpm
| |-- indexhtml-4.0-1.src.rpm
| |-- initscripts-2.81-1.src.rpm
| |-- inn-1.4unoff4-4.src.rpm
| |-- insmod-bfd-0.2-1.src.rpm
| |-- intimed-1.10-3.src.rpm
| |-- ipfwadm-2.3.0-2.src.rpm
| |-- ircii-2.8.2-7.src.rpm
| |-- ispell-3.1.20-3.src.rpm
| |-- jdk-1.0.2.2-2.src.rpm
| |-- jed-0.97.14-3.src.rpm
| |-- joe-2.8-7.src.rpm
| |-- kbd-0.91-9.src.rpm
| |-- kbdconfig-1.3-1.src.rpm
| |-- kernel-2.0.27-5.src.rpm
| |-- kernel-sparc-2.0.27-6.src.rpm
| |-- kernelcfg-0.3-3.src.rpm
| |-- koules-1.2-2.src.rpm
| |-- kterm-6.1.0-6.src.rpm
| |-- ld.so-1.7.14-4.src.rpm
| |-- ld.so-sparc-1.8.3-2.src.rpm
| |-- ldconfig-1.8.1-3.src.rpm
| |-- ldp-4.0-2.src.rpm
| |-- less-321-3.src.rpm
| |-- lha-1.00-4.src.rpm
| |-- libc-5.3.12-17.src.rpm
| |-- libelf-0.5.2-5.src.rpm
| |-- libg++-2.7.1.4-4.src.rpm
| |-- libgr-2.0.9-6.src.rpm
| |-- libpng-0.89c-1.src.rpm
| |-- libtermcap-2.0.8-4.src.rpm
| |-- lilo-0.19-1.src.rpm
| |-- linuxdoc-sgml-1.5-6.src.rpm
| |-- linuxthreads-0.5-1.src.rpm
| |-- logrotate-2.0.2-2.src.rpm
| |-- lout-3.08-1.src.rpm
| |-- lpr-0.13-1.src.rpm
| |-- lrzsz-0.12a-7.src.rpm
| |-- lynx-2.6-2.src.rpm
| |-- m4-1.4-6.src.rpm
| |-- macutils-2.0b3-4.src.rpm
| |-- mailcap-1.0-3.src.rpm
| |-- mailx-5.5.kw-6.src.rpm
| |-- make-3.74-8.src.rpm
| |-- man-1.4h-4.src.rpm
| |-- man-pages-1.12-2.src.rpm
| |-- maplay-1.2-4.src.rpm
| |-- mars-nwe-0.98-5.src.rpm
| |-- mawk-1.2.2-5.src.rpm
| |-- mb-5.0-6.src.rpm
| |-- mc-3.2.11-2.src.rpm
| |-- metamail-2.7-6.src.rpm
| |-- mh-6.8.3-13.src.rpm
| |-- mingetty-0.9.4-3.src.rpm
| |-- minicom-1.75-2.src.rpm
| |-- minlabel-1.2-1.src.rpm
| |-- mkbb-1.0-4.src.rpm
| |-- mkdosfs-ygg-0.3b-4.src.rpm
| |-- mkinitrd-1.4-1.src.rpm
| |-- mkisofs-1.10b2-4.src.rpm
| |-- mkxauth-1.7-4.src.rpm
| |-- modemtool-1.1-2.src.rpm
| |-- modules-2.0.0-5.src.rpm
| |-- moonclock-1.0-6.src.rpm
| |-- mount-2.5l-1.src.rpm
| |-- mouseconfig-1.4-1.src.rpm
| |-- mpage-2.3-1.src.rpm
| |-- mt-st-0.4-2.src.rpm
| |-- mtools-3.0-4.src.rpm
| |-- multimedia-2.1-5.src.rpm
| |-- mxp-1.0-5.src.rpm
| |-- mysterious-1.0-2.src.rpm
| |-- ncftp-2.3.0-4.src.rpm
| |-- ncompress-4.2.4-7.src.rpm
| |-- ncpfs-2.0.5-3.src.rpm
| |-- ncurses-1.9.9e-4.src.rpm
| |-- nenscript-1.13++-7.src.rpm
| |-- net-tools-1.32.alpha-2.src.rpm
| |-- netcfg-2.13-1.src.rpm
| |-- netpbm-1mar1994-10.src.rpm
| |-- newt-0.7-2.src.rpm
| |-- nfs-server-2.2beta16-5.src.rpm
| |-- nls-1.0-2.src.rpm
| |-- open-1.3-5.src.rpm
| |-- p2c-1.20-7.src.rpm
| |-- pam-0.54-4.src.rpm
| |-- pamconfig-0.50-5.src.rpm
| |-- paradise-2.3p19-5.src.rpm
| |-- passwd-0.50-2.src.rpm
| |-- patch-2.1-4.src.rpm
| |-- pdksh-5.2.8-1.src.rpm
| |-- perl-5.003-6.src.rpm
| |-- pidentd-2.5.1-5.src.rpm
| |-- pine-3.95-2.src.rpm
| |-- pinfocom-3.0-3.src.rpm
| |-- playmidi-2.3-7.src.rpm
| |-- pmake-1.0-5.src.rpm
| |-- portmap-4.0-3.src.rpm
| |-- ppp-2.2.0f-2.src.rpm
| |-- printtool-3.0-12.src.rpm
| |-- procinfo-0.9-1.src.rpm
| |-- procmail-3.10-9.src.rpm
| |-- procps-1.01-11.src.rpm
| |-- psacct-6.2-1.src.rpm
| |-- psmisc-11-4.src.rpm
| |-- pwdb-0.53-2.src.rpm
| |-- python-1.4-3.src.rpm
| |-- pythonlib-1.12-1.src.rpm
| |-- quickstrip-1.1-2.src.rpm
| |-- quota-1.55-2.src.rpm
| |-- rcs-5.7-4.src.rpm
| |-- rdate-0.960923-1.src.rpm
| |-- rdist-1.0-5.src.rpm
| |-- readline-2.0-10.src.rpm
| |-- redhat-release-4.1-1.src.rpm
| |-- rootfiles-1.3-1.src.rpm
| |-- rpm-2.3-1.src.rpm
| |-- rxvt-2.19-1.src.rpm
| |-- samba-1.9.16p9-6.src.rpm
| |-- scottfree-1.14-2.src.rpm
| |-- screen-3.7.1-3.src.rpm
| |-- sed-2.05-6.src.rpm
| |-- sendmail-8.8.4-3.src.rpm
| |-- setup-1.7-1.src.rpm
| |-- seyon-2.14c-7.src.rpm
| |-- sh-utils-1.12-13.src.rpm
| |-- shadow-utils-960530-6.src.rpm
| |-- sharutils-4.2-5.src.rpm
| |-- silo-0.6.7-1.src.rpm
| |-- slang-0.99.37-2.src.rpm
| |-- sliplogin-2.1.0-3.src.rpm
| |-- slrn-0.9.2.0-1.src.rpm
| |-- smbfs-0.8-1.src.rpm
| |-- sox-11g-5.src.rpm
| |-- spice-2g6-4.src.rpm
| |-- spider-1.0-4.src.rpm
| |-- stat-1.5-5.src.rpm
| |-- statnet-2.00-4.src.rpm
| |-- statserial-1.1-7.src.rpm
| |-- strace-3.1-3.src.rpm
| |-- svgalib-1.2.10-2.src.rpm
| |-- swatch-2.1-4.src.rpm
| |-- symlinks-1.0-5.src.rpm
| |-- sysklogd-1.3-15.src.rpm
| |-- taper-6.7.4-2.src.rpm
| |-- tar-1.11.8-9.src.rpm
| |-- tcltk-7.6_4.2-2.src.rpm
| |-- tcp_wrappers-7.4-3.src.rpm
| |-- tcpdump-3.0.2-5.src.rpm
| |-- tcsh-6.06-9.src.rpm
| |-- termcap-9.12.6-5.src.rpm
| |-- termfiles_sparc-1.0-4.src.rpm
| |-- tetex-0.4-7.src.rpm
| |-- texinfo-3.7-5.src.rpm
| |-- textutils-1.19-4.src.rpm
| |-- time-1.7-1.src.rpm
| |-- timeconfig-1.6-1.src.rpm
| |-- timetool-2.2-1.src.rpm
| |-- tin-1.22-5.src.rpm
| |-- tksysv-0.91-1.src.rpm
| |-- tmpwatch-1.1-1.src.rpm
| |-- traceroute-1.0.4.4bsd-2.src.rpm
| |-- tracker-4.3-4.src.rpm
| |-- transfig-3.1.2-c.src.rpm
| |-- tree-1.0-3.src.rpm
| |-- trn-3.6-8.src.rpm
| |-- trojka-1.1-7.src.rpm
| |-- tunelp-1.3-5.src.rpm
| |-- typhoon-1.10.3-4.src.rpm
| |-- umb-scheme-3.2-2.src.rpm
| |-- umsdos_progs-0.9-2.src.rpm
| |-- unarj-2.41a-3.src.rpm
| |-- units-1.0-5.src.rpm
| |-- unzip-5.12-5.src.rpm
| |-- usercfg-3.2-1.src.rpm
| |-- util-linux-2.5-33.src.rpm
| |-- uucp-1.06.1-6.src.rpm
| |-- vga_cardgames-1.3.1-6.src.rpm
| |-- vga_gamespack-1.3-5.src.rpm
| |-- vga_tetris-0.4-3.src.rpm
| |-- vim-4.2-8.src.rpm
| |-- vixie-cron-3.0.1-12.src.rpm
| |-- vlock-1.0-4.src.rpm
| |-- which-1.0-5.src.rpm
| |-- words-2-3.src.rpm
| |-- wu-ftpd-2.4.2b11-11.src.rpm
| |-- x3270-3.1.0.7-4.src.rpm
| |-- xanim-27063-2.src.rpm
| |-- xbill-1.1-4.src.rpm
| |-- xbl-1.0f-5.src.rpm
| |-- xboard-3.2.pl0-6.src.rpm
| |-- xboing-2.3-4.src.rpm
| |-- xchomp-1.0-6.src.rpm
| |-- xdaliclock-2.07-2.src.rpm
| |-- xdemineur-1.1-5.src.rpm
| |-- xearth-1.0-5.src.rpm
| |-- xevil-1.5-3.src.rpm
| |-- xfig-3.1.4-8.src.rpm
| |-- xfishtank-2.0-6.src.rpm
| |-- xfm-1.3.2-5.src.rpm
| |-- xgalaga-1.6c-3.src.rpm
| |-- xgammon-0.98-7.src.rpm
| |-- xgopher-1.3.3-2.src.rpm
| |-- xinitrc-1.1-1.src.rpm
| |-- xjewel-1.6-5.src.rpm
| |-- xlander-1.2-5.src.rpm
| |-- xlispstat-3.44-6.src.rpm
| |-- xloadimage-4.1-6.src.rpm
| |-- xlockmore-3.12-1.src.rpm
| |-- xmailbox-2.4-4.src.rpm
| |-- xmorph-1996.07.12-2.src.rpm
| |-- xmplay-1.0-7.src.rpm
| |-- xosview-1.4.1-3.src.rpm
| |-- xpaint-2.4.4-3.src.rpm
| |-- xpat2-1.04-3.src.rpm
| |-- xpilot-3.5.1-3.src.rpm
| |-- xpm-3.4i-1.src.rpm
| |-- xpuzzles-5.3.1-2.src.rpm
| |-- xrn-8.02-3.src.rpm
| |-- xscreensaver-1.26-4.src.rpm
| |-- xsnow-1.40-2.src.rpm
| |-- xsysinfo-1.5-2.src.rpm
| |-- xterm-color-1.1-3.src.rpm
| |-- xtetris-2.6-5.src.rpm
| |-- xtoolwait-0.3-3.src.rpm
| |-- xtrojka-1.2.2-2.src.rpm
| |-- xv-3.10a-6.src.rpm
| |-- xview-3.2p1.pl2-4.src.rpm
| |-- xwpe-1.4.2-10.src.rpm
| |-- xwpick-2.20-5.src.rpm
| |-- xxgdb-1.12-1.src.rpm
| |-- xzip-140-4.src.rpm
| |-- yp-clients-2.2-7.src.rpm
| |-- yppasswd-0.8-6.src.rpm
| |-- ypserv-1.0.4-3.src.rpm
| |-- ytalk-3.0.2-5.src.rpm
| |-- zgv-2.7-5.src.rpm
| |-- zip-2.1-1.src.rpm
| |-- zlib-1.0.4-1.src.rpm
| |-- zoneinfo-96i-4.src.rpm
| `-- zsh-3.0.1-2.src.rpm
|-- SUPPORT
|-- TRANS.TBL
|-- UPLOADING
|-- VENDORS
|-- docs
| |-- FAQ
| | |-- ATAPI-FAQ
| | |-- Cryptographic-File-System
| | |-- FAQ
| | |-- GCC-FAQ
| | |-- GCC-FAQ.html
| | |-- GCC-SIG11-FAQ
| | |-- INDEX
| | |-- INDEX.html
| | |-- NFS-FAQ
| | |-- PPP-FAQ.txt
| | |-- README
| | |-- TRANS.TBL
| | |-- Wine.FAQ
| | |-- ext2fs-FAQ
| | |-- linux-faq.README
| | |-- linux-faq.ascii
| | `-- linux-faq.ps
| |-- HOWTO
| | |-- AX25-HOWTO
| | |-- Access-HOWTO
| | |-- BootPrompt-HOWTO
| | |-- Bootdisk-HOWTO
| | |-- Busmouse-HOWTO
| | |-- CDROM-HOWTO
| | |-- COPYRIGHT
| | |-- Commercial-HOWTO
| | |-- Cyrillic-HOWTO
| | |-- DNS-HOWTO
| | |-- DOSEMU-HOWTO
| | |-- Danish-HOWTO
| | |-- Distribution-HOWTO
| | |-- ELF-HOWTO
| | |-- Emacspeak-HOWTO
| | |-- Ethernet-HOWTO
| | |-- Finnish-HOWTO
| | |-- Firewall-HOWTO
| | |-- Ftape-HOWTO
| | |-- GCC-HOWTO
| | |-- German-HOWTO
| | |-- HAM-HOWTO
| | |-- HOWTO-INDEX
| | |-- Hardware-HOWTO
| | |-- Hebrew-HOWTO
| | |-- INDEX
| | |-- INDEX.html
| | |-- INFO-SHEET
| | |-- IPX-HOWTO
| | |-- ISP-Hookup-HOWTO
| | |-- Installation-HOWTO
| | |-- Italian-HOWTO
| | |-- JE-HOWTO
| | |-- Java-HOWTO
| | |-- Kernel-HOWTO
| | |-- Keyboard-HOWTO
| | |-- Keystroke-HOWTO
| | |-- Linux-HOWTOs.tar.gz
| | |-- META-FAQ
| | |-- MGR-HOWTO
| | |-- Mail-HOWTO
| | |-- Module-HOWTO
| | |-- NET-2-HOWTO
| | |-- NIS-HOWTO
| | |-- News-HOWTO
| | |-- PCI-HOWTO
| | |-- PCMCIA-HOWTO
| | |-- PPP-HOWTO
| | |-- Polish-HOWTO
| | |-- Portuguese-HOWTO
| | |-- Printing-HOWTO
| | |-- Printing-Usage-HOWTO
| | |-- README
| | |-- SCSI-HOWTO
| | |-- SCSI-Programming-HOWTO
| | |-- SMB-HOWTO
| | |-- Serial-HOWTO
| | |-- Shadow-Password-HOWTO
| | |-- Sound-HOWTO
| | |-- Sound-Playing-HOWTO
| | |-- Spanish-HOWTO
| | |-- TRANS.TBL
| | |-- Term-HOWTO
| | |-- Tips-HOWTO
| | |-- UMSDOS-HOWTO
| | |-- UPS-HOWTO
| | |-- UUCP-HOWTO
| | |-- XFree86-HOWTO
| | |-- mini
| | | |-- 3-Button-Mouse
| | | |-- ADSM-Backup
| | | |-- Assembly
| | | |-- Backup-With-MSDOS
| | | |-- Boca
| | | |-- BogoMips
| | | |-- Bridge
| | | |-- CD-Writer
| | | |-- Colour-ls
| | | |-- Consoles
| | | |-- Consoles-Many
| | | |-- DOS2Linux
| | | |-- Diald
| | | |-- Dip+SLiRP+CSLIP
| | | |-- Diskless
| | | |-- Dynamic-IP-Hacks
| | | |-- GUI-Development
| | | |-- Getty-ps
| | | |-- Graphics-Tools
| | | |-- Gravis-UltraSound
| | | |-- HTML-Validation
| | | |-- HTTP+Netware
| | | |-- INDEX
| | | |-- INDEX.html
| | | |-- IO-Port-Programming
| | | |-- IP-Alias
| | | |-- IP-Masquerade
| | | |-- Java-WorkShop
| | | |-- Jaz-Drive
| | | |-- Kerneld
| | | |-- Key-Setup
| | | |-- Keystroke
| | | |-- LBX
| | | |-- LF1000
| | | |-- LILO
| | | |-- Large-Disk
| | | |-- Linux+DOS+Win95+OS2
| | | |-- Linux+OS2+DOS
| | | |-- Linux+Win95
| | | |-- Linux-mini-HOWTOs.tar.gz
| | | |-- Locales
| | | |-- Mail-Queue
| | | |-- Man-Page
| | | |-- Modeline
| | | |-- Multiple-Disks-Layout
| | | |-- Multiple-Ethernet
| | | |-- NFS-Root
| | | |-- Online-Support
| | | |-- PLIP
| | | |-- PPP-over-ISDN
| | | |-- Print2Win
| | | |-- Process-Accounting
| | | |-- Proxy-ARP
| | | |-- Quota
| | | |-- README
| | | |-- Reading-List
| | | |-- SLIP+proxyARP
| | | |-- Stacker
| | | |-- Swap-Space
| | | |-- TIA
| | | |-- TRANS.TBL
| | | |-- Term-Firewall
| | | |-- Tiny-News
| | | |-- Token-Ring
| | | |-- Upgrade
| | | |-- Virtual-Web
| | | |-- Visual-Bell
| | | |-- Win95+Win+Linux
| | | |-- WordPerfect
| | | |-- X-Notebook
| | | |-- XFree86-XInside
| | | |-- Xterminal
| | | `-- ZIP-Drive
| | `-- other-formats
| | |-- INDEX
| | |-- INDEX.html
| | |-- README
| | |-- TRANS.TBL
| | |-- dvi
| | | |-- AX25-HOWTO.dvi.gz
| | | |-- Access-HOWTO.dvi.gz
| | | |-- BootPrompt-HOWTO.dvi.gz
| | | |-- Bootdisk-HOWTO.dvi.gz
| | | |-- Busmouse-HOWTO.dvi.gz
| | | |-- CDROM-HOWTO.dvi.gz
| | | |-- Commercial-HOWTO.dvi.gz
| | | |-- Cyrillic-HOWTO.dvi.gz
| | | |-- DNS-HOWTO.dvi.gz
| | | |-- DOSEMU-HOWTO.dvi.gz
| | | |-- Danish-HOWTO.dvi.gz
| | | |-- Distribution-HOWTO.dvi.gz
| | | |-- ELF-HOWTO.dvi.gz
| | | |-- Emacspeak-HOWTO.dvi.gz
| | | |-- Ethernet-HOWTO.dvi.gz
| | | |-- Finnish-HOWTO.dvi.gz
| | | |-- Firewall-HOWTO.dvi.gz
| | | |-- Ftape-HOWTO.dvi.gz
| | | |-- GCC-HOWTO.dvi.gz
| | | |-- German-HOWTO.dvi.gz
| | | |-- HAM-HOWTO.dvi.gz
| | | |-- HOWTO-INDEX.dvi.gz
| | | |-- Hardware-HOWTO.dvi.gz
| | | |-- Hebrew-HOWTO.dvi.gz
| | | |-- INFO-SHEET.dvi.gz
| | | |-- IPX-HOWTO.dvi.gz
| | | |-- ISP-Hookup-HOWTO.dvi.gz
| | | |-- Installation-HOWTO.dvi.gz
| | | |-- Italian-HOWTO.dvi.gz
| | | |-- Java-HOWTO.dvi.gz
| | | |-- Kernel-HOWTO.dvi.gz
| | | |-- Keyboard-HOWTO.dvi.gz
| | | |-- META-FAQ.dvi.gz
| | | |-- MGR-HOWTO.dvi.gz
| | | |-- Mail-HOWTO.dvi.gz
| | | |-- Module-HOWTO.dvi.gz
| | | |-- NET-2-HOWTO.dvi.gz
| | | |-- NIS-HOWTO.dvi.gz
| | | |-- News-HOWTO.dvi.gz
| | | |-- PCI-HOWTO.dvi.gz
| | | |-- PCMCIA-HOWTO.dvi.gz
| | | |-- PPP-HOWTO.dvi.gz
| | | |-- Polish-HOWTO.dvi.gz
| | | |-- Portuguese-HOWTO.dvi.gz
| | | |-- Printing-HOWTO.dvi.gz
| | | |-- Printing-Usage-HOWTO.dvi.gz
| | | |-- README
| | | |-- SCSI-Programming-HOWTO.dvi.gz
| | | |-- SMB-HOWTO.dvi.gz
| | | |-- Serial-HOWTO.dvi.gz
| | | |-- Shadow-Password-HOWTO.dvi.gz
| | | |-- Sound-HOWTO.dvi.gz
| | | |-- Sound-Playing-HOWTO.dvi.gz
| | | |-- Spanish-HOWTO.dvi.gz
| | | |-- TRANS.TBL
| | | |-- Term-HOWTO.dvi.gz
| | | |-- Tips-HOWTO.dvi.gz
| | | |-- UMSDOS-HOWTO.dvi.gz
| | | |-- UPS-HOWTO.dvi.gz
| | | |-- UUCP-HOWTO.dvi.gz
| | | `-- XFree86-HOWTO.dvi.gz
| | |-- html
| | | |-- AX25-HOWTO-html.tar.gz
| | | |-- Access-HOWTO-html.tar.gz
| | | |-- BootPrompt-HOWTO-html.tar.gz
| | | |-- Bootdisk-HOWTO-html.tar.gz
| | | |-- Busmouse-HOWTO-html.tar.gz
| | | |-- CDROM-HOWTO-html.tar.gz
| | | |-- Commercial-HOWTO-html.tar.gz
| | | |-- Cyrillic-HOWTO-html.tar.gz
| | | |-- DNS-HOWTO-html.tar.gz
| | | |-- DOSEMU-HOWTO-html.tar.gz
| | | |-- Danish-HOWTO-html.tar.gz
| | | |-- Distribution-HOWTO-html.tar.gz
| | | |-- ELF-HOWTO-html.tar.gz
| | | |-- Emacspeak-HOWTO-html.tar.gz
| | | |-- Ethernet-HOWTO-html.tar.gz
| | | |-- Finnish-HOWTO-html.tar.gz
| | | |-- Firewall-HOWTO-html.tar.gz
| | | |-- Ftape-HOWTO-html.tar.gz
| | | |-- GCC-HOWTO-html.tar.gz
| | | |-- German-HOWTO-html.tar.gz
| | | |-- HAM-HOWTO-html.tar.gz
| | | |-- HOWTO-INDEX-html.tar.gz
| | | |-- Hardware-HOWTO-html.tar.gz
| | | |-- Hebrew-HOWTO-html.tar.gz
| | | |-- INFO-SHEET-html.tar.gz
| | | |-- IPX-HOWTO-html.tar.gz
| | | |-- ISP-Hookup-HOWTO-html.tar.gz
| | | |-- Installation-HOWTO-html.tar.gz
| | | |-- Italian-HOWTO-html.tar.gz
| | | |-- Java-HOWTO-html.tar.gz
| | | |-- Jave-HOWTO-html.tar.gz
| | | |-- Kernel-HOWTO-html.tar.gz
| | | |-- Keyboard-HOWTO-html.tar.gz
| | | |-- META-FAQ-html.tar.gz
| | | |-- MGR-HOWTO-html.tar.gz
| | | |-- Mail-HOWTO-html.tar.gz
| | | |-- Module-HOWTO-html.tar.gz
| | | |-- NET-2-HOWTO-html.tar.gz
| | | |-- NIS-HOWTO-html.tar.gz
| | | |-- News-HOWTO-html.tar.gz
| | | |-- PCI-HOWTO-html.tar.gz
| | | |-- PCMCIA-HOWTO-html.tar.gz
| | | |-- PPP-HOWTO-html.tar.gz
| | | |-- Polish-HOWTO-html.tar.gz
| | | |-- Portuguese-HOWTO-html.tar.gz
| | | |-- Printing-HOWTO-html.tar.gz
| | | |-- Printing-Usage-HOWTO-html.tar.gz
| | | |-- SCSI-Programming-HOWTO-html.tar.gz
| | | |-- SMB-HOWTO-html.tar.gz
| | | |-- Serial-HOWTO-html.tar.gz
| | | |-- Shadow-Password-HOWTO-html.tar.gz
| | | |-- Sound-HOWTO-html.tar.gz
| | | |-- Sound-Playing-HOWTO-html.tar.gz
| | | |-- Spanish-HOWTO-html.tar.gz
| | | |-- TRANS.TBL
| | | |-- Term-HOWTO-html.tar.gz
| | | |-- Tips-HOWTO-html.tar.gz
| | | |-- UMSDOS-HOWTO-html.tar.gz
| | | |-- UPS-HOWTO-html.tar.gz
| | | |-- UUCP-HOWTO-html.tar.gz
| | | `-- XFree86-HOWTO-html.tar.gz
| | |-- ps
| | | |-- AX25-HOWTO.ps.gz
| | | |-- Access-HOWTO.ps.gz
| | | |-- BootPrompt-HOWTO.ps.gz
| | | |-- Bootdisk-HOWTO.ps.gz
| | | |-- Busmouse-HOWTO.ps.gz
| | | |-- CDROM-HOWTO.ps.gz
| | | |-- Commercial-HOWTO.ps.gz
| | | |-- Cyrillic-HOWTO.ps.gz
| | | |-- DNS-HOWTO.ps.gz
| | | |-- DOSEMU-HOWTO.ps.gz
| | | |-- Danish-HOWTO.ps.gz
| | | |-- Distribution-HOWTO.ps.gz
| | | |-- ELF-HOWTO.ps.gz
| | | |-- Emacspeak-HOWTO.ps.gz
| | | |-- Ethernet-HOWTO.ps.gz
| | | |-- Finnish-HOWTO.ps.gz
| | | |-- Firewall-HOWTO.ps.gz
| | | |-- Ftape-HOWTO.ps.gz
| | | |-- GCC-HOWTO.ps.gz
| | | |-- German-HOWTO.ps.gz
| | | |-- HAM-HOWTO.ps.gz
| | | |-- HOWTO-INDEX.ps.gz
| | | |-- Hardware-HOWTO.ps.gz
| | | |-- Hebrew-HOWTO.ps.gz
| | | |-- INFO-SHEET.ps.gz
| | | |-- IPX-HOWTO.ps.gz
| | | |-- ISP-Hookup-HOWTO.ps.gz
| | | |-- Installation-HOWTO.ps.gz
| | | |-- Italian-HOWTO.ps.gz
| | | |-- Java-HOWTO.ps.gz
| | | |-- Kernel-HOWTO.ps.gz
| | | |-- Keyboard-HOWTO.ps.gz
| | | |-- META-FAQ.ps.gz
| | | |-- MGR-HOWTO.ps.gz
| | | |-- Mail-HOWTO.ps.gz
| | | |-- Module-HOWTO.ps.gz
| | | |-- NET-2-HOWTO.ps.gz
| | | |-- NIS-HOWTO.ps.gz
| | | |-- News-HOWTO.ps.gz
| | | |-- PCI-HOWTO.ps.gz
| | | |-- PCMCIA-HOWTO.ps.gz
| | | |-- PPP-HOWTO.ps.gz
| | | |-- Polish-HOWTO.ps.gz
| | | |-- Portuguese-HOWTO.ps.gz
| | | |-- Printing-HOWTO.ps.gz
| | | |-- Printing-Usage-HOWTO.ps.gz
| | | |-- README
| | | |-- SCSI-Programming-HOWTO.ps.gz
| | | |-- SMB-HOWTO.ps.gz
| | | |-- Serial-HOWTO.ps.gz
| | | |-- Shadow-Password-HOWTO.ps.gz
| | | |-- Sound-HOWTO.ps.gz
| | | |-- Sound-Playing-HOWTO.ps.gz
| | | |-- Spanish-HOWTO.ps.gz
| | | |-- TRANS.TBL
| | | |-- Term-HOWTO.ps.gz
| | | |-- Tips-HOWTO.ps.gz
| | | |-- UMSDOS-HOWTO.ps.gz
| | | |-- UPS-HOWTO.ps.gz
| | | |-- UUCP-HOWTO.ps.gz
| | | `-- XFree86-HOWTO.ps.gz
| | `-- sgml
| | |-- AX25-HOWTO.sgml.gz
| | |-- Access-HOWTO.sgml.gz
| | |-- BootPrompt-HOWTO.sgml.gz
| | |-- Bootdisk-HOWTO.sgml.gz
| | |-- Busmouse-HOWTO.sgml.gz
| | |-- CDROM-HOWTO.sgml.gz
| | |-- Commercial-HOWTO.sgml.gz
| | |-- Cyrillic-HOWTO.sgml.gz
| | |-- DNS-HOWTO.sgml.gz
| | |-- DOSEMU-HOWTO.sgml.gz
| | |-- Danish-HOWTO.sgml.gz
| | |-- Distribution-HOWTO.sgml.gz
| | |-- ELF-HOWTO.sgml.gz
| | |-- Emacspeak-HOWTO.sgml.gz
| | |-- Ethernet-HOWTO.sgml.gz
| | |-- Finnish-HOWTO.sgml.gz
| | |-- Firewall-HOWTO.sgml.gz
| | |-- Ftape-HOWTO.sgml.gz
| | |-- GCC-HOWTO.sgml.gz
| | |-- German-HOWTO.sgml.gz
| | |-- HAM-HOWTO.sgml.gz
| | |-- HOWTO-INDEX.sgml.gz
| | |-- Hardware-HOWTO.sgml.gz
| | |-- Hebrew-HOWTO.sgml.gz
| | |-- INFO-SHEET.sgml.gz
| | |-- IPX-HOWTO.sgml.gz
| | |-- ISP-Hookup-HOWTO.sgml.gz
| | |-- Installation-HOWTO.sgml.gz
| | |-- Italian-HOWTO.sgml.gz
| | |-- Java-HOWTO.sgml.gz
| | |-- Kernel-HOWTO.sgml.gz
| | |-- Keyboard-HOWTO.sgml.gz
| | |-- META-FAQ.sgml.gz
| | |-- MGR-HOWTO.sgml.gz
| | |-- Mail-HOWTO.sgml.gz
| | |-- Module-HOWTO.sgml.gz
| | |-- NET-2-HOWTO.sgml.gz
| | |-- NIS-HOWTO.sgml.gz
| | |-- News-HOWTO.sgml.gz
| | |-- PCI-HOWTO.sgml.gz
| | |-- PCMCIA-HOWTO.sgml.gz
| | |-- PPP-HOWTO.sgml.gz
| | |-- Polish-HOWTO.sgml.gz
| | |-- Portuguese-HOWTO.sgml.gz
| | |-- Printing-HOWTO.sgml.gz
| | |-- Printing-Usage-HOWTO.sgml.gz
| | |-- README
| | |-- SCSI-Programming-HOWTO.sgml.gz
| | |-- SMB-HOWTO.sgml.gz
| | |-- Serial-HOWTO.sgml.gz
| | |-- Shadow-Password-HOWTO.sgml.gz
| | |-- Sound-HOWTO.sgml.gz
| | |-- Sound-Playing-HOWTO.sgml.gz
| | |-- Spanish-HOWTO.sgml.gz
| | |-- TRANS.TBL
| | |-- Term-HOWTO.sgml.gz
| | |-- Tips-HOWTO.sgml.gz
| | |-- UMSDOS-HOWTO.sgml.gz
| | |-- UPS-HOWTO.sgml.gz
| | |-- UUCP-HOWTO.sgml.gz
| | |-- XFree86-HOWTO.sgml.gz
| | `-- mini
| | |-- ADSM-Backup.sgml.gz
| | =20 |-- Colour-ls.sgml.gz
| | |-- Diskless.sgml.gz
| | |-- HTML-Validation.sgml.gz
| | |-- HTTP+Netware.sgml.gz
| | |-- IP-Masquerade.sgml.gz
| | |-- Java-WorkShop.sgml.gz
| | |-- Large-Disk.sgml.gz
| | |-- Locales.sgml.gz
| | |-- NFS-Root.sgml.gz
| | |-- README
| | |-- TRANS.TBL
| | |-- Upgrade.sgml.gz
| | |-- Visual-Bell.sgml.gz
| | |-- XFree86-XInside.sgml.gz
| | `-- ZIP-Drive.sgml.gz
| |-- HTML
| | |-- TRANS.TBL
| | |-- index.html
| | |-- ldp
| | | |-- BootPrompt-HOWTO-1.html
| | | |-- BootPrompt-HOWTO-2.html
| | | |-- BootPrompt-HOWTO-3.html
| | | |-- BootPrompt-HOWTO-4.html
| | | |-- BootPrompt-HOWTO-5.html
| | | |-- BootPrompt-HOWTO-6.html
| | | |-- BootPrompt-HOWTO-7.html
| | | |-- BootPrompt-HOWTO-8.html
| | | |-- BootPrompt-HOWTO.html
| | | |-- Bootdisk-HOWTO-1.html
| | | |-- Bootdisk-HOWTO-2.html
| | | |-- Bootdisk-HOWTO-3.html
| | | |-- Bootdisk-HOWTO-4.html
| | | |-- Bootdisk-HOWTO-5.html
| | | |-- Bootdisk-HOWTO-6.html
| | | |-- Bootdisk-HOWTO.html
| | | |-- Busmouse-HOWTO-1.html
| | | |-- Busmouse-HOWTO-2.html
| | | |-- Busmouse-HOWTO-3.html
| | | |-- Busmouse-HOWTO-4.html
| | | |-- Busmouse-HOWTO-5.html
| | | |-- Busmouse-HOWTO.html
| | | |-- CDROM-HOWTO-1.html
| | | |-- CDROM-HOWTO-2.html
| | | |-- CDROM-HOWTO-3.html
| | | |-- CDROM-HOWTO-4.html
| | | |-- CDROM-HOWTO-5.html
| | | |-- CDROM-HOWTO-6.html
| | | |-- CDROM-HOWTO-7.html
| | | |-- CDROM-HOWTO.html
| | | |-- Commercial-HOWTO-1.html
| | | |-- Commercial-HOWTO-10.html
| | | |-- Commercial-HOWTO-2.html
| | | |-- Commercial-HOWTO-3.html
| | | |-- Commercial-HOWTO-4.html
| | | |-- Commercial-HOWTO-5.html
| | | |-- Commercial-HOWTO-6.html
| | | |-- Commercial-HOWTO-7.html
| | | |-- Commercial-HOWTO-8.html
| | | |-- Commercial-HOWTO-9.html
| | | |-- Commercial-HOWTO.html
| | | |-- Cyrillic-HOWTO-1.html
| | | |-- Cyrillic-HOWTO-2.html
| | | |-- Cyrillic-HOWTO-3.html
| | | |-- Cyrillic-HOWTO-4.html
| | | |-- Cyrillic-HOWTO-5.html
| | | |-- Cyrillic-HOWTO-6.html
| | | |-- Cyrillic-HOWTO-7.html
| | | |-- Cyrillic-HOWTO-8.html
| | | |-- Cyrillic-HOWTO-9.html
| | | |-- Cyrillic-HOWTO.html
| | | |-- DOSEMU-HOWTO-1.html
| | | |-- DOSEMU-HOWTO-10.html
| | | |-- DOSEMU-HOWTO-11.html
| | | |-- DOSEMU-HOWTO-12.html
| | | |-- DOSEMU-HOWTO-2.html
| | | |-- DOSEMU-HOWTO-3.html
| | | |-- DOSEMU-HOWTO-4.html
| | | |-- DOSEMU-HOWTO-5.html
| | | |-- DOSEMU-HOWTO-6.html
| | | |-- DOSEMU-HOWTO-7.html
| | | |-- DOSEMU-HOWTO-8.html
| | | |-- DOSEMU-HOWTO-9.html
| | | |-- DOSEMU-HOWTO.html
| | | |-- Danish-HOWTO-1.html
| | | |-- Danish-HOWTO-2.html
| | | |-- Danish-HOWTO-3.html
| | | |-- Danish-HOWTO-4.html
| | | |-- Danish-HOWTO.html
| | | |-- Distribution-HOWTO-1.html
| | | |-- Distribution-HOWTO-2.html
| | | |-- Distribution-HOWTO-3.html
| | | |-- Distribution-HOWTO-4.html
| | | |-- Distribution-HOWTO-5.html
| | | |-- Distribution-HOWTO-6.html
| | | |-- Distribution-HOWTO-7.html
| | | |-- Distribution-HOWTO-8.html
| | | |-- Distribution-HOWTO-9.html
| | | |-- Distribution-HOWTO.html
| | | |-- ELF-HOWTO-1.html
| | | |-- ELF-HOWTO-2.html
| | | |-- ELF-HOWTO-3.html
| | | |-- ELF-HOWTO-4.html
| | | |-- ELF-HOWTO-5.html
| | | |-- ELF-HOWTO-6.html
| | | |-- ELF-HOWTO.html
| | | |-- Ethernet-HOWTO-1.html
| | | |-- Ethernet-HOWTO-10.html
| | | |-- Ethernet-HOWTO-2.html
| | | |-- Ethernet-HOWTO-3.html
| | | |-- Ethernet-HOWTO-4.html
| | | |-- Ethernet-HOWTO-5.html
| | | |-- Ethernet-HOWTO-6.html
| | | |-- Ethernet-HOWTO-7.html
| | | |-- Ethernet-HOWTO-8.html
| | | |-- Ethernet-HOWTO-9.html
| | | |-- Ethernet-HOWTO.html
| | | |-- Firewall-HOWTO-1.html
| | | |-- Firewall-HOWTO-2.html
| | | |-- Firewall-HOWTO-3.html
| | | |-- Firewall-HOWTO-4.html
| | | |-- Firewall-HOWTO-5.html
| | | |-- Firewall-HOWTO-6.html
| | | |-- Firewall-HOWTO.html
| | | |-- Ftape-HOWTO-1.html
| | | |-- Ftape-HOWTO-2.html
| | | |-- Ftape-HOWTO-3.html
| | | |-- Ftape-HOWTO-4.html
| | | |-- Ftape-HOWTO-5.html
| | | |-- Ftape-HOWTO-6.html
| | | |-- Ftape-HOWTO-7.html
| | | |-- Ftape-HOWTO-8.html
| | | |-- Ftape-HOWTO-9.html
| | | |-- Ftape-HOWTO.html
| | | |-- German-HOWTO-1.html
| | | |-- German-HOWTO-10.html
| | | |-- German-HOWTO-11.html
| | | |-- German-HOWTO-12.html
| | | |-- German-HOWTO-13.html
| | | |-- German-HOWTO-14.html
| | | |-- German-HOWTO-15.html
| | | |-- German-HOWTO-2.html
| | | |-- German-HOWTO-3.html
| | | |-- German-HOWTO-4.html
| | | |-- German-HOWTO-5.html
| | | |-- German-HOWTO-6.html
| | | |-- German-HOWTO-7.html
| | | |-- German-HOWTO-8.html
| | | |-- German-HOWTO-9.html
| | | |-- German-HOWTO.html
| | | |-- HAM-HOWTO-1.html
| | | |-- HAM-HOWTO-10.html
| | | |-- HAM-HOWTO-11.html
| | | |-- HAM-HOWTO-12.html
| | | |-- HAM-HOWTO-13.html
| | | |-- HAM-HOWTO-14.html
| | | |-- HAM-HOWTO-15.html
| | | |-- HAM-HOWTO-16.html
| | | |-- HAM-HOWTO-17.html
| | | |-- HAM-HOWTO-2.html
| | | |-- HAM-HOWTO-3.html
| | | |-- HAM-HOWTO-4.html
| | | |-- HAM-HOWTO-5.html
| | | |-- HAM-HOWTO-6.html
| | | |-- HAM-HOWTO-7.html
| | | |-- HAM-HOWTO-8.html
| | | |-- HAM-HOWTO-9.html
| | | |-- HAM-HOWTO.html
| | | |-- HOWTO-INDEX-1.html
| | | |-- HOWTO-INDEX-2.html
| | | |-- HOWTO-INDEX-3.html
| | | |-- HOWTO-INDEX-4.html
| | | |-- HOWTO-INDEX-5.html
| | | |-- HOWTO-INDEX.html
| | | |-- Hardware-HOWTO-1.html
| | | |-- Hardware-HOWTO-10.html
| | | |-- Hardware-HOWTO-11.html
| | | |-- Hardware-HOWTO-12.html
| | | |-- Hardware-HOWTO-13.html
| | | |-- Hardware-HOWTO-14.html
| | | |-- Hardware-HOWTO-15.html
| | | |-- Hardware-HOWTO-16.html
| | | |-- Hardware-HOWTO-17.html
| | | |-- Hardware-HOWTO-18.html
| | | |-- Hardware-HOWTO-19.html
| | | |-- Hardware-HOWTO-2.html
| | | |-- Hardware-HOWTO-20.html
| | | |-- Hardware-HOWTO-21.html
| | | |-- Hardware-HOWTO-22.html
| | | |-- Hardware-HOWTO-23.html
| | | |-- Hardware-HOWTO-24.html
| | | |-- Hardware-HOWTO-3.html
| | | |-- Hardware-HOWTO-4.html
| | | |-- Hardware-HOWTO-5.html
| | | |-- Hardware-HOWTO-6.html
| | | |-- Hardware-HOWTO-7.html
| | | |-- Hardware-HOWTO-8.html
| | | |-- Hardware-HOWTO-9.html
| | | |-- Hardware-HOWTO.html
| | | |-- Hebrew-HOWTO-1.html
| | | |-- Hebrew-HOWTO-2.html
| | | |-- Hebrew-HOWTO-3.html
| | | |-- Hebrew-HOWTO-4.html
| | | |-- Hebrew-HOWTO-5.html
| | | |-- Hebrew-HOWTO-6.html
| | | |-- Hebrew-HOWTO-7.html
| | | |-- Hebrew-HOWTO-8.html
| | | |-- Hebrew-HOWTO-9.html
| | | |-- Hebrew-HOWTO.html
| | | |-- INFO-SHEET-1.html
| | | |-- INFO-SHEET-10.html
| | | |-- INFO-SHEET-11.html
| | | |-- INFO-SHEET-12.html
| | | |-- INFO-SHEET-2.html
| | | |-- INFO-SHEET-3.html
| | | |-- INFO-SHEET-4.html
| | | |-- INFO-SHEET-5.html
| | | |-- INFO-SHEET-6.html
| | | |-- INFO-SHEET-7.html
| | | |-- INFO-SHEET-8.html
| | | |-- INFO-SHEET-9.html
| | | |-- INFO-SHEET.html
| | | |-- IPX-HOWTO-1.html
| | | |-- IPX-HOWTO-10.html
| | | |-- IPX-HOWTO-11.html
| | | |-- IPX-HOWTO-12.html
| | | |-- IPX-HOWTO-13.html
| | | |-- IPX-HOWTO-2.html
| | | |-- IPX-HOWTO-3.html
| | | |-- IPX-HOWTO-4.html
| | | |-- IPX-HOWTO-5.html
| | | |-- IPX-HOWTO-6.html
| | | |-- IPX-HOWTO-7.html
| | | |-- IPX-HOWTO-8.html
| | | |-- IPX-HOWTO-9.html
| | | |-- IPX-HOWTO.html
| | | |-- Installation-HOWTO-1.html
| | | |-- Installation-HOWTO-2.html
| | | |-- Installation-HOWTO-3.html
| | | |-- Installation-HOWTO-4.html
| | | |-- Installation-HOWTO-5.html
| | | |-- Installation-HOWTO-6.html
| | | |-- Installation-HOWTO.html
| | | |-- Italian-HOWTO-1.html
| | | |-- Italian-HOWTO-2.html
| | | |-- Italian-HOWTO-3.html
| | | |-- Italian-HOWTO-4.html
| | | |-- Italian-HOWTO-5.html
| | | |-- Italian-HOWTO-6.html
| | | |-- Italian-HOWTO-7.html
| | | |-- Italian-HOWTO-8.html
| | | |-- Italian-HOWTO.html
| | | |-- Java-HOWTO-1.html
| | | |-- Java-HOWTO-10.html
| | | |-- Java-HOWTO-2.html
| | | |-- Java-HOWTO-3.html
| | | |-- Java-HOWTO-4.html
| | | |-- Java-HOWTO-5.html
| | | |-- Java-HOWTO-6.html
| | | |-- Java-HOWTO-7.html
| | | |-- Java-HOWTO-8.html
| | | |-- Java-HOWTO-9.html
| | | |-- Java-HOWTO.html
| | | |-- Jave-HOWTO-1.html
| | | |-- Jave-HOWTO-2.html
| | | |-- Jave-HOWTO-3.html
| | | |-- Jave-HOWTO-4.html
| | | |-- Jave-HOWTO-5.html
| | | |-- Jave-HOWTO-6.html
| | | |-- Jave-HOWTO-7.html
| | | |-- Jave-HOWTO-8.html
| | | |-- Jave-HOWTO-9.html
| | | |-- Jave-HOWTO.html
| | | |-- Kernel-HOWTO-1.html
| | | |-- Kernel-HOWTO-10.html
| | | |-- Kernel-HOWTO-11.html
| | | |-- Kernel-HOWTO-2.html
| | | |-- Kernel-HOWTO-3.html
| | | |-- Kernel-HOWTO-4.html
| | | |-- Kernel-HOWTO-5.html
| | | |-- Kernel-HOWTO-6.html
| | | |-- Kernel-HOWTO-7.html
| | | |-- Kernel-HOWTO-8.html
| | | |-- Kernel-HOWTO-9.html
| | | |-- Kernel-HOWTO.html
| | | |-- Keyboard-HOWTO-1.html
| | | |-- Keyboard-HOWTO-10.html
| | | |-- Keyboard-HOWTO-11.html
| | | |-- Keyboard-HOWTO-12.html
| | | |-- Keyboard-HOWTO-13.html
| | | |-- Keyboard-HOWTO-14.html
| | | |-- Keyboard-HOWTO-15.html
| | | |-- Keyboard-HOWTO-16.html
| | | |-- Keyboard-HOWTO-17.html
| | | |-- Keyboard-HOWTO-18.html
| | | |-- Keyboard-HOWTO-19.html
| | | |-- Keyboard-HOWTO-2.html
| | | |-- Keyboard-HOWTO-20.html
| | | |-- Keyboard-HOWTO-3.html
| | | |-- Keyboard-HOWTO-4.html
| | | |-- Keyboard-HOWTO-5.html
| | | |-- Keyboard-HOWTO-6.html
| | | |-- Keyboard-HOWTO-7.html
| | | |-- Keyboard-HOWTO-8.html
| | | |-- Keyboard-HOWTO-9.html
| | | |-- Keyboard-HOWTO.html
| | | |-- META-FAQ-1.html
| | | |-- META-FAQ-10.html
| | | |-- META-FAQ-2.html
| | | |-- META-FAQ-3.html
| | | |-- META-FAQ-4.html
| | | |-- META-FAQ-5.html
| | | |-- META-FAQ-6.html
| | | |-- META-FAQ-7.html
| | | |-- META-FAQ-8.html
| | | |-- META-FAQ-9.html
| | | |-- META-FAQ.html
| | | |-- MGR-HOWTO-1.html
| | | |-- MGR-HOWTO-2.html
| | | |-- MGR-HOWTO-3.html
| | | |-- MGR-HOWTO-4.html
| | | |-- MGR-HOWTO-5.html
| | | |-- MGR-HOWTO-6.html
| | | |-- MGR-HOWTO-7.html
| | | |-- MGR-HOWTO.html
| | | |-- Mail-HOWTO-1.html
| | | |-- Mail-HOWTO-2.html
| | | |-- Mail-HOWTO-3.html
| | | |-- Mail-HOWTO-4.html
| | | |-- Mail-HOWTO-5.html
| | | |-- Mail-HOWTO-6.html
| | | |-- Mail-HOWTO.html
| | | |-- NET-2-HOWTO-1.html
| | | |-- NET-2-HOWTO-10.html
| | | |-- NET-2-HOWTO-11.html
| | | |-- NET-2-HOWTO-12.html
| | | |-- NET-2-HOWTO-13.html
| | | |-- NET-2-HOWTO-14.html
| | | |-- NET-2-HOWTO-15.html
| | | |-- NET-2-HOWTO-16.html
| | | |-- NET-2-HOWTO-17.html
| | | |-- NET-2-HOWTO-18.html
| | | |-- NET-2-HOWTO-19.html
| | | |-- NET-2-HOWTO-2.html
| | | |-- NET-2-HOWTO-3.html
| | | |-- NET-2-HOWTO-4.html
| | | |-- NET-2-HOWTO-5.html
| | | |-- NET-2-HOWTO-6.html
| | | |-- NET-2-HOWTO-7.html
| | | |-- NET-2-HOWTO-8.html
| | | |-- NET-2-HOWTO-9.html
| | | |-- NET-2-HOWTO.html
| | | |-- NIS-HOWTO-1.html
| | | |-- NIS-HOWTO-10.html
| | | |-- NIS-HOWTO-2.html
| | | |-- NIS-HOWTO-3.html
| | | |-- NIS-HOWTO-4.html
| | | |-- NIS-HOWTO-5.html
| | | |-- NIS-HOWTO-6.html
| | | |-- NIS-HOWTO-7.html
| | | |-- NIS-HOWTO-8.html
| | | |-- NIS-HOWTO-9.html
| | | |-- NIS-HOWTO.html
| | | |-- News-HOWTO-1.html
| | | |-- News-HOWTO-2.html
| | | |-- News-HOWTO-3.html
| | | |-- News-HOWTO-4.html
| | | |-- News-HOWTO-5.html
| | | |-- News-HOWTO-6.html
| | | |-- News-HOWTO-7.html
| | | |-- News-HOWTO.html
| | | |-- PCI-HOWTO-1.html
| | | |-- PCI-HOWTO-10.html
| | | |-- PCI-HOWTO-11.html
| | | |-- PCI-HOWTO-12.html
| | | |-- PCI-HOWTO-13.html
| | | |-- PCI-HOWTO-2.html
| | | |-- PCI-HOWTO-3.html
| | | |-- PCI-HOWTO-4.html
| | | |-- PCI-HOWTO-5.html
| | | |-- PCI-HOWTO-6.html
| | | |-- PCI-HOWTO-7.html
| | | |-- PCI-HOWTO-8.html
| | | |-- PCI-HOWTO-9.html
| | | |-- PCI-HOWTO.html
| | | |-- PCMCIA-HOWTO-1.html
| | | |-- PCMCIA-HOWTO-2.html
| | | |-- PCMCIA-HOWTO-3.html
| | | |-- PCMCIA-HOWTO-4.html
| | | |-- PCMCIA-HOWTO-5.html
| | | |-- PCMCIA-HOWTO.html
| | | |-- PPP-HOWTO-1.html
| | | |-- PPP-HOWTO-10.html
| | | |-- PPP-HOWTO-11.html
| | | |-- PPP-HOWTO-12.html
| | | |-- PPP-HOWTO-13.html
| | | |-- PPP-HOWTO-14.html
| | | |-- PPP-HOWTO-15.html
| | | |-- PPP-HOWTO-16.html
| | | |-- PPP-HOWTO-17.html
| | | |-- PPP-HOWTO-2.html
| | | |-- PPP-HOWTO-3.html
| | | |-- PPP-HOWTO-4.html
| | | |-- PPP-HOWTO-5.html
| | | |-- PPP-HOWTO-6.html
| | | |-- PPP-HOWTO-7.html
| | | |-- PPP-HOWTO-8.html
| | | |-- PPP-HOWTO-9.html
| | | |-- PPP-HOWTO.html
| | | |-- Portuguese-HOWTO-1.html
| | | |-- Portuguese-HOWTO-2.html
| | | |-- Portuguese-HOWTO-3.html
| | | |-- Portuguese-HOWTO-4.html
| | | |-- Portuguese-HOWTO-5.html
| | | |-- Portuguese-HOWTO-6.html
| | | |-- Portuguese-HOWTO-7.html
| | | |-- Portuguese-HOWTO.html
| | | |-- Printing-HOWTO-1.html
| | | |-- Printing-HOWTO-10.html
| | | |-- Printing-HOWTO-11.html
| | | |-- Printing-HOWTO-12.html
| | | |-- Printing-HOWTO-2.html
| | | |-- Printing-HOWTO-3.html
| | | |-- Printing-HOWTO-4.html
| | | |-- Printing-HOWTO-5.html
| | | |-- Printing-HOWTO-6.html
| | | |-- Printing-HOWTO-7.html
| | | |-- Printing-HOWTO-8.html
| | | |-- Printing-HOWTO-9.html
| | | |-- Printing-HOWTO.html
| | | |-- Printing-Usage-HOWTO-1.html
| | | |-- Printing-Usage-HOWTO-2.html
| | | |-- Printing-Usage-HOWTO-3.html
| | | |-- Printing-Usage-HOWTO-4.html
| | | |-- Printing-Usage-HOWTO-5.html
| | | |-- Printing-Usage-HOWTO-6.html
| | | |-- Printing-Usage-HOWTO-7.html
| | | |-- Printing-Usage-HOWTO.html
| | | |-- SCSI-Programming-HOWTO-1.html
| | | |-- SCSI-Programming-HOWTO-10.html
| | | |-- SCSI-Programming-HOWTO-11.html
| | | |-- SCSI-Programming-HOWTO-12.html
| | | |-- SCSI-Programming-HOWTO-13.html
| | | |-- SCSI-Programming-HOWTO-14.html
| | | |-- SCSI-Programming-HOWTO-15.html
| | | |-- SCSI-Programming-HOWTO-16.html
| | | |-- SCSI-Programming-HOWTO-17.html
| | | |-- SCSI-Programming-HOWTO-18.html
| | | |-- SCSI-Programming-HOWTO-19.html
| | | |-- SCSI-Programming-HOWTO-2.html
| | | |-- SCSI-Programming-HOWTO-20.html
| | | |-- SCSI-Programming-HOWTO-21.html
| | | |-- SCSI-Programming-HOWTO-22.html
| | | |-- SCSI-Programming-HOWTO-23.html
| | | |-- SCSI-Programming-HOWTO-3.html
| | | |-- SCSI-Programming-HOWTO-4.html
| | | |-- SCSI-Programming-HOWTO-5.html
| | | |-- SCSI-Programming-HOWTO-6.html
| | | |-- SCSI-Programming-HOWTO-7.html
| | | |-- SCSI-Programming-HOWTO-8.html
| | | |-- SCSI-Programming-HOWTO-9.html
| | | |-- SCSI-Programming-HOWTO.html
| | | |-- Serial-HOWTO-1.html
| | | |-- Serial-HOWTO-10.html
| | | |-- Serial-HOWTO-11.html
| | | |-- Serial-HOWTO-12.html
| | | |-- Serial-HOWTO-13.html
| | | |-- Serial-HOWTO-14.html
| | | |-- Serial-HOWTO-15.html
| | | |-- Serial-HOWTO-16.html
| | | |-- Serial-HOWTO-2.html
| | | |-- Serial-HOWTO-3.html
| | | |-- Serial-HOWTO-4.html
| | | |-- Serial-HOWTO-5.html
| | | |-- Serial-HOWTO-6.html
| | | |-- Serial-HOWTO-7.html
| | | |-- Serial-HOWTO-8.html
| | | |-- Serial-HOWTO-9.html
| | | |-- Serial-HOWTO.html
| | | |-- Shadow-Password-HOWTO-1.html
| | | |-- Shadow-Password-HOWTO-2.html
| | | |-- Shadow-Password-HOWTO-3.html
| | | |-- Shadow-Password-HOWTO-4.html
| | | |-- Shadow-Password-HOWTO-5.html
| | | |-- Shadow-Password-HOWTO-6.html
| | | |-- Shadow-Password-HOWTO-7.html
| | | |-- Shadow-Password-HOWTO-8.html
| | | |-- Shadow-Password-HOWTO-9.html
| | | |-- Shadow-Password-HOWTO.html
| | | |-- Sound-HOWTO-1.html
| | | |-- Sound-HOWTO-2.html
| | | |-- Sound-HOWTO-3.html
| | | |-- Sound-HOWTO-4.html
| | | |-- Sound-HOWTO-5.html
| | | |-- Sound-HOWTO-6.html
| | | |-- Sound-HOWTO-7.html
| | | |-- Sound-HOWTO.html
| | | |-- Sound-Playing-HOWTO-1.html
| | | |-- Sound-Playing-HOWTO-2.html
| | | |-- Sound-Playing-HOWTO-3.html
| | | |-- Sound-Playing-HOWTO-4.html
| | | |-- Sound-Playing-HOWTO.html
| | | |-- TRANS.TBL
| | | |-- Term-HOWTO-1.html
| | | |-- Term-HOWTO-10.html
| | | |-- Term-HOWTO-11.html
| | | |-- Term-HOWTO-12.html
| | | |-- Term-HOWTO-13.html
| | | |-- Term-HOWTO-14.html
| | | |-- Term-HOWTO-15.html
| | | |-- Term-HOWTO-16.html
| | | |-- Term-HOWTO-17.html
| | | |-- Term-HOWTO-18.html
| | | |-- Term-HOWTO-2.html
| | | |-- Term-HOWTO-3.html
| | | |-- Term-HOWTO-4.html
| | | |-- Term-HOWTO-5.html
| | | |-- Term-HOWTO-6.html
| | | |-- Term-HOWTO-7.html
| | | |-- Term-HOWTO-8.html
| | | |-- Term-HOWTO-9.html
| | | |-- Term-HOWTO.html
| | | |-- Tips-HOWTO-1.html
| | | |-- Tips-HOWTO-2.html
| | | |-- Tips-HOWTO-3.html
| | | |-- Tips-HOWTO.html
| | | |-- UMSDOS-HOWTO-1.html
| | | |-- UMSDOS-HOWTO-2.html
| | | |-- UMSDOS-HOWTO-3.html
| | | |-- UMSDOS-HOWTO-4.html
| | | |-- UMSDOS-HOWTO-5.html
| | | |-- UMSDOS-HOWTO-6.html
| | | |-- UMSDOS-HOWTO-7.html
| | | |-- UMSDOS-HOWTO-8.html
| | | |-- UMSDOS-HOWTO.html
| | | |-- UPS-HOWTO-1.html
| | | |-- UPS-HOWTO-10.html
| | | |-- UPS-HOWTO-11.html
| | | |-- UPS-HOWTO-12.html
| | | |-- UPS-HOWTO-2.html
| | | |-- UPS-HOWTO-3.html
| | | |-- UPS-HOWTO-4.html
| | | |-- UPS-HOWTO-5.html
| | | |-- UPS-HOWTO-6.html
| | | |-- UPS-HOWTO-7.html
| | | |-- UPS-HOWTO-8.html
| | | |-- UPS-HOWTO-9.html
| | | |-- UPS-HOWTO.html
| | | |-- UUCP-HOWTO-1.html
| | | |-- UUCP-HOWTO-2.html
| | | |-- UUCP-HOWTO-3.html
| | | |-- UUCP-HOWTO-4.html
| | | |-- UUCP-HOWTO-5.html
| | | |-- UUCP-HOWTO-6.html
| | | |-- UUCP-HOWTO.html
| | | |-- XFree86-HOWTO-1.html
| | | |-- XFree86-HOWTO-2.html
| | | |-- XFree86-HOWTO-3.html
| | | |-- XFree86-HOWTO-4.html
| | | |-- XFree86-HOWTO-5.html
| | | |-- XFree86-HOWTO-6.html
| | | |-- XFree86-HOWTO-7.html
| | | |-- XFree86-HOWTO-8.html
| | | |-- XFree86-HOWTO.html
| | | `-- install-guide-2.2.2.html
| | | |-- .ID_MAP.dir
| | | |-- .ID_MAP.pag
| | | |-- .IMG_PARAMS.dir
| | | |-- .IMG_PARAMS.pag
| | | |-- .ORIG_MAP.dir
| | | |-- .ORIG_MAP.pag
| | | |-- TRANS.TBL
| | | |-- bdt.gif
| | | |-- change_begin.gif
| | | |-- change_delete.gif
| | | |-- change_end.gif
| | | |-- contents.xbm
| | | |-- contents_motif.gif
| | | |-- cross_ref_motif.gif
| | | |-- foot_motif.gif
| | | |-- footnode.html
| | | |-- gs.html
| | | |-- icons.html
| | | |-- image.gif
| | | |-- images.aux
| | | |-- images.idx
| | | |-- images.log
| | | |-- images.pl
| | | |-- images.tex
| | | |-- img1.gif
| | | |-- img10.gif
| | | |-- img100.gif
| | | |-- img101.gif
| | | |-- img102.gif
| | | |-- img103.gif
| | | |-- img104.gif
| | | |-- img105.gif
| | | |-- img106.gif
| | | |-- img107.gif
| | | |-- img108.gif
| | | |-- img109.gif
| | | |-- img11.gif
| | | |-- img110.gif
| | | |-- img111.gif
| | | |-- img112.gif
| | | |-- img113.gif
| | | |-- img114.gif
| | | |-- img115.gif
| | | |-- img116.gif
| | | |-- img117.gif
| | | |-- img118.gif
| | | |-- img119.gif
| | | |-- img12.gif
| | | |-- img120.gif
| | | |-- img121.gif
| | | |-- img122.gif
| | | |-- img123.gif
| | | |-- img124.gif
| | | |-- img125.gif
| | | |-- img126.gif
| | | |-- img127.gif
| | | |-- img128.gif
| | | |-- img129.gif
| | | |-- img13.gif
| | | |-- img130.gif
| | | |-- img131.gif
| | | |-- img132.gif
| | | |-- img133.gif
| | | |-- img134.gif
| | | |-- img135.gif
| | | |-- img136.gif
| | | |-- img137.gif
| | | |-- img138.gif
| | | |-- img139.gif
| | | |-- img14.gif
| | | |-- img140.gif
| | | |-- img141.gif
| | | |-- img142.gif
| | | |-- img143.gif
| | | |-- img144.gif
| | | |-- img145.gif
| | | |-- img146.gif
| | | |-- img147.gif
| | | |-- img148.gif
| | | |-- img149.gif
| | | |-- img15.gif
| | | |-- img150.gif
| | | |-- img151.gif
| | | |-- img152.gif
| | | |-- img153.gif
| | | |-- img154.gif
| | | |-- img155.gif
| | | |-- img156.gif
| | | |-- img157.gif
| | | |-- img158.gif
| | | |-- img159.gif
| | | |-- img16.gif
| | | |-- img160.gif
| | | |-- img161.gif
| | | |-- img162.gif
| | | |-- img163.gif
| | | |-- img164.gif
| | | |-- img165.gif
| | | |-- img166.gif
| | | |-- img167.gif
| | | |-- img168.gif
| | | |-- img169.gif
| | | |-- img17.gif
| | | |-- img170.gif
| | | |-- img171.gif
| | | |-- img172.gif
| | | |-- img173.gif
| | | |-- img174.gif
| | | |-- img175.gif
| | | |-- img176.gif
| | | |-- img177.gif
| | | |-- img178.gif
| | | |-- img179.gif
| | | |-- img18.gif
| | | |-- img180.gif
| | | |-- img181.gif
| | | |-- img182.gif
| | | |-- img183.gif
| | | |-- img184.gif
| | | |-- img185.gif
| | | |-- img186.gif
| | | |-- img187.gif
| | | |-- img188.gif
| | | |-- img189.gif
| | | |-- img19.gif
| | | |-- img190.gif
| | | |-- img191.gif
| | | |-- img192.gif
| | | |-- img193.gif
| | | |-- img194.gif
| | | |-- img195.gif
| | | |-- img196.gif
| | | |-- img197.gif
| | | |-- img198.gif
| | | |-- img199.gif
| | | |-- img2.gif
| | | |-- img20.gif
| | | |-- img200.gif
| | | |-- img201.gif
| | | |-- img202.gif
| | | |-- img203.gif
| | | |-- img204.gif
| | | |-- img205.gif
| | | |-- img206.gif
| | | |-- img207.gif
| | | |-- img208.gif
| | | |-- img209.gif
| | | |-- img21.gif
| | | |-- img210.gif
| | | |-- img211.gif
| | | |-- img212.gif
| | | |-- img213.gif
| | | |-- img214.gif
| | | |-- img215.gif
| | | |-- img216.gif
| | | |-- img217.gif
| | | |-- img218.gif
| | | |-- img219.gif
| | | |-- img22.gif
| | | |-- img220.gif
| | | |-- img221.gif
| | | |-- img222.gif
| | | |-- img223.gif
| | | |-- img224.gif
| | | |-- img225.gif
| | | |-- img226.gif
| | | |-- img227.gif
| | | |-- img228.gif
| | | |-- img229.gif
| | | |-- img23.gif
| | | |-- img230.gif
| | | |-- img231.gif
| | | |-- img232.gif
| | | |-- img233.gif
| | | |-- img234.gif
| | | |-- img235.gif
| | | |-- img236.gif
| | | |-- img237.gif
| | | |-- img238.gif
| | | |-- img239.gif
| | | |-- img24.gif
| | | |-- img240.gif
| | | |-- img241.gif
| | | |-- img242.gif
| | | |-- img243.gif
| | | |-- img244.gif
| | | |-- img245.gif
| | | |-- img246.gif
| | | |-- img247.gif
| | | |-- img248.gif
| | | |-- img249.gif
| | | |-- img25.gif
| | | |-- img250.gif
| | | |-- img251.gif
| | | |-- img252.gif
| | | |-- img253.gif
| | | |-- img254.gif
| | | |-- img255.gif
| | | |-- img256.gif
| | | |-- img257.gif
| | | |-- img258.gif
| | | |-- img259.gif
| | | |-- img26.gif
| | | |-- img260.gif
| | | |-- img261.gif
| | | |-- img262.gif
| | | |-- img263.gif
| | | |-- img264.gif
| | | |-- img265.gif
| | | |-- img266.gif
| | | |-- img267.gif
| | | |-- img268.gif
| | | |-- img269.gif
| | | |-- img27.gif
| | | |-- img270.gif
| | | |-- img271.gif
| | | |-- img272.gif
| | | |-- img273.gif
| | | |-- img274.gif
| | | |-- img275.gif
| | | |-- img276.gif
| | | |-- img277.gif
| | | |-- img278.gif
| | | |-- img279.gif
| | | |-- img28.gif
| | | |-- img280.gif
| | | |-- img281.gif
| | | |-- img282.gif
| | | |-- img283.gif
| | | |-- img284.gif
| | | |-- img285.gif
| | | |-- img286.gif
| | | |-- img287.gif
| | | |-- img288.gif
| | | |-- img289.gif
| | | |-- img29.gif
| | | |-- img290.gif
| | | |-- img291.gif
| | | |-- img292.gif
| | | |-- img293.gif
| | | |-- img294.gif
| | | |-- img295.gif
| | | |-- img296.gif
| | | |-- img297.gif
| | | |-- img298.gif
| | | |-- img299.gif
| | | |-- img3.gif
| | | |-- img30.gif
| | | |-- img300.gif
| | | |-- img301.gif
| | | |-- img302.gif
| | | |-- img303.gif
| | | |-- img304.gif
| | | |-- img305.gif
| | | |-- img306.gif
| | | |-- img307.gif
| | | |-- img308.gif
| | | |-- img309.gif
| | | |-- img31.gif
| | | |-- img310.gif
| | | |-- img311.gif
| | | |-- img312.gif
| | | |-- img313.gif
| | | |-- img314.gif
| | | |-- img315.gif
| | | |-- img316.gif
| | | |-- img317.gif
| | | |-- img318.gif
| | | |-- img319.gif
| | | |-- img32.gif
| | | |-- img320.gif
| | | |-- img33.gif
| | | |-- img34.gif
| | | |-- img35.gif
| | | |-- img36.gif
| | | |-- img37.gif
| | | |-- img38.gif
| | | |-- img39.gif
| | | |-- img4.gif
| | | |-- img40.gif
| | | |-- img41.gif
| | | |-- img42.gif
| | | |-- img43.gif
| | | |-- img44.gif
| | | |-- img45.gif
| | | |-- img46.gif
| | | |-- img47.gif
| | | |-- img48.gif
| | | |-- img49.gif
| | | |-- img5.gif
| | | |-- img50.gif
| | | |-- img51.gif
| | | |-- img52.gif
| | | |-- img53.gif
| | | |-- img54.gif
| | | |-- img55.gif
| | | |-- img56.gif
| | | |-- img57.gif
| | | |-- img58.gif
| | | |-- img59.gif
| | | |-- img6.gif
| | | |-- img60.gif
| | | |-- img61.gif
| | | |-- img62.gif
| | | |-- img63.gif
| | | |-- img64.gif
| | | |-- img65.gif
| | | |-- img66.gif
| | | |-- img67.gif
| | | |-- img68.gif
| | | |-- img69.gif
| | | |-- img7.gif
| | | |-- img70.gif
| | | |-- img71.gif
| | | |-- img72.gif
| | | |-- img73.gif
| | | |-- img74.gif
| | | |-- img75.gif
| | | |-- img76.gif
| | | |-- img77.gif
| | | |-- img78.gif
| | | |-- img79.gif
| | | |-- img8.gif
| | | |-- img80.gif
| | | |-- img81.gif
| | | |-- img82.gif
| | | |-- img83.gif
| | | |-- img84.gif
| | | |-- img85.gif
| | | |-- img86.gif
| | | |-- img87.gif
| | | |-- img88.gif
| | | |-- img89.gif
| | | |-- img9.gif
| | | |-- img90.gif
| | | |-- img91.gif
| | | |-- img92.gif
| | | |-- img93.gif
| | | |-- img94.gif
| | | |-- img95.gif
| | | |-- img96.gif
| | | |-- img97.gif
| | | |-- img98.gif
| | | |-- img99.gif
| | | |-- index_motif.gif
| | | |-- invis_anchor.xbm
| | | |-- labels.pl
| | | |-- linux.gif
| | | |-- next_group_motif.gif
| | | |-- next_group_motif_gr.gif
| | | |-- next_motif.gif
| | | |-- next_motif_gr.gif
| | | |-- node1.html
| | | |-- node10.html
| | | |-- node100.html
| | | |-- node101.html
| | | |-- node102.html
| | | |-- node103.html
| | | |-- node104.html
| | | |-- node105.html
| | | |-- node106.html
| | | |-- node107.html
| | | |-- node108.html
| | | |-- node109.html
| | | |-- node11.html
| | | |-- node110.html
| | | |-- node111.html
| | | |-- node112.html
| | | |-- node113.html
| | | |-- node114.html
| | | |-- node115.html
| | | |-- node116.html
| | | |-- node117.html
| | | |-- node118.html
| | | |-- node119.html
| | | |-- node12.html
| | | |-- node120.html
| | | |-- node121.html
| | | |-- node122.html
| | | |-- node123.html
| | | |-- node124.html
| | | |-- node125.html
| | | |-- node126.html
| | | |-- node127.html
| | | |-- node128.html
| | | |-- node129.html
| | | |-- node13.html
| | | |-- node130.html
| | | |-- node131.html
| | | |-- node132.html
| | | |-- node133.html
| | | |-- node134.html
| | | |-- node135.html
| | | |-- node136.html
| | | |-- node137.html
| | | |-- node138.html
| | | |-- node139.html
| | | |-- node14.html
| | | |-- node140.html
| | | |-- node141.html
| | | |-- node142.html
| | | |-- node143.html
| | | |-- node144.html
| | | |-- node145.html
| | | |-- node146.html
| | | |-- node147.html
| | | |-- node148.html
| | | |-- node149.html
| | | |-- node15.html
| | | |-- node150.html
| | | |-- node151.html
| | | |-- node152.html
| | | |-- node153.html
| | | |-- node154.html
| | | |-- node155.html
| | | |-- node156.html
| | | |-- node157.html
| | | |-- node158.html
| | | |-- node159.html
| | | |-- node16.html
| | | |-- node160.html
| | | |-- node161.html
| | | |-- node162.html
| | | |-- node163.html
| | | |-- node164.html
| | | |-- node165.html
| | | |-- node166.html
| | | |-- node167.html
| | | |-- node168.html
| | | |-- node169.html
| | | |-- node17.html
| | | |-- node170.html
| | | |-- node171.html
| | | |-- node172.html
| | | |-- node173.html
| | | |-- node174.html
| | | |-- node175.html
| | | |-- node176.html
| | | |-- node177.html
| | | |-- node178.html
| | | |-- node179.html
| | | |-- node18.html
| | | |-- node180.html
| | | |-- node181.html
| | | |-- node182.html
| | | |-- node183.html
| | | |-- node184.html
| | | |-- node185.html
| | | |-- node186.html
| | | |-- node187.html
| | | |-- node188.html
| | | |-- node189.html
| | | |-- node19.html
| | | |-- node190.html
| | | |-- node191.html
| | | |-- node192.html
| | | |-- node193.html
| | | |-- node194.html
| | | |-- node195.html
| | | |-- node196.html
| | | |-- node197.html
| | | |-- node198.html
| | | |-- node199.html
| | | |-- node2.html
| | | |-- node20.html
| | | |-- node200.html
| | | |-- node201.html
| | | |-- node202.html
| | | |-- node203.html
| | | |-- node204.html
| | | |-- node205.html
| | | |-- node206.html
| | | |-- node207.html
| | | |-- node208.html
| | | |-- node209.html
| | | |-- node21.html
| | | |-- node210.html
| | | |-- node211.html
| | | |-- node212.html
| | | |-- node213.html
| | | |-- node214.html
| | | |-- node215.html
| | | |-- node216.html
| | | |-- node217.html
| | | |-- node218.html
| | | |-- node219.html
| | | |-- node22.html
| | | |-- node220.html
| | | |-- node221.html
| | | |-- node222.html
| | | |-- node223.html
| | | |-- node224.html
| | | |-- node225.html
| | | |-- node226.html
| | | |-- node227.html
| | | |-- node228.html
| | | |-- node229.html
| | | |-- node23.html
| | | |-- node230.html
| | | |-- node231.html
| | | |-- node232.html
| | | |-- node233.html
| | | |-- node234.html
| | | |-- node235.html
| | | |-- node236.html
| | | |-- node237.html
| | | |-- node238.html
| | | |-- node239.html
| | | |-- node24.html
| | | |-- node240.html
| | | |-- node241.html
| | | |-- node242.html
| | | |-- node243.html
| | | |-- node244.html
| | | |-- node245.html
| | | |-- node246.html
| | | |-- node247.html
| | | |-- node248.html
| | | |-- node249.html
| | | |-- node25.html
| | | |-- node250.html
| | | |-- node251.html
| | | |-- node26.html
| | | |-- node27.html
| | | |-- node28.html
| | | |-- node29.html
| | | |-- node3.html
| | | |-- node30.html
| | | |-- node31.html
| | | |-- node32.html
| | | |-- node33.html
| | | |-- node34.html
| | | |-- node35.html
| | | |-- node36.html
| | | |-- node37.html
| | | |-- node38.html
| | | |-- node39.html
| | | |-- node4.html
| | | |-- node40.html
| | | |-- node41.html
| | | |-- node42.html
| | | |-- node43.html
| | | |-- node44.html
| | | |-- node45.html
| | | |-- node46.html
| | | |-- node47.html
| | | |-- node48.html
| | | |-- node49.html
| | | |-- node5.html
| | | |-- node50.html
| | | |-- node51.html
| | | |-- node52.html
| | | |-- node53.html
| | | |-- node54.html
| | | |-- node55.html
| | | |-- node56.html
| | | |-- node57.html
| | | |-- node58.html
| | | |-- node59.html
| | | |-- node6.html
| | | |-- node60.html
| | | |-- node61.html
| | | |-- node62.html
| | | |-- node63.html
| | | |-- node64.html
| | | |-- node65.html
| | | |-- node66.html
| | | |-- node67.html
| | | |-- node68.html
| | | |-- node69.html
| | | |-- node7.html
| | | |-- node70.html
| | | |-- node71.html
| | | |-- node72.html
| | | |-- node73.html
| | | |-- node74.html
| | | |-- node75.html
| | | |-- node76.html
| | | |-- node77.html
| | | |-- node78.html
| | | |-- node79.html
| | | |-- node8.html
| | | |-- node80.html
| | | |-- node81.html
| | | |-- node82.html
| | | |-- node83.html
| | | |-- node84.html
| | | |-- node85.html
| | | |-- node86.html
| | | |-- node87.html
| | | |-- node88.html
| | | |-- node89.html
| | | |-- node9.html
| | | |-- node90.html
| | | |-- node91.html
| | | |-- node92.html
| | | |-- node93.html
| | | |-- node94.html
| | | |-- node95.html
| | | |-- node96.html
| | | |-- node97.html
| | | |-- node98.html
| | | |-- node99.html
| | | |-- notes.html
| | | |-- previous_group_motif.gif
| | | |-- previous_group_motif_gr.gif
| | | |-- previous_motif.gif
| | | |-- previous_motif_gr.gif
| | | |-- up_motif.gif
| | | `-- up_motif_gr.gif
| | `-- rhcl_small.gif
| |-- TRANS.TBL
| |-- Users-Guide
| | |-- RHL-4.1-Users-Guide-HTML.tar.gz
| | |-- RHL-4.1-Users-Guide.a4.ps.gz
| | |-- RHL-4.1-Users-Guide.ps.gz
| | `-- TRANS.TBL
| |-- misc
| | |-- Boot-Process-Tips.txt
| | |-- CD-Type-HOWTO.txt
| | |-- Color-ls-Tips.txt
| | |-- Compile-Tips.txt
| | |-- Custom-X-Tips.txt
| | |-- FAQ -> RedHat-FAQ.txt
| | |-- FTP-Setup-Tips.txt
| | |-- Help-Tips.txt
| | |-- INN-Tips.txt
| | |-- NFS-Tips.txt
| | |-- NYS-Tips.txt
| | |-- PPP-Client-HOWTO.txt
| | |-- PPP-Tips.txt
| | |-- RPM-HOWTO.txt
| | |-- RPM-Tips.txt
| | |-- RedHat-FAQ.txt
| | |-- TRANS.TBL
| | |-- UUCP-Tips.txt
| | |-- WWW-Server-Tips.txt
| | `-- other-formats
| | |-- TRANS.TBL
| | |-- dvi
| | | |-- Boot-Process-Tips.dvi
| | | |-- CD-Type-HOWTO.dvi
| | | |-- Color-ls-Tips.dvi
| | | |-- Compile-Tips.dvi
| | | |-- Custom-X-Tips.dvi
| | | |-- FTP-Setup-Tips.dvi
| | | |-- Help-Tips.dvi
| | | |-- INN-Tips.dvi
| | | |-- NFS-Tips.dvi
| | | |-- NYS-Tips.dvi
| | | |-- PPP-Client-HOWTO.dvi
| | | |-- PPP-Tips.dvi
| | | |-- RPM-HOWTO.dvi
| | | |-- RPM-Tips.dvi
| | | |-- RedHat-FAQ.dvi
| | | |-- TRANS.TBL
| | | |-- UUCP-Tips.dvi
| | | `-- WWW-Server-Tips.dvi
| | |-- html.untarred
| | | |-- Boot-Process-Tips-1.html
| | | |-- Boot-Process-Tips-2.html
| | | |-- Boot-Process-Tips-3.html
| | | |-- Boot-Process-Tips.html
| | | |-- CD-Type-HOWTO-1.html
| | | |-- CD-Type-HOWTO-2.html
| | | |-- CD-Type-HOWTO-3.html
| | | |-- CD-Type-HOWTO-4.html
| | | |-- CD-Type-HOWTO-5.html
| | | |-- CD-Type-HOWTO-6.html
| | | |-- CD-Type-HOWTO-7.html
| | | |-- CD-Type-HOWTO-8.html
| | | |-- CD-Type-HOWTO-9.html
| | | |-- CD-Type-HOWTO.html
| | | |-- CD-Type-HOWTO.sgml.html
| | | |-- Color-ls-Tips.html
| | | |-- Compile-Tips.html
| | | |-- Custom-X-Tips.html
| | | |-- FTP-Setup-Tips.html
| | | |-- Help-Tips-1.html
| | | |-- Help-Tips-2.html
| | | |-- Help-Tips-3.html
| | | |-- Help-Tips-4.html
| | | |-- Help-Tips-5.html
| | | |-- Help-Tips-6.html
| | | |-- Help-Tips-7.html
| | | |-- Help-Tips.html
| | | |-- INN-Tips.html
| | | |-- NFS-Tips.html
| | | |-- NYS-Tips-1.html
| | | |-- NYS-Tips-2.html
| | | |-- NYS-Tips-3.html
| | | |-- NYS-Tips.html
| | | |-- PPP-Client-HOWTO-1.html
| | | |-- PPP-Client-HOWTO-10.html
| | | |-- PPP-Client-HOWTO-11.html
| | | |-- PPP-Client-HOWTO-12.html
| | | |-- PPP-Client-HOWTO-13.html
| | | |-- PPP-Client-HOWTO-14.html
| | | |-- PPP-Client-HOWTO-15.html
| | | |-- PPP-Client-HOWTO-16.html
| | | |-- PPP-Client-HOWTO-17.html
| | | |-- PPP-Client-HOWTO-18.html
| | | |-- PPP-Client-HOWTO-19.html
| | | |-- PPP-Client-HOWTO-2.html
| | | |-- PPP-Client-HOWTO-20.html
| | | |-- PPP-Client-HOWTO-21.html
| | | |-- PPP-Client-HOWTO-22.html
| | | |-- PPP-Client-HOWTO-23.html
| | | |-- PPP-Client-HOWTO-24.html
| | | |-- PPP-Client-HOWTO-3.html
| | | |-- PPP-Client-HOWTO-4.html
| | | |-- PPP-Client-HOWTO-5.html
| | | |-- PPP-Client-HOWTO-6.html
| | | |-- PPP-Client-HOWTO-7.html
| | | |-- PPP-Client-HOWTO-8.html
| | | |-- PPP-Client-HOWTO-9.html
| | | |-- PPP-Client-HOWTO.html
| | | |-- PPP-Tips.html
| | | |-- RH-2.0-Manual.sgml-1.html
| | | |-- RH-2.0-Manual.sgml-2.html
| | | |-- RH-2.0-Manual.sgml-3.html
| | | |-- RH-2.0-Manual.sgml-4.html
| | | |-- RH-2.0-Manual.sgml-5.html
| | | |-- RH-2.0-Manual.sgml-6.html
| | | |-- RH-2.0-Manual.sgml.html
| | | |-- RHCL-Installation-HOWTO.sgml-1.html
| | | |-- RHCL-Installation-HOWTO.sgml-2.html
| | | |-- RHCL-Installation-HOWTO.sgml-3.html
| | | |-- RHCL-Installation-HOWTO.sgml-4.html
| | | |-- RHCL-Installation-HOWTO.sgml-5.html
| | | |-- RHCL-Installation-HOWTO.sgml-6.html
| | | |-- RHCL-Installation-HOWTO.sgml-7.html
| | | |-- RHCL-Installation-HOWTO.sgml-8.html
| | | |-- RHCL-Installation-HOWTO.sgml-9.html
| | | |-- RHCL-Installation-HOWTO.sgml.html
| | | |-- RPM-HOWTO-1.html
| | | |-- RPM-HOWTO-2.html
| | | |-- RPM-HOWTO-3.html
| | | |-- RPM-HOWTO-4.html
| | | |-- RPM-HOWTO-5.html
| | | |-- RPM-HOWTO-6.html
| | | |-- RPM-HOWTO-7.html
| | | |-- RPM-HOWTO-8.html
| | | |-- RPM-HOWTO-9.html
| | | |-- RPM-HOWTO.html
| | | |-- RPM-HOWTO.sgml-1.html
| | | |-- RPM-HOWTO.sgml-2.html
| | | |-- RPM-HOWTO.sgml-3.html
| | | |-- RPM-HOWTO.sgml-4.html
| | | |-- RPM-HOWTO.sgml-5.html
| | | |-- RPM-HOWTO.sgml-6.html
| | | |-- RPM-HOWTO.sgml-7.html
| | | |-- RPM-HOWTO.sgml-8.html
| | | |-- RPM-HOWTO.sgml.html
| | | |-- RPM-Tips.html
| | | |-- RedHat-FAQ-1.html
| | | |-- RedHat-FAQ-2.html
| | | |-- RedHat-FAQ-3.html
| | | |-- RedHat-FAQ-4.html
| | | |-- RedHat-FAQ-5.html
| | | |-- RedHat-FAQ-6.html
| | | |-- RedHat-FAQ.html
| | | |-- RedHat-FAQ.sgml-1.html
| | | |-- RedHat-FAQ.sgml-2.html
| | | |-- RedHat-FAQ.sgml-3.html
| | | |-- RedHat-FAQ.sgml-4.html
| | | |-- RedHat-FAQ.sgml-5.html
| | | |-- RedHat-FAQ.sgml-6.html
| | | |-- RedHat-FAQ.sgml-7.html
| | | |-- RedHat-FAQ.sgml.html
| | | |-- RedHat-HOWTO-1.html
| | | |-- RedHat-HOWTO-2.html
| | | |-- RedHat-HOWTO-3.html
| | | |-- RedHat-HOWTO-4.html
| | | |-- RedHat-HOWTO-5.html
| | | |-- RedHat-HOWTO-6.html
| | | |-- RedHat-HOWTO-7.html
| | | |-- RedHat-HOWTO-8.html
| | | |-- RedHat-HOWTO.html
| | | |-- RedHat-HOWTO.sgml-1.html
| | | |-- RedHat-HOWTO.sgml-2.html
| | | |-- RedHat-HOWTO.sgml-3.html
| | | |-- RedHat-HOWTO.sgml-4.html
| | | |-- RedHat-HOWTO.sgml-5.html
| | | |-- RedHat-HOWTO.sgml-6.html
| | | |-- RedHat-HOWTO.sgml-7.html
| | | |-- RedHat-HOWTO.sgml-8.html
| | | |-- RedHat-HOWTO.sgml.html
| | | |-- SparcLinux-HOWTO-1.html
| | | |-- SparcLinux-HOWTO-2.html
| | | |-- SparcLinux-HOWTO-3.html
| | | |-- SparcLinux-HOWTO-4.html
| | | |-- SparcLinux-HOWTO-5.html
| | | |-- SparcLinux-HOWTO-6.html
| | | |-- SparcLinux-HOWTO.html
| | | |-- SparcLinux-HOWTO.sgml.html
| | | |-- TRANS.TBL
| | | |-- Test-HOWTO-1.html
| | | |-- Test-HOWTO.html
| | | |-- UUCP-Tips-1.html
| | | |-- UUCP-Tips-2.html
| | | |-- UUCP-Tips-3.html
| | | |-- UUCP-Tips-4.html
| | | |-- UUCP-Tips-5.html
| | | |-- UUCP-Tips-6.html
| | | |-- UUCP-Tips.html
| | | |-- WWW-Server-Tips.html
| | | `-- tar.gz
| | | |-- Boot-Process-Tips.html.tar.gz
| | | |-- CD-Type-HOWTO.html.tar.gz
| | | |-- Color-ls-Tips.html.tar.gz
| | | |-- Compile-Tips.html.tar.gz
| | | |-- Custom-X-Tips.html.tar.gz
| | | |-- FTP-Setup-Tips.html.tar.gz
| | | |-- Help-Tips.html.tar.gz
| | | |-- INN-Tips.html.tar.gz
| | | |-- NFS-Tips.html.tar.gz
| | | |-- NYS-Tips.html.tar.gz
| | | |-- PPP-Client-HOWTO.html.tar.gz
| | | |-- PPP-Tips.html.tar.gz
| | | |-- RPM-HOWTO.html.tar.gz
| | | |-- RPM-Tips.html.tar.gz
| | | |-- RedHat-FAQ.html.tar.gz
| | | |-- TRANS.TBL
| | | |-- UUCP-Tips.html.tar.gz
| | | `-- WWW-Server-Tips.html.tar.gz
| | `-- ps
| | |-- Boot-Process-Tips.ps
| | |-- CD-Type-HOWTO.ps
| | |-- Color-ls-Tips.ps
| | |-- Compile-Tips.ps
| | |-- Custom-X-Tips.ps
| | |-- FTP-Setup-Tips.ps
| | |-- Help-Tips.ps
| | |-- INN-Tips.ps
| | |-- NFS-Tips.ps
| | |-- NYS-Tips.ps
| | |-- PPP-Client-HOWTO.ps
| | |-- PPP-Tips.ps
| | |-- RPM-HOWTO.ps
| | |-- RPM-Tips.ps
| | |-- RedHat-FAQ.ps
| | |-- TRANS.TBL
| | |-- UUCP-Tips.ps
| | `-- WWW-Server-Tips.ps
| `-- redhat-digest
| |-- TRANS.TBL
| |-- volume95
| | |-- TRANS.TBL
| | |-- issue-1.gz
| | |-- issue-10.gz
| | |-- issue-100.gz
| | |-- issue-101.gz
| | |-- issue-102.gz
| | |-- issue-103.gz
| | |-- issue-104.gz
| | |-- issue-105.gz
| | |-- issue-106.gz
| | |-- issue-107.gz
| | |-- issue-108.gz
| | |-- issue-109.gz
| | |-- issue-11.gz
| | |-- issue-110.gz
| | |-- issue-111.gz
| | |-- issue-112.gz
| | |-- issue-113.gz
| | |-- issue-114.gz
| | |-- issue-115.gz
| | |-- issue-116.gz
| | |-- issue-117.gz
| | |-- issue-118.gz
| | |-- issue-119.gz
| | |-- issue-12.gz
| | |-- issue-120.gz
| | |-- issue-121.gz
| | |-- issue-122.gz
| | |-- issue-123.gz
| | |-- issue-124.gz
| | |-- issue-125.gz
| | |-- issue-126.gz
| | |-- issue-127.gz
| | |-- issue-128.gz
| | |-- issue-129.gz
| | |-- issue-13.gz
| | |-- issue-130.gz
| | |-- issue-131.gz
| | |-- issue-132.gz
| | |-- issue-133.gz
| | |-- issue-134.gz
| | |-- issue-135.gz
| | |-- issue-136.gz
| | |-- issue-137.gz
| | |-- issue-138.gz
| | |-- issue-139.gz
| | |-- issue-14.gz
| | |-- issue-140.gz
| | |-- issue-141.gz
| | |-- issue-142.gz
| | |-- issue-143.gz
| | |-- issue-144.gz
| | |-- issue-145.gz
| | |-- issue-146.gz
| | |-- issue-147.gz
| | |-- issue-148.gz
| | |-- issue-149.gz
| | |-- issue-15.gz
| | |-- issue-150.gz
| | |-- issue-151.gz
| | |-- issue-152.gz
| | |-- issue-153.gz
| | |-- issue-154.gz
| | |-- issue-155.gz
| | |-- issue-156.gz
| | |-- issue-157.gz
| | |-- issue-158.gz
| | |-- issue-159.gz
| | |-- issue-16.gz
| | |-- issue-160.gz
| | |-- issue-161.gz
| | |-- issue-162.gz
| | |-- issue-163.gz
| | |-- issue-164.gz
| | |-- issue-165.gz
| | |-- issue-166.gz
| | |-- issue-167.gz
| | |-- issue-168.gz
| | |-- issue-169.gz
| | |-- issue-17.gz
| | |-- issue-170.gz
| | |-- issue-171.gz
| | |-- issue-18.gz
| | |-- issue-19.gz
| | |-- issue-2.gz
| | |-- issue-20.gz
| | |-- issue-21.gz
| | |-- issue-22.gz
| | |-- issue-23.gz
| | |-- issue-24.gz
| | |-- issue-25.gz
| | |-- issue-26.gz
| | |-- issue-27.gz
| | |-- issue-28.gz
| | |-- issue-29.gz
| | |-- issue-3.gz
| | |-- issue-30.gz
| | |-- issue-31.gz
| | |-- issue-32.gz
| | |-- issue-33.gz
| | |-- issue-34.gz
| | |-- issue-35.gz
| | |-- issue-36.gz
| | |-- issue-37.gz
| | |-- issue-38.gz
| | |-- issue-39.gz
| | |-- issue-4.gz
| | |-- issue-40.gz
| | |-- issue-41.gz
| | |-- issue-42.gz
| | |-- issue-43.gz
| | |-- issue-44.gz
| | |-- issue-45.gz
| | |-- issue-46.gz
| | |-- issue-47.gz
| | |-- issue-48.gz
| | |-- issue-49.gz
| | |-- issue-5.gz
| | |-- issue-50.gz
| | |-- issue-51.gz
| | |-- issue-52.gz
| | |-- issue-53.gz
| | |-- issue-54.gz
| | |-- issue-55.gz
| | |-- issue-56.gz
| | |-- issue-57.gz
| | |-- issue-58.gz
| | |-- issue-59.gz
| | |-- issue-6.gz
| | |-- issue-60.gz
| | |-- issue-61.gz
| | |-- issue-62.gz
| | |-- issue-63.gz
| | |-- issue-64.gz
| | |-- issue-65.gz
| | |-- issue-66.gz
| | |-- issue-67.gz
| | |-- issue-68.gz
| | |-- issue-69.gz
| | |-- issue-7.gz
| | |-- issue-70.gz
| | |-- issue-71.gz
| | |-- issue-72.gz
| | |-- issue-73.gz
| | |-- issue-74.gz
| | |-- issue-75.gz
| | |-- issue-76.gz
| | |-- issue-77.gz
| | |-- issue-78.gz
| | |-- issue-79.gz
| | |-- issue-8.gz
| | |-- issue-80.gz
| | |-- issue-81.gz
| | |-- issue-82.gz
| | |-- issue-83.gz
| | |-- issue-84.gz
| | |-- issue-85.gz
| | |-- issue-86.gz
| | |-- issue-87.gz
| | |-- issue-88.gz
| | |-- issue-89.gz
| | |-- issue-9.gz
| | |-- issue-90.gz
| | |-- issue-91.gz
| | |-- issue-92.gz
| | |-- issue-93.gz
| | |-- issue-94.gz
| | |-- issue-95.gz
| | |-- issue-96.gz
| | |-- issue-97.gz
| | |-- issue-98.gz
| | `-- issue-99.gz
| `-- volume96
| |-- TRANS.TBL
| |-- issue-1.gz
| |-- issue-10.gz
| |-- issue-100.gz
| |-- issue-101.gz
| |-- issue-102.gz
| |-- issue-103.gz
| |-- issue-104.gz
| |-- issue-105.gz
| |-- issue-106.gz
| |-- issue-107.gz
| |-- issue-108.gz
| |-- issue-109.gz
| |-- issue-11.gz
| |-- issue-110.gz
| |-- issue-111.gz
| |-- issue-112.gz
| |-- issue-113.gz
| |-- issue-114.gz
| |-- issue-115.gz
| |-- issue-116.gz
| |-- issue-117.gz
| |-- issue-118.gz
| |-- issue-119.gz
| |-- issue-12.gz
| |-- issue-120.gz
| |-- issue-121.gz
| |-- issue-122.gz
| |-- issue-123.gz
| |-- issue-124.gz
| |-- issue-125.gz
| |-- issue-126.gz
| |-- issue-127.gz
| |-- issue-128.gz
| |-- issue-129.gz
| |-- issue-13.gz
| |-- issue-130.gz
| |-- issue-131.gz
| |-- issue-132.gz
| |-- issue-133.gz
| |-- issue-134.gz
| |-- issue-135.gz
| |-- issue-136.gz
| |-- issue-137.gz
| |-- issue-138.gz
| |-- issue-139.gz
| |-- issue-14.gz
| |-- issue-140.gz
| |-- issue-141.gz
| |-- issue-142.gz
| |-- issue-143.gz
| |-- issue-144.gz
| |-- issue-145.gz
| |-- issue-146.gz
| |-- issue-147.gz
| |-- issue-148.gz
| |-- issue-149.gz
| |-- issue-15.gz
| |-- issue-150.gz
| |-- issue-151.gz
| |-- issue-152.gz
| |-- issue-153.gz
| |-- issue-154.gz
| |-- issue-155.gz
| |-- issue-156.gz
| |-- issue-157.gz
| |-- issue-158.gz
| |-- issue-159.gz
| |-- issue-16.gz
| |-- issue-160.gz
| |-- issue-161.gz
| |-- issue-162.gz
| |-- issue-163.gz
| |-- issue-164.gz
| |-- issue-165.gz
| |-- issue-166.gz
| |-- issue-167.gz
| |-- issue-168.gz
| |-- issue-169.gz
| |-- issue-17.gz
| |-- issue-170.gz
| |-- issue-171.gz
| |-- issue-172.gz
| |-- issue-173.gz
| |-- issue-174.gz
| |-- issue-175.gz
| |-- issue-176.gz
| |-- issue-177.gz
| |-- issue-178.gz
| |-- issue-179.gz
| |-- issue-18.gz
| |-- issue-180.gz
| |-- issue-181.gz
| |-- issue-182.gz
| |-- issue-183.gz
| |-- issue-184.gz
| |-- issue-185.gz
| |-- issue-186.gz
| |-- issue-187.gz
| |-- issue-188.gz
| |-- issue-189.gz
| |-- issue-19.gz
| |-- issue-190.gz
| |-- issue-191.gz
| |-- issue-192.gz
| |-- issue-2.gz
| |-- issue-20.gz
| |-- issue-21.gz
| |-- issue-22.gz
| |-- issue-23.gz
| |-- issue-24.gz
| |-- issue-25.gz
| |-- issue-26.gz
| |-- issue-27.gz
| |-- issue-28.gz
| |-- issue-29.gz
| |-- issue-3.gz
| |-- issue-30.gz
| |-- issue-31.gz
| |-- issue-32.gz
| |-- issue-33.gz
| |-- issue-34.gz
| |-- issue-35.gz
| |-- issue-36.gz
| |-- issue-37.gz
| |-- issue-38.gz
| |-- issue-39.gz
| |-- issue-4.gz
| |-- issue-40.gz
| |-- issue-41.gz
| |-- issue-42.gz
| |-- issue-43.gz
| |-- issue-44.gz
| |-- issue-45.gz
| |-- issue-46.gz
| |-- issue-47.gz
| |-- issue-48.gz
| |-- issue-49.gz
| |-- issue-5.gz
| |-- issue-50.gz
| |-- issue-51.gz
| |-- issue-52.gz
| |-- issue-53.gz
| |-- issue-54.gz
| |-- issue-55.gz
| |-- issue-56.gz
| |-- issue-57.gz
| |-- issue-58.gz
| |-- issue-59.gz
| |-- issue-6.gz
| |-- issue-60.gz
| |-- issue-61.gz
| |-- issue-62.gz
| |-- issue-63.gz
| |-- issue-64.gz
| |-- issue-65.gz
| |-- issue-66.gz
| |-- issue-67.gz
| |-- issue-68.gz
| |-- issue-69.gz
| |-- issue-7.gz
| |-- issue-70.gz
| |-- issue-71.gz
| |-- issue-72.gz
| |-- issue-73.gz
| |-- issue-74.gz
| |-- issue-75.gz
| |-- issue-76.gz
| |-- issue-77.gz
| |-- issue-78.gz
| |-- issue-79.gz
| |-- issue-8.gz
| |-- issue-80.gz
| |-- issue-81.gz
| |-- issue-82.gz
| |-- issue-83.gz
| |-- issue-84.gz
| |-- issue-85.gz
| |-- issue-86.gz
| |-- issue-87.gz
| |-- issue-88.gz
| |-- issue-89.gz
| |-- issue-9.gz
| |-- issue-90.gz
| |-- issue-91.gz
| |-- issue-92.gz
| |-- issue-93.gz
| |-- issue-94.gz
| |-- issue-95.gz
| |-- issue-96.gz
| |-- issue-97.gz
| |-- issue-98.gz
| `-- issue-99.gz
|-- dosutils
| |-- TRANS.TBL
| |-- autoboot
| | |-- TRANS.TBL
| | |-- initrd.img
| | |-- kernel-2.013
| | `-- vmlinuz
| |-- autoboot.bat
| |-- copying
| |-- dos2unix
| | |-- TRANS.TBL
| | |-- dos2unix.c
| | |-- dos2unix.com
| | |-- dos2unix.msg
| | |-- file_id.diz
| | |-- makefile.msc
| | |-- makefile.unx
| | |-- makefile.ztc
| | |-- unix2dos.c
| | `-- unix2dos.com
| |-- fips.15
| | |-- TRANS.TBL
| | |-- copying
| | |-- errors.txt
| | |-- fips.doc
| | |-- fips.exe
| | |-- fips.faq
| | |-- fips15.zip
| | |-- history.txt
| | |-- manuelfr.txt
| | |-- readme.1st
| | |-- restorrb
| | | |-- TRANS.TBL
| | | |-- restorrb.c
| | | |-- rtypes.h
| | | `-- rversion.h
| | |-- restorrb.exe
| | |-- source
| | | |-- TRANS.TBL
| | | |-- calculat.cpp
| | | |-- check.cpp
| | | |-- cmdl_arg.cpp
| | | |-- disk_io.cpp
| | | |-- disk_io.h
| | | |-- fat.cpp
| | | |-- fat.h
| | | |-- fipsspec.cpp
| | | |-- fipsspec.h
| | | |-- getopt.c
| | | |-- getopt.h
| | | |-- global.cpp
| | | |-- global.h
| | | |-- hdstruct.cpp
| | | |-- hdstruct.h
| | | |-- host_os.cpp
| | | |-- host_os.h
| | | |-- input.cpp
| | | |-- input.h
| | | |-- logdr_st.cpp
| | | |-- logdr_st.h
| | | |-- main.cpp
| | | |-- primpart.h
| | | |-- save.cpp
| | | |-- types.h
| | | `-- version.h
| | |-- special.doc
| | `-- techinfo.txt
| |-- gzip124
| | |-- TRANS.TBL
| | |-- copying
| | |-- file_id.diz
| | |-- gzip.doc
| | |-- gzip.exe
| | |-- gzip386.exe
| | |-- readme
| | `-- readme.dos
| |-- loadlin.exe
| |-- lodlin16
| | |-- TRANS.TBL
| | |-- copying
| | |-- doc
| | | |-- TRANS.TBL
| | | |-- announce.txt
| | | |-- changes
| | | |-- initrd.txt
| | | |-- lodlin16.lsm
| | | |-- manual.txt
| | | |-- params.doc
| | | `-- quicksta.rt
| | |-- doc.fr
| | | |-- TRANS.TBL
| | | |-- initrd.txt
| | | |-- manuel.txt
| | | `-- params.doc
| | |-- files
| | |-- initrd
| | | |-- TRANS.TBL
| | | |-- freeramd.c
| | | |-- linuxrc.c
| | | |-- makefile
| | | `-- mkdisk
| | |-- initrd.tgz
| | |-- initrd.txt
| | |-- linux.bat
| | |-- loadlin.exe
| | |-- manuel.txt
| | |-- params.doc
| | |-- readme.1st
| | |-- src
| | | |-- TRANS.TBL
| | | |-- loadlin.asm
| | | |-- loadlina.asm
| | | |-- loadlini.asm
| | | |-- loadlinj.asm
| | | |-- loadlinm.asm
| | | |-- makefile
| | | |-- pgadjust.asm
| | | |-- srclinux
| | | | |-- TRANS.TBL
| | | | |-- loadlinh.s
| | | | |-- makefile
| | | | `-- pgadjust.c
| | | `-- srclinux.tgz
| | `-- test.par
| |-- rawrite3
| | |-- TRANS.TBL
| | |-- rawrite.exe
| | `-- rawrite3.doc
| |-- rdev
| | |-- TRANS.TBL
| | `-- rdev.exe
| |-- readme
| |-- restorrb
| | |-- TRANS.TBL
| | `-- restorrb.exe
| |-- tar320c
| | |-- TRANS.TBL
| | |-- file_id.diz
| | |-- license.txt
| | |-- read.me
| | |-- sources
| | | |-- !compile.bat
| | | |-- TRANS.TBL
| | | |-- aspi.c
| | | |-- aspient.asm
| | | |-- bits.c
| | | |-- compress.c
| | | |-- compress.h
| | | |-- crc32.c
| | | |-- crc32.h
| | | |-- cthandle.asm
| | | |-- ctquirks.asm
| | | |-- define.h
| | | |-- deflate.c
| | | |-- disk.c
| | | |-- diszip.c
| | | |-- extract.c
| | | |-- farnear.inc
| | | |-- fmatch.c
| | | |-- lzpack.c
| | | |-- lzpack.h
| | | |-- lzwbits.h
| | | |-- lzwhead.h
| | | |-- makefile
| | | |-- makefile.ix
| | | |-- match.asm
| | | |-- match.s
| | | |-- modern.h
| | | |-- nodedef.h
| | | |-- pclevel.asm
| | | |-- pctimer.asm
| | | |-- pctimer.h
| | | |-- percent.c
| | | |-- qic02.h
| | | |-- qicface.c
| | | |-- readopt.c
| | | |-- restore.c
| | | |-- roll.c
| | | |-- roll.h
| | | |-- savefile.c
| | | |-- stdinc.h
| | | |-- store.c
| | | |-- streamer.c
| | | |-- sysup.h
| | | |-- tape.c
| | | |-- tar.c
| | | |-- tar.prj
| | | |-- trees.c
| | | |-- unlzw.c
| | | |-- zalloc.h
| | | |-- zipdefs.h
| | | |-- ziperror.c
| | | |-- zipguts.h
| | | |-- ziposcod.h
| | | |-- zippipe.c
| | | `-- zippipe.h
| | |-- tar.exe
| | |-- tar.txt
| | `-- to.do
| `-- unz512x3
| |-- TRANS.TBL
| |-- copying
| |-- file_id.diz
| |-- funzip.doc
| |-- funzip.exe
| |-- readme
| |-- readme.dos
| |-- unzip.doc
| |-- unzip.exe
| |-- unzip386.exe
| |-- unzipsfx.doc
| |-- unzipsfx.exe
| |-- where
| `-- zipinfo.doc
|-- images
| |-- TRANS.TBL
| |-- boot.img
| |-- other
| | |-- README.FlashPoint
| | |-- TRANS.TBL
| | `-- bootFlashPoint.img
| `-- supp.img
|-- install.bat
|-- ls-lR
|-- man-rh41.txt
|-- misc
| |-- TRANS.TBL
| |-- boot
| | |-- TRANS.TBL
| | |-- autoboot.img
| | `-- boot.cat
| `-- src
| |-- TRANS.TBL
| |-- init
| | |-- Makefile
| | |-- TRANS.TBL
| | |-- init
| | |-- init.c
| | `-- init.o
| |-- install
| | |-- .depend
| | |-- Makefile
| | |-- TRANS.TBL
| | |-- bootp.h
| | |-- bootpc.c
| | |-- bootpc.h
| | |-- bootpc.o
| | |-- bptypes.h
| | |-- cdrom.c
| | |-- cdrom.o
| | |-- commands.c
| | |-- commands.h
| | |-- commands.o
| | |-- config.c
| | |-- config.h
| | |-- config.o
| | |-- debug.log
| | |-- devices.c
| | |-- devices.c.ewt
| | |-- devices.h
| | |-- devices.o
| | |-- dmphdlist
| | |-- dmphdlist.c
| | |-- doit.c
| | |-- doit.h
| | |-- doit.o
| | |-- earlymethods.c
| | |-- earlymethods.o
| | |-- entry.c
| | |-- entry.o
| | |-- fs.c
| | |-- fs.h
| | |-- fs.o
| | |-- ftp.c
| | |-- ftp.h
| | |-- ftp.o
| | |-- genhdlist
| | |-- genhdlist.c
| | |-- hash.c
| | |-- hash.h
| | |-- hash.o
| | |-- hd.c
| | |-- hd.h
| | |-- hd.o
| | |-- inet_aton.h
| | |-- install
| | |-- install.c
| | |-- install.h
| | |-- install.o
| | |-- install2
| | |-- install2.c
| | |-- install2.o
| | |-- kernel.c
| | |-- kernel.h
| | |-- latemethods.c
| | |-- latemethods.o
| | |-- lilo.c
| | |-- lilo.h
| | |-- lilo.o
| | |-- log.c
| | |-- log.h
| | |-- log.o
| | |-- methods.h
| | |-- mkswap.c
| | |-- mkswap.h
| | |-- mkswap.o
| | |-- modules.c
| | |-- mono.c
| | |-- mono.h
| | |-- mono.o
| | |-- mount.h
| | |-- mount.x
| | |-- mount_clnt.c
| | |-- mount_svc.c
| | |-- mount_xdr.c
| | |-- mount_xdr.o
| | |-- mtab.c
| | |-- mtab.o
| | |-- net.c
| | |-- net.h
| | |-- net.o
| | |-- nfsmount.c
| | |-- nfsmount.o
| | |-- perror.c
| | |-- perror.h
| | |-- perror.o
| | |-- pkgs.c
| | |-- pkgs.h
| | |-- pkgs.o
| | |-- run.c
| | |-- run.h
| | |-- run.o
| | |-- scsi.c
| | |-- scsi.h
| | |-- scsi.o
| | |-- upgrade.c
| | |-- upgrade.h
| | |-- upgrade.o
| | |-- windows.c
| | |-- windows.h
| | `-- windows.o
| |-- trees
| | |-- TRANS.TBL
| | |-- boot1
| | | |-- TRANS.TBL
| | | |-- boot
| | | | |-- TRANS.TBL
| | | | |-- boot.0200
| | | | |-- boot.b
| | | | `-- map
| | | |-- dev
| | | | |-- TRANS.TBL
| | | | `-- fd0
| | | |-- etc
| | | | |-- TRANS.TBL
| | | | |-- boot.msg
| | | | |-- lilo.conf
| | | | `-- mtab -> /proc/mounts
| | | `-- vmlinuz
| | |-- boot1.img
| | |-- boot2
| | | |-- .profile
| | | |-- TRANS.TBL
| | | |-- bin -> sbin
| | | |-- dev
| | | | |-- TRANS.TBL
| | | | |-- console
| | | | |-- null
| | | | |-- ram
| | | | |-- systty
| | | | |-- tty1
| | | | |-- tty2
| | | | |-- tty3
| | | | |-- tty4
| | | | `-- tty5
| | | |-- etc
| | | | |-- TRANS.TBL
| | | | |-- ld.so.cache
| | | | |-- nsswitch.conf
| | | | `-- pcmcia
| | | | |-- TRANS.TBL
| | | | |-- config
| | | | |-- network
| | | | |-- pcmem
| | | | |-- scsi
| | | | `-- serial
| | | |-- linuxrc -> /sbin/init
| | | |-- modules
| | | | |-- 3c501.o
| | | | |-- 3c503.o
| | | | |-- 3c509.o
| | | | |-- 3c59x.o
| | | | |-- 53c7,8xx.o
| | | | |-- 8390.o
| | | | |-- BusLogic.o
| | | | |-- NCR53c406a.o
| | | | |-- TRANS.TBL
| | | | |-- advansys.o
| | | | |-- aha152x.o
| | | | |-- aha1542.o
| | | | |-- aha1740.o
| | | | |-- aic7xxx.o
| | | | |-- apricot.o
| | | | |-- arcnet.o
| | | | |-- aztcd.o
| | | | |-- bpcd.o
| | | | |-- cdrom.o
| | | | |-- cdu31a.o
| | | | |-- cm206.o
| | | | |-- de4x5.o
| | | | |--=20de600.o
| | | | |-- de620.o
| | | | |-- depca.o
| | | | |-- dtc.o
| | | | |-- e2100.o
| | | | |-- eata_dma.o
| | | | |-- eata_pio.o
| | | | |-- eexpress.o
| | | | |-- ewrk3.o
| | | | |-- fdomain.o
| | | | |-- g_NCR5380.o
| | | | |-- gscd.o
| | | | |-- hp-plus.o
| | | | |-- hp.o
| | | | |-- hp100.o
| | | | |-- ibmtr.o
| | | | |-- in2000.o
| | | | |-- isp16.o
| | | | |-- loop.o
| | | | |-- mcd.o
| | | | |-- mcdx.o
| | | | |-- ncr53c8xx.o
| | | | |-- ne.o
| | | | |-- optcd.o
| | | | |-- pas16.o
| | | | |-- plip.o
| | | | |-- ppa.o
| | | | |-- qlogicfas.o
| | | | |-- qlogicisp.o
| | | | |-- sbpcd.o
| | | | |-- seagate.o
| | | | |-- sjcd.o
| | | | |-- smc-ultra.o
| | | | |-- smc9194.o
| | | | |-- sonycd535.o
| | | | |-- t128.o
| | | | |-- tulip.o
| | | | |-- u14-34f.o
| | | | |-- ultrastor.o
| | | | |-- wd.o
| | | | `-- wd7000.o
| | | |-- proc
| | | | `-- TRANS.TBL
| | | |-- sbin
| | | | |-- TRANS.TBL
| | | | |-- e2fsck
| | | | |-- init
| | | | |-- insmod
| | | | |-- install
| | | | `-- rmmod -> insmod
| | | |-- tmp
| | | | `-- TRANS.TBL
| | | `-- usr
| | | |-- TRANS.TBL
| | | `-- lib
| | | |-- TRANS.TBL
| | | |-- rpmrc
| | | `-- terminfo
| | | |-- TRANS.TBL
| | | `-- l
| | | |-- TRANS.TBL
| | | `-- linux
| | |-- boot2.img
| | |-- boot2.img.back
| | |-- boot2.img.gz
| | |-- boot2.img.nogz
| | |-- debug.log
| | |-- mkboot1
| | |-- mkboot2
| | |-- mkskel
| | |-- mksupp
| | |-- pcmcia
| | | |-- TRANS.TBL
| | | |-- etc
| | | | |-- TRANS.TBL
| | | | `-- pcmcia
| | | | |-- TRANS.TBL
| | | | |-- config
| | | | |-- config.opts
| | | | |-- fixed
| | | | |-- fixed.opts
| | | | |-- network
| | | | |-- scsi
| | | | `-- scsi.opts
| | | |-- lib
| | | | |-- TRANS.TBL
| | | | `-- modules
| | | | |-- 2.0.27
| | | | | |-- TRANS.TBL
| | | | | `-- pcmcia
| | | | | |-- 3c589_cs.o
| | | | | |-- TRANS.TBL
| | | | | |-- aha152x_cs.o
| | | | | |-- ds.o
| | | | | |-- fdomain_cs.o
| | | | | |-- fixed_cs.o
| | | | | |-- fmvj18x_cs.o
| | | | | |-- ftl_cs.o
| | | | | |-- i82365.o
| | | | | |-- ibmtr_cs.o
| | | | | |-- iflash2+_mtd.o
| | | | | |-- iflash2_mtd.o
| | | | | |-- memory_cs.o
| | | | | |-- nmclan_cs.o
| | | | | |-- pcmcia_core.o
| | | | | |-- pcmem_cs.o
| | | | | |-- pcnet_cs.o
| | | | | |-- qlogic_cs.o
| | | | | |-- serial_cs.o
| | | | | |-- smc91c92_cs.o
| | | | | |-- sram_mtd.o
| | | | | |-- tcic.o
| | | | | |-- wavelan_cs.o
| | | | | `-- xircnw_cs.o
| | | | `-- TRANS.TBL
| | | `-- sbin
| | | |-- TRANS.TBL
| | | |-- cardmgr
| | | `-- probe
| | |-- skeleton
| | | |-- TRANS.TBL
| | | |-- bin
| | | | |-- TRANS.TBL
| | | | |-- awk -> gawk
| | | | |-- bash
| | | | |-- cp
| | | | |-- cpio
| | | | |-- gawk
| | | | |-- gunzip -> gzip
| | | | |-- gzip
| | | | |-- hostname
| | | | |-- ln
| | | | |-- mv
| | | | |-- rm
| | | | |-- sed
| | | | |-- sh -> bash
| | | | `-- uname
| | | |-- dev
| | | | |-- TRANS.TBL
| | | | |-- null
| | | | `-- zero
| | | |-- etc
| | | | |-- TRANS.TBL
| | | | |-- ld.so.cache
| | | | |-- ld.so.conf
| | | | `-- mtab
| | | |-- lib
| | | | |-- TRANS.TBL
| | | | |-- ld-linux.so.1 -> ld-linux.so.1.7.14
| | | | |-- ld-linux.so.1.7.14
| | | | |-- ld.so -> ld.so.1.7.14
| | | | |-- ld.so.1.7.14
| | | | |-- libc.so.5 -> libc.so.5.3.12
| | | | |-- libc.so.5.3.12
| | | | |-- libm.so.5 -> libm.so.5.0.6
| | | | |-- libm.so.5.0.6
| | | | |-- libtermcap.so.2 -> libtermcap.so.2.0.5
| | | | `-- libtermcap.so.2.0.5
| | | |-- sbin
| | | | |-- TRANS.TBL
| | | | `-- ldconfig
| | | `-- usr
| | | |-- TRANS.TBL
| | | `-- bin
| | | |-- TRANS.TBL
| | | |-- egrep
| | | |-- grep
| | | `-- md5sum
| | |-- supp
| | | |-- TRANS.TBL
| | | |-- lib
| | | | |-- TRANS.TBL
| | | | |-- ld-linux.so.1
| | | | |-- ld-linux.so.1.7.14
| | | | |-- ld-linux.so.1.8.5
| | | | |-- libc.so.5 -> libc.so.5.3.12
| | | | |-- libc.so.5.3.12
| | | | |-- libcom_err.so -> /lib/libcom_err.so.2.0
| | | | |-- libcom_err.so.2 -> libcom_err.so.2.0
| | | | |-- libcom_err.so.2.0
| | | | |-- libe2p.so.2 -> libe2p.so.2.1
| | | | |-- libe2p.so.2.1
| | | | |-- libext2fs.so.2 -> libext2fs.so.2.0
| | | | |-- libext2fs.so.2.0
| | | | `-- modules -> /tmp
| | | |-- pcmcia.cgz
| | | `-- usr
| | | |-- TRANS.TBL
| | | `-- bin
| | | |-- TRANS.TBL
| | | |-- ash
| | | |-- badblocks
| | | |-- cpio
| | | |-- fdisk
| | | |-- gunzip -> gzip
| | | |-- gzip
| | | |-- insmod
| | | |-- install2
| | | |-- ls
| | | |-- mke2fs
| | | |-- open
| | | |-- runinstall2
| | | `-- sh -> ash
| | |-- updboots
| | `-- updsupp
| `-- upgrade
| |-- Makefile
| |-- TRANS.TBL
| |-- hash.c
| |-- hash.h
| |-- mkugdb.c
| `-- upgrade.c
`-- updates
|-- 00README.errata
|-- SRPMS
| |-- NetKit-B-0.09-1.src.rpm
| |-- TRANS.TBL
| |-- XFree86-3.2-5.src.rpm
| |-- adduser-1.3-1.src.rpm
| |-- amd-920824upl102-8.src.rpm
| |-- apache-1.1.3-3.src.rpm
| |-- bind-4.9.5p1-1.src.rpm
| |-- cmu-snmp-3.3-1.src.rpm
| |-- dosemu-0.64.1-3.src.rpm
| |-- efax-0.8a-2.src.rpm
| |-- gdb-4.16-6.src.rpm
| |-- glibc-0.961212-4.src.rpm
| |-- imap-4.1.BETA-3.src.rpm
| |-- initscripts-2.91-1.src.rpm
| |-- inn-1.5.1-6.src.rpm
| |-- jed-0.97.14-4.src.rpm
| |-- ld.so-sparc-1.8.3-3.src.rpm
| |-- logrotate-2.1-1.src.rpm
| |-- lpr-0.14-2.src.rpm
| |-- netcfg-2.15-1.src.rpm
| |-- printtool-3.0-14.src.rpm
| |-- python-1.4-4.src.rpm
| |-- pythonlib-1.16-1.src.rpm
| |-- rpm-2.3.2-1.src.rpm
| |-- rxvt-2.19-2.src.rpm
| |-- samba-1.9.16p9-8.src.rpm
| |-- screen-3.7.1-4.src.rpm
| |-- sendmail-8.8.5-2.src.rpm
| |-- sliplogin-2.1.0-6.src.rpm
| |-- tetex-0.4pl6-1.src.rpm
| |-- timeconfig-1.7-1.src.rpm
| |-- tmpwatch-1.1-2.src.rpm
| |-- usercfg-3.3-1.src.rpm
| |-- util-linux-2.5-34.src.rpm
| |-- wu-ftpd-2.4.2b12-4.src.rpm
| `-- ypbind-3.0-1.src.rpm
|-- TRANS.TBL
|-- i386
| |-- 00README.errata
| |-- NetKit-B-0.09-1.i386.rpm
| |-- TRANS.TBL
| |-- XFree86-3.2-5.i386.rpm
| |-- adduser-1.3-1.i386.rpm
| |-- amd-920824upl102-8.i386.rpm
| |-- apache-1.1.3-3.i386.rpm
| |-- bind-4.9.5p1-1.i386.rpm
| |-- cmu-snmp-3.3-1.i386.rpm
| |-- cmu-snmp-devel-3.3-1.i386.rpm
| |-- cmu-snmp-utils-3.3-1.i386.rpm
| |-- dosemu-0.64.1-3.i386.rpm
| |-- efax-0.8a-2.i386.rpm
| |-- imap-4.1.BETA-3.i386.rpm
| |-- initscripts-2.91-1.i386.rpm
| |-- inn-1.5.1-6.i386.rpm
| |-- inn-devel-1.5.1-6.i386.rpm
| |-- jed-0.97.14-4.i386.rpm
| |-- jed-xjed-0.97.14-4.i386.rpm
| |-- logrotate-2.1-1.i386.rpm
| |-- lpr-0.14-2.i386.rpm
| |-- netcfg-2.15-1.i386.rpm
| |-- printtool-3.0-14.i386.rpm
| |-- pythonlib-1.16-1.i386.rpm
| |-- rpm-2.3.2-1.i386.rpm
| |-- rxvt-2.19-2.i386.rpm
| |-- samba-1.9.16p9-8.i386.rpm
| |-- sendmail-8.8.5-2.i386.rpm
| |-- sendmail-cf-8.8.5-2.i386.rpm
| |-- sendmail-doc-8.8.5-2.i386.rpm
| |-- sliplogin-2.1.0-6.i386.rpm
| |-- tetex-0.4pl6-1.i386.rpm
| |-- tetex-afm-0.4pl6-1.i386.rpm
| |-- tetex-dvilj-0.4pl6-1.i386.rpm
| |-- tetex-dvips-0.4pl6-1.i386.rpm
| |-- tetex-latex-0.4pl6-1.i386.rpm
| |-- tetex-xdvi-0.4pl6-1.i386.rpm
| |-- timeconfig-1.7-1.i386.rpm
| |-- usercfg-3.3-1.i386.rpm
| |-- util-linux-2.5-34.i386.rpm
| |-- wu-ftpd-2.4.2b12-4.i386.rpm
| `-- xdosemu-0.64.1-3.i386.rpm
|-- images
| |-- TRANS.TBL
| `-- i386
| |-- README
| |-- TRANS.TBL
| |-- scsi
| | |-- README
| | |-- TRANS.TBL
| | |-- bootBusLogic.img
| | |-- bootaha1540.img
| | |-- bootaha1740.img
| | |-- bootaic7xxx.img
| | |-- booteata_dma.img
| | |-- bootultrastor.img
| | |-- config.BusLogic
| | |-- config.aha1540
| | |-- config.aha1740
| | |-- config.aic7xxx
| | |-- config.eata_dma
| | `-- config.ultrastor
| `-- supp.img
`-- scripts
|-- TRANS.TBL
|-- fix-shadow.sh
|-- i386
| |-- TRANS.TBL
| `-- lilo-dos.sh
`-- jed-xterm.Xdefaults

180 directories, 6606 files


Copyright © 1998, Eric Canal
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


EMACSulation

by Eric Marsden, emarsden@mail.dotcom.fr

This column is devoted to making the best use of Emacs, text editor extraordinaire. Each issue I plan to present an Emacs extension which can improve your productivity, make the sun shine more brightly and the grass greener.


Customizing Emacs

Typical applications have a configuration file which allows you to set the value of a few variables. Emacs goes a lot further, since the user can customize pretty much any feature of the system. This flexibility is due to a majority of the system being written in its extension language. The first implementations of Emacs used a cryptic string processing language named TECO (you thought Perl was cryptic? Look at TECO), with support code in PDP-10 assembly; later versions use Emacs Lisp as an extension language, with some components (the Lisp interpreter and the display code) written in C.

This extensibility is fundamental to Emacs. Users can experiment with modifications and improvements to the system and pass them on to friends if they work well; ideas which catch on can be integrated in the core distribution. The now defunct Lisp Machines at MIT extended this openness to the level of the operating system, which was written in Lisp (and ran on custom hardware, specially designed to run Lisp efficiently). Lisp Machine users had a far greater degree of control over their machine than Linux users today. The Smalltalk systems at Xerox Parc provided a similarly deep level of customization.

Indeed, there is a profound difference between the development philosophy which led to Emacs (the MIT approach), and that which led to Unix and C (the New Jersey approach). These are compared in an excellent paper by Richard Gabriel called Worse is Better, from which I have extracted the following:

Two famous people, one from MIT and another from Berkeley (but working on Unix) once met to discuss operating system issues. The person from MIT was knowledgeable about ITS (the MIT AI Lab operating system) and had been reading the Unix sources. He was interested in how Unix solved the PC loser-ing problem. The PC loser-ing problem occurs when a user program invokes a system routine to perform a lengthy operation that might have significant state, such as IO buffers. If an interrupt occurs during the operation, the state of the user program must be saved. Because the invocation of the system routine is usually a single instruction, the PC of the user program does not adequately capture the state of the process. The system routine must either back out or press forward. The right thing is to back out and restore the user program PC to the instruction that invoked the system routine so that resumption of the user program after the interrupt, for example, re-enters the system routine. It is called PC loser-ing because the PC is being coerced into loser mode, where loser is the affectionate name for user at MIT.

The MIT guy did not see any code that handled this case and asked the New Jersey guy how the problem was handled. The New Jersey guy said that the Unix folks were aware of the problem, but the solution was for the system routine to always finish, but sometimes an error code would be returned that signaled that the system routine had failed to complete its action. A correct user program, then, had to check the error code to determine whether to simply try the system routine again. The MIT guy did not like this solution because it was not the right thing.

The New Jersey guy said that the Unix solution was right because the design philosophy of Unix was simplicity and that the right thing was too complex. Besides, programmers could easily insert this extra test and loop. The MIT guy pointed out that the implementation was simple but the interface to the functionality was complex. The New Jersey guy said that the right tradeoff has been selected in Unix: namely, implementation simplicity was more important than interface simplicity.

Let me come back to more concrete issues. The traditional way of customizing [X]Emacs is to write simple Emacs Lisp expressions in a file called .emacs in your home directory. These expressions can either set the value of a variable, or call a function, or load a library :

    
    ;; set the values of a few variables. `t' stands for true and `nil' for
    ;; false 
    (setq dired-listing-switches "-alF")
    (setq tab-width 4)
    (setq line-number-mode t)
    (setq global-font-lock-mode t)
    (setq next-line-add-newlines nil)

    
    ;; call a function which will organize to have the time displayed in
    ;; the modeline
    (display-time)

    
    ;; load an Emacs Lisp library and call its initialization function
    (require 'jka-compr)
    (auto-compression-mode 1)

The syntax tends to irritate people (who deride the presence of ``Lots of irritating spurious parentheses''), but using a fully-featured programming language in a configuration file has genuine and significant advantages. It allows you to test for features of the local setup, for example :


    (if (file-exists-p "/bin/bash")
       (setq explicit-shell-file-name "/bin/bash"))

which makes Emacs use the bash in *shell* buffers if it exists on the machine. Another reason for using a real language for setup files is that it avoids the endless proliferation of configuration files, each with its own ideosyntractic syntax (think ~/.Xdefaults, window manager setup files, ~/.inputrc, ~/.procmailrc, etc). Hopefully the spreading use of Guile as an embedded scripting language will resolve this problem. A last advantage is that a genuine programming language empowers the user. Indeed, in one of the first technical reports about Emacs, Richard Stallman presents this as an important goal:

When large numbers of nontechnical workers are using a programmable editor, they will be tempted constantly to begin programming in the course of their day-to-day lives. This should contribute greatly to computer literacy, especially because many of the people thus exposed will be secretaries taught by society that they are incapable of doing mathematics, and unable to imagine for a moment that they can learn to program. But that won't stop them from learning it if they don't know that it is programming that they are learning!

Customize

Recent versions of [X]Emacs include a package called Customize, which helps you adapt Emacs to your liking without writing any Lisp. Customize is written by Per Abrahamsen, also the author of the popular Auc-TeX package for TeXnical typists. It allows users to visualize the list of all the user-configurable variables in Emacs, and to modify them to their liking. You can reach Customize (it only exists on recent Emacsen) from the Help -> Customize menubar. In XEmacs it looks like this:

Customize screenshot

Customize requires each Emacs Lisp library to declare the user-modifiable variables it exports. The type of the variable is specified, whether boolean or integer or string or selection from several options, and several variables can be put in the same group, which allows a hierarchical presentation of information. The modification screens are then generated automatically on demand. It's an elegant design, since programming the thousands of dialog boxes manually would be a huge job, and require large amounts of storage. The modifications made by the user are stored in a file which is read by [X]Emacs at initialization time.

An unfortunate aspect of Customize is that it introduces two methods of doing the same thing. Users wanting to go beyond the simple customizations possible with the graphical interface will be confronted with an entirely new way of doing things, and may be put off. There is a difficult path to tread between making simple things simple and complex things possible and the old adage Build a system that a fool can use, and only a fool will use it.

Keybindings

Keybindings are a particularly treacherous field for customization, the principal problems comings from differences between X11 and console operation (particularly with the backspace key), and between the syntax used by Emacs and XEmacs. One of the first things you might want to do is set the Delete, Home and EndOfLine keys to their standard meanings in the PC world :


    (pc-selection-mode)         ; pc-select.el

This will also allow you to select regions of text with shift and the cursor keys, and Cut/Copy/Paste with Shift-Delete, Control-Insert and Shift-Insert respectively. You can bind function keys as follows (this syntax should work equally well with Emacs and XEmacs) :


    (define-key global-map [(f2)]  'save-buffer)
    (define-key global-map [(f4)]  (lambda () (interactive) (kill-buffer nil)))

The first line makes the F2 key save the current buffer (by binding to the built-in function save-buffer), and the second shows how to bind to your own function: the lambda introduces an anonymous function in Lisp; the (interactive) means that you will be able to access the function interactively, the rest kills the current buffer without asking confirmation. The global-map means that these bindings apply everywhere in Emacs, whether you're reading email or composing some HTML. You can also define local key bindings, which apply only to buffers which are in specific modes :


    (define-key emacs-lisp-mode-map [(control c) (control e)] 'eval-buffer)
    (define-key c-mode-map [(f5)] 'compile)

The Emacs FAQ (available online by saying C-h F) presents another method of binding keys, which may not work across Emacs versions. Jari Aalto has written a long guide to keybindings which describes many different ways of rebinding keys.

If you are lucky enough to have a Windows 95 keyboard you can put those lovely keys to use in X11 with a little xmodmapping. The X Window System has five possible key modifiers, the first three being Shift, Control and Alt on PC keyboards. You can set the windows keys to Super and Hyper modifiers as follows (this is for a French keyboard; use xev to work out the keycodes for your keyboard) :


    (shell-command (concat  "xmodmap "
                            "-e 'keycode 115 = Hyper_L' "
                            "-e 'keycode 116 = Hyper_R' "
                            "-e 'keycode 117 = Super_L' "
                            "-e 'add mod4 = Hyper_L' "
                            "-e 'add mod4 = Hyper_R' "
                            "-e 'add mod3 = Super_L' "))
    (message "Setting up Hyper and Super keys")
    (define-key global-map [(hyper tab)] 'complete-tag)
    (define-key global-map [(super !)]   'speedbar-get-focus)

Backups

In its default configuration, Emacs makes backups with a tilde appended to the filename, in the same directory as the original file. If you would prefer having all backups in one spot, try the following code. Emacs can also keep a series of numbered backups à la VMS; look at the variable version-control.

    
    ;; make backup files in ~/.backups/ rather than scattered around all
    ;; over the filesystem. 
    (defun make-backup-file-name (file-name)                     
      "Create the non-numeric backup file name for `file-name'." 
      (require 'dired)
      (if (file-exists-p "~/.backups")
          (concat (expand-file-name "~/.backups/")
                  (dired-replace-in-string "/" "|" file-name))
        (concat file-name "~")))

    
    ;; disable backups for files in /tmp or in my Mail or News directories. 
    (defun ecm-backup-enable-predicate (filename)
      (and (not (string= "/tmp/" (substring filename 0 5)))
           (not (string-match "/Mail/" filename))
           (not (string-match "/News/" filename))))
    
    (setq backup-enable-predicate 'ecm-backup-enable-predicate)

Further information

These are only a few examples of things which can be customized in [X]Emacs. Here are a few pointers to further sources of inspiration :

Feedback

Vincent Zweije wrote to me regarding my gnuserv column, where I suggested using cat /etc/passwd | md5sum as a means of generating a cookie for xauth.


In <URL:http://www.linuxgazette.com/issue29/marsden.html>, you wrote:

[...]

While allowing access to your X display is bad enough (someone could capture all your keystrokes, for example), giving remote access to your Emacs process is much more worrying, since Emacs can execute arbitrary commands under your id, delete files, send insulting email to the President of the United States, etc.

Or maybe more dangerous, send insulting email to the president of an arbitrary banana republic. :-)

Since release 2.1, gnuserv is able to use MIT-MAGIC-COOKIE-1 authentication for remote requests. This protocol uses the contents of your ~/.Xauthority file, as described in the xauth(1) man page. Gnuserv requires a cookie for display number 999, which you can create as follows (blade is the name of the machine) :

     
      ~$ xauth add blade:999 . `cat /etc/passwd | md5sum`
      ~$ xauth list
      blade/unix:0  MIT-MAGIC-COOKIE-1  bc1d627babdbabe9d1f288d2b57c348f
      blade:999  MIT-MAGIC-COOKIE-1  d89570b20925d401c05a79be67159cae

You have picked an unlucky example. There is a real danger that /etc/passwd is stable over a long period. This means that it will generate the same magic cookie for many times.

This is a problem when you have given a cookie away (either voluntarily or involuntarily), and intend to revoke permissions by generating a new cookie.

Best is to select a source of data that is volatile such as the output of ps -al or /proc/interrupts, or use mcookie, as you indicated later.


These remarks are particularly important if the site is using shadow passwords. Vincent noted that security issues are too important to be left to ordinary users :


Come to think of it, it's probably just a bad idea to let ordinary users arrange their own security, as with magic cookies. They're just not enough concerned with security - they want to get their job done.

You'd be amazed at how many times on usenet I've seen suggested to do "xhost +" to allow X connections from anywhere. Such people often don't even realise that they're dealing with security. They see disallowing X (gnuserv) connections as a hindrance, and just want a magic incantation to remove it. It's a perception thing.

Someone who deals with security simply has to know what he's doing. However, first you have to realise that it is security that you're playing with.


Next time ...

Next month I'll look at the different abbreviation facilities in Emacs. Don't hesitate to contact me at <emarsden@mail.dotcom.fr> with comments, corrections or suggestions (what's your favorite couldn't-do-without Emacs extension package?). C-u 1000 M-x hail-emacs !

PS : Emacs isn't in any way limited to Linux, since implementations exist for many other operating systems (and some systems which only halfway operate). However, as one of the leading bits of free software, one of the most powerful, complex and customizable, I feel it has its place in the Linux Gazette.


Copyright © 1998, Eric Marsden
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


A Linux Journal Preview: This article will appear in the October issue of Linux Journal.


[Don't Fear the Penguins.]

The Future of Linux, 14 July 1998

By Greg Roelofs


Photo Album



The Future of Linux was set up as a panel discussion and was held at the Santa Clara Convention Center (in the heart of Silicon Valley) on the evening of 14 July 1998. It was hosted by Taos Mountain and the Silicon Valley Linux Users Group (SVLUG), and it was sponsored by them, Intel, Red Hat, Linux Journal, and VA Research. Apparently it was considerably more popular than Taos expected; people stood in line between 40 and 60 minutes to register, and the free food and free VA Research/Linux t-shirts ran out. I didn't get a firm count, but Taos said 850 people had RSVP'd, and it appeared that at least 700 chairs were occupied, possibly upwards of 900 or more. (Other reports have claimed ``more than 850'' and ``more than 1000''; apparently quite a few people chose to stand near the front rather than sit in back.)

The panel was a distinguished group: Jeremy Allison, one of the lead Samba developers; Larry Augustin, founder of VA Research and member of the Linux International (LI) Board of Directors; Robert Hart, from Red Hat Software; Sunil Saxena, from Intel's Unix Performance Lab; and, of course, The Man himself, Linus Torvalds. [And while I know there are a lot of Linux fans who like to pronounce ``Linux'' with a long `i' sound (LYE-nucks), and despite the fact that Linus himself doesn't care how anyone else pronounces it, he unquestionably did so with a short `i' as in ``linen'' (LINN-ucks). In Swedish he presumably still pronounces it the third way, roughly ``LEE-nooks.'']* It was moderated by Michael Masterson of Taos, who traded off questioning duties with Phil Hughes, all-around hairy guy and the publisher of Linux Journal.

The panelists were given a pair of questions ahead of time and five minutes (per panelist) to respond to each. The evening progressed more or less as follows:

wait in line...keep waiting...trade RSVP form for name sticker
get free t-shirt / whimper about missing food and lack of dinner
demos / sit down
panel's semi-prepared responses to first question
audience Q & A
moderator Q & A
panel's semi-prepared responses to second question
more audience Q & A
door prizes
demos / schmoozing / fall-on-knees-and-worship-Linus / etc.

Note that in each section I've included various editorial comments in [green brackets], usually [italicized].

Thanks to the following people for their corrections and additional info; any remaining errors or omissions are solely my fault:

  • Jeffrey Chapman
  • Michael Cope
  • Michael Hicks
  • Dan Kaminsky
  • Joe Klemmer
  • Ian Kluft
  • Anas Nashif
  • Brent J. Nordquist
  • Alexandre Petit-Bianco
  • Jason Riedy
  • David Sundqvist

See also Taos Mountain's announcement (including a streaming video of highlights), SVLUG's summary/reviews page, EE Times' article and Slashdot's discussion of it, InfoWorld's article, Rafael Skodlar's report at the Tasty Bits archive, Forbes' cover story, Mark Tebbe's InfoWorld column, and, of course, Slashdot's discussion of this very report.

Finally, here are some interesting developments from the week following the event:

Note that a number of other relational databases, including Computer Associates' Ingres II, have already been ported to Linux. And, of course, the most popular web server in the world (Apache) has run on Linux for years and happens to be freely available as well.


* Oh yeah, and vi rules, too. Here, take two of these  :-)  :-) and don't flame me in the morning... We all love Linux regardless of how it's pronounced, right??
Last modified 28 July 1998 by newt@pobox.com , you betcha.

Copyright © 1998 Greg Roelofs.


Copyright © 1998, Greg Roelofs
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


  
Welcome to the Graphics Muse
Set your browser as wide as you'd like now.  I've fixed the Muse to expand to fill the aviailable space!
© 1998 by mjh 
 


Button Bar muse: 
  1. v; to become absorbed in thought 
  2. n; [ fr. Any of the nine sister goddesses of learning and the arts in Greek Mythology ]: a source of inspiration 
 Welcome 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. 
[Graphics Mews][WebWonderings][Musings] [Resources]
 
This column is dedicated to the use, creation, distribution, and discussion of computer graphics tools for Linux systems.
 
Well, its been a couple of months since we last spoke.  I've been working on a major project for the past year and the last 3 months have been exceptionally busy.  But the project is done, or very nearly so (a few minor details left to handle) - and that project is a book on the Gimp.  Its called The Artists Guide to the Gimp and should hit the shelves sometime in September.  All I can say is, I hope you like it.   Writing a technical book is harder than I thought.  My next one is going to be fictional novel.  You don't have to do a CD, tons of images, or 2nd editions for those.

There were plenty of graphics related news announcements since the last Muse.  Unfortunately, I just didn't keep up with them and they've expired from my news feed.  So what I've got this month is pretty recent info.  I did hang onto a few tidbits from mailing lists I've been scanning, plus email from a few readers.  Its funny - I get email about really old versions of the Muse every now and then.  I think people are still just finding out about it.
 
In this months column I'll be covering ...

I'll have more for next month, but I just finished the book with only 3 days to get the Muse done.


 
Graphics Mews
      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.
 
indent

Xi Graphics releases fully integrated Linux distribution

This isn't really graphics related, but Xi is an X server vendor.  And X server vendors are pretty important to the Linux graphics world.  So, here it is. 

Xi Graphics is now providing a commercial Linux distribution which includes their Accelerated X server and their maximum/CDE desktop product.  Unit price is $214.95 for the Executive Edition and $364.95 for the Developers Edition. 

For more details: 
Kyle Fink 
Xi Graphics 
(303) 298-7478 
kyle@xig.com

indent

Panasonic PalmCam utility

Fredrik Roubert has released a very early version (v0.3) of a driver for the Panasonic PalmCam, an NV-DC1000 digital camera.  According to Robert a couple of the features include the ability to specify ranges to download and to preview or delete several images in one session. 

For more information, check out his web page at 
http://www.df.lth.se/~roubert /NV-DC1000.html 

The package is available from the following sites: 
ftp://ftp.df.lth.se/ pub/users/roubert/Linux 
ftp://sunsite.unc.edu/ pub/Linux/apps/graphics/capture 
 

Linux / 3-D SIGGRAPH Report

At SIGGRAPH '98 in Orlando, Florida Daryll Strauss and Brian Paul organized a special interest group (SIG) session to talk 
about Linux, 3-D hardware acceleration, and related topics. 

Attendence was greater than expected with 100-150 people attending. 

A summary of presentations taken by Brian Paul, author of the Mesa package, can be found at 
http://glide.xxedgexx.com/ SIGNotes.html 


Blender News

There were a number of updates to Blender, the 3D modelling page from NeoGeo.  Here is a snapshot of annoucements from their News page: 

Blender manual (1998-07-10) 

    All information you need, packed in cool design at paper: the Blender 1.5 manual is scheduled to ship in October. Information about pricing and pre-ordering will be available in August. 
The Unofficial Blender Mailing list (1998-06-16)  Version 1.34 for Linux/FreeBSD available today. (1998-06-04) 
    Many bugs fixed and included some features: Play (flipbook). Use it for playback test animations (Hamx) Frame counter during anim playback.  Read the BlenderBeta page for more.

Linux IEEE-1394 (FireWire) Subsystem - Status report

Emanuel Pirker is working on the Linux IEEE-1394 (FireWire) Subsystem for a while now and thought it would be a good idea to give a small status report. 

IEEE-1394 is the name of a high-speed but low-cost serial bus. Apple has trademarked it as "FireWire". Current implementations reach 200 Mbit/s, soon we will have 400 and then 800 and so on. FireWire is designed for consumer multimedia (e. g. connecting a digital video camera to your PC) and high-speed peripherals (hard disks, CD ROMs, but also scanners, printers). Since it provides quality of service (guaranteed bandwith and bounded latency) it can also be used in industrial real-time applications. 

Support for Windows (NT) and Rhapsody is coming (some items are already operational) but Linux users also want to benefit from this technology - so Emanual started the development as a university project last winter. 

He now has a clearly designed subsystem, an Adaptec AIC-5800 driver and some code to test it. Not all FireWire functions can be used now but he has reached a point where the API is stable and other people can also contribute work (e.g. a video camera driver). 

So if you are interested in this, just email Emanual - more (wo)manpower is desperately needed. 

Contact addresses: 
WWW:  http://www.edu.uni-klu.ac.at/ ~epirker/ieee1394/ 
E-Mail: epirker@edu.uni-klu.ac.at  
 
 


Some late entries: 

ImageMagick 4.0.8 
Panard Vision - Portable Real-time 3D Engine for Linux 
Mesa 3.0 beta 7 
SANE 0.74 
FreeWRL 0.14 

For more details on these, check out Freshmeat.net.

XVScan 1.80 Scanning software

tummy.com, ltd. is pleased to announce XVScan Version 1.80, which now includes support for Microtek ScanMaker E3 and E6 scanners as well as HP SCSI ScanJet scanners.  Currently the Microtek support is available on Linux and Solaris, but our other platforms will include that support shortly.

XVScan is based on the popular xv image manipulation software for X Windows and includes a fully licensed copy of xv. It is source available commercial software.

If you've never used John Bradley's XV image manipulation software, it's difficult to describe how powerful it is. XV reads and writes files in a dozen different formats, provides powerful color-map editing, window capture, color-space conversion, cropping, image manipulation algorithms, and the list goes on.

XV gives you powerful image and color-map manipulation, support for over a dozen image formats, as well as the Visual Schnauzer, and an easy to use graphical interface to view and catalog your scanned images.  Supported images formats include: PNG, GIF, JPEG, progressive JPEG, TIFF (compressed and uncompressed), PostScript (requires ghostscript), PBM/PGM/PPM (raw and ascii), X11 Bitmap, XPM (X PixMap), Sun Rasterfile,

With XVScan, you now have the ability to scan directly into XV in a very cost efficient (and more importantly time efficient) manner.

See our website http://www.tummy.com/xvscan/ for a full list of supported scanners.

What's New in Version 1.80

  1. Microtek ScanMaker E3 and E6 support
  2. HP ScanJet 5P push button scanning
  3. Updated JPEG and TIFF conversions
The Linux version requires working generic SCSI driver. It has been tested with versions 1.2.7 and higher of the kernel.

The current version of XVScan is 1.80 dated 1998-06-11 based upon XV version 3.10a dated 12/29/94.

XVScan is $US50 for Linux, HP-UX, FreeBSD and BSD/OS for free ftp delivery. XVScan is $US80 for Solaris bundled with SGLite SCSI driver.  CD-ROM Media $US20. Contact xvscan@tummy.com to order or order on the web at https://www.tummy.com/ordering/onlineorder.phtml.  Payment accepted via check, Visa/Mastercard/Discover/AMEX cards.

Contact tummy.com, ltd, phone: (970) 223-8215, fax: (408) 490-2728,
URL: <http://www.tummy.com/xvscan/>
email: <xvscan@tummy.com>


S.u.S.E. releases new X servers for Rendition, Cyrix, SiS and 3DLabs

S.u.S.E. is proud to announce the release of a new set of X servers for several popular graphic chipsets.

To avoid confusion and to clearly state that these servers are part of XFree86, S.u.S.E. has changed the naming scheme of its servers. Instead of the XSuSE prefix, they now use XFCom, which is short for XFree86 Compliant.  XFree86 compliance is intended to mean that the sources for these servers are ALREADY part of the XFree86 development sources and will be released as part of one of the next XFree86 releases.  This is the major difference to servers with the XBF prefix, which stands for X Binary Free and means that sources for these servers are only available under NDA and therefore cannot be included in XFree86.

Following this naming scheme, we have renamed the XSuSE_Elsa_GLoria server to XFCom_3DLabs and XSuSE_SiS to XFCom_SiS. Additionally, we have added to new servers that support the very popular Rendition Verite chipsets and the all-in-one Cyrix MediaGX CPU that includes graphics functionality.

XFCom_Rendition supports the Rendition Verite V1000, V2100 and V2200 chips.  Among the boards supported are

XFCom_Cyrix supports the Cyrix MediaGX CPU

XFCom_SiS supports

XFCom_3DLabs supports All these servers are available as Linux x86 libc5 binaries at
http://www.suse.de/ XSuSE/XSuSE_E.html.

Binaries for other operating systems as well as glibc binaries will be released, soon.  For all questions and support concerning these servers please do NOT contact XFree86 but send email to x@suse.de instead.


 

Did You Know?

A comment on IRTC-L stated: Bernd Sieker, regular contributer to the IRTC list, offered the following responses:  
Name Aspect Ratio
Super 35 1:1.33
Academy 1:1.37
Wide Screen 1:1.66
Wide Screen 1:1.85
16:9 1:1.77
Cinemascope 1:2.35
  Another question from the same list:  What are NTSC and PAL?

Again, Bernd Sieker supplies an answer:

Q and A

Q:  Anyone know how to set up an Wacom Artpad for use with Gimp, or if this is possible. I think I have to use XInput or something.
 

A:  Juergen Schlag responded:

Muse:  What driver and what docs?  Anyone know what he meant by this?  

Reader Mail

Dan Schmitt wrote: Michael B. East wrote: Scott Manley wrote: 'Muse:  Thanks for the pointers guys!
 
Steve Martin wrote me about some information in the Linux Graphics mini-Howto: 'Muse:  You are completely correct.  I stand corrected. 'Muse:  It is indeed.  I've got that text.  Its not an easy read, but its certainly a thorough coverage of the subject. 'Muse:  It does help.  Thanks for clearing this up.  I intend on doing a complete rewrite of the LGH soon, but I don't know when it will be complete.

Roderick A. Anderson asked about converting GIF's to interlaced GIF's.

'Muse:  NetPBM, I think.  ImageMagick may also do so.  A commercial package is Image Alchemy, but its priced for corporate use and not so much for individual use (I think - its been awhile since I checked). 'Muse:  Boy, thats an old version.  If you have time try the 1.0 version from www.gimp.org.  You'll need to grab the GTK 1.0 libs first - www.gtk.org.  The Gimp can read in non-interlaced GIF's and convert them to interlaced.  Its pretty easy to do.




Building dynamic web pages

Recently I started a complete rewrite of my web site, graphics-muse.org.  This is the 5th time I've done this over the past 5 years although I haven't had my own domain that long.  This rewrite comes from the obvious need to make the my graphics resources searchable and easier to update.  So, I've had to add a database and learn to create dynamic pages.  The database part is easy - I'm going to use msql.  I've used it for a few simple databases at home and its quite sufficient for my relatively simple needs.  Dynamic pages are something new, however.  And for this, I need to step into the world of Perl.

I used to pride myself on the number of languages I had taught myself over the years.  In recent times, however, I've found myself falling behind the curve, having grown comfortable and satisfied with C.  Although I still think C suffices for most projects I realize that I need to move on to newer, object oriented, languages.  I hate C++.  I've done a little work with it and its just a perversion of C in my eyes.  Java is my long term goal, primarily because I make a living doing graphical interfaces and Java is the future for people like me.  Perl, on the other hand, is simply the tool of choice for the Web.  I didn't want to learn yet another scripting language, but its hard to avoid if I'm going to try to do Web developement.  So, Perl it is.

Fortunately, creating dynamic Web pages with Perl turns out to be pretty simple.  A perl module called, conveniently, Msql allows me easy access to my databases and the CGI.pm module makes generation of HTML a breeze.  Both the msql database and CGI.pm have printed texts available so learning both is a bit easier than the traditional man-page browsing with which I've grown up.  We'll take a look at how we can use both the Msql and CGI.pm modules to create a very simple dynamic page.

This discussion does not expect you to understand how to program in perl, but it would help.  We're going to step through the process without going into huge detail here.  Also, when I talk about the database I'll use lowercase - msql - but when I talk about the perl module I'll use uppercase - Msql.  You should, however, be a little familiar with how SQL statements look, or at least not be afraid of looking at them.  What we'll use in this example is pretty basic and you should be able to interpret whats going on from the code and the explanations.

First, what tools do you need for this experiment?

These just happen to be the versions I installed on the server that hosts my domain.  I don't know what the version of the Msql module is, but you can find it on a CPAN mirror.  Apparently if you have perl 5.004 you already have CGI.pm (its part of the standard distribution since 5.004).  If not you'll need to grab the module from one of the CPAN mirrors.  CPAN is the Comprehensive Perl Archive Network and is where you can find all sorts of modules for use with Perl.  Modules are extensions to perl.  The CGI.pm module allows you to use methods and functions to generate HTML output in a CGI script.  Similarly, the Msql module allows you methods for accessing an msql database.  The current version of the msql database is 2.0.x, but this seemed to have some problems when I tested simple inserts on a Solaris box, so I'm working with the more stable 1.0.x version, which happens to be whats on my server anyway.

Ok, now lets create a simple database.  Make sure the msql database is installed properly (follow the directions with the package - its pretty straightforward to build and install).  Start the database daemon:

Next you need to create an empty database, which we'll call "muse".  Use the msqladmin command for this: We can now use the msql monitor to interactively add a table and populate the table, but lets do this the easy way.  We'll create a text file with the commands and then feed it to the monitor in batch mode.  The text file looks like this (including comments): Save this to a file called "tools.msql".  The filename is arbitrary.  The "\p" and "\g" tell the monitor to print the command as its run and to actually run the command, respectively.  Note that the text names are enclosed in single, not double, quotes!  You can feed this to the monitor using the following command: Its a simple database, but this is a simple example.  Now lets build a CGI script using perl that will display a couple of tables, one of which will contain the entries from the database.  The first thing is to tell the script to use perl5 and to load the Msql and CGI.pm modules: The location of your perl5 binary may be different, so check that first.  The stuff after "use CGI" tells perl which functions from CGI to load.  In this case we're loading the standard functions, plus the HTML3 and netscape extensions.  There are multiple methods for specifying these extensions.  You'll need to check the Perl or CGI.pm documentation (see end of this article) for details on how to use a different syntax. This prints out the <HEAD> section for you.  Just modify the author and title lines to suite your needs.  Next comes our connection to the msql database: The first line after the comment assigns a database handle to the variable dbh.  The next line use the selectdb() method to access the database named "muse".  Pretty simple, eh?  You can specify a remote host in the connect() method in the first line.  You can also specify the name of the database there.  But I think explicitly calling them out like this makes the code a little easier to maintain for someone who might come along later and not quite understand what was going on.

Ok, you've opened the connection to the database.  Lets grab the tools table entries.

Looks a little confusing, but its not really.  The first line assigns a handle from the SELECT statement to the variable sth.  The handle is used to access each row of the table that matched the SELECT query.  In this case, the query() method selected all rows from the table "tools".  If we had opened another database (besides the "muse" database) we would have used a different database handle, such as dbh2, instead.  Of course we would have had to selected that database with the selectdb() method like we did with dbh1 earlier.

The next two lines just define the variables rows and result to be local.  However, these variables will both be list variables.  Lists are special in perl - you can access all the entries in the list using the @ symbol as a prefix, or you can access individual elements of the list by prefixing the variable name with a $ symbol and using an array element number.  We'll see examples of both in a moment.

The next 4 lines are a while() loop that process each row returned from our SELECT query.  The fetchrow() method is used to assign the current row to the @result list.  A row, of course, consists of two entries:  the tooltype and the toolname.   The push() line says to append the following to the @rows list:

The @rows list is empty to start, so each time through we're adding a new entry to the list.  Each entry is the CGI.pm modules code for specifying a table element.  The stuff between the curly braces are the table element arguments.  After that comes a list of what goes into the element.  In this case, you get the tools name - $result[1].  Remember we assigned the current table row to the @result list, and we're accessing an element of that list by using the $ prefix and an array index.  The index always starts at 0, so an index of 1 means the second element of the list.  What happens after this while() loop is run is that you have a list of table elements with all the tools names in them.  We'll be using these when we create a table in just a moment.

Below the while() loop is another local variable, tools_list.  This variable will be used to output a table in our page.  The table() function comes from CGI.pm and is used to generate a table.  Note that neither this nor the td() functions in the while() loop have actually been output yet.  We're just storing these in variables for later output.  Again, the curly braces enclose arguments for the table HTML tag.  After that is another embedded CGI.pm function - Tr().  This function has an uppercase first letter only because perl has its own "tr" function and there needs to be a distinction between the two.  In most cases, the CGI.pm functions will use lowercase only.  The Tr() function creates a table row.  Embedded within this is are all the table elements we stuffed into the @rows list.  Still with me?  Great!  All thats left is to output this back to the browser.

The print() command is from perl.  It just prints to standard output, which is what you want for CGI scripts.  The center() function comes from CGI.pm and will center the following table.  The table() function comes from CGI.pm also.  We've already created a table earlier, in our $tools_list variable.  Now we're going to embed that earlier table inside another table.  We define the new tables arguments, followed by a single table row (Tr()) and a single element in which we add the $tools_list table.

Save all this to a file called web.pl in your cgi-bin directory on your web server.  Make sure the script has execute permissions.  You can see this little scripts output by accessing www.graphics-muse.org/cgi-bin/web.pl.  Its not much, but it shows how easy it is to integrate a little bit of database info into a web page.  For what its worth, it only took me about 2 days to get all this down, mostly by experimenting with examples in the printed texts.   It would have been quicker, but I did it at work and ducking from coworkers took most of my time.

Speaking of documentation, the texts you want are

The msql guide is applicable to the 2.0 release, but I found it useful for a refresher on using msql.  If you need 1.0.x documentation, you can check out the msql web site.
 



 
Musings
 

Gimp 1.0

For those of you who have been 
  1. living under a rock
  2. tied up and held captive by aliens
  3. or changing your oil for the past 3 months
I have news for you:  Gimp 1.0 has been released.  The announcement came back on June 5th.  Since I haven't done a 'Muse column since April perhaps you missed it.  For some reason the trumpets didn't seem to blare as loud as I expected they might when the announcement hit the mailing lists and comp.os.linux.announce.  I guess I expected more fanfare.  Maybe there was and I missed it.  I was changing my oil for a while back then, too.  Or maybe that was the month I was with the aliens.  Its been a long summer. 

As I mentioned at the top of this column (you know, the part you probably don't read each month), I've spent the last year working on a book on the Gimp.  SSC, the publishers of the Linux Journal and the host of the Linux Gazette, had contacted me in June of 1997 about the possibility of doing the book.  I thought it was a great idea, so I jumped into it.  The hard part has been trying to keep the work up to date.  Much of the writing had to wait till there was some light at the end of the 1.0 development tunnel.  Not suprisingly, the past 3 months I've been buried in updates and last minute details.  This has been the longest last minue of my life. 

But I'm fairly happy about the book.  It will be printed in 4-color on glossy paper and there are lots of images and examples.  There is also a CD which will include all the images from the book, plus lots of other good stuff.  There are some things I didn't get in because there just wasn't any time left.  They'll have to wait for the next edition or for articles in the Linux Journal.  Or maybe in the 'Muse.  Anyway, one year is plenty for the first edition. 

Gimp 1.0 source actually comes in three packages:  the core distribution, the extras package, and the unstable package.  The core and extras package build and install fairly easy.  The unstable package includes a number of very handy plug-ins but you have to understand how to build them a little more than the core and extras packages. 

Some of the more interesting features of the 1.0 release include a rather good Print plug-in that can work with a number of HP and Epson printers directly and also supports Postscript output.  So you can print directly to a postscript capable printer or run the output through Ghostscript. 

-Top of next column-
More Musings...  

No more musing this month.

Another great Plug-in is the GFig plug-in, which allows you some limited drawing capabilities.  You can draw circles, curves, boxes and other shapes, repositions them, render them on separate layers using any brush shape and color.  The interface is a bit clunky, but its still an improvement on the default drawing tools. 

Other recent improvements over older development releases include: 

  • runtime configuration via the Preferences dialog
  • a Netscape interface to access online resources
  • a better menu organization
  • frequently used layer functions accessible via buttons now
  • lots of Script-Fu scripts
The Gimp has gotten quite a bit of press recently, including some blurbs in the online version of Publish magazine and on NPR (National Public Radio).  Check Zach's Gimp News site for more information on these. 

There are still a few things that need work, not the least of which is support for more color models.  But this has been discussed at length on the developers list and a few people appear to be working on it, at least to some extent, for the 1.2 release.  The Gimp will have a numbering scheme like the Linux kernel, where even numbers are public releases and odd numbers are developers releases.  Currently, the 1.0.4 version is the latest public release.  There is a 1.1 

I intend to focus more of my energies towards the Gimp from now on.  The 'Muse columns future depends on some discussions I'm having with SSC about another project, but for now its just discussion.  In any case, after all this time, I finally plan on working on some plug-ins and scripts.  Since 1.0 is out, I can't whine about not having a stable version anymore.   I'll be hanging out on the Gimp-User mailing list trying to help out there.  With 1.0 out, its time for the user community to show what can be done with the tools. 
 
Besides, maybe we have another Gimp-based Diane Fenster out there. 
 
 

 
 
Resources
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.
 
Online Magazines and News sources 
C|Net Tech News 
Linux Weekly News 
Slashdot.org 

General Web Sites 
Linux Graphics mini-Howto 
Unix Graphics Utilities 
Linux Multimedia Page 

Some of the Mailing Lists and Newsgroups I keep an eye on and where I get much of the information in this column 
The Gimp User and Gimp Developer Mailing Lists
The IRTC-L discussion list 
comp.graphics.rendering.raytracing 
comp.graphics.rendering.renderman 
comp.graphics.api.opengl 
comp.os.linux.announce 

Future Directions

Next month:
As usual, I'm not sure exactly what will be covered next month.  My next major project is a rewrite of my graphics-muse.org web site so you can expect I'll probably have something for Web Wonderings.  POV-Ray 3.0 is out in beta, I hear.  Anyway, we'll see which way the winds blow by the end of August.

Let me know what you'd like to hear about!


© 1998 Michael J. Hammel


Copyright © 1998, Michael J. Hammel
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


A Linux Journal Preview: This article will appear in the October issue of Linux Journal.


The Great Linux Revolt of 1998

By Chris Dibona


Photo Album


Sam Ockman's notice hit Slashdot (http://www.slashdot.org/) at 6:21PM, it read:

The 500 members of SVLUG are going to have a big rally tonight at the largest/most prestigious computer store in Silicon Valley, Fry's, when they stay open until 1AM to distribute Windows 98. We're going to hand out Linux CDs and stuff like that as well. We'd like to have more people at the rally then go to buy Windows 98.

While it was obvious that the entire membership of the LUG was not planning on showing up for a midnight rally, it was clear that this was an idea with great potential. A little after 10PM, Sam and I arrived at the Chili's restaurant near the rally site to meet with people beforehand. We were hopeful that we were not going to be alone at the table.

We were not disappointed. There were about 15 people waiting for Sam to arrive. Some we recognized from the SVLUG, and some that had seen the notice on Slashdot. Remember only four hours had gone by since the original posting. By the time we left, the crowd had grown to 25 people.

After consuming some munchies and a stout or two, we headed out for Fry's electronics in Sunnyvale. For those of you who aren't familiar with Fry's, they are a warehouse-sized electronics, software, hardware, test equipment, junk food, books and magazine retailer out here on the west coast. Picture Price-Costco except with resistors. Most people have a love hate relationship with Fry's, mainly for customer service issues. It's important to note that this rally was not a protest against Fry's, but a rally for Linux on MS Windows 98's birthday.

We arrived at the Fry's around 11:30PM. The 500 compact discs hadn't arrived from the generous folks from S.u.S.E. yet, and we were a little nervous they would be late. At Fry's our numbers had doubled to a little over 50 people. By now, our signs had been pulled out and we were actively agitating for Linux. This was a peaceful gathering, we made a point of not being too annoying and staying out of the way of cars.

The CDs arrived around midnight, coinciding with the beginning of the sale of the Windows 98 CDs. We started handing them out along with pamphlets designed by Adam Richter (of Yggdrasil) to people who were coming into and out of Fry's. At this point we had two reporters show up to document the event (see links below).

Also, at this point we started noticing worried looking guys with walkie-talkies watching us from the parking lot, and some Fry's managerial types talking into their cell phones. One of the protestors overheard one of their managers call the police, and then frustratedly say to another Fry's guy, ``Why can't we just go over there and rip those signs out of their geek hands?'' When we heard that, we were taken aback, but it did consolidate our desire to continue.

A few minutes later the Sunnyvale police began to arrive in numbers. Four police cars pulled forward into the lot. I offered myself up as their contact, while Sam controlled the Linux people.

The police officer asked us what we were doing there, I described Linux and how we were trying to get the word out about it. The police officer was cool about it, telling me that we'd have to wait for his Lieutenant to arrive to find out what to do. We were on Fry's private property, their parking lot. It turns out there are certain situations where it's okay to protest on someone's private property. It's pretty much always okay to protest on the sidewalk. We had been expecting to be asked to move to the sidewalk eventually.

Before his Lieutenant arrived, one of the other police officers asked more about Linux, the word is one of the Linux people got a CD into his hands on his way out of the lot. He did say, ``Hey, good luck with your system'' to me.

Additionally, the manager of Fry's came up to me (the same one that wanted to rip the signs out of our ``geek hands'') and asked me why I was doing this, as Fry's sold Linux in their book section. I pointed out that we knew this and indeed had a sign showing people which aisle to go to for the book. He then asked why I had not had the Linux marketing people or my (as if I'm in charge of Linux!) vendor relations people, contact Fry's management to arrange a similar event to the Windows 98 launch. Needless to say I was like a deer in the headlights, I told him that, in fact, Linux was a free operating system, and that this was one way we saw to market it (not to mention the fact that no company could match a MS launch when it comes down to the checkbook).

He was visibly upset, so I thought it was best to stop talking with him at this point. I told him any further communication between us would come to no good end, and we should only talk through the police. (His brains were melting out his ears at this point.)

The Lieutenant arrived and said we should move to the sidewalk, so we did, and it was just as cool, cars were actually pulling over and picking up a copy of the Linux CD.

After about 15 minutes of this, we decided to hit the CompUSA, a few miles away. When we arrived, there were still a lot of people in line there. It turns out CompUSA was not only promoting Windows 98, but they were also doing all kinds of things to bring people into the store. They were selling the first 10 people in line computers for $98, and paying people $4 to take away 32MB of RAM. (Actually, the RAM was $32, but there was a $38 rebate--or something like that, it was weird.) This also meant that there were a lot of people to promote Linux to. CompUSA's management were cool, they just took the rally in stride, telling Sam the rally was okay, as that was what the first amendment was all about. Fry's had sent one of their security drones to CompUSA to warn them of our existence, but CompUSA just let us do our thing.

After CompUSA petered out, we converged on a local Denny's to nosh. Denny's flipped when they saw all the people, so we moved to a braver restaurant down the street. I got home around 3AM to find people were already uploading pictures to the web.

By the end of the night we had given out 500 CDs, and hundreds of pamphlets. A total of six press people showed up and there were over a half-dozen mentions in major newspapers. This is not counting the coverage we received from other on-line sources such as CNN and the BBC. Everyone involved had a rocking good time promoting Linux.

Whether or not you agree with this direct action model of Linux marketing, we feel confident that we passed the Linux Message to many thousands of people who otherwise had no real knowledge about the Linux revolution. Viva El Revolution!

Resources

SVLUG: http://www.svlug.org/
SVLUG Rally: http://www.penguincomputing.com/svlug-rally.html
Slashdot: http://www.slashdot.org/
SuSE: http://www.suse.com/


Copyright © 1998, Chris DiBona
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


How I got my Adaptec AVA 1502 SCSI card to work with Linux and SANE

By James M. Rogers


I have a Microtek ScanMaker E3 that I have ran under windows for a few years to allow me to convert from hard copy to digital.  I have never been satisfied with the performance of this scanner under windows because I was so limited in the size of the images that I could process.  I won't bore you with the details, suffice it to say that it was slow, tedious and the results were only adequate.

I have heard about Scanner Access Now Easy (SANE) for a few years.  It is a project to implement a consistent scanner interface across all scanners, digital cameras, and other items.  It only works with SCSI scanners at this time.

It took me three tries to get the program to work for me.

Try one:

The SCSI driver card that came with my scanner claimed to be an AVA-1502E.  I couldn't find a driver to work with this under Linux.

Try two:

I thought that this card is an Adaptec card so I tried to load the Adaptec modules, concentrating on the aha152x.o  The most I got was the insmod program seeming to lock up.  At no point in this process did it recognize my card.

Try three:

I peeled the sticker off of the main chip and saw that it was an 6360 chip (Doing this probably voids the warranty.)  So I dug into the Linux source code. In /usr/src/linux-2.0.32/drivers/scsi/  there is a file called aha152x.c.  I read this file several times and got a general picture of how this file worked.  I then modified the file /usr/src/linux-2.0.32/drivers/scsi/Makefile and commented out the line following line:

    AHA152X = -DDEBUG_AHA152X -DAUTOCONF

turns to:

    #AHA152X = -DDEBUG_AHA152X -DAUTOCONF

I then added this line right below the commented line:

    AHA152X = -DDEBUG_AHA152X -DSKIP_BIOSTEST -DSETUP0="{ 0x140, 11, 7, 0, 0, 0, 100, 0 }"

Basically we are telling the module to stop trying to autoconfigure the card, don't try to see which card it is and to use the given settings.  I will contact the maintainers of this code and work with them on getting this driver to autorecognize this card, if possible.

The first two numbers are the ones that you care about.  These numbers correspond to the the jumpers on the card.  The first number is 0x140 if the jumper is on the card , or 0x340 if the jumper is removed.  The 11 corresponded to the irq setting on my card.  This number can be 9, 10, 11 or 12 depending on how the jumper was set.

If you want to know more about these other settings look in the source code and

I then changed to /usr/src/linux-2.0.32/  put a floppy disk in the drive and did a

    make dep ; make clean ; make zdisk

Once the disk had been made I put the disk in my Linux box with the scanner attached and rebooted.  It came up and saw my card and told me that the card was device /dev/sga.  When I looked in /dev/ for a device called sga I couldn't find one.  So I made a link from /dev/scanner to /dev/sg0 instead with the following command:

    cd /dev
    ln -s sg0 scanner

I then configured my /etc/sane.d/dll.conf to look like this:

# enable the next line if you want to allow access through the network:
#net
microtek
pnm

I configured my /etc/sane.d/microtek.conf to look like this:

#Uncomment the following if you are tired of seeing the dump of the
# scanner INQUIRY every time the backend starts up...
nodump
/dev/scanner

Then I ran the following command and it worked!!!:

    scanimage --help -d microtek

This tells you the other commands that will work with the scanner.

I then scanned in stuff with the command line command and with xscanner

    scanimage -dmicrotek -x214 -y296 --resolution 97 > test.pnm

The above command is a full scan of the entire page at 200dpi. The output of these programs is pnm format which allows you access to hundreds of filters to process and convert your output to the exact format that you desire.  See the man pnm page for more details.

I have already done some 11MB graphics files and used some pnm utilities to filter them, edited them with gimp, cut out the area that I wanted and saved them as jpg's.  The neat thing is that I am testing out SANE by running it on a machine with only 16MB of memory and no swap.  (I am processing the files on a different, faster machine) So far SANE has only failed on full screen images above 200dpi which is not bad.  Once I have a baseline I will put this machine to 32MB RAM and 32MB swap space.

I love the ability of Linux to get in there and let me really control my hardware configuration.  With Microsoft the only option that I would have had would have been to buy a "compatible" product and install one of the manufactures full featured (bloated), buggy driver programs.  The support tech would have probably sneered at me as he said this.  This is the first time that I have "dug into" the kernel driver code, researched a problem and found a solution.  Just the satisfaction of being able to fix the kernel to recognize the hardware that I have already paid for is very rewarding.

Next month I will talk about getting the networking portion of SANE up and running.
 


Copyright © 1998, James M. Rogers
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


Debian GNU-Linux image

A New Stable Release of Debian


by Larry Ayers


Introduction

In 1993 Ian Murdock created the Debian Linux distribution, initially under the auspices of the Free Software Foundation's GNU project. Although the direct connection with FSF/GNU is a thing of the past, Debian is still the only major distribution which is not connected with a commercial entity and which is maintained solely by a loosely-knit band of volunteers. The parallels with Linux itself make this distribution appealing to Linux users who value the ideals of the free-software world, including those who may disagree with the purist views of the FSF.

Debian hasn't exactly swept the Linux world by storm. The installation procedure in the past has relied on the creation of several floppy disk images, and due to the idiosyncrasies of the floppy medium at least one disk in the set would be bad (in my experience), forcing the irritated user to recreate the faulty disk and start over from the beginning. Debian 2.0 thankfully doesn't require starting over if (say) disk 5 is bad; it just starts the installation again from where it left off. Luckily machines with BIOS support for booting from a CDROM are becoming common and cheap, and Debian CDs are set up so they can be booted directly. Once the base system was installed the dselect package installer, a functional but unintuitive and visually unappealing application, would further discourage new users.

Once these hurdles were overcome, the user would find that the Debian system was very well thought out. As an example, the configuration of sendmail has been a stumbling block for many new Linux users. In my Slackware days I had a painfully developed sendmail configuration which sort of worked, but even getting it to that point involved a lot of FAQ-reading and searching of usenet messages. The first time I installed the Debian sendmail package, I was asked a few pertinent questions about my system and its relationship to my mail-server. The result was a sendmail configuration which works flawlessly, due to the invocation of some obscure options which I'd never heard of. The printer configuration, as a final step of installing the magicfilter package, also has worked very well for me. These installations may not have the fancy graphical interfaces found in some other distributions, but they work well and don't require a working X Windows set-up along with various X toolkit libraries.

The core of Debian's strength is in the exceptionally versatile *.deb package format. This format, comparable in many ways to Redhat's RPM, does everything possible to prevent a new package from conflicting with others or rendering a system unstable. The dependencies (i.e, what other packages are required for a new one to function) are enforced in a flexible manner and can be over-ridden by the user. Pre-install and post-install scripts are automatically run when a package is installed. These scripts will update default configuration files, delete obsolete files from earlier package versions, and prompt the user if choices need to be made.

The dpkg command-line program can be used to install, update, or remove packages. Dselect, a full-screen front-end for dpkg, can automatically fetch and install entire dependency hierarchies; in other words if you select a package with dselect it can determine what other packages are needed and install them as well. I have to confess that I rarely use dselect if I can help it. I usually obtain packages as I need them and install them by hand with dpkg. The problem with dselect is that it is usually used in an installation from scratch; by the time a system needs a major upgrade most users have forgotten the keystrokes. It's not a tool which is used often enough to justify really learning how to use efficiently, and toggling back and forth between the main screen and the help pages is cumbersome. My seventeen-year-old son first installed Linux because of the Gimp graphics program. I installed Debian 1.3 for him, but he's a hardware junky and is continually changing hard disks and video-cards. The second time he had to reinstall Linux I tried to get him to run dselect himself but he hated it. By this time he had convinced some friends to try Linux, and after several lengthy sessions on the phone attempting to walk these kids through package installation with dselect, I gave up and ordered a Redhat 5.0 CD, which they are all running now. Debian has a ways to go before a non-technical novice can easily install it without assistance.

Debian 2.0

Debian 2.0 has been delayed for several months, due to the existence of unresolved bugs in several packages. This is probably inevitable given the volunteer nature of the work, as well as the difficulties involved in the transition to the glibc libraries upon which all programs depend. Redhat 5.0 was the first glibc-based distribution, released last year. The release had several major problems, many but not all of which have been fixed with the release of version 5.1 this year. I surmise that the Debian developers resolved to forgo haste in order to avoid similar problems with Debian 2.0.

The Debian community was somewhat demoralized earlier this year when Bruce Perens, Debian's leader and spokesman, resigned. It seems that Perens thought Debian wasn't moving quickly enough towards user-friendliness. There is some truth to this opinion, as Debian seems to appeal to many seasoned Linux users who aren't put off by the lack of graphical administration tools. This illustrates on a smaller scale a problem Linux itself has: to gain a larger user-base easier configuration and installation is helpful, but the very people qualified to develop the necessary tools tend not to need or even want them. Linuxconf and COAS, two projects which attempt to address this need, may eventually fill this void.

Libc5 and Libc6

This release is noteworthy for its skillful and painless handling of the lib5/libc6 issue. Both versions of the essential libraries and support files can be installed and used simultaneously in a manner which is transparent to the user. This is important because most commercial, binary-only Linux applications are compiled to use libc5. This also allows incremental upgrading of an existing Debian 1.3 system; the minimal base files to upgrade from 1.3 to 2.0 can be downloaded in a couple of hours while further packages can be obtained and installed as time permits (or when the CD comes in the mail!). The old libc5 packages will continue to function normally until they are upgraded.

Libc5 itself isn't sufficient to run any but the most basic applications. Other shared libraries are needed; under Debian they are installed in /usr/lib/libc5-compat . Ldd, the shared library loader, is smart enough to use these libraries for libc5 executables. You will probably need the libc5 XFree86 libraries as well as libXpm in order to run the older binaries. It's easy to determine which libraries are needed by a libc5 executable. Just look at the output of ldd (i.e., run ldd netscape, substituting the name of the program for "netscape"). If both libc.so.5 and libc.so.6 are shown don't even try starting the program, as it will die immediately. If only libc.so.5 is shown, and the remainder of the shared libs are located in /usr/lib/libc5-compat then the program should run. Here is the output of ldd when run on libc5 version of Netscape:



              libXt.so.6 => /usr/lib/libc5-compat/libXt.so.6 (0x4000c000)
              libSM.so.6 => /usr/lib/libc5-compat/libSM.so.6 (0x4004e000)
              libICE.so.6 => /usr/lib/libc5-compat/libICE.so.6 (0x40057000)
              libXmu.so.6 => /usr/lib/libc5-compat/libXmu.so.6 (0x4006c000)
              libXpm.so.4 => /usr/lib/libc5-compat/libXpm.so.4 (0x4007e000)
              libXext.so.6 => /usr/lib/libc5-compat/libXext.so.6 (0x4008c000)
              libX11.so.6 => /usr/lib/libc5-compat/libX11.so.6 (0x40097000)
              libdl.so.1 => /lib/libdl.so.1 (0x40135000)
              libc.so.5 => /lib/libc.so.5 (0x40138000)

And here is the ldd output when run on a libc6 version of Netscape:



              libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40010000)
              libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40052000)
              libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4005b000)
              libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40070000)
              libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x40084000)
              libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40092000)
              libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4009d000)
              libdl.so.2 => /lib/libdl.so.2 (0x4013b000)
              libc.so.6 => /lib/libc.so.6 (0x4013e000)
              /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
              libg++.so.2.7.2 => /usr/lib/libg++.so.2.7.2 (0x401e3000)
              libstdc++.so.2.7.2 => /usr/lib/libstdc++.so.2.7.2 (0x4021b000)
              libm.so.6 => /lib/libm.so.6 (0x40258000)

Of course if you install from scratch (and don't have any old programs you need to run) everything will be libc6-based and the above won't be necessary.

Installation

Debian 2.0 CDs should be available by the time this issue of LG is on the net, and for everyone but the fortunate few with fast and unlimited net connections a CD is the easiest installation method. Since my installation was an upgrade (done over the course of a couple of weeks) from a Debian 1.3 set-up, I didn't get to see if the installation process had improved until the other day, when I happened to notice that my wife's laptop had several hundred megabytes of free disk space. Unfortunately the machine (a 486 Thinkpad) lacks a CDROM drive and its modem is slow. After splitting off half of the single disk partition with Partition Magic I had two hundred megabytes to work with. Back at my machine, I proceeded to download seven disk image files from a mirror of ftp.debian.org, a total of nine and one-half megabytes. This may seem like a lot, but those seven disks provide a minimal but functional Linux system complete with internet access.

Once the tedious job of transferring the disk images to floppy was completed, I booted the Thinkpad from the first disk and began the installation. Like Redhat's, Debian's installation interface is full-screen and menu-driven, though it's not as fancy. One major difference is that while Redhat's installation segues right into package installation and X configuration, Debian is more of a two-stage process. After the base installation is complete, the user reboots the machine; once the new Debian system has booted up (either from a custom boot-disk created during installation or directly from the hard disk) the user is prompted to set the root password and create a user account. The dselect package installer/manager then starts up, but selecting and installing packages can be postponed, which is what I decided to do.

Debian's two-stage installation method makes sense to me. Why mess with packages before ascertaining that the installation is truly bootable and error-free? Another reason for waiting to run dselect involves network connections. Although both Redhat and Debian have PPP configuration tools, neither has ever worked flawlessly for me. I always have to do some fine-tuning of the /etc/ppp files, though Debian's pppconfig utility came the closest to getting my configuration right. My ISP is a particularly difficult one to connect to using Linux; I'm certain that for many other providers these net configuration tools work without the necessity of file-tweaking afterwards.

Once a PPP connection can be established, dselect can be used to retrieve via FTP any of the distribution's numerous packages. Dselect can also install packages from an NFS-mounted filesystem, a local disk, or a mounted CDROM.

Eventually there will be some sort of graphical interface to dselect and dpkg, but this task has proven to be a difficult one. As a first step, an application called apt is under development; in its current state it enable a user to install packages from a combination of remote and local sources in one operation. If a package from the remote server is more recent than the local one the remote package will be installed instead. In effect apt allows installation primarily from a CDROM, with any superseded packages downloaded from a remote server.

The Debian developers are very careful to keep the main distribution packages completely free in the GNU sense of the word. The least bit of restrictive licensing, even if source is available, causes the package to be placed in a separate directory, /nonfree. These packages are still freely available, but licensing restrictions prevent some from being included on CDROMs.


Conclusion

I predict that even with the installation improvements in Debian 2.0, it will continue to be a technical user's distribution. This may change when the proposed replacement for dselect is finished. The Debian community nonetheless continues to grow, with over four hundred developers maintaining packages. The selection of available packages is immense, with at least as many pieces of software available in *.deb format as there are in *.rpm format. I would recommend Debian for users who have cut their teeth on another distribution, but for beginners I still will recommend Redhat. Just remember, if you can get past the unintuitiveness of dselect package installation, the rest is a breeze!


Last modified: Mon 27 Jul 1998


Copyright © 1998, Larry Ayers
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


A Somewhat Far-Fetched Analogy

by Larry Ayers


Lately I've been musing about the effects Linux and free software in general have had upon my world-view. It occurred to me that analogies can be drawn between the realm of free software and another unrelated pursuit which intermittently occupies my attention. Growing plants may seem about as far from the realm of software and computers as it is possible to get, but I've noticed some parallels.

First, I'll ask why running Linux (and using free software in general) is satisfying for so many computer users. These factors come to mind:

Open pollinated seeds are seeds which can be planted and yield a plant very similar to its parents. Hybrid seeds are crosses between species or strains of plants. Planting a seed from a hybrid plant will give unpredictable and generally undesirable results. Large seed companies prefer marketing hybrids, as the customer will have to buy new seed year after year, rather than saving seeds from productive plants to plant in subsequent years. Beginning to see where this is headed?

In contrast, a grower who saves seed from open-pollinated plants can exert an influence on the variety by selecting seed from especially healthy and productive plants. This evolving strain will eventually become better adapted to the local soil and climate. Coincidentally enough, someone who keeps a plant variety alive through the years is referred to as the maintainer of the variety, and like a maintainer of a free software package, attempts to pass the responsibility on when he or she is unable to continue the effort.

All too often a favorite vegetable or flower variety is discontinued by a large seed company; if the plant was a hybrid it's probably gone forever, but even if the variety comes true from seed it won't survive unless someone happened to save seed. Ever seen a favorite piece of commercial software become abandoned by the company which supported it?

If the multinational seed houses have points in common with the large commercial software firms, there is also a parallel between vendors of Linux distributions and the growing number of small seed companies which sell open-pollinated and heirloom seeds. Both of these types of companies service a niche market, and their customers can duplicate and redistribute the products sold. The potential for great profit is less than when selling proprietary and unreproducible goods, but the customer-base in both instances is growing.

Both the free-software and non-hybrid seed communities exist rather quietly in society. There is little advertising, especially in the mass media, because large commercial interests who can afford such publicity aren't involved. The free software and Linux communities have benefited greatly from the ubiquity of internet access, while the heirloom plant growers network through such organizations as the Seed Savers Exchange.

What's really at stake here is the ability to control and mold one segment of a person's environment, whether that segment is composed of bits or genes. I think that as society becomes more complex, heavily-populated, and bureaucratic, the areas of individual autonomy dwindle. These two fringe realms discussed above, as well as others with similar characteristics, will surely increase in prominence as time passes.


Last modified: Mon 27 Jul 1998


Copyright © 1998, Larry Ayers
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


A Linux Journal Preview: This article will appear in the November issue of Linux Journal.


Open Source's First Six Months

By Eric Raymond


Six months ago yesterday as I write, Netscape announced their intention to release the source code of Navigator. In that time, we've seen once again that there are very few things as powerful as an idea whose time has come.

I'm reminded of this every time I surf the Web these days. The Open Source meme is everywhere. It seems you can't open a technical or business magazine these days without tripping over an admiring article about Linux. Or an interview with Linus Torvalds. Or an interview with...er...me.

I've ended up near the center of the crazy and wonderful things happening now half by accident. When I composed The Cathedral and the Bazaar a bit more than a year ago, I was aiming to explain the Linux culture to itself, and explore some interesting and somewhat heterodox ideas about software development. If anybody had suggested to me then that the paper was going to motivate something like the Netscape source release, I would have wondered what drugs they'd been smoking.

But that's what happened, and I found myself thrust into the role of leading advocate and semi-official speaker-to-journalists for a hacker community suddenly feeling its oats. I decided to take that job seriously, because somebody needed to do it and I knew how and nobody else was really trying very hard. (I had the advantage of experience; I'd been in this role before, for lesser stakes, after the New Hacker's Dictionary came out in 1991.)

The point of all this personal stuff is that I've had an almost uniquely privileged view of the early days of the open-source revolution -- as an observer, as a theorist, as a communicator, and as an active player in helping shape some of the major events.

We've come a long way, baby...

In this essay, I intend to do three things. One: celebrate the incredible victories of the last six months. Two: share my thinking about the battles being fought right now. And three: consider where we need to go in the future and what we need to do, to ensure that open source is no mere fad but a genuine transformative revolution that changes the rules of the software industry forever.

When you're living on Internet time, I know it can be hard to remember last week, let alone last year. But take a moment to think back to New Year's Day 1998. Before the Netscape announcement. Before Corel. Before IBM got behind Apache. Before Oracle and Informix and Interbase announced they'd be porting their flagship database projects to Linux. We've come a long way, baby!

In fact, we've come an astonishingly long way in a short time. Six months ago `free software' was barely a blip on the radar screens of the computer trade press and the corporate world -- and what they thought they knew, they didn't like. Today, `open source' is a hot topic not just in the trade press but in the most influential of the business-news magazines that shape corporate thinking.

The Economist's July 10 article was a milestone; another is coming up August 10th, when I'm told Forbes will run an explanation of the concept as their cover story.

The campaign also went after corporate endorsement of open-source software. We've got it, in spades. IBM -- IBM! -- is in our corner now. The symbolism and the substance of that fact alone is astounding.

We haven't shot ourselves in the foot...

The last six months are also notable for some things I feared early on that did not happen. Despite initially sharp debate and continuing objections in some quarters, the hacker community did not get bogged down in a loud and divisive factional fight over the new tactics and terminology. Bruce Perens and I and the other front-line participants in the Open Source campaign did not get publically savaged for trying to gently lead the community in a new direction. And nobody burnt us in effigy for actually succeeding!

The maturity and pragmatism with which the community backed our play made a critical difference. It has meant that the story stayed positive, that we have been able to present open source as the product of a coherent and effective engineering tradition, one able to sustain the momentum and meet the challenge of what the corporate word considers "real support". It has denied the would-be bashers and Gates-worshippers among the press the easy option to dismiss us all as a bunch of fractious flakes.

We've all done well. We've gotten our message out and we've kept our own house in order -- and all this while continuing to crank out key advances that undermine the case for closed software and increase our leverage, like Kaffe 1.0. What comes next?

Towards world domination...

I see several challenges before us:

First: the press campaign isn't over by any means. When I first conceived it back in February, I already knew where I wanted to see positive stories about open source. The Wall Street Journal, the Economist, Forbes, Barron, and the New York Times.

Why those? Because if we truly desire world domination, we've got to get our LSD into the corporate elite's conceptual water supply and alter the beast's consciousness. That means we need to co-opt the media that shape decision-making at the highest corporate levels of the Fortune 500. Personally, all the press interviews and stuff I've done have been aimed towards the one goal of becoming visible enough to those guys that they would come to us wanting to know the open source community's story.

This has begun to happen (besides the Forbes interview, I was a background source for the Economist coverage) -- but it's nowhere near finished. It won't be finished until they have all gotten and spread the message, and the superior reliability/quality/cost advantages of open source have become diffused common knowledge among the CEOs, CTOs, and CIOs who read them.

Second: When I first wrote my analysis of business models, one of my conclusions was that we'd have our best short-term chances of converting established `name' vendors by pushing the clear advantages of widget frosting. Therefore my master plan included concerted attempts to persuade hardware makers to open up their software.

Though my personal approaches to a couple of vendors were unsuccessful, then-president of Corel Computer's speech at UniForum made it clear that CatB and the Netscape example had tipped them over the edge. Subsequently Leonard Zuboff scored big working from the inside with Adaptec (one of the companies I had originally targeted but never got to). So we know this path can be fruitful.

A lot more evangelizing remains to be done here. Any of you who work on with vendors of network cards, graphics cards, disk controllers and other peripherals should be helping us push from the inside. Write Bruce Perens or me about this if you think you might be positioned to help; combination Mister-Inside/Mister-Outside approaches are known to work well here.

Third: The Oracle/Informix/Interbase announcements and SGI's official backing for Samba open up another front. (Actually we're ahead of my projections here; I wasn't expecting the big database vendors to roll over for another three months or so.) That third front is the ability to get open-source software into large corporate networks and data centers in roles outside of its traditional territory in Internet sevices and development.

One of the biggest roadblocks in our way was the people who said ``OK, so maybe Linux is technically better, but we can't get real enterprise applications for it.'' Well, somehow I don't think we'll be hearing that song anymore! The big-database announcements should put the `no real apps' shibboleth permanently to rest.

So our next challenge is to actually get some Fortune 500 companies to cut over from NT to Linux or *BSD-based enterprise servers for their critical corporate databases, and go public about doing that.

Getting them to switch shouldn't be very hard, given the dog's-vomit reliability level of NT (waving a copy of John Kirch's white paper at a techie should often be sufficient). In fact, I expect this will swiftly begin to happen even without any nudging from us.

But that will only be half the battle. Because the ugly political reality is this: The techies with day-to-day operational responsibility that are doing the actual switching are quite likely to feel pressure to hide the switch from their NT-brainwashed bosses. Samba is a huge win for these beleaguered techies; it enables open-source fans to stealth their Linux boxes so they look like Microsoft servers that somehow miraculously fail to suck.

There's a problem with this, however, that's almost serious enough to make me wish Samba didn't exist. While stealthing open-source boxes will solve a lot of individual problems, it won't give us what we need to counteract the attack marketing and FUD-mongering that we are going to start seeing big-time (count on it) as soon as Microsoft wakes up to the magnitude of the threat we actually pose. It won't be enough to have a presence; we'll need a visible presence, visibly succeeding.

So I have a challenge for anybody reading this with a job in a Fortune 500 data-center; start laying the groundwork now. Pass around the Kirch paper to your colleagues and bosses. Start whatever process you need to get an Oracle- or Informix- or Interbase-over-Linux pilot approved -- or get prepared to just go ahead and do it on the forgiveness-is-easier-than-permission principle. Some of these vendors say they're planning to offer cheap evaluation copies; grab them and go!

I and the other front-line participants in the Open Source campaign will be doing our damnedest to smooth your path, working the media to convince your bosses that everybody's doing it and it's a safe, soft option that will look good on their performance reports. This, of course, will be a self-fulfilling prophecy...

Fourth: Finally, of course, there's the battle for the desktop -- Linus's original focus in the master plan for world domination.

Yes, we still need to take the desktop. And the most fundamental thing we still need for that is a zero-administration desktop environment. Either GNOME or KDE will give us most of that; the other must-have, for the typical non-techie user, is absolutely painless setup of Ethernet, SLIP, and PPP connections.

Beyond that, we need a rock-solid office suite, integrated with the winning environment, that includes the Big Three applications -- spreadsheet, light-duty database and a word processor. I guess Applix and StarOffice come close, but neither are GNOME- or KDE-aware yet. Corel's port of WordPerfect will certainly help.

Beyond repeating these obvious things there's not much else I'll say about this, because there's little the Open Source campaign can do to remedy the problem directly. Everybody knows that native office applications, well documented and usable by non-techies, are among the few things we're still missing. Looking around Sunsite, I'd say there might be a couple of promising candidates out there, like Maxwell and Xxl. What they mainly need, I'd guess, is documentation and testing. Would somebody with tech-writing please volunteer?

But this is probably getting into too much detail. The important thought I'd like to leave you with is this:

We're winning!

Yes, we're winning. We're on a roll. The Linux user base is doubling every year. The big software vendors are being forced to take notice by their customers. Datapro even says Linux gets the best overall satisfaction ratings from managers and directors of information systems in large organizations. I guess that means not all of them are pointy-haired bosses...

The explosive growth of the Internet and the staggering complexity of modern software development have clearly revealed the fatal weaknesses of the closed-source model. The people who get paid big bucks to worry about these things for Fortune 500 have understood for a while that something is deeply wrong with the conventional development process. They've seen the problem become acute as the complexity of software requirements has escalated. But they've been unable to imagine any alternative.

We are offering that alternative. I believe this is why the Open Source campaign has been able to make such remarkable progress in changing the terms of debate over the last six months. It's because we're moving into a conceptual vacuum with a simple but powerful demonstration -- that hierarchy and closure and secrecy are weak, losing strategies in a complex and rapidly-changing environment. The rising complexity of software requirements has reached a level such that only open source and peer review have any prayer of being effective tactics in the future.

The Economist article was titled ``Revenge of the Hackers'', and that's appropriate -- because we are now re-making the software industry in the image of the hacker culture. We are proving every day that we are the people with the drive and the vision that will lead the software industry into the next century.

Eric S. Raymond <esr@thyrsus.com>


Copyright © 1998, Eric Raymond
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


A PERSONAL LINUX/ALPHA SYSTEM: 64 BITS FOR UNDER $500

by Russell C. Pavlicek


BACKGROUND

This article is the result of my efforts to build a personal Digital Alpha workstation to run Linux/Alpha. For under $500 (US), I assembled a 166 MHz Universal Desktop Box (often called a UDB or Multia) with a half gigabyte of disk space, 32 megabytes of memory, 2x CD ROM drive, ethernet port, 2 serial ports, and a parallel port. For a few dollars more, this could easily be expanded with more disk and RAM.

Rather than engage in a lengthy discourse on how I went about building my particular Linux/Alpha workstation, I'd like to share my observations regarding the Alpha-specific peculiarities I encountered. I had used Linux/x86 for years, but I found that there were some Alpha installation issues which were brand new to me. Once I understood these few issues, it was simple to construct a useful Linux/Alpha system.

WHY MAKE AN INEXPENSIVE ALPHA SYSTEM?

Why indeed? When the usual x86 offerings are inexpensive and omnipresent, why bother constructing a low-end Linux/Alpha box?

  1. It makes a decent, inexpensive 64-bit development and testing platform.
  2. There's lots of talk today about running 64-bit applications. But much of the discussion is nothing more than that -- talk. If you want to find out if your application will survive and thrive in 64 bits, here is a very low cost opportunity to try it out. A low cost Linux/Alpha platform represents an excellent opportunity for porting and testing software in a true 64-bit environment.

  3. It is an excellent proof-of-concept system for faster Alpha systems.
  4. Just as many organizations are beginning to see that Linux can be used to their competitive advantage, others are beginning to see that the Linux/Alpha combination can be used in environments where extreme horsepower is required for certain tasks. However, those who hold the purse strings are wary of pouring money into a different hardware architecture until they have concrete proof that the new system will do the job (and rightfully so). An inexpensive Linux/Alpha system becomes an ideal prototype that can demonstrate the possible effectiveness of the proposed solution without incurring high costs. Once the concept is validated, it may be possible to secure management backing for a full-blown Linux/Alpha solution.

  5. It is a development tool for Linux/IA64.
  6. The Intel IA64 architecture is coming with the expected release of Intel's "Merced" processor around the year 2000. Many UNIX vendors are lining up to make sure that their particular UNIX implementation becomes the standard UNIX for the new architecture. Many Linux folks, of course, would like to see Linux/IA64 enter the fray early so that early adopters of the IA64 architecture might find themselves looking at Linux/IA64 as a viable first 64-bit operating system.

    So what does Linux/Alpha have to do with this? Well, some programs in the mountain of Open Source code that we find in the Linux world are not currently functional in the 64 bit world of Linux/Alpha. And many new programs have to be tested on a 64-bit environment to make sure they will make the jump to Linux/IA64. We need to make sure that all those programs that add value to Linux are 64-bit friendly when IA64 hits the streets. An excellent way of doing that is through porting the code to the 64-bit Linux/Alpha platform. Not only will the Linux world be ready to invade the IA64 space when it is birthed, but this will also serve to further solidify the Linux/Alpha offering.

  7. Linux/Alpha solutions are becoming more cost effective
  8. I've met many people over the past few years who desired to use Linux/Alpha, but could not afford the price tag. Now, however, it is clear that falling hardware prices and the availability of used Alpha machines is clearing the way for people to use Linux/Alpha. Just recently, retailers like Linux Systems Labs began selling low-priced Red Hat Linux/Alpha CDs (GPL distribution). And the long-awaited Debian V2 will support the Alpha platform as well.

    There has never been a better time to take a look at Linux/Alpha.

  9. Experience, experience, experience!
  10. It never hurts to add more current technical expertise to your resume. And experience in a 64-bit UNIX implementation could look awfully nice on the resume when many companies begin employing 64-bit architectures like Alpha and IA64.

  11. My reason...
  12. I work for Compaq Computer Corporation (in the part of Compaq which used to be Digital Equipment Corporation) as a Technical Consultant in the Networks and Systems Integration Services (NSIS) organization in the US Federal Government Region. It is my desire to be ready to serve Linux/Alpha customers in the Federal Government, so I decided to prepare myself by personally purchasing, installing, and using a Linux/Alpha system.

    I have already used Linux/x86 successfully as a part of two customer engagements within the past year. A few of my coworkers locally have also used Linux/x86 in customer engagements during that timeframe. I haven't seen any Linux/Alpha work yet, but I intend to be ready when it comes!

  13. My other reason...
  14. And let's not forget the big reason: Linux/Alpha is a blast! If you thought Linux was fun to work with on the x86 architecture, wait until you have 64 bits to play with!

THE COSTS:

As the sole breadwinner for a family of four in the greater Washington DC area, I do not have great sums of money to pour into development of a computer system of any sort. I've built several PCs over the years and I've always followed the same basic rules: stay well behind the technology curve and keep it CHEAP! Quality is a concern (building junk is a total waste of money; you lose more by building garbage than by building something that is more expensive but functional), but financial limitations are quite real. So, by buying good used products and/or non-current unused products, I can shave the price down to acceptable levels without sacrificing usability. Sure, I'd like to run dual 600 MHz Alpha processors with 50 gigabytes of disk and a gigabyte of RAM -- but I'd prefer to stay married, thank you!

With these guidelines in mind, I purchased all of the following pieces through on-line auctions (I used eBay, Haggle, and Onsale) and local computer shows in the first few months of 1998.

Here is what I assembled:

1.DEC Universal Desktop Box (UDB; aka Multia)$189
2.TI 16 MB 72 Pin Parity Memory$29
3.16 MB 72 Pin Parity Memory$38
4.IBM 540 MB SCSI Disk$44
5.Toshiba SCSI 2x CD$25
6.Generic SCSI Cable$16
7.Generic Internal SCSI Cable$13
8.Mitsumi Keyboard (PS/2 style)$13
9.NEC SVGA Monitor$94
10.DEC Mouse (PS/2 style)(free; included with UDB)
11.Generic SCSI Case(free; had this already)
12.Red Hat Powertools 5.0$19
 *** TOTAL ***$480

THE GOTCHAS:

As a user of Linux/x86 since 1995, I've grown accustomed to the capabilities and methodologies of the Linux/x86 world. I found a handful of differences in the Linux/Alpha world which are worth noting to someone who wants to make the jump to 64 bits:

  1. A Linux/Alpha system with a single hard drive uses at least three partitions
  2. The Alpha system needs to load the initial boot code from a partition that the Alpha console (in ROM) understands. So, a single disk Linux/Alpha system is likely to have at least three partitions:

    1. /dev/sda1 tiny DOS FAT partition containing the loader
    2. /dev/sda2 root partition
    3. /dev/sda3 swap partition

    Linux/x86 folks will obviously be used to the need for root and swap partitions, but the floppy-sized FAT partition containing LINLOAD.EXE and MILO is a different concept.

  3. MILO instead of LILO
  4. Linux/x86 has the simple, yet highly useful, LILO (LInux LOader) to boot Linux from the hard drive. Linux/Alpha has MILO (MIni LOader) to accomplish the same task, but using a slightly different methodology. Rather than residing in a boot block, MILO resides in the tiny DOS-formatted partition on the SCSI drive (normally /dev/sda1). The Alpha console boots MILO from the DOS FAT partition, then MILO boots Linux/Alpha from the Ext2 partition (/dev/sda2).

  5. Multiple kernels
  6. Since there are often differences between the hardware standardly found on different Alpha machines, you are given a choice of pre-built kernels to use when installing the operating system. It is generally quite easy to select the appropriate kernel for your machine, since the documentation very clearly maps the available kernels to most common Alpha models. But it is still different than most Linux/x86 installation procedures.

  7. Different processor architecture
  8. The Alpha processor family and the x86 processor family are two different animals. As one might expect, a 64-bit RISC processor and a 32-bit CISC processor go about their respective tasks in very different ways. What does this mean to someone who wants to build a Linux/Alpha workstation? Don't be stingy with memory or processor speed if you can help it. In particular, I've found that my Linux/Alpha system performs much better with additional memory. There is quite a noticeable improvement in speed when running at 32 megabytes as opposed to 16 megabytes. In fact, the first real upgrade I hope to perform is to add more memory to the system. Thankfully, memory is much more affordable than it was at the beginning of the decade, so adding a few more megabytes isn't a particularly expensive proposition.

  9. Check out the limitations of the Alpha you intend to purchase
  10. It is important to remember that some Alpha machines (notably the older Turbochannel bus machines) do not currently run Linux. Make certain that the Alpha system you intend to purchase is listed on the Linux/Alpha Home Page. Also, if you select the UDB, be aware that it is a bounded box -- there is essentially no room for an internal disk drive (yes, you can use a 2.5 inch SCSI drive, but that is expensive compared to a 3.5 inch SCSI drive), there is absolutely no room for a CDROM drive in the box, and the processor speed is relatively slow. If you intend to upgrade the system to a faster Alpha processor in the future, you'd probably be better off with an Alpha with a more standard case and motherboard. I chose the UDB because it was available very cheaply and I already owned an external drive cabinet that I could use to mount the hard drive and CDROM drive. I found some excellent technical information online provided by Annex Technology.

  11. Use an installation "cookbook", if available
  12. While the Red Hat 5.0 Linux/Alpha installation is quite good, it is not quite as simple as the Linux/x86 installation. As I've already mentioned, you'll need to select a kernel for your machine, create a small FAT boot partition, as well as a few other simple steps which you didn't need to perform on a Linux/x86 install. It is helpful, then, to locate and use a "cookbook" or "cheat sheet" to help you during the installation.

    The UDB I purchased was originally sold by Starship Computer via one of the Internet auctions. I purchased the UDB used from the original buyer who no longer needed the unit. This person included the original installation instructions supplied by Starship in the box. The instructions were quite good and very detailed. I have already seen similar documents circulating in the newsgroups pertaining to the installation of Red Hat 5.1 for Alpha. If you can obtain such an installation guide, it can save you time and keep you from forgetting small Alpha-specific details.

  13. Beware unmatched memory
  14. For the UDB, at least, matched memory SIMMs are critical. The first set I obtained from an auction which advertised new SIMMs shipped together. They did not specifically say that they were matched. They were not. That's one mistake I will not make again. The SIMMs did work together for a while, but once the machine ran for a while, it began to generate memory errors. I replaced them with a set of matched SIMMs and all memory problems ceased.

  15. Thinwire Ethernet problem for UDB kernel ("noname") for Red Hat 5.0
  16. I found out that the kernel supplied in Red Hat 5.0 for the UDB (noname.img) had a bug that prevented it from using the thinwire ethernet adapter. I simply downloaded the kernel supplied with Red Hat 4.2 and I was back in business.

    This was a problem that took much longer to identify than to fix. The Red Hat errata page (http://www.redhat.com/support/docs/errata.html), one of the first places to turn with possible distribution errors, was silent on this subject at the time. As there are less Linux/Alpha users in the world than Linux/x86, the newsgroups were not spilling over with information on this problem as one would expect if there was a kernel problem in a Linux/x86 distribution. Yet the newsgroups held the answer nonetheless; it just took a little longer to locate the message which gave me the key to the problem.

  17. PPP was broken in Red Hat 5.0
  18. The pppd package supplied in Red Hat 5.0 didn't work properly on Alpha. I consulted the Red Hat errata on the Red Hat homepage and downloaded the corrected PPP kit. One rpm command later, I had a working PPP protocol. Again, it took longer to identify the problem than it did to correct it.

  19. X Windows
  20. While X Windows is usable with only 16 MB of memory, it will need to swap out jobs just to start up. 32 MB will yield a much faster X Windows system, as it will be able to load without swapping. If you can afford more memory, it is to your benefit.

  21. Where's the browser?
  22. Perhaps my greatest frustration was the lack of a fully-functional, native, graphical, 64-bit web browser. Lynx, a character-cell browser, is useful for downloading software upgrades, if needed, such as the kernel and PPP kits mentioned above. Unfortunately, it is not as helpful for general browsing, due to its non-graphical nature. There is Grail, which is written in Python, but the current version (0.4) seems too flaky for normal use. One common solution seems to be to use Netscape for x86 under the EM86 emulator (below), but it's not a "native" Alpha solution.

    As of this writing, the best native solution I've found is QtMozilla, Mozilla compiled using the Qt libraries. It was created as a demonstration of Troll Tech's Qt libraries, but it is quite usable. I have also seen reports of other Linux/Alpha Mozilla implementations, so I hope that we will see a stable, full-featured Mozilla for Alpha before very long.

  23. EM86
  24. Don't forget about EM86, Digital's software for running Linux/x86 binaries on Linux/Alpha. You can find the latest kits at Digital's FTP location. Red Hat kernels included in the 5.0 and 5.1 distributions now support EM86 right out of the box (no longer any need to rebuild the kernel). Also, kernels starting with 2.0.34 (as well as the latest 2.1.x development kernel) have integrated EM86 support without requiring the use of patches before building. Be aware, though, that you may not find the emulation speed acceptable on older, slower Alpha boxes.

  25. Always read the documentation
  26. Make sure you read the FAQ (http://www.azstarnet.com/~axplinux/FAQ.html) and the chapter on the Alpha installation in the Red Hat Installation Guide. And don't forget to check the Red Hat errata page (http://www.redhat.com/support/docs/errata.html) for any known problems in the distribution.

CONCLUSION:

I found that building the UDB was an enlightening experience, as was installing Red Hat Linux for Alpha 5.0. I have already used the system to port 32-bit applications to a 64-bit platform. Even if it is not exactly a whirlwind by current system standards, my inexpensive Linux/Alpha UDB system has been a very worthwhile (and fun) acquisition.


Copyright © 1998, Russell C. Pavlicek
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


A Linux Journal Preview: This article will appear in the November issue of Linux Journal.


Product Review: The Roxen Challenger Web Server

By Michael Pelletier



The Roxen Challenger HTTP Web Server is a marvel ahead of it's time. That's a bold, hard-to-prove statement for a web server when compared to the amazing success of the Apache HTTP Server. Before you stop reading this, you should consider that there is nothing wrong with having two subtly different, but very good tools.

Apache is designed from the ground up to be a simple, open, secure, high-performance HTTP server, and it pays up in spades. Apache is the natural choice for almost all web administrators weaned on NCSA CERN or a commercial HTTP server like Netscape. However, Apache is not exactly intuitive to configure, the configuration in question being three flat text files. Apache also suffers from a monolithic structure (albeit plug-in modularity is a new option if you compile it in) which requires recompiling the source code when making changes or adding modules (such as proxy, database access, etc.).

Roxen takes a different approach to HTTP server design. Roxen is easily installed and configured. The user need only do the normal ./configure and make sequences after unpacking the tar file and reading the README file. This has worked flawlessly for me a dozen times on Intel Red Hat 4.2 and 5.0 machines. After compiling the Pike interpreter (we'll get to that), the installation script tells you to point your browser to http://localhost:x/, x being some random unassigned port. Where the configuration interface server listens for your browser.

Pointing a browser to that URL brings up the on-line, web-centric configuration interface. The first screen sets the configuration user and password information for subsequent configuration sessions. Immediately, virtual servers can be added, and adding a virtual server is a snap. My usual sequence is to find a free IP and bind the hostname.domain to it. Create the aliased Ethernet interface with netcfg specifying the chosen IP, switch to the Roxen configuration interface and add a new server binding it (using simple, point and click menus) to the interface just created, which Roxen automatically detects and reverse looks up for me. Voil<\#225>, I have an instant virtual server; the whole process taking less time than making a cup of coffee.

When creating the server, Roxen asks questions about what kind of server is desired. The choices of Bare Bones, Standard, IPP (Internet Presence Provider), Proxy or a copy of the configurations for any current servers in the system. This gives lots of flexibility when working with more than just a few virtual servers.

Each of the four choices is a certain set of loaded modules for each server. Modules can be mixed and matched to make custom servers. Modules, also written in Pike, can be loaded and unloaded on the fly, and all Modules have a standard configuration interface that plugs into the server configuration interface. Modules include the file system, authentication, database access, CGI and FCGI execution, on-the-fly graphics manipulation and more.

So how is this marvelous server put together? Roxen is written in the Pike language. Pike is an interpreted, threaded C-like language based on an older programming language for MUD systems. Pike is full blown and has a graceful, clean style so much like C that any C programmer can pick it up in minutes. This makes writing custom Roxen modules a snap. Pike's home page has excellent, intelligently written documentation that is completely cross-referenced, and includes a handy function index where many old familiar buddies from the ANSI C libraries can be found.

The downside is that Pike, being a byte code interpreted language, is slower than compiled and optimized C by a noticeable margin. Roxen 1.1 is also a bit buggy, and Roxen 1.2 is still in beta. Having dabbled in 1.2 (which installed just as cleanly as 1.1), I found it very cool with many new modules, some of which are not available for Apache, such as on-the-fly wizard generators and automatic table-formatting of SQL retrieved data. A new update module contacts the Roxen central server in Sweden and upgrades the server and all the modules to the newest debugged versions, as well as offering to download any new modules Idonex has created. 1.2 also uses the new threading built into the latest version of Pike, increasing its performance for high or eccentric load systems and allowing it to take advantage of multi-processor systems.

The most powerful module in the Roxen set is the Roxen Mark-up Language (RXML). RXML looks like HTML and is written directly into the HTML code. When a client retrieves a document from the server, the server first parses the document for RXML tags, changing the HTML output based on the tags used. This is basically server side scripting ala server side Includes, in the Apache parlance, but cleaner. For example:

<html>
<head>
<body>
<if user=jane>
<gtext scale=0.5 nfont="arial" fg="blue"
bg="white">Hi there Jane.</gtext><br>
<else>
<h1>Hey get outta here!</h1>
</if>
</body></head></html>
The <if><else></if> construct outputs different HTML depending on whether the client fetching the page has authenticated itself as the user jane. The <gtext> tag takes the text and renders a gif image of it, on the fly, replacing the <gtext> tag with an <img> tag whose src is the generated image. Many options to gtext are available including transparency, sizes, bevels, automatic Javascript mouse responses and more. Check out Roxen's home page for an example, or the American Association for the Surgery of Trauma web page, where I used gtext and RXML extensively.

Roxen's extreme ease of use and modularity make it a powerful tool for web managers of all needs. The GNU GPL license for Roxen and Pike make the price just right. Like all good GPL software, Pike and Roxen are backed by an active, sharp Internet crowd of Pike programmers and Roxen-heads eager to help you with your questions. Idonex also offers various levels of support for very reasonable prices. The Roxen Server comes pre-packaged with a manual and other non-GPL goodies (like 128bit SSL) from Idonex.

Resources

Pike Home Page: http://pike.idonex.se/
Idonex Home Page: http://www.idonex.se/
Roxen Module Source: http://www.riverweb.com/source/
American Association for the Surgery of Trauma: http://www.aast.org/


Copyright © 1998, Michael Pelletier
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


A Linux Journal Review: This article appeared in the August issue of Linux Journal.


Selecting a Linux Distribution

By Phil Hughes


Any current Linux distribution most likely contains the software needed to do your job, including kernel and drivers, libraries, utilities and applications programs. Still, one of the most common questions I hear is ``which distribution should I get?'' This question is answered by an assortment of people, each proclaiming their favorite distribution is better than all the rest.

My new theory is that most people favor the first distribution they successfully installed. Or, if they had problems with the first, they favor the next distribution they install which addresses the problems of the first.

Let's use me as an example. SLS was my first Linux installation. Unfortunately, SLS had a few bugs--in both the installation and the running system. This, of course, isn't a surprise since this installation took place five years ago.

Now, about this time, Patrick Volkerding came along and created Slackware. Pat took the SLS distribution and fixed some problems. The result looked the same as SLS and worked the same, but without bugs. To this day, I find Slackware the easiest distribution to install.

I have, however, progressed beyond installation problems and found some serious shortcomings in Slackware which have been addressed by other distributions. Before I get into specifics, here is a rough estimate of the number of times I have installed various distributions, in order of first installation. I give you this information to help you understand the basis of my opinions.

That said, here is my blow-by-blow analysis of what is right and wrong with each distribution. Note that this is my personal opinion--your mileage will vary.

SLS/Slackware/MCC

All these distributions are easy to install and understand. They were all designed to install from floppy disk, and packages were in floppy-sized chunks. At one time, I could successfully install Slackware without even having a monitor on the computer.

There are, however, costs associated with this simplicity. Software is saved in compressed tar files. There is no information within the distribution that shows how files interrelate, no dependencies and no good path for upgrades. Not a problem if you just want to try something, but for a multi-computer shop with long-term plans, this initial simplicity can have unforeseen costs in the long run.

Yggdrasil

Yggdrasil offered the most promise with a GUI-based configuration. Unfortunately, development stopped (or at least vanished from the public eye), and it no longer offers anything vaguely current.

Red Hat

When I first looked at Marc Ewing's creation, I was impressed. It had some GUI-based configuration tools and showed a lot of promise. Over the years, Red Hat has continued to evolve and is easy to install and configure. Red Hat introduced the RPM packaging system that offers dependencies to help ensure loaded applications work with each other and updating is easy. RPMs also offer pre- and post-install and remove scripts which appear to be underutilized.

Version 4.2 has proven to be quite stable. The current release is 5.0, and a 5.1 release with bug fixes is expected to again produce a stable product.

The install sequence is streamlined to make it easy to do a standard install. I see two things missing that, while making the install appear easier, detract from what is actually needed:

  1. The ability to save the desired configuration to floppy disk during the installation process (something that both Caldera and S.u.S.E. offer) would simplify subsequent installations on the same or other machines.
  2. The ability to create a boot floppy disk during installation.

Red Hat has evolved into the most ``retailed'' distribution. First it was in books by O'Reilly, then MacMillan and now IDG Books Worldwide. It also appears to have a large retail shrink-wrap distribution in the U.S.

Versions of Red Hat are available for Digital Alpha and SunSPARC, as well as Intel.

Caldera

The Caldera distribution was assembled by the Linux Support Team (LST) in Germany--now a part of Caldera. Caldera, like Red Hat, uses the RPM package format. Installation is similar to Red Hat with the addition of the configuration save/restore option.

Caldera is different from other distributions at this time in that it offers a series of systems including various commercial packages such as a secure web server and an office suite. Caldera is also the most ``commercial feeling'' as far as packaging and presentation.

One complaint I received from a reviewer of my original version of this article is that you cannot perform an upgrade. That is, you must save your configuration files and then re-install.

Debian

Debian is one of the oldest distributions, but because development is strictly by a team of volunteers, it has tended to evolve more slowly. Since development is performed by a geographically diverse group, the ability to manage and integrate upgrades is of primary importance. To that end, you can always upgrade a system by pointing it at an FTP site and instructing it to get the latest versions of all the packages currently installed. In some cases, a service needs to be stopped. (For example, to upgrade sendmail, you would need to stop it, replace the program and then restart it.) This is all done automatically.

Debian deviates from the common RPM packaging format (although it can install RPMs) by using its own .deb format. The .deb format is the most versatile and includes dependency checking as well as pre- and post-install and remove scripts. This is why the sendmail example in the previous paragraph can be handled automatically.

The most difficult thing about Debian is the initial installation. Or, put another way, fear of dselect, the installer program. The design of dselect is old, and while it made sense when there were only 50-100 packages in a Linux install, it is out of control now that there are around 1000. A replacement for dselect is being developed and will be available in Debian 2.1.

Versions of Debian (with limited applications/utilities) are available for Digital Alpha and M68k.

S.u.S.E.

S.u.S.E. is a German distribution with an installation ``look and feel'' similar to Caldera. It also uses the RPM package format and offers a save/restore configuration option during installation.

Two things make S.u.S.E. stand out from the others. First, XFree86 support tends to be better than other distributions because S.u.S.E. works closely with the XFree86 team. Second, there are more applications and utility programs in this distribution. A full installation takes over 2GB of disk space.

YAST, the install/administration tool, can handle .deb and .tgz packages as well as RPMs. Also, upgrades are quite easy and can be performed by putting in a new CD or pointing YAST at the files and telling it to perform the upgrade.

Which Do I Choose?

It depends. I have one system running Caldera, three running Red Hat (a PC, a Digital Alpha and a SunSPARC), two running Slackware, one running S.u.S.E. (a laptop) and quite a few running Debian. (Yes, I personally own too many computers.)

Further, there are problems with all the distributions--not the same problems, but problems nevertheless. As a result, I don't see a perfect answer--yet. This is not to say they don't work--just that each has its inconsistencies and limitations. They all suffer from the lack of a common administration tool.

At USENIX in 1997, Caldera announced a project called COAS (Caldera Open Administration System). The discussion at the conference showed there were more concepts to consider and a lot of implementation work before COAS could offer a uniform installation system that would meet the needs of the majority of Linux users.

Today, for a general-purpose system I tend to install Debian. I do, however, install other systems for other purposes. For example, I have S.u.S.E. on a new laptop because the volume of software included makes a more impressive demo system.

A better question is, ``which one should you choose?'' The answer is still, ``it depends.'' Here are some hints to help you along the way:

Conclusion

There is my input. Ask any other Linux user, and you will probably get a different opinion from mine. If you are not sure you have the right answer, there are some things you can do to make it possible to change distributions in the future with minimal impact.

Good luck and happy Linuxing.


Copyright © 1998, Phil Hughes
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


Some History and Other Things

By Marjorie Richardson


I am often asked about the history of Linux Journal and Linux Gazette and how I think Linux has changed over the year. Here's the scoop.

Back in 1993, Phil Hughes saw the enormous potential for the Linux operating system and its creator Linus Torvalds. Being a firm believer in open software, he decided to start a magazine dedicated to Linux to encourage the growth of this fledgling operating system. That magazine is Linux Journal. Phil founded the magazine and acted as Editor for the first two issues.

The first issue was published in March 1994 and had 48 pages. It contained an interview with Linus and articles by many now familiar names: Michael Johnson, Mark Komarinski, Ian Murdock, Arnold Robbins, Matt Welsh and Robert Young. The first issue was primarily given away at trade shows and sent to mailing lists; the second had over 900 subscribers. The subscriber base and newsstand presence of the magazine has steadily increased to over 60,000 since that time, and we are currently at 100 pages.

The first two issues of Linux Journal were published by Robert Young. After the second issue, Robert decided to start up Red Hat Software, and Specialized Systems Consultants took over as publisher. Also with the third issue, Michael Johnson took on the role of Editor and continued in that role through the September 1996 issue. I became Editor on February 1, 1997 and began work on the May issue.

I had begun work for SSC in April 1996 and the project I had the most fun with was Linux Gazette. John Fisk had decided he just didn't have the time to devote to the Gazette--what he had started as a learning experience had blossomed into a very popular webzine. He posted issues whenever he had time and in between got mail from people requesting he put it out on a more regular basis. At any rate, he approached Phil requesting that Linux Journal take over the Gazette. Phil said yes and gave the project to me in August. This turned out to be a shrewd move on his part as taking care of the Gazette gave me the necessary confidence to say yes when he asked me to be Editor of Linux Journal the following February. Although I tried for a while to outsource LG, it didn't work out and it is still in my hands. Good thing I love it, since I do most of the work on it on my own time--outside working hours.

Linux Gazette

Linux Gazette is the most popular page on our web site, helping to generate over 150,000 hits a day. All the authors are volunteer, and I am constantly amazed at how much great content people are willing to spend their time generating and then give it away. We have mirror sites worldwide and three translation sites in Italy, France and Russia.

When I first began work at Linux Journal and people asked me where I worked, the usual response was "What's Linux?" Today, not only do people know what Linux is, they approach me to tell me how much they love it and the magazine--this mainly happens when I am wearing a Linux T-shirt.

A Bit About Linux

This year has been a banner year for Linux in terms of market expansion with two block-buster announcements. The first was Netscape's decision to make Mozilla open source. Linux Journal had a great interview with Marc Andreessen and Tom Paquin of Netscape in our August issue and the second part of the interview is exclusively in this issue of LG. With Netscape Navigator going Open Source, can Sun's Java be far behind? Second, Corel and Corel Computer announced they would be porting all their software to Linux and that the new NetWinder would be sold with Linux installed. This announcement came in May after our April issue which contained an interview with Corel Computer's Eid Eid. I'm sure there was a direct correlation between our interview and their decision. (smile)

Actually, it seems like we get a press release each week from someone announcing their product will be supporting Linux. About two months ago, one of these was from Interbase telling us about the recent port of its popular database to Linux. Now, on July 22, Informix has announced that they now support Linux, and that it is available with both S.u.S.E. and Caldera. An announcement from Oracle that they will be porting to Linux was made July 21. In my opinion, sooner or later, Sybase will be following suit. Cobalt's Qube microserver is yet another coup for Linux.

With companies like these supporting Linux, Linux will continue to expand across the globe and, perhaps, even reach Linus' stated goal of world domination.

While I was not able to attend the recent Linux Expo put on by Red Hat in North Carolina, I have heard glowing reports. The vi editor won again over Emacs in the "editor war". This year the war was a held as a paintball tournament with vi winning three out of four games.

Linus' talk was well attended as usual. In it, he announced a code freeze will be coming for the 2.2 kernel in the next month, with the release due in late July or early August. This is good news indeed. The addition of symmetrical multi-processing (SMP) has been a feature eagerly awaited by many.


Copyright © 1998, Marjorie Richardson
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


"Linux Gazette...making Linux just a little more fun!"


Hello, I wrote the first of these articles in January.  I am planning on many more articles in the future but have just finished moving my family to the Olympic Peninsula from Ohio after having been hired to work as a systems programmer for the University of Washington.


The Standard C Library for Linux

Part Two: <stdio.h> character input/output

By James M. Rogers


The last article was on file operations in the standard input/output library <stdio.h>.  This article is on reading and writing characters, strings and arrays to and from a stream.   I am assuming a knowledge of c programming on the part of the reader.  There is no guarantee of accuracy in any of this information nor suitability for any purpose.

As an example of character based processing we will use a program that reads the number of characters, words and lines of a file from standard input and prints the results out to standard out.  Any errors encountered will be printed to standard error.  This will be a weak version of  wc.  (type `man wc` for more information on this UNIX utility program.

The code examples given for each function will typically not run unless the the <angle bracked> items are replaced with real code.  Normally these are things that have to be treated differently depending on what you are trying to do.  As always, if you see an error in my documentation please tell me and I will correct myself in a later document.

-----------------------------------------------------------------
 
#include <stdio.h>     /* include the proper headers */

#define  IN 1          /* looking inside a word */
#define OUT 0          /* looking at white space */

/* count the number of lines, words and characters in standard input */

main() {

    int c,             /* holds the character returned by getchar */
        characters,    /* the number of characters */
        lines,         /* the number of lines */
        words,         /* the number of words */
        state;         /* are we currently in or out of a word */

    /* initialize the count and set the state to outside a word */
    state=OUT;
    characters = words = lines = 0;

    /* get one character at a time from standard in, until EOF */
    while ((c = getchar()) != EOF) {
        characters++;        /* increment the count of characters */
        switch(c) {
        case '\n' :
            lines++;         /* increment the count of lines */
            state = OUT;     /* new-line is white space, outside word */
            break;
        case ' ' :
            state = OUT;     /* space is white space, outside word */
            break;
        case '\t':
            state = OUT;     /* tab is white space, outsides word */
            break;
        default :            /* otherwise we are in a word */
            if (state == OUT) {
                             /* if state is still out and we are in a word */
                             /* then we are at the first letter of the word */
            state = IN;      /* set the state to in */
            words++;         /* increment the count of words */
            }
            break;
        }
    }
    /*  print the results with a formatted print statement */
    printf("%d %d %d\n", characters, words, lines);
}

-----------------------------------------------------------------
 

To read a character from a stream,

    int   getchar (void);
    int   getc(FILE *stream);
    int  fgetc(FILE *stream);
    int ungetc(int c, FILE *stream);

void this is left blank.
FILE *stream is an already existing stream.
int c is a character to be pushed back into the stream.

These functions return an int with the value of the next character from the stream.  If there are no more characters then the end-of-file indicator is set for the stream and the function returns EOF.  If there was a read error then the error indicator is set for the stream and the function returns EOF.

getchar is used to read a single character from standard input.

    int c;
    while((c = getchar()) != EOF) {
         <while not the end of file read and process each character>
    }

getc is used to read a single character from a stream.

    int c;
    FILE *stream;
    if((stream = fopen ("filename", "r")) != (FILE *)0) {
       while((c = getc(stream)) != EOF) {
         <process each character>
       }
    } else {
        <do error handling>
    }

fgetc is used to read a single character from a stream.  getchar and getc are written in terms of fgetc: getchar() is the same as fgetc(STDIN) and getc(x) is the same as fgetc(x).

    int c;
    FILE *stream;
    if((stream = fopen ("filename", "r")) != (FILE *)0) {
       while((c = fgetc(stream)) != EOF) {
         <process each character>
       }
    } else {
        <do error handling>
    }

ungetc is used to push a character back into the stream when you have read one character too many.  This is a common problem for compilers and pattern scanners.  It is possible to push back more than one character but this is not recommended as it is not portable.  An ungetc should follow a read and only push back a single character.

    int c;
    FILE *stream;
    if((stream = fopen ("filename", "r")) != (FILE *)0) {
       while((c = fgetc(stream)) != EOF) {
         <process each character>
         if (some_condition) {
            ungetc(c,stream);
            break;
         }
       }
    } else {
        do error handling
    }

To write a character to a stream,

    int  putchar(int c);
    int  putc(int c, FILE *stream);
    int fputc(int c, FILE *stream);

FILE *stream is an already existing stream.
int c is the character to be written to the stream.

These functions return the character written upon success.  If a write error occurs the error indicator is set for the stream and the function returns an EOF.

putchar writes a character to standard out.  putchar(x) is the same as fputc(x, STDIN)
 
    putchar('x');

putc writes a character to the stream.  putc(x,y) is the same as fputc(x,y)

    int c;
    FILE *stream;
    c='x';
    if((stream = fopen ("filename", "w")) != (FILE *)0) {
        putc(c, stream);
    } else {
        <error handling>
    }

fputc writes a character to the stream.

    int c;
    FILE *stream;
    c='y';
    if((stream = fopen ("filename", "w")) != (FILE *)0) {
        fputc(c, stream);
    } else {
        <error handling>
    }

To read a string from a stream,

    char  *gets(char *s);
    char *fgets(char *s, int n, FILE *stream);

char *s the string that will hold the result.
int n the maximum number of characters to read.
FILE *stream is an already existing stream.

If the read is successful then the pointer to s is returned.  If EOF is encountered and no characters have been read into the string then the string remains unchanged and a null pointer is returned.  If a read error occurs then the string contents are possibly changed in an undefined manner and a null pointer is returned.

gets reads from the stream into the string until the new line character or end-of-file marker is reached.  Never use this function.  Use fgets instead.  There is no bounds checking to see if the returned string fits into the space allowcated for it.  Many applications have been used as security holes in the past based on overwriting the end of a string.

fgets reads at most n characters from the stream into the string.

    char s[1024];
    FILE *stream;
    if((stream = fopen ("filename", "r")) != (FILE *)0) {
       while((fgets(s, 1023, stream)) != (char *)0 ) {
         <process each line>
       }
    } else {
        <do fopen error handling>
    }

To write a string to a stream,

    int  puts(const char *s);
    int fputs(const char *s, FILE *stream);

const char *s
FILE *stream is an already existing stream.

Returns a non-negative value upon success.  Returns an EOF on a write error.

puts writes the string pointed to by s to the stream STDIO and appends a new-line to the end.  The terminating null character is not written to the stream.

    char s[1024];
    FILE *stream;
    strcpy(s,"a typical string");
    if((stream = fopen ("filename", "w")) != (FILE *)0) {
       if(puts(s, stream) == EOF ) {
         <handle error on write>
       }
    } else {
        <handle error on open>
    }

fputs writes the string pointed to by s to the named stream.  The terminating null character is not written to the stream.

    char s[1024];
    FILE *stream;
    strcpy(s,"a typical string");
    if((stream = fopen ("filename", "w")) != (FILE *)0) {
       if(fputs(s, stream) == EOF ) {
         <handle error on write>
       }
    } else {
        <handle error on open>
    }

To read/write between arrays and streams,

    size_t fread(const void *ptr, size_t size, size_t nmemb, FILE *stream);
    size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

const void *ptr is a pointer to the array.
size_t size is the size of each element of the array
size_t nmemb is the number of elements to be processed.
FILE *stream is an already existing stream.

fread reads into the array pointed to by ptr, no more than nmemb elements of the size size, from the stream.  The function returns the number of elements that were successfully read, this value can be less than what was requested, if the function encounters a read failure or an EOF.  A read failure leaves the element that failed in an undefine state. If size or nmemb are zero then the function returns a zero.

    int a[10];
    FILE *stream;
    if((stream = fopen ("filename", "r")) != (FILE *)0) {
        if (fread(a, sizeof(a), 10, stream) < 10){
            <handle a read error>
        }
    } else {
        <handle a file open error>
    }

fwrite writes from the array pointed to by ptr, no more than nmeb elements of the size size, to the stream.  The function returns the number of elements successfully written, which should match nmemb only if no write errors were encountered.

    int a[10];
    FILE *stream;
    if((stream = fopen ("filename", "w")) != (FILE *)0) {
        if (fwrite(a, sizeof(a), 10, stream) < 10){
            <handle a write error>
        }
    } else {
        <handle a file open error>
    }


Bibilography:

The ANSI C Programming Language, Second Edition, Brian W. Kernighan, Dennis M. Ritchie, Printice Hall Software Series, 1988

The Standard C Library, P. J. Plauger, Printice Hall P T R, 1992

The Standard C Library, Parts 1, 2, and 3, Chuck Allison, C/C++ Users Journal, January, February, March 1995

STDIO(3), BSD MANPAGE, Linux Programmer's Manual, 29 November 1993

The Standard C Library for Linux, Part One, James M. Rogers, January 1998


Copyright © 1998, James M. Rogers
Published in Issue 31 of Linux Gazette, August 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next

Linux Gazette Back Page

Copyright © 1998 Specialized Systems Consultants, Inc.
For information regarding copying and distribution of this material see the Copying License.


Contents:


About This Month's Authors


Larry Ayers

Larry 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.

Jim Dennis

Jim is the proprietor of Starshine Technical Services. His professional experience includes work in the technical support, quality assurance, and information services (MIS) departments of software companies like Quarterdeck, Symantec/ Peter Norton Group, and McAfee Associates -- as well as positions (field service rep) with smaller VAR's. He's been using Linux since version 0.99p10 and is an active participant on an ever-changing list of mailing lists and newsgroups. He's just started collaborating on the 2nd Edition for a book on Unix systems administration. Jim is an avid science fiction fan -- and was married at the World Science Fiction Convention in Anaheim.

Chris DiBona

Chris (chris@dibona.com) is a computer security consultant and is the Vice President of the Silicon Valley Linux User's Group. (http://www.svlug.org/). He enjoys Linux, studying terrorism and population statistics. He also grooves on a good Pale Ale. His personal web page can be found at http://www.dibona.com/.

Michael J. Hammel

Michael 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.

Phil Hughes

Phil Hughes is the publisher of Linux Journal, and thereby Linux Gazette. He dreams of permanently tele-commuting from his home on the Pacific coast of the Olympic Peninsula. As an employer, he is "Vicious, Evil, Mean, & Nasty, but kind of mellow" as a boss should be.

Mike List

Mike is a father of four teenagers, musician, and recently reformed technophobe, who has been into computers since April,1996, and Linux since July, 1997.

Eric Marsden

Eric is studying computer science in Toulouse, France, and is a member of the local Linux Users Group. He enjoys programming, cycling and Led Zeppelin. He admits to once having owned a Macintosh, but denies any connection with the the Eric Conspiracy Secret Labs.

Russell C. Pavlicek

Russell is employed by Compaq Computer Corporation (formerly with Digital Equipment Corporation) as a software consultant serving US Federal Government customers in the Washington D.C. area. He runs the Corporate Linux Advocate Homepage and can be reached at pavlicek@altavista.net. He lives with his lovely wife and wonderful children in rural Maryland where they serve Yeshua and surround themselves with a variety of furry creatures. His opinions are entirely his own (but he will allow you to adopt one or two if you ask nicely).

Michel Pelletier

Michel has been breaking Linux machines in the ISP business for years. His idols are K&R, Godel and Duke Ellington. When not in the mountains Michel can be found at michel@colint.com.

Eric S. Raymond

Eric is a semi-regular contributor to Linux Journal. You can find more of his writings, including his paper ``The Cathedral and the Bazaar'', at http://www.ccil.org/~esr/.

Greg Roelofs

Greg Roelofs escaped from the University of Chicago with a degree in astrophysics and fled screaming to Silicon Valley, where he now does outrageously cool graphics, 3D and compression stuff for Philips Research. He is a member of Info-ZIP and the PNG group, and he not only maintains web pages for both of those but also for himself and for the Cutest Baby in the Known Universe. He can be reached by e-mail at newt@pobox.com, or on the web at http://pobox.com/~newt/.

James M. Rogers

James, his wife, and their pets have moved to a new home on the Olympic Peninsula In Washington State. I am now a Systems Programmer for the University of Washington Medical Center and Harbor View Medical Center. I work on the interfaces between medical computer systems.

Doc Searls

Doc is President of The Searls Group, a Silicon Valley consultancy, and a co-founder of Hodskins Simone and Searls. He has been writing on technology and other issues for most of his life. The Flack Jacket series of essays is collected in Reality 2.0, http://www.batnet.com/searls/docworks.html). Other series are Positions and Milleniana. He can be reached via e-mail at searls@batnet.com.


Not Linux


Thanks to all our authors, not just the ones above, but also those who wrote giving us their tips and tricks and making suggestions. Thanks also to our new mirror sites.

My grandaughter, Rebecca is visiting me this week. We've been having a good time going to all the fun places around Seattle and have a lot more to visit. Her sister Sarah will be arriving on Friday to visit a week with me too. I feel very fortunate to have 2 such wonderful granddaughters. Rebecca loves to dance is taking ballet, jazz and tap. Sarah is a Tae Kwon Do student. Pictures of both can be found on my home page.

Have fun!


Marjorie L. Richardson
Editor, Linux Gazette, gazette@ssc.com


[ TABLE OF 
CONTENTS ] [ FRONT 
PAGE ]  Back


Linux Gazette Issue 31, August 1998, http://www.linuxgazette.com
This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com