home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 27 / CDROM27.iso / linux / lg / issue32 / issue32.txt < prev    next >
Encoding:
Text File  |  1998-08-31  |  290.7 KB  |  6,110 lines

  1.  
  2.            Linux Gazette... making Linux just a little more fun!
  3.                                       
  4.          Copyright ⌐ 1996-98 Specialized Systems Consultants, Inc.
  5.      _________________________________________________________________
  6.    
  7.                        Welcome to Linux Gazette! (tm)
  8.      _________________________________________________________________
  9.    
  10.                                  Published by:
  11.                                        
  12.                                Linux Journal
  13.      _________________________________________________________________
  14.    
  15.                                  Sponsored by:
  16.                                        
  17.                                    InfoMagic
  18.                                        
  19.                                    S.u.S.E.
  20.                                        
  21.                                     Red Hat
  22.                                        
  23.                                    LinuxMall
  24.                                        
  25.                                 Linux Resources
  26.                                        
  27.                                     Mozilla
  28.                                        
  29.                                    cyclades
  30.                                        
  31.    Our sponsors make financial contributions toward the costs of
  32.    publishing Linux Gazette. If you would like to become a sponsor of LG,
  33.    e-mail us at sponsor@ssc.com.
  34.    
  35.    Linux Gazette is a non-commercial, freely available publication and
  36.    will remain that way. Show your support by using the products of our
  37.    sponsors and publisher.
  38.      _________________________________________________________________
  39.    
  40.                              Table of Contents
  41.                           September 1998 Issue #32
  42.      _________________________________________________________________
  43.    
  44.      * The Front Page
  45.      * The MailBag
  46.           + Help Wanted
  47.           + General Mail
  48.      * More 2 Cent Tips
  49.           + 2 Cent Tip from the 'Muse
  50.           + Tips and Tricks: Keeping track of your config files
  51.           + 2 cent tip: Cross platform text conversion.
  52.           + XFree86 and the S3ViRGE GX2 chipset
  53.           + Clearing the Screen
  54.           + Re: Shell Scripting Resources
  55.           Re: Recognising the AMD K5-PR166
  56.           Your atapi CDROM
  57.           Tips: simulataneous kernel versions
  58.           Creating man pages made easy!
  59.           2c Tip Re: Cross-platform Text Conversions
  60.           Un-tar as you download
  61.           megaraid drivers
  62.           Re: simultaneous versions of Kernels
  63.           + News Bytes
  64.                o News in General
  65.                o Software Announcements
  66.           + The Answer Guy, by James T. Dennis
  67.           + A Convenient and Practical Approach to Backing Up Your Data,
  68.             by Vincent Stemen
  69.           + Graphics Muse, by Michael J. Hammel
  70.           + Installing StarOffice 4.0 on Red Hat 5.1, by William Henning
  71.           + An Interview with Linus Torvalds, by Alessandro Rubini
  72.           + It Takes Its Toll, by Martin Vermeer
  73.           + Java and Linux, by Shay Rojansky
  74.           + Linux Installation Primer, by Ron Jenkins
  75.           + Linux Kernel Compilation Benchmark, by William Henning
  76.           + Linux Kernel Installation, by David A. Bandel
  77.           + New Release Reviews, by Larry Ayers
  78.                o Patch For Beginners
  79.                o A Simple Typing Tutor
  80.           + Open Source Developer Day, by Phil Hughes
  81.           + Paradigm Shift, by Joe Barr
  82.           + Running Remote X Sessions on Windows 95/98/NT/Mac/PPC
  83.             Clients, by Ron Jenkins
  84.           + Searching a Web Site with Linux, by Branden Williams
  85.           + The Standard C Library for Linux, Part 3, by James M. Rogers
  86.           + The Back Page
  87.                o About This Month's Authors
  88.                o Not Linux
  89.        The Answer Guy
  90.      _________________________________________________________________
  91.    
  92.    The Whole Damn Thing 1 (text)
  93.    The Whole Damn Thing 2 (HTML)
  94.    are files containing the entire issue: one in text format, one in
  95.    HTML. They are provided strictly as a way to save the contents as one
  96.    file for later printing in the format of your choice; there is no
  97.    guarantee of working links in the HTML version.
  98.      _________________________________________________________________
  99.    
  100.    Got any great ideas for improvements? Send your comments, criticisms,
  101.    suggestions and ideas.
  102.      _________________________________________________________________
  103.    
  104.    This page written and maintained by the Editor of Linux Gazette,
  105.    gazette@ssc.com
  106.    
  107.     "Linux Gazette...making Linux just a little more fun!"
  108.      _________________________________________________________________
  109.    
  110.                                 The Mailbag!
  111.                                       
  112.                     Write the Gazette at gazette@ssc.com
  113.                                       
  114.                                  Contents:
  115.                                       
  116.      * Help Wanted -- Article Ideas
  117.      * General Mail
  118.      _________________________________________________________________
  119.    
  120.                         Help Wanted -- Article Ideas
  121.      _________________________________________________________________
  122.    
  123.    Date: Sat, 1 Aug 1998 09:50:38 -0500
  124.    From: The Wonus House, wonus@w-link.net
  125.    Subject: Accessing Microsoft SqlServer vi DB-lib or CT-lib
  126.    
  127.    Do you have additional information sources on connecting to MS
  128.    SqlServer via the Sybase CT/DB libraries? I am most interseted in how
  129.    this could be done from a Solaris client machine.
  130.    
  131.    Any info is greatly appreciated (thanks), Kevin Wonus
  132.      _________________________________________________________________
  133.    
  134.    Date: Sun, 2 Aug 1998 21:55:03 -0400 (EDT)
  135.    From: Paul 'Tok' Kiela, tok@gemini.physics.mcmaster.ca
  136.    Subject: R2000 Mips 2030
  137.    
  138.    I just recently came into a used R2000 "Mips 2030" desktop slab. Aside
  139.    from opening the box and finding that it is indeed running an R2000
  140.    CPU, I know nothing else about the computer -- literally. I have found
  141.    absolutely zero information about any computer bearing the markings
  142.    'MIPS 2030'. To make matters worse, I don't have a proper BNC monitor
  143.    to actually use the box yet, but I'm searching. My question, where can
  144.    I find information about the R2000 port of Linux? I have visited the
  145.    Linux/MIPS page, but the only mention of the R2000/3000 CPU port is an
  146.    URL which points at SGI's statistics on the R3000 CPU. I was hoping I
  147.    could pop Linux on on the box, and happily run it alongside the little
  148.    army of Linux boxen I have now. Any help would be very appreciated.
  149.    
  150.    Thanks.
  151.    Paul.
  152.      _________________________________________________________________
  153.    
  154.    Date: Thu, 06 Aug 1998 12:57:21 +0000
  155.    From: Gulf Resources Co, grc2000@kuwait.net
  156.    Subject: Some Ideas
  157.    
  158.    Anyone there who is dreaming of running Delphi in Linux?
  159.      _________________________________________________________________
  160.    
  161.    Date: Wed, 12 Aug 1998 09:21:12 +0200
  162.    From: Jesus A. Muqoz, jesus.munozh@mad.sener.es
  163.    Subject: LILO Problems
  164.    
  165.    I installed Linux in a secondary IDE hard disk booting from a floppy
  166.    disk. Then I tried to install LILO in the MBR of the primary IDE hard
  167.    disk and I did it. My idea was to maintain Windows 95 in the primary
  168.    disk. I configured LILO to be able to start Windows 95, but after
  169.    installing LILO the primary disk cannot be seen either by DOS nor by
  170.    Linux. If I run msdos-fdisk it says that the disk is active but in the
  171.    row where it should appear FAT16 puts unknown or something like that.
  172.    Can I recover the information of the hard disk ?
  173.      _________________________________________________________________
  174.    
  175.    Date: Tue, 11 Aug 1998 09:17:54 +0300
  176.    From: Mehmet Mersinligil, memo@tr-net.net.tr
  177.    Subject: Matrox Productiva G100 8M AGP !!???
  178.    
  179.    Is there a way to configure my Matrox Productiva G100 8MB AGP under X?
  180.    Except buying a a new accelerated X server for 125$ from
  181.    http://www.xig.com ? What should I do?
  182.      _________________________________________________________________
  183.    
  184.    Date: Sat, 08 Aug 1998 18:21:54 +0000
  185.    From: Alexander I. Butenko, alexb@megastyle.com
  186.    Subject: Some questions to be published
  187.    
  188.    1. I wonder can I use the EPSON Stylus Color 400 printer with Linux...
  189.    The interesting thing is that my buggy GIMP beta says to be supporting
  190.    it but can't really print anything....
  191.    
  192.    2. Has anybody encountered such a bug? JavaICQ doesn't run properly
  193.    under KDE (when I open the send or reply or even preferences window
  194.    this window closes immediately). This problem is only under KDE... 3.
  195.    I can't use this Real Player 5.0, because it reports the compression
  196.    errors even with files obtained from www.real.com or that file that
  197.    was installed with it on my hard drive...
  198.      _________________________________________________________________
  199.    
  200.    Date: Thu, 06 Aug 1998 15:33:37 -0400
  201.    From: Bob Brinkmann, Bob.Brinkmann@mindspring.com
  202.    Subject: Being new to the Linux community
  203.    
  204.    I'm in the process of developing a secure, encrypted tunnel for access
  205.    to my company's enterprise network. The clients on the outside dialing
  206.    into the system will be of a Windows 95, 98, NT 4.0 and probably 5.0
  207.    when it decides to rear its ugly head. My question is this, are there
  208.    solutions on the terminating server side written in Linux to handle
  209.    clients' tunnel access and also provide for IPSEC level encryption?
  210.    
  211.    A while back I played with Red Hat's 2.0 release of the software and I
  212.    just purchased Red Hat's 5.1 (Manhattan) version utilizing 2.0.34
  213.    kernel and find it to run quite nicely on both a desktop and several
  214.    Toshiba portables.
  215.    
  216.    Thanks for any advice or information you can provide.
  217.    
  218.    Bob Brinkmann
  219.      _________________________________________________________________
  220.    
  221.    Date: Wed, 12 Aug 1998 13:07:22 -0500
  222.    From: Dennis Lambert, opk@worldnet.att.net
  223.    Subject: Help Wanted : newbie
  224.    
  225.    I recently purchased Red Hat 5.1 and got it running. Evidently I was
  226.    lucky in that I have a fairly full FAT 32 Win 98 drive and kind of
  227.    stumbled through the defrag / fips / boot to CD / repartition / full
  228.    install with LILO process. Everything worked, but I'm a little
  229.    nonplussed. A few topics I'd absolutely love to get feedback on...
  230.      * Turns out I have a lousy WinModem. I can see the feedback now,
  231.        (Run it over with your car)
  232.      * I have grown fat and lazy with Win 98 and find myself looking for
  233.        "Display Properties" and such. I'm very familiar with C and such
  234.        and am not afraid of hacking scripts or the like, but my problem
  235.        is thus: Where is a (succinct) list of what gets run when, from
  236.        where, and why. I'd love to tweak everything if only I could find
  237.        it.
  238.      * I have something called an "Ensoniq Audio PCI" sound card with
  239.        "legacy emulation" I don't even know how to begin to get this
  240.        thing working. What are the first steps in enabling hardware?
  241.      * Where do I get information on mounting drives (FAT 32 especially)
  242.      * I think my printer works (at least text does), but how do I print
  243.        things (man pages)
  244.        
  245.    I'm not an idiot, not even a "dummy", but what is a good book to
  246.    answer the basic questions? I have "Linux in a Nutshell" and it has a
  247.    very good command reference and a few other things, but doesn't help
  248.    in tweaking things.
  249.    
  250.    I don't really expect anyone to answer all of these concerns, but any
  251.    little help would be greatly appreciated.
  252.    
  253.    Dennis Lambert
  254.      _________________________________________________________________
  255.    
  256.    Date: Mon, 17 Aug 1998 16:54:20 +0100
  257.    From: Fabrice_NORKA_-_SAPHIR@PECHINEY.COM
  258.    Subject: Deb to RPM translator
  259.    
  260.    I changed from a Debian distribution to a Red Hat 5.0 lately and was
  261.    wandering if there were a tool like 'alien' to convert Debian packages
  262.    to Red Hat packages. My personal e-mail is NORKAF@AOL.com
  263.    
  264.    Thank you and God save Linux community :-)
  265.      _________________________________________________________________
  266.    
  267.    Date: Mon, 17 Aug 1998 13:18:31 -0400
  268.    From: Chris Bruner, cbruner@compulife.com
  269.    Subject: Idea's for improvments and articals
  270.    
  271.    An idea for an article. (You may have already done this but I couldn't
  272.    find a search engine to look up past articles). I have yet to get my
  273.    Red Hat 5.1 to connect to the Internet. (Their support is GREATLY
  274.    overstated.) I'm consquently using Win95 to do my Internet work. The
  275.    reason for this is that my modem, network adapter and sound card are
  276.    all Plug and Play (PnP). I would like to see an article detailing step
  277.    by step, for a Linux beginner, how to install Tom Lee's PnP Package.
  278.    This would involve recompiling the kernel which I'm not afraid of, but
  279.    have no idea how to go about it. The more step by step the better. I'm
  280.    from the DOS world and any assumed knowledge that I have might be
  281.    wrong.
  282.    
  283.    Thanks for a great magazine.
  284.    
  285.    Chris Bruner
  286.      _________________________________________________________________
  287.    
  288.    Date: Tue, 18 Aug 1998 21:23:27 +1200
  289.    From: Andrew Gates, andrewga@fcf.co.nz
  290.    Subject: Help wanted for a (Cheap) COBOL combiler for Linux
  291.    
  292.    I have a friend who is doing a refresher course in Cobol in a Unix
  293.    environment. I have suggested that she run Linux, and pick up a cheap
  294.    / shareware copy of a Cobol compiler for Linux from somewhere. Knowing
  295.    absolutely nothing about either Linux or Cobol, am I dreaming, or is
  296.    there a realistic alternative to the compilers I have seen retailing
  297.    for ~$1,500 US? I'd really appreciate any help/advice anyone can
  298.    offer.
  299.    
  300.    Andrew Gates
  301.      _________________________________________________________________
  302.    
  303.    Date: Wed, 19 Aug 1998 18:37:34 +0200
  304.    From: ppali@friko6.onet.pl
  305.    Subject: RadioAktiv radio tuner
  306.    
  307.    I am one of those Linux users, who are not experts, even after a year
  308.    or more of working with the OS. I like very much discovering by myself
  309.    various aspects of Linux, trying out the many programs and help tips.
  310.    What is important is that it works well and that I can use it for most
  311.    of the common computer tasks (after a bit of tinkering). Now I have
  312.    decided for the first time to post a following question:
  313.    
  314.    After trying many radio tuners available on the net and failing to
  315.    make my RadioAktiv radio card work under Linux I am stuck. Maybe
  316.    someone would give me a few tips (or one TIP)?
  317.      _________________________________________________________________
  318.    
  319.    Date: Tue, 25 Aug 1998 15:59:21 -0500
  320.    From: Hilton, Bradley D. (Brad), HiltonBD@bv.com
  321.    Subject: Trident 985 AGP
  322.    
  323.    Is it possible to get X running on a Trident 985 AGP video card? What
  324.    server would I use? Thanks,
  325.    
  326.    Brad Hilton
  327.      _________________________________________________________________
  328.    
  329.    Date: Mon, 24 Aug 1998 17:19:21 -0700
  330.    From: dk smith, dks@MediaWeb.com
  331.    Subject: IDE disks
  332.    
  333.    If I could only find a definitive reference on setting up IDE disks,
  334.    SCSI disks, and partitioning issue for running with Linux, NT, and
  335.    LILO. I am new to this stuff. The docs at Red Hat, although extensive,
  336.    were not enough for me.
  337.    
  338.    -dk
  339.      _________________________________________________________________
  340.    
  341.    Date: Thu, 27 Aug 1998 16:05:15 +1200
  342.    From: Mark Inder, mark@tts.co.nz
  343.    Subject: Help Wanted: Looking for an Xwin Server software that runs
  344.    under win95/nt
  345.    
  346.    We use a Red Hat 4.2 machine in our office as a communications server.
  347.    This is running well with the facility of telnet connections for
  348.    maintenance, diald for PPP dial up - internet and email, and uucp for
  349.    incoming mail.
  350.    
  351.    I would like to run an X server on my windows PC to be able to use X
  352.    client software on the Linux PC over the local Ethernet. Does anyone
  353.    know of a shareware for freeware version which is available.
  354.    
  355.    TIA Mark
  356.      _________________________________________________________________
  357.    
  358.    Date: Thu, 27 Aug 1998 00:02:28 -0500
  359.    From: Todd Thalken, tdthalk@megavision.com
  360.    Subject: Looking Into Linux For PPP Server
  361.    
  362.    I am interested in implementing Linux in our office network.
  363.    
  364.    Specifically, we would like to set up a Linux box as a dial-up PPP
  365.    server so that remote users can access the office intranet.
  366.    
  367.    Could you explain what hardware (multiport controllers) works best
  368.    with Linux, and explain the steps necessary to set the Linux box up as
  369.    a PPP server. Most of our client computers will be using Windows 95/98
  370.    dial-up networking. We would like to have the server assign IP
  371.    addresses dynamically.
  372.    
  373.    This seems like it would be a relatively common question, so if there
  374.    is already good information available please let me know where I can
  375.    find it.
  376.    
  377.    I have read a lot about Linux, but still consider myself a green
  378.    "newbie".
  379.    
  380.    Thanks!
  381.    Todd Thalken
  382.      _________________________________________________________________
  383.    
  384.                                 General Mail
  385.      _________________________________________________________________
  386.    
  387.    Date: Sun, 02 Aug 1998 18:25:16 +0000
  388.    From: Gulf Resources Co, grc2000@kuwait.net
  389.    Subject: Delphi for Linux
  390.    
  391.    I am a Delphi Developer. I am also a big fan of Linux and GNU
  392.    Softwares.
  393.    
  394.    Anybody there who wants to join me in knocking the doors of Inprise
  395.    Corp (Borland ) to convince them to port C++ Builder and Delphi to X
  396.    Window.
  397.    
  398.    If these things happen, Microsoft will be very upset.
  399.    
  400.    What Linux needs is an innovative company like Borland or Symantec.
  401.      _________________________________________________________________
  402.    
  403.    Date: Mon, 03 Aug 1998 02:16:54 +0100 (BST)
  404.    From: Hugo Rabson, hugo@rabson.force9.co.uk
  405.    Subject: response to Ruth Milne
  406.    
  407.    I tell you, .....
  408.    
  409.    Are you familiar with Nietzsche's description of the ordinary man's
  410.    journey from man to superman? ...how he "goes down" into the abyss and
  411.    comes up the other side? Moving from Windows to Linux is a bit like
  412.    that. ;)
  413.    
  414.    My adventure started in late April. I was sick and tired of Windows NT
  415.    bluescreening. I read an article saying how stable Linux was in
  416.    comparison. I looked into GUIs & found KDE to be to my liking.
  417.    
  418.    In the end, I vaped NT because I needed the hard disk space. ;-P
  419.    
  420.    It is now August. I have had ro reinstall almost a dozen times because
  421.    I am still getting used to "The Linux Way". I have been using
  422.    computers since i was 6; PCs since I was 16; Windows since I was 18.
  423.    Linux is very stable indeed but it is eccentric & definitely not
  424.    user-friendly, unless your definition of user differs wildly from
  425.    mine.
  426.    
  427.    I have written a "HOWTO" so that I can recover quickly if I have to
  428.    reinstall the entire OS and GUI. It is currently 3500 words long, and
  429.    tells me how to install RedHat, compile a new kernel, compile&install
  430.    KDE 1.0, install the BackUPS software, configure dial-up networking &
  431.    autodial, install AutoRPM, and .. umm... that's it, so far.
  432.    
  433.    Don't get me wrong: Linux _is_ a wonderful thing. It's just ... It's
  434.    _such_ a leap from Windows! I am convinced my primary client (with a
  435.    dozen Windows machines) could function very well with Linux &
  436.    Applixware instead of Windows & Office, just so long as they have
  437.    someone competent to maintain their systems. Of course, they'll need
  438.    much less maintenance under Linux than under Windows ;)
  439.    
  440.    Linux requires a lot of competence & intelligence (and downloads!) if
  441.    you're going to set it up. Windows doesn't. On the other hand, it
  442.    seems much less prone to these embarrassing GPFs. :)
  443.    
  444.    Hugo Rabson
  445.      _________________________________________________________________
  446.    
  447.    Date: Thu, 6 Aug 1998 13:01:42 +0200 (CEST)
  448.    From: Hugo van der Kooij, hvdkooij@caiw.nl
  449.    Subject: Linux Gazette should not use abusive language!
  450.    
  451.    This is my final note to you about this subject. I have not heard nor
  452.    seen a single response in the past regarding this issue.
  453.    
  454.    I will however request mirror sites to stop mirroring unless you
  455.    remove your abusive language from the Linux Gazette.
  456.    
  457.    The following text should be removed from ALL issue's:
  458.    
  459.    The Whole Damn Thing 1 (text) The Whole Damn Thing 2 (HTML)
  460.    
  461.    I presume I am not the only person that find this text not at all
  462.    suited for a Linux publication. It is in effect offensive and could
  463.    easily be removed
  464.    
  465.    Hugo van der Kooij
  466.    
  467.      Actually, I have answered you at least twice about this issue. I
  468.      don't find the word Damn either abusive or offensive and have had
  469.      no objections from anyone else. So, why don't we put it to a vote?
  470.      Okay, you guys out there, let me know your feelings about this.
  471.      Should I remove the "Damn" from "The Whole Damn Thing" or not? I
  472.      will abide by the majority. --Editor) 
  473.      _________________________________________________________________
  474.    
  475.    Date: Sun, 09 Aug 1998 15:48:34 -0600
  476.    From: Mark Bolzern, Mark@LinuxMall.com
  477.    Subject: Some History and Other Things LG #31
  478.    
  479.    http://www.linuxgazette.com/issue31/richardson.html
  480.    
  481.    Marjorie,
  482.    
  483.    Neat issue of the Gazette, thanks for all the hard work. I'm proud to
  484.    be a sponsor, Just sent another $1K.
  485.    
  486.    One little teensie issue of fact though:
  487.    
  488.    First the quote: The first two issues of Linux Journal were published
  489.    by Robert Young. After the second issue, Robert decided to start up
  490.    Red Hat Software, and Specialized Systems Consultants took over as
  491.    publisher. Also with the third issue, Michael Johnson took on the role
  492.    of Editor and continued in that role through the September 1996 issue.
  493.    I became Editor on February 1, 1997 and began work on the May issue.
  494.    
  495.    And the correction: Actually Bob (Robert) started a Linux catalog
  496.    within the ACC Bookstores. It wasn't until quite a bit later when he
  497.    met Marc Ewing that he folded ACC into Marc's Red Hat Software.
  498.    
  499.    I wuz there ;->
  500.    
  501.    Thanks
  502.    Mark
  503.      _________________________________________________________________
  504.    
  505.    Date: Sat, 8 Aug 1998 15:06:37 -0700 (PDT)
  506.    From: Heather Stern, star@starshine.org Subject: Re: those crazy links
  507.    
  508.      On http://www.linuxgazette.com/issue31/tag_95slow.html, the link
  509.      pointing back to the table of contents points to lg_toc30.html
  510.      instead of lg_toc31.html. No, wait... all of the issue 31 answer
  511.      guy pages seem to be mislinked (except the main one.) Also, the
  512.      "previous section" button on the pages mentioned above seem to be
  513.      mislinked as well... This isn't really important since most normal
  514.      people like me use the back button like a religion, but it always
  515.      helps to be consistent and have links pointing where they should,
  516.      doesn't it? :)
  517.      
  518.    Yes, actually, it *is* important to me, and the base files are mostly
  519.    generated by a script (making it hard to get wrong). But, I broke some
  520.    stuff in the footer logic, so I did a proper footer by hand and
  521.    propoagted it into the tag_ files myself. So, as I go look at the
  522.    template I used...
  523.    
  524.    Dad-blammit, you're right!! All of the 30's in there should be 31's.
  525.    (Although the copyright notice is correct.) Mea culpa!
  526.    
  527.      Thanks for your time... --Charles Ulrich. p.s. May be worth the
  528.      effort to try one of those link checker bots that seem ever so
  529.      popular on the web these days...
  530.      
  531.    Maybe, but it's being worked on in a private Linux network. Most of
  532.    those "web bots" only access external sites properly.
  533.    
  534.    I should have run the command 'lynx -traversal' at the top of it, so
  535.    I'd have a badlink report, but I was in a last-minute rush. I've done
  536.    so now, and found another error that you missed.
  537.    
  538.    One of the beautiful things about the web, is that a minor misprint
  539.    can actually be undone, unlike the world of print. I've submitted a
  540.    corrected packet to our editor. Thanks for mentioning it.
  541.    
  542.    -*- Heather Stern -*-
  543.      _________________________________________________________________
  544.    
  545.    Date: Fri, 7 Aug 1998 11:13:47 +0000
  546.    From: kengu@credo.ie
  547.    Subject: news from Irish LUG
  548.    
  549.    Hello, I'm involved with the Irish Linux Users Group website and was
  550.    wondering if you would please mention that we are currently compiling
  551.    a list of people in Ireland that would be interested in getting the
  552.    'Linux Journal' - details are available at our website
  553.    http://www.linux.ie/.
  554.    
  555.    thanks
  556.    Ken Guest
  557.      _________________________________________________________________
  558.    
  559.    Date: Thu, 06 Aug 1998 17:30:55 +0100
  560.    From: James Mitchell, james-t.mitchell@sbil.co.uk
  561.    Subject: Re: The other side of the story (or, on the other, other
  562.    hand)
  563.    
  564.    Just before I launch into the meat of this email, I'd like to say that
  565.    the Linux Gazette is excellent. good articles, and good tips and
  566.    comments.
  567.    
  568.    I'm writing about the mail in the August issue "The Other Side of the
  569.    Story", in which Antony Chesser compares the Windows GUI to the shell
  570.    prompt, especially the line
  571.    
  572.    "When Linux finishes installing, you're left with a # prompt. When
  573.    WIN95 finishes installing, you've a fairly intuitive GUI that allows
  574.    you to quickly and easily install and run programs, connect to the
  575.    net, and **apply updates without re-compiling the kernel**"
  576.    
  577.    My quibble is with the underlying assumption that a GUI (and here I
  578.    assume that includes Mac, and X, as well as Windows) is more intuitive
  579.    then a command line. I argue that for a complete novice one is as bad
  580.    as the other, neither a command line nor a screen full of little
  581.    coloured icons and a START button are instantly comprehensible to a
  582.    complete computer novice.
  583.    
  584.    (Before you write me off as insane - remember that a GUI is supposed
  585.    to shorten the time it takes to learn how to operate the computer,
  586.    they don't eliminate the time altogether.)
  587.    
  588.    Do you remember the scene in the Star Trek movie (the one with the
  589.    whales...) where Scotty tries to use a Mac? He talks to it, and
  590.    nothing happens... the operator says "You need to use this [the
  591.    mouse]", so Scotty picks up the mouse and uses it like a microphone -
  592.    "Good morning computer."
  593.    
  594.    Can you see where I'm going? Until someone teaches the "complete
  595.    novice" the relationship between the pointer and the mouse, and what
  596.    happens when you click, double-click, or drag with the mouse, they
  597.    will be just as lost as a novice sitting in front of a command line.
  598.    Actually, they may be worse off... we have had typewriters for a lot
  599.    longer then mice, and people will grasp the concept of typing faster
  600.    then clicking on pictures.
  601.    
  602.    So, in summary, I think that a complete novice will have a learning
  603.    curve to cope with whether they use a GUI, or a command line; and the
  604.    rest of us should remember that there is a difference between "ease of
  605.    use", and "what I'm used to".
  606.    
  607.    Cheers,
  608.    James
  609.      _________________________________________________________________
  610.    
  611.    Date: Thu, 06 Aug 1998 09:22:46 EDT
  612.    From: Roger Dingledine, arma@seul.org
  613.    Subject: Linux News Standardization/Distribution Project
  614.    
  615.    We've been making progress on our proposal to standardize the format
  616.    and distribution of Linux news. Our design uses the NNTP protocol to
  617.    create a network of servers that will quickly and robustly share news
  618.    that is interesting to the Linux community. This will allow websites
  619.    like Freshmeat and Slashdot, as well as lists like Threepoint's and
  620.    linux-announce, to reduce duplication of effort while still
  621.    customizing their presentation. In addition, this will provide a
  622.    single easy method of submitting an item of news, whether it's an
  623.    announcement about a new software release, or a description of the
  624.    latest article in Forbes magazine.
  625.    
  626.    The end goal of organizing the Linux announcements and news articles
  627.    is to encourage smaller ISVs to port to Linux, since they will see
  628.    advertising their software to a wide audience as less of an obstacle.
  629.    Other important benefits include greater robustness (from multiple
  630.    news servers), less work for the moderators (messages will be
  631.    presorted and people can specialize in their favorite type of news,
  632.    resulting in faster throughput), and a uniform comprehensive archiving
  633.    system allowing people to search old articles more effectively.
  634.    
  635.    We are currently at the point where we are designing the standard
  636.    format for a news item. We want to make it rich enough that it
  637.    provides all the information that each site wants, but simple enough
  638.    that we can require submissions to include all fields. At the same
  639.    time we're sorting out how the NNTP-based connections between the
  640.    servers should work. We've got Freshmeat and Threepoint in on it, and
  641.    other groups like Debian and LinuxMall are interested. We need more
  642.    news sites to provide input and feedback, to make sure everybody will
  643.    want to use the system once it's ready.
  644.    
  645.    If you're interested, please check out our webpage at
  646.    http://linuxunited.org/projects/news/ and subscribe to the mailing
  647.    list (send mail to majordomo@linuxunited.org with body 'subscribe
  648.    lu-news').
  649.    
  650.    Thanks for your time (this is the last mail I will send directly about
  651.    this),
  652.    
  653.    Roger (SEUL sysarch)
  654.      _________________________________________________________________
  655.    
  656.    Date: Fri, 14 Aug 1998 23:49:36 +0200
  657.    From: Martin M°ller, martin_moeller@technologist.com
  658.    Subject: Linux Gazette to be featured on Alt Om Data's CD-ROM monthly.
  659.    
  660.    This is just to inform you that some of our readers have pointed out
  661.    that we ought to distribute your magazine on our Cover CD, and after
  662.    having read through the lisence, I believe this will be no problem. I
  663.    have, just to be safe, saved a copy of the copy lisence together with
  664.    the archives and plan on distributing the new issues as the show up.
  665.    
  666.    Keep up the good work!
  667.    
  668.    Martin Moeller.
  669.      _________________________________________________________________
  670.    
  671.    Date: Fri, 21 Aug 1998 20:52:14 -0400 (EDT)
  672.    From: Timothy D. Gray, timgray@lambdanet.com
  673.    Subject: Linux reality letter
  674.    
  675.    In LG#31 Michael Rasmusson wrote: "the majority of Linux users are IT
  676.    professionals in some way" and alluded to the fact that Linux will be
  677.    slow to be accepted due to this fact. This is very untrue. Most Linux
  678.    users are in fact College and high school students. These forward
  679.    thinking young minds aren't tied down by archaic IT department policy
  680.    (many of which were penned in the 70's when IT was called the
  681.    Processing/programming/systems/data-processing department) Linux will
  682.    explode, it will do so violently. In fact it will explode so fast and
  683.    vast that Microsoft will say "What happened?" The local Linux Users
  684.    groups are all populated by 90% college and high school students. What
  685.    do you think will happen when these students hit the computer
  686.    departments at large corporations? They will install Linux, they will
  687.    use Linux, and they will recommend Linux. The "explosion" has already
  688.    started. Many large companies have already abandoned NOVELL and
  689.    Microsoft for their servers. (The makers of the CG effects in the
  690.    movie Titanic are far from small)
  691.      _________________________________________________________________
  692.    
  693.    Date: Wed, 26 Aug 1998 03:37:22 -0400 (EDT)
  694.    From: Paul Anderson, paul@geeky1.ebtech.net
  695.    Subject: Linux and new users
  696.    
  697.    I've been reading the LG mailbag... A lot of people think Linux should
  698.    be made easier to use. I don't think that's quite right - the idea,
  699.    IMHO, should be to make it so that Linux can be used by someone who's
  700.    new to computers, BUT they should have to learn to use it's full
  701.    power. With power, knowledge must come or disaster will follow
  702.    instead. The goal, in the end, is that the person becomes a
  703.    self-sufficient user, capable of sorting out most difficulties without
  704.    needing help. TTYL!
  705.    
  706.    Paul Anderson
  707.      _________________________________________________________________
  708.    
  709.             Published in Linux Gazette Issue 32, September 1998
  710.      _________________________________________________________________
  711.    
  712.    [ TABLE OF CONTENTS ] [ FRONT PAGE ] Next 
  713.    
  714.       This page written and maintained by the Editor of Linux Gazette,
  715.       gazette@ssc.com
  716.       Copyright ⌐ 1998 Specialized Systems Consultants, Inc.
  717.      _________________________________________________________________
  718.    
  719.     "Linux Gazette...making Linux just a little more fun!"
  720.      _________________________________________________________________
  721.    
  722.                                More 2ó Tips!
  723.                                       
  724.                Send Linux Tips and Tricks to gazette@ssc.com 
  725.      _________________________________________________________________
  726.    
  727.   Contents:
  728.   
  729.      * 2 Cent Tip from the 'Muse
  730.      * Tips and Tricks: Keeping track of your config files
  731.      * 2 cent tip: Cross platform text conversion.
  732.      * XFree86 and the S3ViRGE GX2 chipset
  733.      * Clearing the Screen
  734.      * Re: Shell Scripting Resources
  735.      Re: Recognising the AMD K5-PR166
  736.      Your atapi CDROM
  737.      Tips: simulataneous kernel versions
  738.      Creating man pages made easy!
  739.      2c Tip Re: Cross-platform Text Conversions
  740.      Un-tar as you download
  741.      megaraid drivers
  742.      Re: simultaneous versions of Kernels
  743.          _____________________________________________________________
  744.        
  745.   2 Cent Tip from the 'Muse
  746.        Date: Fri, 28 Aug 1998 00:13:07 -0600 (MDT)
  747.        From: Michael J. Hammel, mjhammel@fastlane.net
  748.        You know, I don't think anyones mentioned it before in the
  749.        Gazette, but there is this little program that is handy as all get
  750.        out: units. You give it the units you have and specify what you
  751.        want it converted to and Viola! It converts it for you! It won't
  752.        do Celsius/Farenheit conversions, but handles Grams/Pounds
  753.        conversions just fine. And for all those Linux cooks out there, it
  754.        converts cups to quarts, teaspoons to tablespoons and cups to
  755.        tablespoons.
  756.        Its the units freaks Swiss Army Knife. No hacker forced to make
  757.        his own Thai curries should be without it.
  758.        Michael J. Hammel
  759.          _____________________________________________________________
  760.        
  761.   Tips and Tricks: Keeping track of your config files
  762.        Date: Mon, 03 Aug 1998 11:00:16 +1200
  763.        From: Ryurick M. Hristev physrmh@phys.canterbury.ac.nz
  764.        This is my trick for keeping track of the many config files you
  765.        find on a Linux/Unix system.
  766.        Most config files are in the /etc directory. However, particularly
  767.        on a home machine you won't change them all and sometimes you want
  768.        to save (e.g. on a floppy) only the files you have changed.
  769.        Besides, you don't want to have to remember the exact location for
  770.        every one.
  771.        So here's what I do:
  772.           + created a /root/config directory
  773.           + Each changed config file for whatever program gets a symlink
  774.             in the /root/config
  775.        Then every time I want to change something I go directly to
  776.        /root/config. If I want to backup my system configuration, I just
  777.        copy the files by dereferencing the symlinks, etc. ...
  778.        Cheers,
  779.        Ryurick M. Hristev
  780.          _____________________________________________________________
  781.        
  782.   2 cent tip: Cross platform text conversion.
  783.        Date: Thu, 06 Aug 1998 13:07:59 -0400
  784.        From: Jim Hefferon, jim@joshua.smcvt.edu
  785.        To convert to a DOS text file, mount a DOS floppy and copy the
  786.        text file.
  787.  
  788.   $ su  (you are prompted for a password)
  789.   # mount /dev/fd0 -t msdos /mnt/floppy  (the # says that you are root
  790. BE CAREFUL!)
  791.   # cp myfile.tex /mnt/floppy
  792.   # exit
  793.   $
  794.    For instance, after these, I can use SAMBA to get myfile.tex to an NT
  795.        network printer (Z:> copy \\mymachinename\mnt\floppy\myfile.tex
  796.        lpt2). It makes sense if you do this often to have a DOS disk
  797.        always mounted, but if you mount as above, remember to umount
  798.        before you try, say, mounting a different floppy.
  799.        I find this easier than a solution with the tr command, because I
  800.        always forget how to do such solutions, but I can remember how to
  801.        copy.
  802.        Jim Hefferon
  803.          _____________________________________________________________
  804.        
  805.   XFree86 and the S3ViRGE GX2 chipset
  806.        Date: Wed, 05 Aug 1998 16:51:53 -0500
  807.        From: Ti Leggett, tlegget@mailhost.tcs.tulane.edu
  808.        At work, we just got in a whole slew of computers that use the
  809.        S3ViRGE GX2 chipset. Upon trying to install X on these things, I
  810.        found that the default Red Hat 5.0 XFree doesn't cut it. This is
  811.        how I've been able to fix the XFree86 problems with the S3V GX/2
  812.        chipset. First, do not use the S3V server despite what
  813.        Xconfigurator says. The GX/2 chipset is not supported for that
  814.        server. You must use the SVGA server (besides, it's accelerated
  815.        and supports DPMS). Currently, these are the modes supported as of
  816.        XFree86-3.3.2pl3:
  817.  
  818. 8bpp:
  819.         640x480 works
  820.         800x600 works
  821.         1024x768 works
  822.         1280x1024 works
  823.  
  824. 15/16bpp:
  825.         640x480 works
  826.         800x600 works
  827.         1024x768 works
  828.         1280x1024 works
  829.  
  830. 24 bpp:
  831.         640x480 works
  832.         800x600 works
  833.         1024x768 works
  834.         1280x1024 works (very picky about monitor modelines though)
  835.  
  836. 32 bpp:
  837.         640x480 works
  838.         800x600 works
  839.         1024x768 does not work
  840.         1280x1024 does not work
  841.    The card I'm using to test this is a #9 9FX Reality 334 w/8MB RAM.
  842.        Also I cannot verify that this works on any version less than
  843.        XFree86-3.3.2pl2. pl2 actually has less modes/depth combinations
  844.        that work - such as, no 16 bit depths work and 1280x1024 doesn't
  845.        work in almost all depths. I suggest upgrading to XFre86-3.3.2pl3.
  846.        Now onto the fix.
  847.        Step 1. Make sure you're using the SVGA server (ls -l /etc/X11/X
  848.        for RH users, maybe the same on other distros). It should point to
  849.        /usr/X11R6/bin/XF86_SVGA. If it's not, link it to it (ln -sf
  850.        /usr/X11R6/bin/XF86_SVGA /etc/X11/X).
  851.        Step 2. Open your /etc/X11/XF86Config file for editing.
  852.        Step 3. Find the Graphics Device Section.
  853.        Step 4. Find the device that is the Standard VGA Device (usually
  854.        has the line -
  855.  
  856.         Identifier      "Generic VGA"
  857.    Step 5. Remove the line that says:
  858.  
  859.         Chipset         "generic"
  860.    Step 6. Uncomment the line that says:
  861.  
  862.         VideoRam        "256"
  863.    and change it to recognize the amount of RAM your card has in kilo
  864.  
  865.         VideoRam        "8192" # 8MB RAM
  866.    Step 7. Add the following line (*CRUCIAL*):
  867.  
  868.         Option          "xaa_no_color_exp"
  869.    This turns off one of the accelerated option that gives trouble.
  870.        Step 8. Add whatever other options you want (for a list see the
  871.        man pages on XF86Config, XF86_SVGA, and XF86_S3V)
  872.        Step 9. Change the bit depth and resolution to whatever you want.
  873.        Step 10. Save and close the file and (re)start X.
  874.        Note: I do not claim this will work for all cards using the GX2
  875.        chipset. I can only verify for the video card I'm using. I'm
  876.        interested to hear how other video cards handle it. Hope that
  877.        helps everyone involved. I've heard from people on Usenet that it
  878.        works perfectly, and from others it doesn't.
  879.        Ti Leggett
  880.          _____________________________________________________________
  881.        
  882.   Clearing the Screen
  883.        Date: Wed, 05 Aug 1998 12:59:13 -0400
  884.        From: Allan Peda, allan@interport.net
  885.        A few days ago a classmate "accidentally" cat'ed a file to the
  886.        screen. He asked asked me what he could do to reset his confused
  887.        vt100, as "clear" wasn't sufficient.
  888.        At first I figured he would need to close and re-open the
  889.        connection, but then I realized that there are codes to reset a
  890.        vt100.
  891.        Here is some C code that resets, and clears the screen. Save it as
  892.        vt.C, then run "make vt". Place the executable in your path, and
  893.        when the screen looks like heiroglyphics, type (blindly at this
  894.        point) "vt". That should clear it up.
  895.  
  896. /*
  897. ** Small program to reset a confused vt100 after
  898. ** `cat'ing a binary file.
  899. */
  900. #include <stdio.h>
  901.  
  902. int main(void)
  903. {
  904.         printf("\033c");                // reset terminal
  905.         printf("\033[2J");              // clear screeen
  906. return(0);
  907. }
  908. /*
  909.    For more info, see the following URLs:
  910.  
  911.    www.mhri.edu.au/~pdb/dataformats/vt100.html
  912.    www.sdsu.edu/doc/texi/screen_10.html
  913.    www.cs.utk.edu/~shuford/terminal/ansi_x3.64.html
  914.  
  915.    They have more vt100 escape codes.
  916. **
  917. */
  918.          _____________________________________________________________
  919.        
  920.   Re: Shell Scripting Resources Date: Wed, 5 Aug 1998 17:34:50 +0100 (BST)
  921.   From: Sean Kelly, S.Kelly@newcastle.ac.uk
  922.   
  923.   In issue 31 it was mentioned that someone had been looking for some shell
  924.   scripting help.
  925.   
  926.   Take a look at http://www.oase-shareware.org/shell/ as I have heard many
  927.   people mention this site in response to shell scripting queries.
  928.   
  929.   Sean.
  930.     ________________________________________________________________________
  931.   
  932.   Re: Recognising the AMD K5-PR166 Date: Wed, 05 Aug 1998 11:22:43 -0400
  933.   From: Shane Kerr, kerr@wizard.net
  934.   
  935.      I'm wondering whether any other readers have used the AMD K5-PR166
  936.      with Linux. It's just that my system seems to think it's a K5-PR133
  937.      and states that it's running at 100MHz. Also, the BogoMips value
  938.      indicates that the processor is running at 100MHz. Anyone any
  939.      advice?
  940.      
  941.   I'm running a K5 P133+ on one of my systems - it actually is running at 100
  942.   MHz, that's why it's a "P133+". It's like the Cyrix processors, the name is
  943.   basically a lie for marketing.
  944.   
  945.   I wouldn't put too much stock in the BogoMips value - it is bogus after all!
  946.   My system clocks in at an equivalent to a 112 MHz system when I run the
  947.   distributed.net client - the reason AMD claims a higher clock value is
  948.   probably because some instructions run faster, and those may just not happen
  949.   to be the instructions used in to BogoMips loop.
  950.   
  951.   As for your system thinking your K5-PR166 is a K5-PR133, it's probably
  952.   because you have the motherboard jumpered wrong and/or the BIOS configured
  953.   wrong. Are you sure that your motherboard & BIOS support the chip?
  954.   
  955.   Shani
  956.     ________________________________________________________________________
  957.   
  958.   Your atapi CDROM Date: Thu, 06 Aug 1998 16:50:04 -0500
  959.   From: Ian and Iris, brooke@mail.jump.net
  960.   
  961.   Your /dev directory is the culprit. Current installs use:
  962.  
  963. /dev/hda
  964. /dev/hdb
  965. /dev/hdc
  966. /dev/hdd
  967. (/dev/hde)
  968. (/dev/hdf)
  969.  
  970.   for the first, second, (and third) ide interfaces, m,s,m,s(,m,s). Older
  971.   installs had the /dev directory written a little differently. You would have
  972.   the old standard, which was
  973.  
  974. /dev/hdnx
  975.  
  976.   where n was interface, and x was a/b for master/slave.
  977.   
  978.   The only difference is in the names of the files. If you rename them, you
  979.   will be in compliance. Alternatively, you could run makedev from a recent
  980.   kernel, though I do not pretend to know all the details of that.
  981.     ________________________________________________________________________
  982.   
  983.   Tips: simulataneous kernel versions Date: Fri, 14 Aug 1998 17:35:14 +0200
  984.   From: Frodo Looijaard, frodol@dds.nl
  985.   
  986.      From: Renato Weiner, reweiner@yahoo.com
  987.      Recently I was looking at the Gazette and I think I have a good
  988.      suggestion of an article that will be very useful for the Linux
  989.      community. I have had some technical difficulties of having two
  990.      simultaneous versions of Kernels in my system. I mean a stable one
  991.      and a developing one. I searched the net looking for information of
  992.      how to co-exist both but it's completely fragmented. If somebody
  993.      more experienced could put all this information together, it will
  994.      certainly help a lot of people from kernels developers to
  995.      end-users.
  996.      
  997.   This may come a bit late, but I am in the process of writing a (mini)HOWTO on
  998.   this subject. It is not quite trivial, especially with modules lying around,
  999.   or if you want several kernels with the same version number.
  1000.   
  1001.   Check out http://huizen.dds.nl/~frodol/howto.html for now. I am still in the
  1002.   process of getting it approved as an official mini-HOWTO.
  1003.   
  1004.   Frodo
  1005.     ________________________________________________________________________
  1006.   
  1007.   Creating man pages made easy!!! Date: Sun, 16 Aug 1998 16:14:34 +1000
  1008.   From: Steven K.H. Siew, ksiew@tig.com.au
  1009.   
  1010.   Below is something I wrote to help lay people create their own man pages
  1011.   easily
  1012.   
  1013.   ----------------------------------------------------------------------------
  1014.   ----
  1015.   
  1016.   If you ever wrote a program using gcc in linux, you may have come across this
  1017.   problem. You have just finished your wonderful little program which is of
  1018.   great use to you and you need a man page for it.
  1019.   
  1020.   Of course, you have absolutely no idea how to write a man page. Don't you
  1021.   need to know how to use troff? Or is it nroff to write a man page? Luckily
  1022.   there is a much easier way to write a man page.
  1023.   
  1024.   Here I shall describe an easy and quick (and dirty) way of writing a man page
  1025.   without learning troff or nroff. In order to do so, you must have the Perl
  1026.   version 5.004 (or higher) installed on your Linux box.
  1027.   
  1028.   There is a man page in the various Perl man pages on the creation of a man
  1029.   page using the Perl util "pod2man". It is called "perlpod.1". Below is a step
  1030.   by step guide to finding the man page and the util.
  1031.  
  1032. ksiew> su
  1033. password:
  1034.  
  1035. #|/root>locate perlpod.1
  1036. /usr/man/man1/perlpod.1
  1037.  
  1038. #|/root>locate pod2man
  1039. /usr/bin/pod2man
  1040.  
  1041.   Now, to write your own man pages, you must first read the perlpod.1 man page.
  1042.   You can do this by "man perlpod". However, to read the pod2man man page, you
  1043.   must first create it by using pod2man itself.
  1044.  
  1045. #|/root>pod2man /usr/bin/pod2man > pod2man.1
  1046. #|/root>ls -al pod2man.1
  1047. -rw-r--r--   1 root     root        13444 Aug 16 12:12 pod2man.1
  1048. #|/root>mv pod2man.1 /usr/man/man1/pod2man.1
  1049.  
  1050.   Okay, now you can read the pod2man man page you have just created by using
  1051.   the command "man pod2man". After reading it, you can now create your own man
  1052.   pages. As an example, I shall describe a simple man page for one of my own C
  1053.   programs called "addline". I first create a textfile called "addline.pod" and
  1054.   then turn it into a manpage using 'pod2man --center="Addline program manpage"
  1055.   addline.pod > addline.1'.
  1056.   
  1057.   Finally, I move the addline man page into its proper place using "mv
  1058.   addline.1 /usr/man/man1/addline.1". There; creating your own man page is
  1059.   simple, isn't it?
  1060.   
  1061.   Below is a sample addline.pod file
  1062.  
  1063. -------------------Cut here and do not include this line---------------------
  1064. =head1 NAME
  1065.  
  1066. addline - addline numbers to textfiles
  1067.  
  1068. =head1 SYNOPSIS
  1069.  
  1070. B<addline>
  1071. [ B ]
  1072. [ B ]
  1073. [ B ]
  1074. [ B ]
  1075. I<inputfile>
  1076.  
  1077. =head1 DESCRIPTION
  1078.  
  1079. B<addline> inserts line numbers into textfiles. It was written to automate
  1080. the insertion of numbers into a data file of results from a neural network
  1081. program.
  1082.  
  1083. =head1 OPTIONS
  1084.  
  1085. =over 8
  1086.  
  1087. =item -c
  1088.  
  1089. Ignores comments lines. A comment line is any line that starts with a '#'.
  1090. This makes it easier to insert comments in the textfile without messing up
  1091. the line numbers.
  1092.  
  1093. =item -v
  1094.  
  1095. Displays the version number of the addline.
  1096.  
  1097. =item -3
  1098.  
  1099. Uses 3 digits for the line numbers even if the number requires less than 3
  1100. digits. For example, 013 instead of 13. The default is to use as few
  1101. digits for the line number as possible.
  1102.  
  1103. =item --colon
  1104.  
  1105. Separates the line number from the rest of the line with a ':' character.
  1106.  
  1107. =back
  1108.  
  1109. =head1 EXAMPLES
  1110.  
  1111.     addline textfile
  1112.     addline -c textfile
  1113.     addline -c --colon textfile
  1114.  
  1115. =head1 NOTES
  1116.  
  1117. Addline is written in C and compiled using gcc version 2.7.8. It uses the
  1118. standard C library and is designed to be fast and efficient.
  1119.  
  1120. =head1 RESTRICTIONS
  1121.  
  1122. Never ever use addline on a binary file.
  1123.  
  1124. =head1 BUGS
  1125.  
  1126. There are no bugs in addline, there are just some undocumented features.
  1127.  
  1128. =head1 AUTHORS
  1129.  
  1130. Original prototype by Steven Siew, but so massively hacked over by
  1131. his sister such that Steven Siew probably doesn't recognize it anymore.
  1132. -------------------Cut here and do not include this line---------------------
  1133.     ________________________________________________________________________
  1134.   
  1135.   2c Tip Re: Cross-platform Text Conversions Date: Sun, 16 Aug 1998 07:52:17
  1136.   -0500 (CDT)
  1137.   From: Peter Samuelson, psamuels@sampo.creighton.edu
  1138.   
  1139.   In LG31 you published a 2c tip for a unix2dos replacement written in Tcl. The
  1140.   author asserts that "It turned out to be really easy to do this in Tcl." Even
  1141.   easier in Perl, I say. Symlink the following code to the same names (d2u,
  1142.   u2d, m2d, m2u, u2m, d2m) Matt used. Make sure this file has execute
  1143.   permission, of course.
  1144.   
  1145.   Also, if you just want Perl to edit the input files in place, change the
  1146.   "perl -wp" to something like "perl -wpi.orig"....
  1147.   
  1148.   Peter Samuelson
  1149.  
  1150. #!/usr/bin/perl -wp
  1151. #
  1152. # Simpler unix2dos2mac utility for 2-cent tip, mainly because Tcl is ugly.
  1153. # No comments that Perl is ugly too, please.
  1154. #
  1155. # Usage: a standard Unix filter:
  1156. #   input:  filename(s) or stdin
  1157. #   output: stdout
  1158. # Buglet: u2m leaves lone CR at the end of file if it didn't end in LF
  1159. #   (Fixing it would use more memory.)
  1160.  
  1161. BEGIN {
  1162.   $_=$0 =~ s|.*/||;
  1163.   $pcmd='s/$/\r/'       if ($0 eq 'u2d');
  1164.   $pcmd='s/\r$//'       if ($0 eq 'd2u');
  1165.   $pcmd='s/$/\r/;chop'  if ($0 eq 'u2m');
  1166.   $pcmd='s/\r/\n/g'     if ($0 eq 'm2u');
  1167.   $pcmd='chomp'         if ($0 eq 'd2m');
  1168.   $pcmd='s/\r/\r\n/g'   if ($0 eq 'm2d');
  1169.   unless($pcmd) {
  1170.     print STDERR "This script must be invoked under one of the names:\n",
  1171.                  "  u2d, d2u, u2m, m2u, d2m, m2d\n";
  1172.     exit 1;
  1173.   }
  1174. }
  1175.  
  1176. eval $pcmd;
  1177.     ________________________________________________________________________
  1178.   
  1179.   Un-tar as you download Date: Wed, 19 Aug 1998 13:08:52 -0500
  1180.   From: scgmille@indiana.edu
  1181.   
  1182.   It's time for fun with pipes. Recently, when downloading the latest kernel
  1183.   over a ridiculously slow connection, I wanted to see where the download was
  1184.   by checking which file in the tarball was being received. After pondering the
  1185.   pipes and GNU utils, this thought came to mind.
  1186.   
  1187.   You can decompress and un-tar your files as they download, sort of a
  1188.   "streaming decompressor", if you will. Form the command line:
  1189.  
  1190. tail -f --bytes=1m file-being-downloaded.tar.gz | tar -zxv
  1191.  
  1192.   Tail will display downloaded portion of the file, then remain open displaying
  1193.   bytes as they come. Make sure the 1m (1 megabyte in this case) is LARGER than
  1194.   what you have already downloaded. The piped output of tail goes to tar and
  1195.   the rest is history. Similarly for bz2 files:
  1196.  
  1197. tail -f --bytes=1m file.tar.bz2 | bunzip2 - | tar -xv
  1198.  
  1199.   Enjoy!
  1200.     ________________________________________________________________________
  1201.   
  1202.   megaraid drivers Date: Thu, 20 Aug 1998 18:34:32 -0400
  1203.   From: "Michael Burns2, rburns@shaw.wave.ca
  1204.   
  1205.   Hi, It's been a long fight to get AMI to produce this patch and the install
  1206.   documentation.
  1207.   
  1208.   Mike Burns
  1209.     ________________________________________________________________________
  1210.   
  1211.   Re: Suggestion for Article, simultaneous versions of Kernels Date: Sat, 29
  1212.   Aug 1998 21:35:27 -0400 (EDT)
  1213.   From: R Garth Wood rgwood@itactics.itactics.com
  1214.   
  1215.   I think Hans-Georg is talking about having a stable linux kernel version X
  1216.   and a dev version X (ie not 2.0.34 and 2.1.101 but 2.0.34 and 2.0.34). I
  1217.   assume when you issue: # make modules_install it tromples your old stable
  1218.   modules and gives you errors when you use your stable version X. This is not
  1219.   as trivial a problem as it first seems. However there is a solution. Have a
  1220.   look at the make-kpkg docs (debian distro); specifically the "flavour"
  1221.   option. This will solv your problem. It won't be easy, though.
  1222.   
  1223.   Have a look at:
  1224.   /etc/conf.modules
  1225.   to see what I mean.
  1226.   
  1227.   R Garth Wood
  1228.     ________________________________________________________________________
  1229.   
  1230.             Published in Linux Gazette Issue 32, September 1998
  1231.     ________________________________________________________________________
  1232.   
  1233.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  1234.     ________________________________________________________________________
  1235.   
  1236.       This page maintained by the Editor of Linux Gazette, gazette@ssc.com
  1237.       Copyright ⌐ 1998 Specialized Systems Consultants, Inc.
  1238.       
  1239.                            (?) The Answer Guy (!)
  1240.                                       
  1241.                    By James T. Dennis, answerguy@ssc.com
  1242.           Starshine Technical Services, http://www.starshine.org/
  1243.     ________________________________________________________________________
  1244.   
  1245.   Contents:
  1246.   
  1247.   (!)Greetings From Jim Dennis
  1248.   
  1249.         (?)phreaking
  1250.                 
  1251.         (?)ISP Abandons User in Move to NT
  1252.                 
  1253.         (?)Driving Terminals w/Java --or--
  1254.                 Java Telnet/Terminal
  1255.                 
  1256.         (?)Finding BBS Software for Linux
  1257.                 
  1258.         (?)The Five Flaws of the Unix System
  1259.                 
  1260.         (?)XFree86 Installation in DOSLinux
  1261.                 
  1262.         (?)resume on AS/400 --or--
  1263.                 Resume Spam 
  1264.                 
  1265.         (?)Linux Port of SoftWindows 
  1266.                 
  1267.         (?)Connecting Linux to Win '95 via Null Modem --or--
  1268.                 A Convert! 
  1269.                 
  1270.         (?)MS FrontPage for Linux/Apache
  1271.                 
  1272.         (?)Virtual System Emulator for Linux and Why NOT to Use Them
  1273.                 
  1274.         (?)FoxPlus for Linux ?
  1275.                 
  1276.         (?)More on Distribution Preferences
  1277.                 
  1278.         (?)IP Masquerading/Proxy?
  1279.                 
  1280.         (?)PPP --or--
  1281.                 The "Difficulty" is in Disabling the Services
  1282.                 
  1283.         (?)How to read DVI files?
  1284.                 
  1285.         (?)Bad Super-block on Filesystem
  1286.                 
  1287.         (?)Mulitiple processes sharing one serial port --or--
  1288.                 Multiplexing the Computer -- ISDN Modem Connection 
  1289.                 
  1290.         (?)Permission to Set up a Linux Server
  1291.                 
  1292.         (?)Detaching and Re-attaching to Interactive Background Processes
  1293.                 
  1294.         (?)[announce] Cdrdao 1.0 - Disc-at-once writing of audio CD-Rs
  1295.                 
  1296.         (?)High Speed Serial (RS422) under Linux
  1297.                 
  1298.         (?)ANOTHER MODEM PROB Plus, More on Grammar
  1299.                 
  1300.         (?)/usr/bin/open command not found
  1301.                 
  1302.         (?)Tuning X to work with your Monitor
  1303.                 
  1304.         (?)The last Linux C library version 5, 5.4.46, is released.
  1305.                 --or--
  1306.                 The End of libc5: A Mini-Interview with H.J Lu
  1307.                 
  1308.         (?)Linux System Administration. --or--
  1309.                 Where to put 'insmod' and 'modprobe' Commands for
  1310.                 Start-up
  1311.                 
  1312.         (?)The BIOS Clock, Y2K, Linux and Everything
  1313.                 
  1314.         (?)Online Status Detector --or--
  1315.                 Failover and High Availability for Web Servers :
  1316.                 Conditional Execution Based on Host Availability
  1317.                 
  1318.         (?)SysAdmin: User Administration: Disabling Accounts
  1319.                 
  1320.         (?)Thank you --or--
  1321.                 Articles on LILO Saves Life? 
  1322.                 
  1323.         (?)Netware NDS Client --or--
  1324.                 NDS (Netware Directory Services) for Linux: Clients and
  1325.                 Servers
  1326.                 
  1327.         (?)More 'Win '95 Hesitates After Box Has Run Linux?'
  1328.                 
  1329.         (?)Bad Clusters on Hard Drive --or--
  1330.                 Another Non-Linux Question! 
  1331.                 
  1332.         (?)Help with C/C++ Environment Program --or--
  1333.                 Integrated Programming Environments for Linux
  1334.                 
  1335.         (?)Web Server Clustering Project
  1336.                 
  1337.         (?)wu-ftpd guest account on a Linux Box --or--
  1338.                 WU-FTP guestgroup problems
  1339.                          ______________________________
  1340.   
  1341.   (!)Greetings From Jim Dennis
  1342.   
  1343.                         Linux as a Home Users System
  1344.                                       
  1345.   We're all getting used to the idea that Linux can attract corporate users,
  1346.   for deployment as web, ftp, file (SMB and NFS), print and even database
  1347.   servers; and we're getting used to seeing it used for routers, mail, and DNS.
  1348.   
  1349.   We're even getting used to the idea that corporate user put Linux on their
  1350.   desktops (in places where they might have spent a small fortune on a
  1351.   workstation).
  1352.   
  1353.   But, what about the home/personal user? Most of us consider this to be an
  1354.   impossible dream. Even those few enthusiasts in the Linux community who dare
  1355.   to hope for it --- have been saying that it will take years to gain any
  1356.   percentage of that market.
  1357.   
  1358.   However, I'm starting to wonder about that. I've seen a number of trade rag
  1359.   articles naysaying Linux on the desktop. Ironically, when a reporter or
  1360.   columnist explains why Linux isn't suitable for the desktop --- it actually
  1361.   raises the possibility that it is suitable for that role.
  1362.   
  1363.   A denial or refutation tells us that the question has come up!
  1364.   
  1365.   What prevents the average IT manager from deploying Linux on their desktop
  1366.   today? In most cases it's fear. The users are used to MS Word, MS Excel, and
  1367.   MS PowerPoint. Any user who uses any of these is forcing all of the rest to
  1368.   do so as well (since these applications all use proprietary, non-portable,
  1369.   file formats).
  1370.   
  1371.   Everyone who uses Office has to use a PC or a Mac (and many of them switched
  1372.   away from Macs due to lags in upgrades and subtle file compatibility problems
  1373.   between the Mac and PC versions of these applications).
  1374.   
  1375.   Why do Mac users run VirtualPC --- to deal with the occasional .DOC, .XLS, or
  1376.   .PPT file that they get --- or some other proprietary file format (like some
  1377.   of those irritating CD-ROM encyclopedia) which is only accessible through one
  1378.   application.
  1379.   
  1380.   However, these proprietary formats are not secret codes. Linux and other Open
  1381.   Source (tm) hackers will turn their attention to them and crack their formats
  1382.   wide open. This will allow us to have filters and converters.
  1383.   
  1384.   'catdoc', LAOLA, and MSWordView are already showing some progress on this
  1385.   area (for one of these formats).
  1386.   
  1387.   Microsoft will undoubtedly counter by releasing a new version of their suite
  1388.   which will carefully break the latest third-party viewers and utilities (free
  1389.   or otherwise). They may even apply the most even perversion of intellectual
  1390.   property law yet devised: the software patent.
  1391.   
  1392.   However. I think that the public, after a decade of following along with this
  1393.   game, is finally starting to wise up. The next release that egregiously
  1394.   breaks file format compatibility may be the end of that ploy (for awhile at
  1395.   least).
  1396.   
  1397.   But what about the home user. How do home users choose their software? What
  1398.   is important to them?
  1399.   
  1400.      Most of them don't choose their software --- they use what came on
  1401.      the system and only add things later.
  1402.      
  1403.      When they go out to buy additional software, home users are the
  1404.      most price conscious of all buyers. Commercial, government, and
  1405.      other institutional buyers can make a business case to justify
  1406.      their purchases. Home users just look in their wallet.
  1407.      
  1408.      The other common influences on the novice home user include the
  1409.      retail store clerks and their kids. That's one reason why the
  1410.      school and University markets were always so crucial to Apple's
  1411.      success.
  1412.      
  1413.   I noticed that the Win '98 upgrade was going for $89. I couldn't find a
  1414.   "non-upgrade" box anywhere in that store (CompUSA).
  1415.   
  1416.   People are starting to hear that for half that price they can get this other
  1417.   OS that includes enough games and applications to fill a 2Gb hard drive.
  1418.   
  1419.   I think MS is actually starting to price itself out of the market. (It seems
  1420.   that my MS-DOS 5.0 upgrade was only about $35 or $40). If MS Office weren't
  1421.   bundled with so many new systems, there probably would be about a tenth the
  1422.   legal copies in home use.
  1423.   
  1424.   With a little more work on LyX and KLyX and a few of its bretheren --- and a
  1425.   bit more polishing on the installation/configuration scripts for the various
  1426.   distributions I think we'll see a much more rapid growth in the home market
  1427.   than anyone currently believes. I think we may be at 15 to 20 per cent of the
  1428.   home market by sometime in the year 2000.
  1429.   
  1430.   So, what home applications do we really need to make that happen.
  1431.   
  1432.         I like the "Linux Software Wishlist"
  1433.                 (http://www.linuxresources.com/wish/)
  1434.                 
  1435.   ... because it gives all of us a place to vote on what we would buy.
  1436.   
  1437.   One class of packages that remember used to be very popular was the "greeting
  1438.   card" and "banner/sign" packages: PrintShop, PrintMaster, and Bannermania.
  1439.   Those used to have the cheesiest clipart/graphics and a fairly limited range
  1440.   of layouts. Limited enough to make any TeXnician scream with frustration.
  1441.   
  1442.   However, they were incredibly popular precisely because of those constraints.
  1443.   Having a few dozen to a couple hundred choices to pick from is far less
  1444.   intimidating to home users than all the power and flexibility you get with
  1445.   TeX, LaTeX, and the GIMP.
  1446.   
  1447.   I would dearly love to see a set of pre-designed greeting cards, certificates
  1448.   ("John Doe has Successfully Completed the Yoyodyne Tiddly Winks Seminar" ---
  1449.   with the lacy border --- you know the kind!), etc. all done in TeX or PS or
  1450.   whatever. This and a front end chooser and forms dialog to fill in the text
  1451.   would be a really killer home app.
  1452.   
  1453.   (Bannermania was geared to creating large banners, either on fanfold paper or
  1454.   as multiple sheets to be cut and pasted together on to a backing board (piece
  1455.   of cardboard).
  1456.   
  1457.   I think that a new Linux implementation of this sort of app built over the
  1458.   existing software (TeX, GhostScript, etc) would end up being vastly better
  1459.   than anything that was possible under the old PrintShop --- and still be as
  1460.   simple.
  1461.   
  1462.   I'm sure most of us have that one old DOS, Windows, Mac, or other application
  1463.   or game that we'd like to see re-done for Linux. So, dig out the publisher's
  1464.   address or phone number (assuming they still exist) and let them know what
  1465.   you want. Then post your request to the wishlist.
  1466.   
  1467.   Even these trivial bits of action can make Linux the choice of home users. I
  1468.   say this because I think it's about time that they had a choice.
  1469.     ________________________________________________________________________
  1470.   
  1471.     "Linux Gazette...making Linux just a little more fun!"
  1472.     ________________________________________________________________________
  1473.   
  1474.         A Convenient and Practical Approach to Backing Up Your Data
  1475.                                       
  1476.                              By Vincent Stemen
  1477.     ________________________________________________________________________
  1478.   
  1479.   July 19,1998
  1480.   Every tool I have found for Linux and other UNIX environments seems to be
  1481.   designed primarily to backup files to tape or any device that can be used for
  1482.   streaming backups. Often this method of backing up is infeasible, especially
  1483.   on small budgets. This led to the development of bu, a tool for backing up by
  1484.   mirroring the files on another file system. bu is not necessarily meant as a
  1485.   replacement for the other tools (although I have set up our entire disaster
  1486.   recovery system based on it for our development servers), but more commonly
  1487.   as a supplement to a tape backup system. The approach I discuss below is a
  1488.   way to manage your backups much more efficiently and stay better backed up
  1489.   without spending so much money.
  1490.   
  1491.     * Some problems I have found with streaming backups
  1492.     
  1493.                 
  1494.               1. The prices and storage capacities often make it
  1495.                       infeasible.
  1496.                       The sizes of hard drives and the amount of data
  1497.                       stored on an average server or even workstation is
  1498.                       growing faster than the capacity of the lower end
  1499.                       tape drives that are affordable to the individual
  1500.                       or small business. 5 and 8 gig hard drives are
  1501.                       cheap and common place now and the latest drives go
  1502.                       up to at least 11 gig. However, the most common
  1503.                       tape drives are only a few gig. Higher
  1504.                       capacity/performance tape drives are available but
  1505.                       the costs are out of the range of all but the
  1506.                       larger companies.
  1507.                       For example:
  1508.                       Staying properly backing up with 30GB of data
  1509.                       (which can be just 3 or 4 hard drives) to a
  1510.                       midrange tape drive, can cost $15,000 to $25,000 or
  1511.                       more inside of just 2 to 4 years. There is a
  1512.                       typical cost scenario on
  1513.                       http://www.exabyte.com/home/press.html.
  1514.                       This is just the cost for the drive and tapes. It
  1515.                       does not include the cost of time and labor to
  1516.                       manage the backup system. I discuss that more
  1517.                       below. With that in mind, the comments I make on
  1518.                       reliability, etc, in the rest of this article are
  1519.                       based on my experience with lower end drives. I
  1520.                       haven't had thousands of extra dollars to throw
  1521.                       around to try the higher end drives.
  1522.                       
  1523.               2. The cost of squandered sys admin time and the lost
  1524.                       productivity of users or developers waiting for
  1525.                       lost files to be restored, can get much more
  1526.                       expensive than buying extra hard drives.
  1527.                       To backup or restore several gig of data to/from a
  1528.                       tape can take up to several hours. The same goes
  1529.                       for trying to restore a single file that is near
  1530.                       the end of the tape. I can't tell you how
  1531.                       frustrating it is to wait a couple of hours to
  1532.                       restore a lost file only to discover you made some
  1533.                       minor typo in the filename or the path to the file
  1534.                       so it didn't find it and you have to start all
  1535.                       over. Also, if you are backing up many gig of data,
  1536.                       and you want to be fully backed up every day, you
  1537.                       either have to keep a close eye on it and change
  1538.                       tapes several times throughout the day, every day,
  1539.                       or do that periodically and do incremental backups
  1540.                       onto a single tape the rest of the days. With
  1541.                       tapes, the incremental approach has other problems,
  1542.                       which leads me to number 3.
  1543.                       
  1544.               3. Incremental backups to tape can be expensive,
  1545.                       undependable and time consuming to restore.
  1546.                       First, this kind of backup system can consume a lot
  1547.                       of time labeling, and tracking tapes to keep track
  1548.                       of the dates and which ones are incremental and
  1549.                       which ones are full backups, etc. Also, if you do
  1550.                       incremental backups throughout a week, for example,
  1551.                       and then have to restore a crashed machine, you can
  1552.                       easily consume up to an entire day restoring from
  1553.                       all the tapes in sequence in order to restore all
  1554.                       the data back the way it was. Then you have Murphy
  1555.                       to deal with. I'm sure everybody is familiar with
  1556.                       Murphy's laws. When you need it most, it will fail.
  1557.                       My experience with tapes has revealed a very high
  1558.                       failure rate. Probably 20 or 30% of the tapes I
  1559.                       have tried to restore on various types of tape
  1560.                       drives have failed because of one problem or
  1561.                       another. This includes our current 2GB DAT drive.
  1562.                       Bad tape, dirty heads when it was recored, who
  1563.                       knows. To restore from a sequence of tapes of an
  1564.                       incremental backup, you are dependent on all the
  1565.                       tapes in the sequence being good. Your chances of a
  1566.                       failure are very high. You can decrease your chance
  1567.                       of failure, of course, by verifying the tape after
  1568.                       each backup but then you double your backup time
  1569.                       which is already to long in many cases.
  1570.                       
  1571.     * A solution (The history of the bu utility)
  1572.     
  1573.                 
  1574.                 With all the problems I described above, I found that,
  1575.                 like most other people I know, it was so inconvenient to
  1576.                 back up that I never stayed adequately backed up, and
  1577.                 have payed the price a time or two. So I set up file
  1578.                 system space on one of our servers and periodically
  1579.                 backed up my file systems over nfs just using cp. This
  1580.                 way I would always be backed up to another machine if
  1581.                 mine went down and I could quickly backup just one or a
  1582.                 few files without having to mess with the time and cost
  1583.                 of tapes. This still wasn't enough. There were still
  1584.                 times I was in a hurry and didn't want to spend the time
  1585.                 making sure my backup file system was NFS mounted,
  1586.                 verifying the pathname to it, etc, before doing the copy.
  1587.                 Manually dealing with symbolic links also was cumbersome.
  1588.                 If I specified a file to copy that was a symbolic link, I
  1589.                 didn't want it to follow the link and copy it to the same
  1590.                 location on the backup file system as the link. I wanted
  1591.                 it to copy the real file it points to with it's path so
  1592.                 that the backup file system was just like the original. I
  1593.                 also wanted other sophisticated features of an
  1594.                 incremental backup system without having to use tapes.
  1595.                 So, I wrote bu. bu intelligently handles symbolic links,
  1596.                 can do incremental backups on a per directory basis with
  1597.                 the ability to configure what files or directories should
  1598.                 be included and excluded, has a verbose mode, and keeps
  1599.                 log files. Pretty much everything you would expect from a
  1600.                 fairly sophisticated tape backup tool (except a GUI
  1601.                 interface :-) but is a fairly small and straight forward
  1602.                 shell script.
  1603.                 
  1604.     * Backup strategy
  1605.     
  1606.                 
  1607.                 Using bu to backup to another machine may or may not be a
  1608.                 good replacement for a tape backup system for others as
  1609.                 it has for us, but it is an excellent supplement. When
  1610.                 you have done a lot of work and have to wait hours or
  1611.                 even days until the next scheduled tape backup, you are
  1612.                 at the mercy of Murphy until that time, then you cross
  1613.                 your fingers and hope the tape is good. To me, it is a
  1614.                 great convenience and a big relief to just say "bu src"
  1615.                 to do an incremental backup of my whole src directory and
  1616.                 know I immediately have an extra copy of my work if
  1617.                 something goes wrong.
  1618.                 It is much easier and faster to restore a whole file
  1619.                 system over NFS than it is from a tape. This includes
  1620.                 root (at least with Linux). And, it is vastly faster and
  1621.                 easier to restore just one file or directory just using
  1622.                 the cp command.
  1623.                 So far as cost: You can get extra 6GB hard drives now for
  1624.                 less than $200 dollars. In fact I can buy a whole new
  1625.                 computer with extra hard drives to use as a backup server
  1626.                 for $1000 or less now. Much less than the cost of buying
  1627.                 just a mid to high end tape drive, not counting the cost
  1628.                 of all the tapes and extra time spent managing them. In
  1629.                 fact, one of the beauties of Linux is, even your old 386
  1630.                 or 486 boat anchors make nice file servers for such
  1631.                 things as backups.
  1632.                 For those individuals and small businesses who use zip
  1633.                 drives and jaz drives for backing up so they can have
  1634.                 multiple copies or take them off site, bu is also
  1635.                 perfect, since incremental backups can be done to any
  1636.                 file system. I often use it to back up to floppies to
  1637.                 take my most critical data and recent work off site.
  1638.                 Here is an interesting strategy we have come up with
  1639.                 using bu that is the least expensive way to stay backed
  1640.                 up we could come up with for our environment. It is the
  1641.                 backup strategy we are setting up for our development
  1642.                 machines which house several GB of data. Use bu to backup
  1643.                 daily and right after doing work, to file systems that
  1644.                 are no more than 650 mb. Then, once or twice a month, cut
  1645.                 worm CD's from those file systems to take off site. WORM
  1646.                 CD's are only about a dollar each in quantities of 100,
  1647.                 and CD WORM writers have gotten cheap. This way your
  1648.                 backups are on media that doesn't decay like tapes and
  1649.                 floppies tend to do. Re-writable CD's are also an option
  1650.                 if you don't mind spending a bit more money. If you have
  1651.                 just too much data for that to be practical, hard drives
  1652.                 are cheap enough now that it is feasible to have extra
  1653.                 hard drives and rotate them off site. It is nice to have
  1654.                 one of those drive bays that allow you to un-plug the
  1655.                 drive from the front of the machine if you take this
  1656.                 approach. Where bu will really shine with large amounts
  1657.                 of data, is when we finally can get re-writable DVD
  1658.                 drives with cheap media. I think, in the future, with
  1659.                 re-writable DVD or other similar media on the horizon,
  1660.                 doing backups to non-random access devices such as tape
  1661.                 will become obsolete and other backup tools will likely
  1662.                 follow the bu approach anyway.
  1663.                 
  1664.     * Getting bu
  1665.     
  1666.                 
  1667.                 bu is freely re-distributable under the GNU copyright.
  1668.                 http://www.crel.com/bu/
  1669.                 ftp://www.crel.com/pub/vstemen/bu/bu.tar.gz
  1670.     ________________________________________________________________________
  1671.   
  1672.                       Copyright ⌐ 1998, Vincent Stemen
  1673.            Published in Issue 32 of Linux Gazette, September 1998
  1674.     ________________________________________________________________________
  1675.   
  1676.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  1677.     ________________________________________________________________________
  1678.   
  1679.     "Linux Gazette...making Linux just a little more fun!"
  1680.     ________________________________________________________________________
  1681.   
  1682.   Welcome to the Graphics Muse
  1683.   
  1684.     Set your browser as wide as you'd like now.  I've fixed the Muse to
  1685.                     expand to fill the aviailable space!
  1686.                                ⌐ 1998 by mjh
  1687.   _____________________________________________________________________________
  1688.   
  1689.   Button Bar muse:
  1690.          1. v; to become absorbed in thought
  1691.          2. n; [ fr. Any of the nine sister goddesses of learning and the
  1692.             arts in Greek Mythology ]: a source of inspiration
  1693.             
  1694.   W elcome to the Graphics Muse! Why a "muse"? Well, except for the sisters
  1695.   aspect, the above definitions are pretty much the way I'd describe my own
  1696.   interest in computer graphics: it keeps me deep in thought and it is a daily
  1697.   source of inspiration.
  1698.   
  1699.             [Graphics Mews][WebWonderings][Musings] [Resources]
  1700.                                       
  1701.   T his column is dedicated to the use, creation, distribution, and discussion
  1702.   of computer graphics tools for Linux systems.   Well, there were quite a few
  1703.   announcements in the past month and I'm finding that not all are being cross
  1704.   posted to both comp.os.linux.announce and to freshmeat.net.  It takes a
  1705.   little more diligence on my part to catch all the announcments but since I
  1706.   visit both places fairly often it really isn't that big of a problem.  On the
  1707.   other hand, is it really necessary to repeat those announcements here?  I
  1708.   thought about this for a while and finally decided it is worth the effort
  1709.   since both c.o.l.a and freshmeat are sites for general announcements and the
  1710.   graphics specific items can easily be overlooked.  By gathering them up and
  1711.   reprinting them here I can let my readers worry less about missing the
  1712.   important stuff through the sea of other announcements at other sites.
  1713.   
  1714.   I've finally started to catch up on my Musings too.  This months issue
  1715.   includes discussions on:
  1716.           + Managing your CGI Perl scripts using "require" in Web
  1717.             Wonderings
  1718.           + A closer look at the libgr package of image file format
  1719.             libraries
  1720.           + A little fun with the Gimp plugin "QBist"
  1721.             
  1722.   I also considered taking a look at Blender, but I'm not certain my system is
  1723.   stable enough for that right now.  Its been acting a little strange of late -
  1724.   I'm beginning to think some recent power outages may have corrupted some
  1725.   libraries.  I have plans to upgrade to Red Hat 5.2 whenever it comes out (I
  1726.   expect the difficulties with dealing with libc/glibc will all be worked out,
  1727.   much like the 4.2 release had worked out most of the a.out vs. ELF issues),
  1728.   plus take a look at Xi Graphics Maximum CDE at some point too.  But I hadn't
  1729.   planned on doing either until the October time frame.  I may have to change
  1730.   my plans.
  1731.   
  1732.   Anyway, a review of Blender is a definite future Musing.  The last time I
  1733.   tried it the program seemed to be stable, but the interface is rather
  1734.   complex.  A general examination showed that this modeller is quite feature
  1735.   rich.  Its just that the interface is not intuitive to a 3D newbie, perhaps
  1736.   not even to an experienced 3D graphic artist.  A better set of documentation
  1737.   is reported to be on the way, due out some time in September.  I'll wait and
  1738.   see what this might offer before stepping up for a review of Blender.
  1739.   
  1740.   [INLINE] You can also keep an eye out for a new and improved Graphics Muse
  1741.   Web site coming soon.  I expect to be able to launch the new site sometime in
  1742.   the middle to end of September.  It will combine the Linux Graphics
  1743.   mini-Howto with the Unix Graphics Utilities into a single searchable
  1744.   database, provide recommended reading material and allow you to post reviews
  1745.   of software, hardware and texts, plus it will provide more timely news
  1746.   related to computer graphics for Linux systems.  And of course all the back
  1747.   issues of the Graphics Muse column from the Linux Gazette will be there too,
  1748.   in a semi-searchable format with topics for each month provided next to the
  1749.   links to each months issue.  I'll probably post an announcement about it to
  1750.   c.o.l.a when its ready.
  1751.   
  1752.   
  1753.   Graphics Mews       Disclaimer: Before I get too far into this I should note
  1754.   that any of the news items I post in this section are just that - news.
  1755.   Either I happened to run across them via some mailing list I was on, via some
  1756.   Usenet newsgroup, or via email from someone. I'm not necessarily endorsing
  1757.   these products (some of which may be commercial), I'm just letting you know
  1758.   I'd heard about them in the past month.
  1759.   
  1760.   indent
  1761.   
  1762. The ParPov and Pov2Rib Homepage
  1763.  
  1764.   ParPov is a free (GNU), object-oriented library written in C++ for parsing
  1765.   Scene Files from the Persistence of Vision (POV-Ray) Ray-Tracer. It will read
  1766.   a scene written using version 1-3 syntax and creates a structure of
  1767.   C++-Objects, representing all details of the original description. You can
  1768.   query those objects and use the information to convert the scene to other
  1769.   formats or many other uses. Pov2Rib is also a freely available progam, which
  1770.   allows you to convert scene files from POV-Ray to a RenderMan Interface
  1771.   Bytestream (RIB). The tool is the first application of libParPov.
  1772.   
  1773.   http://www9.informatik. uni-erlangen.de/ ~cnvogelg/pov2rib/index.html
  1774.   _____________________________________________________________________________
  1775.   
  1776. GQview 0.4.0
  1777.  
  1778.   GQview is an X11 image viewer for the Linux operating system. Its key
  1779.   features include single click file viewing, external editor support,
  1780.   thumbnail preview, thumbnail caching and adjustable zoom. GQview is currently
  1781.   available in source, binary, and rpm versions and requires the latest GTK and
  1782.   Imlib libraries.
  1783.   
  1784.   http://www.geocities.com/ SiliconValley/Haven/5235/
  1785.     indent
  1786.   
  1787. TKMatman
  1788.  
  1789.   TKMatman is a tool that lets you interactively set and adjust parameters to
  1790.   RenderMan shaders and preview images with the given parameters. It can handle
  1791.   surface, displacement, interior, exterior, atmosphere, light and imager
  1792.   shaders and their combinations. The idea for the program comes from Sam
  1793.   Samai, who wrote the very useful IRIX version. With the availability of the
  1794.   Blue Moon Rendering Tools for different platforms the author of TkMatman
  1795.   thought that a lot more people will use the RenderMan interface and need ways
  1796.   to select their shaders. That's why he published his private LINUX version of
  1797.   MatMan. The program was initially only meant for his own use, but it is in a
  1798.   pretty stable state now.  All feedback is appreciated and new versions will
  1799.   be made available at the following site:
  1800.   
  1801.   http://www.dfki.uni-sb.de/ ~butz/tkmatman/
  1802.   _____________________________________________________________________________
  1803.   
  1804. ImPress
  1805.  
  1806.   ImPress allows you to create good quality documents using vector graphics.
  1807.   You can use ImPress within a web browser with the Tcl/Tk plugin. It's a
  1808.   reasonable desktop publishing and presentation tool in a small package
  1809.   designed for Linux and for integration with Ghostscript.
  1810.   
  1811.   The GPL'd .03alpha release fixes many bugs and adds better web and
  1812.   presentation functionality.
  1813.   
  1814.   http://www.tcltk.com/tclets/impress/index.html
  1815.   
  1816.   [INLINE] [INLINE]
  1817.   
  1818. LibVRML97/Lookat 0.7
  1819.  
  1820.   LibVRML97 is a toolkit for incorporating VRML into applications, and Lookat
  1821.   is a simple VRML browser based on that library. This code is currently being
  1822.   developed and is one of the more complete open source VRML browsers
  1823.   available. All VRML97 nodes except Text/FontStyle and the drag sensors
  1824.   (CylinderSensor, Plane, Sphere) are supported. The Script node supports much
  1825.   of the Javascript API with more on the way.
  1826.   
  1827.   Version 0.7 adds Javascript scripting, MovieTextures, TouchSensors, Anchors,
  1828.   Inlines, and command line arguments -url and -geometry for running under
  1829.   XSwallow as a Netscape plugin.
  1830.   
  1831.   http://www.vermontel.net/ ~cmorley/vrml.html
  1832.   
  1833. Slidedraw
  1834.  
  1835.   Slidedraw is a drawing program in Tcl/tk for presentation slides with
  1836.   postscript output and full-featured. You can see snapshots, get slide
  1837.   collections or the very latest package available from it's new web page.
  1838.   
  1839.   URL: http://web.usc.es/~phdavidl/slidedraw/
  1840.   
  1841.   Beta testers are welcome.  Contributors for slide collections and
  1842.   documentations are also invited.
  1843.   _____________________________________________________________________________
  1844.   
  1845. MindsEye 0.5.27
  1846.  
  1847.   MindsEye is a project to develop a free (in terms of the GPL) available 3D
  1848.   modelling program for Linux. It features modular design, Multi-scene/user
  1849.   concept, Kernel-system view instead of Modeler-system view, Object oriented
  1850.   modelling design and network support in a MindsEye-kernel way.
  1851.   
  1852.   http://mindseye.luna.net/
  1853.   [INLINE]
  1854.   
  1855. Visual DHTML
  1856.  
  1857.   Visual DHTML is a free Web-based authoring tool that lets you create
  1858.   interactive web content using various DHTML technologies. Visual DHTML brings
  1859.   JavaScript1.2 and DHTML towards its full and future potential at the
  1860.   application level by bringing more traditionally low-level programming
  1861.   techniques and features to Web-based scripting languages.  Features include
  1862.   such things as an object oriented, component-based ("Bean" style)
  1863.   architecture with "Drag and Drop" functionality.  Also included are several
  1864.   pre-built DHTML widgets, such as the dynamic Drawer and Ticker that you can
  1865.   customize along with component properties that you can modify. Also, if you
  1866.   like the functionality of this tool, you can copy and paste the source code
  1867.   by viewing the Page Source from within Navigator.
  1868.   
  1869.   http://developer.netscape.com/docs/examples/dynhtml/visual/index.html
  1870.   _____________________________________________________________________________
  1871.   
  1872. Javascript Debugger 1.1
  1873.  
  1874.   Netscape JavaScript Debugger is a powerful tool for debugging JavaScript on
  1875.   multiple platforms. Written in Java, the debugger runs in Netscape
  1876.   Communicator.  Netscape JavaScript Debugger 1.1 supports client-side
  1877.   JavaScript debugging capabilities, including such features as a watch
  1878.   mechanism, conditional breakpoints, enhanced error reporter, signed script
  1879.   support, and the ability to step through code. Using the debugger while
  1880.   developing your JavaScript application, you can debug scripts as they run,
  1881.   determine what's going on inside your script at any moment, and find problems
  1882.   quickly. A Linux version is not mentioned explicitly, but the Unix version
  1883.   works perfectly.
  1884.   
  1885.   http://developer.netscape.com/software/jsdebug.html
  1886.   _____________________________________________________________________________
  1887.   
  1888. S.u.S.E. announces XFCom_P9x00 and new version of XFCom_3DLabs
  1889.  
  1890.   XFCom_P9x00-1.0
  1891.   
  1892.   It took a while, but finally a free server for Weitek P9100 based cards is
  1893.   available. XFCom_P9100 is not yet accelerated and has not received as much
  1894.   testing as we would have liked it to, but it should work fine on most P9100
  1895.   boards.
  1896.   
  1897.   XFCom_3DLabs-4.12
  1898.   
  1899.   With this version of XFCom_3DLabs several problems with earlier versions
  1900.   should be solved. New features and fixes include:
  1901.           + Permedia 2v support
  1902.           + Permedia 2 AGP hangs fixed
  1903.           + 24bpp mode improved
  1904.           + many drawing bugs removed
  1905.           + DPMS support added
  1906.             
  1907.   You can find both servers (and the rest of the XFCom-family) at our web site
  1908.   http://www.suse.de/XSuSE/XSuSE_E.html
  1909.   
  1910.   As always, these servers are freely available, the sources to these servers
  1911.   are already part of the XFree86 development source. Binaries for other OSs
  1912.   will be made available, time permitting.
  1913.   
  1914. XSuse Matrox Millenium G200 support
  1915.  
  1916.   Suse appears to have also added support for the Matrox Millennium G200 AGP to
  1917.   their Matrox X server.  No official announcement has been seen, but word of
  1918.   this development first appeared to 'Muse's eyes via Slashdot.org.
  1919.   
  1920.   The driver is available from
  1921.   ftp://ftp.suse.com/pub/suse_update/XSuSE/xmatrox/.
  1922.   _____________________________________________________________________________
  1923.   
  1924. The Visual Computer Journal
  1925.  
  1926.   Special Issue on Real-time Virtual Worlds
  1927.   Submissions due: October 31, 1998
  1928.   
  1929.   Real-time Virtual Worlds are now possible on most workstations and PCs.  The
  1930.   challenge is to design user-friendly systems for creating new applications
  1931.   and tools. This special issue of the Visual Computer is dedicated to new
  1932.   algorithms, methods, and systems in Real-time Virtual Worlds.  Original,
  1933.   unpublished research, practice, and experience papers are sought that address
  1934.   issues in all aspects of Real-time Virtual Worlds. Topics include, but are
  1935.   not limited to:
  1936.           + Modeling for Real-time Virtual Worlds
  1937.           + Real-time animation
  1938.           + Real-time rendering algorithms
  1939.           + Real-time motion control and motion capture
  1940.           + Real-time talking heads
  1941.           + Intelligent interfaces for real-time computer animation
  1942.           + Avatars and Real-time Autonomous Virtual Humans
  1943.           + 3D interaction with Virtual Worlds
  1944.           + Networked Virtual Environments
  1945.           + Artificial Life in Virtual Worlds
  1946.           + Virtual Worlds on the Web
  1947.           + Real-time audio and speech for Virtual Worlds
  1948.           + Real-time simulation
  1949.           + Games and entertainment applications
  1950.             
  1951.   Schedule:
  1952.   Paper Submission:  October 31, 1998
  1953.   Acceptance/Rejection Notification:  January  15, 1999
  1954.   Final Manuscript Submissions:  February 15, 1999
  1955.   Publication:  Summer 1999 The editors for this issue of the Visual Computer
  1956.   are:
  1957.   
  1958.   Nadia Magnenat-Thalmann
  1959.   Associate Editor-in-Chief
  1960.   MIRALab, University of Geneva
  1961.   Email: thalmann@cui.unige.ch
  1962.   
  1963.   Daniel Thalmann
  1964.   Computer Graphics Lab
  1965.   EPFL
  1966.   Email: thalmann@lig.di.epfl.ch
  1967.   
  1968.   
  1969.   Submission guidelines: Authors may submit their paper either as an HTML URL
  1970.   or by ftp. For ftp, the electronic version of your manuscript should be
  1971.   submitted in PDF (preferred) or Postscript (compressed with gzip) using
  1972.   anonymous ftp to ligsg2.epfl.ch. The paper should be submitted as one file.
  1973.   The file name should be first author's name.  Please follow the procedure:
  1974.         ftp ligsg2.epfl.ch
  1975.             username: anonymous
  1976.             password: <your email address>
  1977.             cd tvc
  1978.             put <filename>
  1979.             
  1980.   In any case, you should send an email to tvcanim@lig.di.epfl.ch with the
  1981.   title of the paper, the authors with affiliation, the contact author, and
  1982.   either the URL or the filename used for ftp. For author guidelines, please
  1983.   consult:  http://www.computer.org/multimedia/edguide.htm
  1984.   _____________________________________________________________________________
  1985.   
  1986. KIllustrator 0.4
  1987.  
  1988.   KIllustrator is a freely available vector-based drawing application for the K
  1989.   Desktop Environment similiar to Corel Draw(tm) or Adobe Illustrator(tm).
  1990.   
  1991.   Features include:
  1992.           + different object types: polylines, circles, ellipses,
  1993.             squares, rectangles, (symmetric) polygons, freehand lines,
  1994.             bezier curves and multiline text
  1995.           + tools for moving, scaling, rotating as well as grouping,
  1996.             ungrouping, aligning, distributing and reordering objects
  1997.           + various line styles and arrows
  1998.           + a multilevel undo/redo facility
  1999.           + a property editor
  2000.           + multi-window support with cut/copy/paste between the windows
  2001.           + zooming and snapping to grid
  2002.           + multilevel undo/redo
  2003.           + (network-transparent) drop support with the KDE filemanager
  2004.           + printing to PostScript (file or printer)
  2005.           + preliminary WMF support
  2006.           + export to raster image formats (GIF, PNG, XPM) and
  2007.             Encapsulated Postscript
  2008.           + import of Xfig files
  2009.             
  2010.   The installation requires a working KDE 1.0, QT 1.40 as well as gcc-2.8.1 or
  2011.   egc-1.03. KIllustrator is tested on Linux, FreeBSD and Solaris.
  2012.   
  2013.   For further information (screenshots, download) please consult my homepage
  2014.   at:
  2015.         http://wwwiti.cs.uni-magdeburg.de/~sattler/killustrator.html
  2016.             
  2017.   Please, for question, comments, bug reports or contributions e-mail me at
  2018.   kus@iti.cs.uni-magdeburg.de.
  2019.   
  2020.   Kai-Uwe Sattler
  2021.   _____________________________________________________________________________
  2022.   
  2023. RenderPark
  2024.  
  2025.   RenderPark is a photo-realistic rendering tool being developed at the
  2026.   Computer Graphics Research Group of the Katholieke Universiteit Leuven, in
  2027.   Belgium. The goal is to offer a solid implementation of many existing
  2028.   photo-realistic rendering algorithms in order to compare them on a fair
  2029.   basis, evaluate benefits and shortcomings, find solutions for the latter and
  2030.   to develop new algorithms that are more robust and efficient than the
  2031.   algorithms that are available today. RenderPark will offer you several
  2032.   state-of-the-art rendering algorithms that are not yet present in other
  2033.   rendering packages, not even in expensive ones. Allthough RenderPark is in
  2034.   the first place a test-bed for rendering algorithms, it is evolving towards a
  2035.   full-featured physics-based global illumination rendering system.
  2036.   
  2037.   http://www.cs.kuleuven.ac.be/cwis/research/graphics/RENDERPARK/
  2038.   
  2039.   [INLINE]
  2040.   
  2041.     Did You Know?
  2042.     
  2043.         ...there are two True Type« font servers based on the FreeType
  2044.             package:  xfsft and xfstt.   The latter is reported to have
  2045.             some problems with fonts over 90 pixels high and appears to
  2046.             go into "memory starved mode" after extensive use of the Text
  2047.             tool in the Gimp.  Aside from these issues, however, both are
  2048.             reported to be fairly stable servers.
  2049.             ...The computer magazine PC Chip will be publishing an
  2050.             interview with Ton Roosendaal, owner of Not a Number which is
  2051.             the company bringing us the 3D modeller Blender.  This
  2052.             interview has been placed online so readers can get an early
  2053.             glimpse at it.
  2054.             
  2055.     Q and A
  2056.     
  2057.   Q: Is there a way to include carriage returns with the text tool, or to align
  2058.   phrases created with individual uses of the text tool?
  2059.   
  2060.   A:  I didn't know the answer to this one, but found the following answer on
  2061.   the Gimp-User mailing list (unfortunately I didn't get the responders name -
  2062.   my apologies to that person):
  2063.   
  2064.      Try the "Script-fu --> Utils --> ASCII 2 Image Layer" command. This
  2065.      allows you to import a text file as one or more layers of text.
  2066.      
  2067.   Note that this Script is available either from the Image Window menu's
  2068.   Script-Fu option or from the Xtns menu's Script-Fu option.
  2069.   
  2070.   Q: Mark Lenigan (mlenigan@umdsun2.umd.umich.edu) wrote to the Gimp User
  2071.   mailing list:
  2072.   
  2073.      I'm trying to create a transparent GIF with a drop shadow for the
  2074.      title graphic on my Web page.  I'm pretty much following the
  2075.      cookbook from www.gimp.org/tutorials, except that I'm not including
  2076.      the background color layer and using "Merge Visible Layers" to keep
  2077.      the final image transparent.  Everything goes fine until I need to
  2078.      convert the image to an indexed image just before I save it in the
  2079.      .gif format file.  At that point the shadow in my image immediately
  2080.      disappears and the text seems to lose its anti-aliasing. Can anyone
  2081.      shed some light on to this?
  2082.      
  2083.   A: Simon Budig responded:
  2084.   
  2085.      Yes. Gimp can only handle 1-bit transparency in indexed color mode.
  2086.      So when you convert an image to indexed the different levels of
  2087.      transparency will get lost. There is the great
  2088.      "Filters/Colors/Semiflatten" plugin. It merges all partially
  2089.      transparent regions against the current Backgroundcolor. Select a
  2090.      BG-Color (i.e. matching to the BG-Color of your Web-page) and watch
  2091.      the effect of the plugin. Then you can convert your Image to
  2092.      Indexed and save it as GIF. (GIF can also handle just 1-bit
  2093.      transparency).
  2094.      
  2095.   [INLINE]
  2096.   
  2097. Reader Mail
  2098.  
  2099.   zen@getsystems.com wrote:
  2100.         I'd like to hear more technical details of the internals of Gimp,
  2101.             and comparing Gimp to photoshop - eg. Photoshop 5 is now out
  2102.             with multiple undo - undo history list, even.
  2103.             
  2104.   'Muse:  Unfortunately, I can't do this sort of comparison.  I don't run
  2105.   anything but Unix boxes (specifically Linux) at home and don't have access to
  2106.   any Photoshop packages.  I might be able to do the comparison based on
  2107.   Photoshop texts, but thats the best I could do.
  2108.         Also modelling tools. Gimp is 2D. Where is 3D? Pov-Ray can
  2109.             render, but is there anything to compare with say Lightwave,
  2110.             or 3D-StudioMax?
  2111.             
  2112.   'Muse:  There are no real competitors to Lightwave or 3D-StudioMax for
  2113.   Linux.  There are quite a few modellers available, each with different levels
  2114.   of sophistication.  But none that compares to the sophistication of either of
  2115.   the two tools you mention.  You can find a list of modellers in my June 1997
  2116.   Graphics Muse column.  Not all of the links in that issue are still valid.
  2117.   Some of the modellers seem to have disappeared and some have changed URLs.
  2118.   You can try a search using the package name through freshmeat.net if the
  2119.   links in the June 1997 issue don't work for you.
  2120.   
  2121.   One modeller that was not listed in that issue but that looks quite
  2122.   interesting is Blender, which is a commercial package that has only recently
  2123.   been released for free (no source code) to Linux users.  I hope to do a
  2124.   review of it soon.  However, the last version I tried was not documented
  2125.   sufficiently to allow me to understand how to do even the most basic tasks.
  2126.   The interface is complex and feature rich, but not intuitive to 3D newbies.
  2127.         Distributed rendering.
  2128.             
  2129.   'Muse:  I'll see what I can do about this.  One tool to consider is PVMPOV, a
  2130.   patch to POV-Ray to allow for distributed rendering across multiple systems
  2131.   on a network.  PVM is the Parallel Virtual Machine, a package for distributed
  2132.   processing used on many Unix systems.  You should probably note that this is
  2133.   a patch to POV-Ray, so you'll need to understand how to apply patches to
  2134.   source code in order to use it.
  2135.         Just some things I'd be delighted to read about.
  2136.             Cheers,
  2137.             Zen.
  2138.             
  2139.   'Muse:  Again, thanks for the ideas.  I'll see what I can do.
  2140.   
  2141.   [INLINE]
  2142.   [INLINE]
  2143.   
  2144. Managing your Perl scripts:  using 'require'
  2145.  
  2146.   Last month we talked about accessing an mSQL database from CGI scripts using
  2147.   Perl with two modules:  CGI.pm and Msql.  In the example described there we
  2148.   built a couple of HTML tables and embedded some text stored in a table in an
  2149.   mSQL database.  It turns out that generating HTML using CGI.pm is quite
  2150.   simple and using Perl with the Msql module makes combining your HTML output
  2151.   with information from a database really rather painless.
  2152.   
  2153.   But that example was extremely simple.  Real world examples often have
  2154.   dynamic pages that are built from multiple databases.  And each page often
  2155.   links to other dynamically built pages that provide some, or even all, of the
  2156.   same information from those databases.  In other words, parts of each page
  2157.   contain the same HTML formatting and data.  How can you avoid having to
  2158.   duplicate that HTML in each page?
  2159.   
  2160.   With older static page development methods there really weren't any methods
  2161.   for including common regions into multiple pages unless you used frames.  The
  2162.   frames allowed you to create a region on the browser display that would be a
  2163.   single page of HTML that could be displayed along with various other pages.
  2164.   In this way you need only maintain a single copy of that one common page.
  2165.   From a Web developers point of view this was an ideal situation - it meant
  2166.   the probability of error in trying to update identical HTML in multiple pages
  2167.   was eliminated.  It also meant less work.  But to readers of those pages it
  2168.   could mean frustration, since not all browsers at the time supported frames.
  2169.   Even now, frame handling is not consistant between the two main browsers,
  2170.   Netscape Navigator and Microsoft's Internet Explorer.  Although frames can be
  2171.   used to produce some terrific Web pages, they are not the ideal solution for
  2172.   supporting different browsers, especially older browsers.
  2173.   
  2174.   Fortunately, this problem can be overcome with our new friend Perl.  The
  2175.   method for inclusion in multiple pages of common formats and data is simple.
  2176.   However, the management of these common regions takes a little thought.  Lets
  2177.   first look at how to include Perl code from different files into your main
  2178.   Perl script.
  2179.   
  2180.   In perl, a subroutine or other piece of common code would be written in a
  2181.   module, a separate file of perl code.  Modules can be included at any point
  2182.   within a perl script.  By default, Perl looks at a special variable called
  2183.   @INC to determine where to find these modules.  Also by default, the current
  2184.   working directly, ".", is listed in the @INC variable as the last directory
  2185.   to search for modules.  Note:  @INC is a list variable, that is, it is an
  2186.   array of strings with each string being the name of a directory to search for
  2187.   modules.
  2188.   
  2189.   To include a module into your main Perl cgi script you would use the require
  2190.   function.   The format is simple:
  2191.         require 'modulename.pl';
  2192.             
  2193.   This function tells the Perl interpreter to include the named module but only
  2194.   if it has not been included previously.  In this way you can include the same
  2195.   module multiple times without worry that doing so will cause serious
  2196.   problems.
  2197.   
  2198.   When the module is included the code within it is run at the point of
  2199.   inclusion.  You can, if you so desire, write the module to have code that
  2200.   runs right then and there using variables with a global scope (ie they are
  2201.   visible to the original program as well as the included module).  However, it
  2202.   would probably make more sense to write the module as a subroutine call
  2203.   instead.  You can still use globally scoped variables but by making the
  2204.   module a subroutine call you can guarantee the code is not run until you
  2205.   specifically request it.  You can also run it more than one time if you want.
  2206.   
  2207.   So how do you make a subroutine?  Just wrap the code inside the following
  2208.   construct:
  2209.         sub subname {
  2210.             }
  2211.             1
  2212.             
  2213.   The 1 at the end is important - modules must include this or else the require
  2214.   function will fail.  Now invoke the subroutine with the following command:
  2215.         &subname();
  2216.             
  2217.   The ampersand is important - you should always prefix calls to your
  2218.   subroutines with the ampersand.  Although things may work properly if you
  2219.   don't, proper Perl syntax suggests the results can be unexpected if you don't
  2220.   use the ampersand.
  2221.   
  2222.   If you want to pass parameters into the subroutine you can do so as a list.
  2223.   For example:
  2224.         &subname("one item");
  2225.             &subname("one item", "two items");
  2226.             &subname(@listitems);
  2227.             
  2228.   To access the command line arguments in the subroutine you can do something
  2229.   like the following:
  2230.         sub subname
  2231.             {
  2232.                # @_ contains all parameters to the subroutine.
  2233.                # We first assign these to the @params variable because
  2234.             the variable
  2235.                # name "@params" is a bit more intuitive than "@_".
  2236.                @params = @_;
  2237.                foreach $arg (@params)
  2238.                {
  2239.                   # now run through each parameter one at a time
  2240.                   # and process it.
  2241.                   if ( "$arg" eq "" )
  2242.                   {
  2243.                      ...
  2244.                   }
  2245.                }
  2246.             }
  2247.             
  2248.                                 <continued>
  2249.                                       
  2250.   [INLINE]
  2251.   
  2252.   Musings
  2253.   [INLINE]
  2254.   
  2255. libgr - A collection of image libraries
  2256.  
  2257.   Many users of graphics tools discussed in this column will find that those
  2258.   tools are dependent on any number of file format specific libraries.  For
  2259.   example, the Gimp needs libraries for JPEG, PNG, PNM, MPEG and XPM in order
  2260.   to support these file formats.  The Gimp doesn't understand how to read these
  2261.   files directly - it is dependent on the image format libraries for assistance
  2262.   in reading and writing files in these formats.  Since the Gimp (and other
  2263.   tools) don't include these libraries in their source distributions, users are
  2264.   often required to retrieve and install these libraries manually.
  2265.   
  2266.   Normally users would download format specific libraries and build them
  2267.   separately.  Each of the formats mentioned earlier, plus a few others, are
  2268.   available somewhere on the Net in source format.  Most are available
  2269.   somewhere on the Sunsite archives.  Unfortunately, not all of these format
  2270.   specific libraries are easily built on Linux.   The Gimp User Mailing list is
  2271.   often flooded with questions about how to get the JPEG library to build
  2272.   shared libraries.  By default this library doesn't build a Linux ELF shared
  2273.   library.  In fact, even with the proper configuration it still only builds
  2274.   a.out shared libraries.  A better solution is needed.
  2275.   
  2276.   Enter libgr.  This is a collection of image format libraries that have been
  2277.   packaged together and organized to easily build and install on Linux
  2278.   systems.  The package builds both static and ELF shared libraries
  2279.   automatically.  The distribution is maintained by Neal Becker
  2280.   (neal@ctd.comsat.com) and is based on the work done originally by Rob Hooft
  2281.   (hooft@EMBL-Heidelberg.DE).  The latest version, 2.0.13, of libgr can be
  2282.   retrieved from ftp.ctd.comsat.com:/pub/linux/ELF.
  2283.   
  2284.   Libgr contains the following set of graphics libraries:
  2285.           + fbm
  2286.           + jpeg
  2287.           + pbm
  2288.           + pgm
  2289.           + pnm
  2290.           + ppm
  2291.           + png
  2292.           + rle
  2293.           + tiff
  2294.             
  2295.   It also contains the zlib compression library which is used specifically by
  2296.   the TIFF and PNG graphics libraries.  It may also, although I'm not sure of
  2297.   this, be used by the FBM library to (at a minimum) support the GIF format.
  2298.   
  2299.   FBM is the Fuzzy Pixmap Manipulation library.  This package is related to,
  2300.   but not part of, the PBMPlus package by Jef Poskazner.  The library can read
  2301.   and write a number of formats, including:
  2302.           + Sun rasterfiles
  2303.           + GIF files
  2304.           + Amiga IFF
  2305.           + PCX
  2306.           + PBM
  2307.           + Face files (CMU format for 1bit files)
  2308.           + FBM
  2309.           + Utah RLE files (from the Utah Raster Toolkit)
  2310.             
  2311.   It also supports quite a number of image operations, all of which are
  2312.   described in the Features text file in the fbm directory.  Like PBM, FBM is a
  2313.   format designed specifically by the FBM library author for handling images
  2314.   internal to the library (although you can write that format to a file too).
  2315.   
  2316.   JPEG is actually a standard that defines a suite of encodings for full-color
  2317.   and continuous-tone raster images1.  The software for this library, which is
  2318.   essentially the same as the software that comes in the standalone JPEG
  2319.   library package found on the Gimp's ftp site, comes from the Independent JPEG
  2320.   Group and, as far as I can tell, supports the complete JPEG definition.  JPEG
  2321.   is a common format for the Web since it is one of the formats listed by the
  2322.   WC3 in the early HTML specifications for Web images.
  2323.   
  2324.   The PBM, PGM, PNM, and PPM formats are all part of the NetPBM/PBMPlus
  2325.   packages.  These formats are often used as intermediary formats for
  2326.   processing by the NetPBM/PBMPlus tools.  Although these libraries provide the
  2327.   capability of saving image files in these formats, I have not seen this as a
  2328.   common practice.  This is probably due to the fact that the files tend to be
  2329.   rather large and the image formats are not generally supported by non-Unix
  2330.   platforms.  These formats are widely supported, however, by Unix-based
  2331.   graphics software.
  2332.   
  2333.   The PNG library supports the relatively new Portable Network Graphics
  2334.   format.  This format was designed, at least in part, to replace the GIF
  2335.   format which had both licensing as well as a few format limitations.  PNG is
  2336.   now an officially supported format by the WC3 although support for these
  2337.   images is not commonly mentioned by either Netscape or MSIE.  I'm not sure if
  2338.   either supports PNG yet.
  2339.   
  2340.   RLE is Run Length Encoding, a format from the University of Utah designed for
  2341.   device independent multilevel raster images.  Although the format is still in
  2342.   use today, you won't see it referenced often in relation to tools like the
  2343.   Gimp (though the Gimp does support the format) or 3D rendering engines like
  2344.   BMRT or POV-Ray.
  2345.   
  2346.   
  2347.    -Top of next column-
  2348.    
  2349.   [INLINE]
  2350.   
  2351.    More Musings...
  2352.           +  Fun with QBist
  2353.             
  2354.   [INLINE]
  2355.   Finally, the TIFF library is a set of routines for supporting the reading and
  2356.   writing of TIFF files.  TIFF files are popular because of their wide support
  2357.   on multiple platforms (Mac, MS, and Unix) and because of their high quality
  2358.   images.  However, they tend to be extremely large images since they do not
  2359.   use any form of compression on the image data.  Building the packageOnce you
  2360.   have retrieved the libgr package you can unpack it with the following
  2361.   command:
  2362.         % tar xvzf libgr-2.0.13.tar.gz
  2363.             
  2364.   This will create a directory called libgr-2.0.13.  Under this directory you
  2365.   will find the format specific directories, Makefiles and a number of text
  2366.   files.  In the INSTALL text file you will find instructions on how to build
  2367.   the software.  For Linux this is a simple process of typing
  2368.         % make most
  2369.             
  2370.   which will build all the software but not install it.  I recommend doing this
  2371.   once to test that the build actually completes successfully for all
  2372.   directories before trying to install anything.  If the build fails and you
  2373.   attempt to install you may confuse yourself as to what has and hasn't been
  2374.   installed correctly.  After the build completes, check each directory and see
  2375.   if the lib*.so files - the shared libraries - have been created.  If all
  2376.   appears to have gone well, type
  2377.         % make install
  2378.             
  2379.   This will install the libraries for you.  There are other options available
  2380.   for building and installing.  Read the INSTALL text file in the top level
  2381.   directory for details on the other options.
  2382.   
  2383.   At this point you're ready to use these libraries with other tools, such as
  2384.   the Gimp.  Why use libgr vs the individual libraries? Libgr provides support
  2385.   for a large range of image file formats, but it doesn't support every common
  2386.   and/or popular format.  So why use it instead of the individual format
  2387.   libraries?  One reason is convenience.  Instead of having to retrieve a whole
  2388.   slew of packages you can grab one.  Second, as mentioned earlier, not all of
  2389.   the individual packages are setup to build proper ELF shared libraries for
  2390.   Linux.  Libgr is specifically designed for building these type of libraries.
  2391.   
  2392.   What libraries does libgr not include that you might want?  One fairly common
  2393.   X Windows format is XPM.  Libgr does not support this format so you'll need
  2394.   to retrieve the XPM library separately.  Fortunately, most Linux
  2395.   distributions already come with this library prebuilt and available to you
  2396.   during installation of the operating system.
  2397.   
  2398.   Libgr also does not support any animation file formats.  If you have need to
  2399.   read or write files in MPEG, FLI or FLC formats, for example, you will need
  2400.   to locate and install those libraries individually.  CaveatsOne minor caveat
  2401.   to using the libgr package exists with the zlib distribution.  According to
  2402.   the documentation for libgr (in the NEWS text file) the zlib release numbers
  2403.   went down at some point.  This means its possible for you to have an older
  2404.   version of zlib installed even though its version number is higher than the
  2405.   one in libgr.  How to resolve this is a tricky question but in my opinion it
  2406.   makes sense to install the zlib that comes with libgr because its known to
  2407.   work with the rest of the image libraries in the libgr package.  If you agree
  2408.   with this logic then you will probably want to remove the old version of zlib
  2409.   first, before doing the make install for libgr.
  2410.   
  2411.   Summary
  2412.   
  2413.   Libgr is not a drop-in replacement for all your image file format needs, but
  2414.   it does offer added convenience to the Linux users by providing a
  2415.   Linux-specific, easy to use build and install environment.  Since the
  2416.   libraries included in the libgr package do not change all that often it makes
  2417.   good system management sense to deal with the one distribution than to try to
  2418.   deal with updates to multiple image format packages.  And if you're dealing
  2419.   with building the Gimp, which requires many image libraries, libgr is a much
  2420.   simpler solution to get you up and running in the least amount of time and
  2421.   with the least amount of frustration.
  2422.   
  2423.   
  2424.    [INLINE]
  2425.    
  2426.   
  2427.   _____________________________________________________________________________
  2428.   
  2429.   1.  C. Wayne Brown and Barry J. Shepherd, Graphics File Formats:  Reference
  2430.   and Guide, Prentice Hall/Manning, 1995.
  2431.   [INLINE]
  2432.   Resources The following links are just starting points for finding more
  2433.   information about computer graphics and multimedia in general for Linux
  2434.   systems. If you have some application specific information for me, I'll add
  2435.   them to my other pages or you can contact the maintainer of some other web
  2436.   site. I'll consider adding other general references here, but application or
  2437.   site specific information needs to go into one of the following general
  2438.   references and not listed here.
  2439.   
  2440.   Online Magazines and News sources
  2441.   C|Net Tech News
  2442.   Linux Weekly News
  2443.   Slashdot.org
  2444.   Digital Video
  2445.   Computer Graphics World
  2446.   
  2447.   General Web Sites
  2448.   Linux Graphics mini-Howto
  2449.   Unix Graphics Utilities
  2450.   Linux Sound/Midi Page
  2451.   
  2452.   Some of the Mailing Lists and Newsgroups I keep an eye on and where I get
  2453.   much of the information in this column
  2454.   The Gimp User and Gimp Developer Mailing Lists.
  2455.   The IRTC-L discussion list
  2456.   comp.graphics.rendering.raytracing
  2457.   comp.graphics.rendering.renderman
  2458.   comp.graphics.api.opengl
  2459.   comp.os.linux.announce [INLINE]
  2460.   
  2461. Future Directions
  2462.  
  2463.   Next month:
  2464.   
  2465.   Let me know what you'd like to hear about!
  2466.   _____________________________________________________________________________
  2467.   
  2468.                                                  ⌐ 1998 Michael J. Hammel
  2469.     ________________________________________________________________________
  2470.   
  2471.                     Copyright ⌐ 1998, Michael J. Hammel
  2472.            Published in Issue 32 of Linux Gazette, September 1998
  2473.     ________________________________________________________________________
  2474.   
  2475.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  2476.     ________________________________________________________________________
  2477.   
  2478. More...
  2479.  
  2480.   Musings
  2481.   indent
  2482.   ⌐ 1998 Michael J. Hammel
  2483.   indent
  2484.   
  2485. Managing your Perl scripts:  using 'require' - continued
  2486.  
  2487.   Ok, so now you know how to make a subroutine and how to include it in your
  2488.   Perl cgi script.  What does this have to do with building common HTML code
  2489.   for multiple pages?  Simple:  by assigning the HTML constructs, plus any
  2490.   associated database information, to global variables you can then simply add
  2491.   the variable to your main pages at the point of interest.  For example, lets
  2492.   say you want to include an advertising banner across the top of all pages.
  2493.   You can write a small module that builds a table for the ad, centers it on
  2494.   the page and assigns it to the global variable $adbanner.  This might look
  2495.   something like this:
  2496.         #!/usr/bin/perl5
  2497.             # Include the CGI.pm and Msql modules
  2498.             use CGI  qw/:standard :html3 :netscape/;
  2499.             use Msql;
  2500.             # The subroutine to create a table for our ads.
  2501.             sub setads
  2502.             {
  2503.                # Open a connection to the database.
  2504.                my $dbh1 = Msql->connect();
  2505.                $dbh1->selectdb('mydb');
  2506.                # Get the ads from the database.  We assume
  2507.                # here that there is at least 1 ad in the
  2508.                # "ads" table.  We also assume the table has
  2509.                # the format of
  2510.                #  1. imagename
  2511.                #  2. URL
  2512.                # The results from the database query are stored
  2513.                # in the @results variable.  This list variable
  2514.                # will contain one array element for each field
  2515.                # in the "ads" table.
  2516.                $sth2 = $dbh1->query("SELECT * FROM ads");
  2517.                while ( (@result = $sth->fetchrow)
  2518.                {
  2519.                   # Add a <td> entry with the image for the ad
  2520.                   # linked to the specified URL.  The "a({-href"
  2521.                   # portion is where we use the CGI.pm
  2522.                   # a() function to establish the hyperlink.
  2523.                   push
  2524.                      (@tableelments,
  2525.                         td({-align=>'CENTER', -valign=>'CENTER'},
  2526.                            a({-href=>"$result[1]"},
  2527.                               img( { -src=>"/images/$result[0]",
  2528.                                  -alt=>"$results[1]",
  2529.                                  -border=>'0',
  2530.                                  -hspace=>'0', -vspace=>'0' }
  2531.                               )
  2532.                            )
  2533.                         )
  2534.                      )
  2535.                }
  2536.              
  2537.                # Now assign a table to our global variable and include
  2538.             the
  2539.                # table elements we just created.
  2540.                $adbanner = center(
  2541.                   table( {-border=>1, -width=>'100%', -height=>'60'},
  2542.                      Tr( @tableelements ),
  2543.                   )
  2544.                );
  2545.             }
  2546.             # Return true from included modules.
  2547.             1
  2548.             
  2549.   Since embedding one Perl function inside another, especially with the use of
  2550.   the CGI.pm functions, is such a common occurance I tend to align the closing
  2551.   paranthesis so that I can keep track of which function has been closed.
  2552.   You'll note in this example that the img() function (which will print an HTML
  2553.   IMG tag) is an argument to the a() function (which assigns a hypertext link
  2554.   to the image).  This in turn is an argument to the td() function.  Such
  2555.   multilayer embedding becomes quite extensive when you use CGI.pm table
  2556.   function (table(), Tr(), td()) to align elements of your HTML pages.  This is
  2557.   why you will often find yourself using variables to which you assign Tr() and
  2558.   td() constructs and then simply reference the variables within the table()
  2559.   construct.  At a minimum this makes the code easier to read.  But even more
  2560.   important is that you can create lists of td() constructs to stuff inside a
  2561.   Tr() construct later by simply referencing the list variable.
  2562.   
  2563.   If we now include this module in our main script we can then print out the
  2564.   advertisement table at any time we wish:
  2565.         require 'setads.pl';
  2566.             &setads();
  2567.             print header,
  2568.                start_html(
  2569.                   -author=>'webmaster@graphics-muse.org',
  2570.                   -title=>'Our Little Web Site',
  2571.                   -bgcolor=>'#000000', -text=>'#000000'
  2572.                   ),
  2573.                $adbanner,
  2574.                table(
  2575.                   {-border=>0, -width=>'100%', -height=>'97%',
  2576.                      -cellpadding=>0, -cellspacing=>0},
  2577.                   Tr(
  2578.                      td({-align=>'LEFT', -valign=>'TOP',
  2579.                         -rowspan=>2, -width=>'110',
  2580.                         -bgcolor=>'#FFCC00'},
  2581.                         $news_table),
  2582.                      td({-align=>'CENTER', -valign=>'CENTER',
  2583.                         -width=>'78%',
  2584.                         -bgcolor=>'#FFCC00'},
  2585.                          $nav_bar),
  2586.                      td({-align=>'CENTER', -valign=>'TOP',
  2587.                         -rowspan=>2,
  2588.                         -bgcolor=>'#FFCC00'},
  2589.                         $book_table)
  2590.                   ),
  2591.                   Tr(
  2592.                      td({-align=>'CENTER', -valign=>'TOP',
  2593.                         -height=>'80%',
  2594.                         -bgcolor=>'#ffffff'}, $qd_table
  2595.                      )
  2596.                   )
  2597.                );
  2598.                end_html;
  2599.             
  2600.   Here we printed out the ad banner right above another table that will contain
  2601.   other information for this page.  The variables $news_table, $nav_bar,
  2602.   $book_table, and $qd_table were filled in by parts of the code not shown
  2603.   here.  They could just as easily have been filled in by other external
  2604.   modules, just like $adbanner was.
  2605.   
  2606.   This last bit of code actually comes from the code I'm writing for the new
  2607.   Graphics Muse web site.  I have a common table definition for all pages (the
  2608.   table printed after the $adbanner in the last example), and modules for
  2609.   assigning HTML formats and data to the $news_table, $nav_bar and
  2610.   $book_table.  Then each main CGI script fills in the $qd_table variable with
  2611.   page specific data.  In this way I can make modifications to the way data is
  2612.   displayed in, for example, the news_table by only having to edit one script.
  2613.   Management of the site becomes much more simple than having to edit all the
  2614.   scripts each time a single change to news_table needs to be made and I avoid
  2615.   annoying many users by avoiding the use of frames.
  2616.   
  2617.   In the short time I've been using Perl I've grown to truly appreciate both
  2618.   its sophistication and its simplicity.  Things that should be simple to do
  2619.   are simple.  Additional tools like CGI.pm and Msql make integrating Perl with
  2620.   my Web site a breeze.  I've managed to rebuild my Web site from the ground up
  2621.   in less than a a couple of weeks and I'm not even making full use of what
  2622.   Perl can do for me.  If you manage a Web site and have access to the cgi
  2623.   directory you should definitely consider learning Perl, CGI.pm, and one of
  2624.   the many databases which Perl supports.
  2625.   
  2626.   indent
  2627.   
  2628.  Fun with Qbist
  2629.  
  2630.   [INLINE] One of the more interesting plug-ins in the Gimp is Qbist, written
  2631.   by Jens Ch. Restemeier and based on an algorithm from J÷rn Loviscach that
  2632.   appeared in the magazine c't in October 1995.  I've had quite a good time
  2633.   playing with this plug-in creating backgrounds for logos and other images.
  2634.   The filter is really pretty easy to use.  The plug-in dialog is made up of a
  2635.   set of 9 preview windows.  By clicking on any one of these the entire set is
  2636.   updated with new previews and the preview you clicked on is displayed as the
  2637.   new middle preview.  This central preview is used as a basis to generate the
  2638.   rest of the previews.  You can generate a set of previews that are somewhat
  2639.   similar to the basis preview by clicking on the middle preview.  In most
  2640.   cases, at least one of the previews will be significantly different from the
  2641.   basis.  Selecting another preview usually generates quite different previews,
  2642.   but this isn't always guaranteed.  [INLINE] The algorithm is sufficiently
  2643.   random to make it possible that not only can the other non-basis previews be
  2644.   radically different, they can also be nearly exactly the same as the
  2645.   orginal.  From a creative standpoint, I find this rather interesting.  At
  2646.   times, when I'm tired of coding or writing, I pull this filter up and start
  2647.   to become creative.  The patterns it generates are on the edge of randomness,
  2648.   with just enough recognizable geometry to make you say "No, thats not quite
  2649.   right, but its close".  The problem, of course, is it keeps you saying this
  2650.   ad infinitum until you realize its long past midnight and you have just
  2651.   enough time for one cup of coffee and a shower before you have to be to
  2652.   work.  But this is the kind of creativity I used to feel with coding when I
  2653.   first got my hands on PC (ok, it was a TRS-80, but you get the point).  Its
  2654.   refreshing to feel it again.
  2655.   
  2656.   Once you've selected the preview you want in your image, making sure its been
  2657.   selected and is displayed as the basis preview, you can add it to the current
  2658.   layer of your Image Window by clicking on OK.  [INLINE] Qbist will fill the
  2659.   entire layer, or the active selection, with a scaled version of the basis
  2660.   preview.  Since there are no blend modes for Qbist the selection/layer will
  2661.   be completely overwritten with the Qbist pattern.  The real trick to using
  2662.   these patterns comes from being able to make selections out of the
  2663.   geometrically connected pieces, creating drop shadows from the selections and
  2664.   slipping other images or text inbetween the layers.
  2665.     Some drawbacks and limitationsAlthough I really like this filter, it does
  2666.   have a few drawbacks.  First, opening the dialog doesn't always get you the
  2667.   same set of previews as the last time you opened the window, although the
  2668.   basis is the same.  It would be nice if you could get the same set of
  2669.   previews since you may see another preview in the current Qbist session that
  2670.   you'd like to use after selecting the current basis.  Unfortunately you won't
  2671.   be able to do that since the dialog closes after you click on the OK button.
  2672.   You can save the basis preview, but reloading it later has the same effect -
  2673.   the rest of the previews are random and not likely to be the same as the ones
  2674.   you had seen originally with that basis.
  2675.   
  2676.   Another problem is that the Save/Load options don't deal with a
  2677.   Qbist-specific directory.  A number of other plug-ins manage saved files
  2678.   within directories under the users $HOME/.gimp directory.  It shouldn't be
  2679.   difficult to update Qbist to do the same.  Its just a matter of getting
  2680.   around to updating the code.
  2681.   
  2682.   Speaking of the code, a quick examination of the source to Qbist shows some
  2683.   hard coded values used in various places that appear to be the sort of values
  2684.   that should be user configurable.  The interface could be expanded to allow
  2685.   the user to change these.  I may try this sometime soon, just as an
  2686.   experiment to see how changes to these values affect the previews.  [INLINE]
  2687.   Since I'm not familiar with the algorithm its unclear if these values are
  2688.   necessarily specific or just good initial seed values.  Another option might
  2689.   be to allow the user to choose some color sets from which Qbist could render
  2690.   its patterns.  Right now Qbist chooses colors on its own, without input from
  2691.   the user.
  2692.   
  2693.   Finally, probably the most annoying aspect to Qbist is that there are no
  2694.   blend modes available.  I'd love to be able to render a Qbist pattern in one
  2695.   selection and then use another selection to blend a different pattern over a
  2696.   corner of the first selection.  I can do this with multiple layers, but it
  2697.   would be more convenient to be able to do this from within Qbist itself.
  2698.   Qbist renders it patterns in both the previews and the image window fairly
  2699.   quickly, so changes like adding blend modes shouldn't cause serious
  2700.   performance problems.
  2701.   
  2702.   Qbist is a plain fun filter.  Like many of the Render menu filters, Qbist
  2703.   gives you a chance to explore some of your true creativeness.  By letting you
  2704.   wander through a random collection of patterns it lets you play with your
  2705.   computer in a way that a game can never quite equal.  Although your control
  2706.   over these patterns is a bit limited, the patterns themselves are
  2707.   sufficiently fascinating to make Qbist a filter well worth exploring.
  2708.   indent
  2709.   ⌐ 1997 by Michael J. Hammel
  2710.   
  2711.     "Linux Gazette...making Linux just a little more fun!"
  2712.     ________________________________________________________________________
  2713.   
  2714. Installing StarOffice 4.0 on RedHat 5.1
  2715.  
  2716.   by William Henning
  2717.   Editor, CPUReview
  2718.   Copyright July 29, 1998
  2719.   ALL RIGHTS RESERVED
  2720.   Today while shopping, I found StarOffice 4.0 (Commercial version) at a local
  2721.   cdrom shop. I already own (and use) ApplixWare, but I could not resist -
  2722.   given the usually positive reviews, I just *had* to try it.
  2723.   
  2724.   Please note that Caldera currently has a special on StarOffice 4.0 -
  2725.   $49.95US. That is an excellent price for a commercial license. Also note that
  2726.   StarOffice is available via ftp without cost for non-commercial use.
  2727.   
  2728.   I wanted to see how it would perform on a fairly low performance system, so I
  2729.   loaded it onto my server. In order to benefit others, I thought I would
  2730.   document my installation. I will use it for a few days, after which I will
  2731.   write a review on my 'user' experiences.
  2732.   
  2733.   The Software
  2734.   
  2735.   StarOffice comes on two cd's, in a jewel case. The first CD contains
  2736.   StarOffice and also appears to contain OpenLinux Lite along with some
  2737.   additional contrib packages. The second CD, a pleasant surprise, appears to
  2738.   be OpenLinux Base. This means I will have a busy couple of nights - I'm going
  2739.   to have to try out OpenLinux.
  2740.   
  2741.   The Computer
  2742.           + Tyan Titan-II motherboard (Socket 5, 256k sync cache)
  2743.           + WinChip 200Mhz (yes, it does work in single voltage
  2744.             motherboards!)
  2745.           + S3-968 video card, 4Mb of VRAM running at 1024x768x16M
  2746.           + 32Mb FPM memory, 127Mb swap
  2747.           + 24x Panasonic cdrom
  2748.           + 6.4Gb Quantum ST
  2749.           + DLINK 500TX 10/100Mbps 10BaseT, running at 10Mbps
  2750.             
  2751.   The Operating System
  2752.           + RedHat 5.1
  2753.           + reasonably up to date with updates from RedHat
  2754.             
  2755.   The Installation
  2756.   I read the instructions - and the 'README' file. I logged in using my regular
  2757.   user account, went to /mnt/cdrom/StarOffice_40, and entered './setup'.
  2758.   
  2759.   After the installation program started up, I got the infamous dialog "line 1:
  2760.   syntax error at token 'I' expected declarator; i.e. File..." prompting me to
  2761.   press ok.
  2762.   
  2763.   In all honesty, I must admit I was expecting this problem - I remember people
  2764.   asking for help with this very same problem while reading the Linux news
  2765.   groups. I went to Dejanews to find out how people solved this problem.
  2766.   
  2767.   I used "Staroffice 4.0 RedHat 5.1" as my search string, and got 61 matches.
  2768.   
  2769.   First Try
  2770.   
  2771.   The very first match was a posting from Simon Gao, who on July 27 wrote:
  2772.   
  2773.      This is a well known problem with RedHat 5.x. The problem is that
  2774.      StarOffice4 requires libc.5.4.28 above file system. Check out at
  2775.      www.waldherr.org/soffice and you find how to solve this problem.
  2776.      
  2777.   Off I went to Stefan Waldherr's web site. There I found that the version of
  2778.   StarOffice I purchased today is already outdated - and that I should download
  2779.   the latest version. As most people who purchase the commercial StarOffice
  2780.   package will get the same version I got (and as I did not want to wait to
  2781.   download 4.0.3 yet) I just downloaded the staroffice wrapper and proceeded to
  2782.   see if I could install 4.0 as shipped on the CD.
  2783.   
  2784.   I become root to install the rpm. The rpm would not install, I was treated to
  2785.   an error message:
  2786.   
  2787.      Error during install, staroffice tar file not found.
  2788.      Looking for any of the following files or directories
  2789.      /tmp/so40sp3_lnx_01.tar.gz
  2790.      /tmp/so40sp3_lnx_01.tar.gz
  2791.      
  2792.   Since I *REALLY* did not want to download 4.0.3 yet, I got stubborn.
  2793.   
  2794.   Second Try
  2795.   
  2796.   I looked through some more messages, and based on the information I found, I
  2797.   tried the following:
  2798.   
  2799.   I ftp'd libc-5.4.46-1rh42.i386.rpm from ftp.redhat.com/pub/contrib/i386, and
  2800.   tried to instal it.
  2801.   
  2802.   I got a "failed dependencies: ld.so >= 1.9.9 is needed by
  2803.   libc-5.4.46-1rh42.i386.rpm" message.
  2804.   
  2805.   Good thing I kept my ftp session open. I now ftp'd
  2806.   ld.so-1.9.9-1rh42.i386.rpm. This time I got a pile of glibc conflicts. Nope,
  2807.   there *HAS* to be a simpler way.
  2808.   
  2809.   Conclusion: Third Time Lucky
  2810.   
  2811.   Back to the drawingboard - or DejaNews, as the case may be. I found an
  2812.   article by Tommy Fredriksson, originally posted in
  2813.   stardivision.com.support.unix. Tommy wrote:
  2814.   
  2815.      In article <35A4B35E.CAA00699@actech.com.br>
  2816.      wrote:
  2817.      > I just got StarOffice 4.0 ServicePack 3 but I can't run on my
  2818.      RedHat Linux
  2819.      > 5.1 box, it shows that dreaded "line 1 syntax error at token
  2820.      'l'", etc. RH
  2821.      > 5.1 is libc6-based (glibc), but I also put libc-5 on my /lib
  2822.      directory.
  2823.      > Even this would not make it work. Could someone help me on this?
  2824.      Put your "libc-pack" anywhere you can find it - tell
  2825.      /etc/ld.so.conf (on top) where you put it and run ldconfig -v and
  2826.      look for errors - if non, install SO. That's all...
  2827.      
  2828.   Based on this message, I improvised. To save all of you some work, here are
  2829.   some step by step instructions on how to install StarOffice 4.0 on RedHat
  2830.   5.1:
  2831.   
  2832.          1. Go to http://sunsite.unc.edu/pub/Linux/GCC/
  2833.          2. cd to the home directory of the user you are installing it
  2834.             for
  2835.          3. download libc-5_4_46_bin_tar.gz into the current directory
  2836.          4. become root
  2837.          5. mkdir ~/tmp
  2838.          6. cd ~/tmp
  2839.          7. tar xvfz ../libc-5_4_46_bin_tar.g
  2840.          8. cd lib
  2841.          9. cp * /lib
  2842.         10. edit /etc/ld.so.conf
  2843.         11. add a new line at the top, "/lib" (without the quotes)
  2844.         12. ldconfig -v
  2845.         13. go back to the normal user session under X (stop being root)
  2846.         14. cd /mnt/cdrom/StarOffice_40
  2847.         15. ./setup
  2848.         16. follow the prompts - I chose custom install, and let it
  2849.             install everything.
  2850.         17. you can safely remove ~/tmp after you have installed
  2851.             StarOffice
  2852.             
  2853.   It Works!
  2854.   
  2855.   Following the README, I typed Office40/bin/soffice. After some disk activity,
  2856.   it ran! Note, I did not time how long it took, but it seemed like 20-30
  2857.   seconds.
  2858.   
  2859.   I chose to create a new document. I resized the window, and docked the
  2860.   paragraph style floating bar on the left hand side. The text in the default
  2861.   view was pretty poor, so I chose the 'Optimal' view (why don't they default
  2862.   to Optimal?) under the 'View' menu. This looked much better.
  2863.   
  2864.   I proceeded to type a few lines, and chose to print. I let it print as if to
  2865.   a PostScript printer. Lo and behold, my HP4L printed out the text quite
  2866.   nicely!
  2867.   
  2868.   Conclusion
  2869.   
  2870.   I am afraid that a review of StarOffice will have to wait for another day. So
  2871.   far, I like what I see, however I will only be able to intelligently comment
  2872.   on its features after using it for a while.
  2873.   
  2874.   Caldera or StarDivison has to make installation easier. I fully intend to try
  2875.   OpenLinux, and I am sure that the StarOffice installation will be much
  2876.   smoother than under RedHat. At this point, a Linux beginner who tried to
  2877.   install StarOffice on a RedHat system, and was not used to using excellent
  2878.   resources such as Dejanews, would have a very frustrating experience.
  2879.   
  2880.   The fine help available on the net from individuals like Tommy Fredriksson,
  2881.   Stefan Waldherr and many others, makes a mockery of the assertion that Linux
  2882.   has no support. I hope their postings and this article will save some time
  2883.   for those trying Linux for the first time.
  2884.   
  2885.   I hope you enjoyed this article,
  2886.   
  2887.   William Henning
  2888.   Editor, CPUReview
  2889.     ________________________________________________________________________
  2890.   
  2891.                      Copyright ⌐ 1998, William Henning
  2892.            Published in Issue 32 of Linux Gazette, September 1998
  2893.     ________________________________________________________________________
  2894.   
  2895.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  2896.     ________________________________________________________________________
  2897.   
  2898.     "Linux Gazette...making Linux just a little more fun!"
  2899.     ________________________________________________________________________
  2900.   
  2901.                       An Interview with Linus Torvalds
  2902.                                       
  2903.                             By Alessandro Rubini
  2904.     ________________________________________________________________________
  2905.   
  2906.   Alessandro: Can you please dedicate some of your time to us?
  2907.   
  2908.      Linus: Sure, no problem, I'll try my best.
  2909.      
  2910.   Alessandro: Are you happy with living in the States? I preferred having a
  2911.   Finnish leader rather than another american ruler.. how do you feel in this
  2912.   respect? Do you plan to come back?
  2913.   
  2914.      Linus: I've been very happy with the move: I really enjoyed being
  2915.      at the University of Helsinki, but I decided that trying out
  2916.      something different was worthwhile, and so far the experience has
  2917.      been entirely positive.
  2918.      
  2919.      I agree that Finland is a lot more "neutral" in many ways, and that
  2920.      had its advantages in Linux development: I don't think anybody
  2921.      really dislikes Finland, while a lot of people are nervous about or
  2922.      even actively dislike the US. So in some sense that could have been
  2923.      a downside, but I felt that most people trusted me more as a person
  2924.      than as a Finn, so I didn't feel it to be a major issue.
  2925.      
  2926.      Moving to the US has meant a lot better weather (even though this
  2927.      has been one of the rainiest winters in a _long_ time here in the
  2928.      Bay Area), and has also been very interesting. While I really liked
  2929.      my work at the University, the new stuff I'm doing is more exciting
  2930.      - more on the edge, so to say.
  2931.      
  2932.   Alessandro: We all know about the USA restrictions on cryptography; do they
  2933.   affect Linux features in the field?
  2934.   
  2935.      Linus: It doesn't seem to be a real issue. The idiocy of the US
  2936.      cryptography export rules were a problem even before I moved here:
  2937.      mainly because if/when we add strong cryptography to the kernel we
  2938.      would have to make it modular anyway in order to let the CD-ROM
  2939.      manufacturers (many of whom are based in the US) take it out in
  2940.      order to sell overseas. So me moving here didn't really change that
  2941.      fact - it only made it apparent that I can't be the person working
  2942.      on cryptography (something that was fairly obvious anyway, as I'm
  2943.      not really an expert in the area).
  2944.      
  2945.      Anyway, regardless of the above I sincerely hope that the US
  2946.      cryptography rules will be changed in the near future. The US rules
  2947.      have made a lot of things more difficult than they should have
  2948.      been. (In all fairness the US isn't the only country with problems:
  2949.      the French have even more of a problem in this area and are trying
  2950.      to get other European countries to do the same thing. Happily the
  2951.      French are a fringe group of loonies in this matter, while the US
  2952.      has been a real problem due to being so central when it comes to
  2953.      information technology).
  2954.      
  2955.   Alessandro: Did you ever think about leaving your role as Linux coordinator
  2956.   or is it fun like it was in the beginning? If you would leave, what would
  2957.   your next project be?
  2958.   
  2959.      Linus: I've never seriously considered leaving - the only times the
  2960.      issue has come up is really when somebody has asked me what the
  2961.      succession would be in the case I no longer felt interested. Linux
  2962.      has always been so much fun to coordinate that while it obviously
  2963.      takes a lot of my time I have always felt that it was more than
  2964.      worth it.
  2965.      
  2966.   Alessandro: Out of curiosity, how long do you write code daily, and what is
  2967.   your current main activity?
  2968.   
  2969.      Linus: I usually don't spend all that much time coding on Linux any
  2970.      more: occasionally I have bursts of things I do when I code
  2971.      full-day for a few weeks or so, but those are fairly rare, and
  2972.      mainly happen when there is some fundamental shift in the kernel
  2973.      that I want to get done. During the last year it's happened four or
  2974.      five times, mainly with regards to SMP or the so-called "dentry"
  2975.      filesystem cache.
  2976.      
  2977.      Most of the time I spend reading and reacting to emails -
  2978.      coordinating the others working on things, commenting on ideas, and
  2979.      putting together patches. This is by far the most work: I'd say
  2980.      that my coding is only about 10%, while the coordination is 90% of
  2981.      the work.
  2982.      
  2983.   Alessandro: How did you manage to write a free kernel and still earn your
  2984.   living?
  2985.   
  2986.      Linus: Initially, I was a university student at the University of
  2987.      Helsinki. What that means in Finland is that you get support by the
  2988.      goverment for a number of years in order to be able to finish your
  2989.      degree, and there is also a possibility to get special student
  2990.      loans. I suspect Italy has something similar, although probably not
  2991.      as comprehensive as the Finnish system.
  2992.      
  2993.      And after a year or two I was actually employed by the university
  2994.      as first a teaching assistant and then later a research assistant,
  2995.      and the university also actively encouraged me to be able to write
  2996.      Linux at the same time.
  2997.      
  2998.      Right now, I obviously work at a commercial company, but even here
  2999.      I get to do a lot of Linux work even during work hours because even
  3000.      though Transmeta doesn't sell Linux or anything like that, there is
  3001.      a lot of _use_ of Linux inside the company, so me continuing to
  3002.      work on it is obviously supportive of the company.
  3003.      
  3004.      So I've always been able to do Linux together with doing my "real"
  3005.      work, whether that was studying or working for a university or
  3006.      working for a commercial entity. There has never been much of a
  3007.      clash, even though obviously my working hours aren't exactly nine
  3008.      to five..
  3009.      
  3010.   Alessandro: Why didn't you turn to commercial support like Cygnus did? (I
  3011.   think I know why :-)
  3012.   
  3013.      Linus: I just never felt the interest to turn any part of Linux
  3014.      commercial: it would have detracted a lot more from my time to
  3015.      maintain a company or something like that, and it was never what I
  3016.      was interested in.
  3017.      
  3018.      It would also have implicated Linux money-wise: I wouldn't have
  3019.      been free to do what I wanted technically because I would be bound
  3020.      by constraints brought about by having to feed myself and my
  3021.      family. In contrast, working at the University or here at
  3022.      Transmeta, I make a living without having to involve doing
  3023.      Linux-decisions into it - so I'm free to do whatever I want with
  3024.      Linux without having to worry whether it will pay my next months
  3025.      rent..
  3026.      
  3027.      I feel a lot happier not having those kinds of pressures on Linux,
  3028.      and I think most other developers feel the same way (they don't
  3029.      have to worry about my technical judgement being corrupted by any
  3030.      financial issues).
  3031.      
  3032.   Alessandro: Do you think you changed the world or just fired the straw?
  3033.   (Again, I know you)
  3034.   
  3035.      Linus: I started it, and I feel very proud of that. I don't hink I
  3036.      "changed the world", but I feel privileged in being instrumental in
  3037.      changing a lot of lives - it's a good feeling to know that what you
  3038.      do really matters to a lot of people.
  3039.      
  3040.      I wouldn't go as far as saying that it "gives my life meaning", but
  3041.      Linux definitely is a _part_ of my life, if you see what I mean.
  3042.      
  3043.   Alessandro: What's your opinion of Richard Stallman's work and philosophy?
  3044.   
  3045.      Linus: I personally don't like mixing politics with technical
  3046.      issues, and I don't always agree with rms on a lot of issues. For
  3047.      rms, there are a lot of almost religious issues when it comes to
  3048.      software, and I'm a lot more pragmatic about a lot of things. As a
  3049.      result, we know we disagree about some things, and we actively
  3050.      don't try to work together too closely because we know it wouldn't
  3051.      work out very well.
  3052.      
  3053.      The above may make it sound like I dislike rms, and at the same
  3054.      time that is not at all true. Rms has obviously been the driving
  3055.      force behind most of the current "free software" or "open source"
  3056.      movement, and without rms the world would be a poorer place. And he
  3057.      _needs_ to be religious about it to be that driven.
  3058.      
  3059.      So I guess the best way of saying it is that I really admire rms,
  3060.      but I wouldn't want to be him, because our worldviews are
  3061.      different.
  3062.      
  3063.   Alessandro: On the practical side, what's the schedule for 2.2? What are the
  3064.   main differences between 2.0 and the upcoming 2.2?
  3065.   
  3066.      Linus: As I looks now, 2.2 should be sometime early summer or so,
  3067.      but it's hard to judge: there are a few things that really need to
  3068.      get fixed, and before they are fixed there's no point in even
  3069.      thinking about it. Right now there's a bad TCP performance problem
  3070.      that is holding things up: everything _works_ ok, but it is serious
  3071.      enough that I can't imagine a 2.2 before it is fixed.
  3072.      
  3073.      The changes 2.2 will have are mainly much more mature support for
  3074.      the new things in 2.0, namely SMP and multiple architectures. There
  3075.      are a _lot_ of other things in there (the new dentry code, totally
  3076.      rewritten NFS etc), but the SMP and architecture maturity is one of
  3077.      the most fundamental things that 2.2 will have.
  3078.      
  3079.   Alessandro: Bruce Perens claims "world domination: 2003"; is that realistic?
  3080.   In your opinion, will the concept of free software gain polularity in the
  3081.   mass market? In this respect, what's your opinion about the move of Netscape
  3082.   Corp.?
  3083.   
  3084.      Linus: The "World Domination" thing is obviously always a bit
  3085.      tongue-in-cheek, but I think that yes, a five-year timeframe for
  3086.      the free software movement and Linux to make a major noticeable
  3087.      impact is not at all unrealistic. The Netscape open source thing is
  3088.      one of the first indications of this, and I think we'll see others
  3089.      doing similar things.
  3090.      
  3091.   Alessandro: How will the various free OS's coexist, in your opinion?
  3092.   
  3093.      Linus: I think the current setup where people are aware of each
  3094.      other, but there is no organized or official co-operation is
  3095.      probably how it will continue. The whole point of Linux is that
  3096.      there is definitely room for more than one operating system
  3097.      (especially if that one operating system is a bad one made by
  3098.      microsoft ;), and I don't see that changing - the FreeBSD's and
  3099.      other operating systems will be around. Maybe not in the same form
  3100.      (more specialization etc), but I don't see any fundamental issues
  3101.      here..
  3102.      
  3103.   Alessandro: Or do you think that development of Wine and other tools will
  3104.   lead to the cohexistence of two systems of similar technical value, one free
  3105.   and the other proprietary, running the same application programs? (Horrible
  3106.   question, IMHO).
  3107.   
  3108.      Linus: No, I think the development of Wine will be an important
  3109.      step for the PC operating systems arena, but that step will be in
  3110.      the way of leveling the playing ground: when just about everybody
  3111.      can run the basic legacy Windows applications like MS Office etc,
  3112.      that allows the systems to really compete on being good at other
  3113.      things.
  3114.      
  3115.      So rather than having two systems of similar technical value, I
  3116.      think that you'd have many systems that are all able to run the
  3117.      same basic applications, but where the emphasis is on different
  3118.      things. Microsoft, for example, ha salways emphasized mediocrity
  3119.      and high volume, while Linux has (and will continue to) emphasized
  3120.      more technical issues.
  3121.      
  3122.   Alessandro: Currently we lack free office applications. Is this a matter of
  3123.   time, or do you think that these programs will only be available from
  3124.   commercial companies?
  3125.   
  3126.      Linus: I think that there will always be a niche for commercial
  3127.      programs, and while I think we'll see free office applications
  3128.      proliferate, I don't think that we necessarily _have_ to have them.
  3129.      
  3130.      The reason I personally want a free operating system and basic
  3131.      applications is that I really think that if the basics aren't
  3132.      stable and you can't modify them to suit your own needs, then you
  3133.      are in real trouble. But when it comes to many other areas, those
  3134.      issues are no longer the most pressing concerns, and then it is not
  3135.      as critical that you have free access to sources.
  3136.      
  3137.   Alessandro: Sometimes we hear of so-called ``standards'' that remain
  3138.   proprietary (like I2O), is this the last rant of dying companies, or is free
  3139.   software at risk?
  3140.   
  3141.      Linus: I don't worry too much about I2O and other proprietary
  3142.      standards. The whole idea of a proprietary standard has always
  3143.      failed - all of the successful standards these days are fairly
  3144.      open. Sometimes they are proprietary because the company that made
  3145.      them had enough clout to force it to be that way on its own, but I
  3146.      don't think that kind of clout exists anywhere else than at Intel
  3147.      and at Microsoft, and that even those two are being eroded by
  3148.      competition.
  3149.      
  3150.   Alessandro: What is your position about the availability of Linux modules in
  3151.   binary-only form?
  3152.   
  3153.      Linus: I kind of accept them, but I never support them and I don't
  3154.      like them.
  3155.      
  3156.      The reason I accept binary-only modules at all is that in many
  3157.      cases you have for example a device driver that is not written for
  3158.      Linux at all, but for example works on SCO Unix or other operating
  3159.      systems, and the manufacturer suddenly wakes up and notices that
  3160.      Linux has a larger audience than the other groups. And as a result
  3161.      he wants to port that driver to Linux.
  3162.      
  3163.      But because that driver was obviously not _derived_ from Linux (it
  3164.      had a life of its own regardless of any Linux development), I
  3165.      didn't feel that I had the moral right to require that it be put
  3166.      under the GPL, so the binary-only module interface allows those
  3167.      kinds of modules to exist and work with Linux.
  3168.      
  3169.      That doesn't mean that I would accept just any kind of binary-only
  3170.      module: there are cases where something would be so obviously
  3171.      Linux-specific that it simply wouldn't make sense without the Linux
  3172.      kernel. In those cases it would also obviously be a derived work,
  3173.      and as such the above excuses don't really apply any more and it
  3174.      falls under the GPL license.
  3175.      
  3176.   Alessandro: What do you think about the KDE-Qt question? Is Gnome going to
  3177.   succeed?
  3178.   
  3179.      Linus: I personally like Qt, and KDE seems to be doing fairly well.
  3180.      I'm taking a wait-and-see approach on the whole thing, to see
  3181.      whether gnome can do as well..
  3182.      
  3183.   Alessandro: An interesting challenge is "band reservation" in the network
  3184.   subsystem; is that going to happen any soon in Linux?
  3185.   
  3186.      Linus: I'll have to pass on this one. It's not one of the areas I'm
  3187.      personally involved with or interested in, and as such it's not
  3188.      something I'm going to be very involved with any efforts that way.
  3189.      That's how Linux works: the people who need or want something get
  3190.      it done, and if it makes sense on a larger scale it gets integrated
  3191.      into the system..
  3192.      
  3193.   Alessandro: Many people ask why the kernel is written in C instead of C++.
  3194.   What is your point against using C++ in the kernel? What is the language you
  3195.   like best, excluding C?
  3196.   
  3197.      Linus: C++ would have allowed us to use certain compiler features
  3198.      that I would have liked, and it was in fact used for a very short
  3199.      timeperiod just before releasing Linux-1.0. It turned out to not be
  3200.      very useful, and I don't think we'll ever end up trying that again,
  3201.      for a few reasons.
  3202.      
  3203.      One reason is that C++ simply is a lot more complicated, and the
  3204.      compiler often does things behind the back of the programmer that
  3205.      aren't at all obvious when looking at the code locally. Yes, you
  3206.      can avoid features like virtual classes and avoid these things, but
  3207.      the point is that C++ simply allows a lot that C doesn't allow, and
  3208.      that can make finding the problems later harder.
  3209.      
  3210.      Another reason was related to the above, namely compiler speed and
  3211.      stability. Because C++ is a more complex language, it also has a
  3212.      propensity for a lot more compiler bugs and compiles are usually
  3213.      slower. This can be considered a compiler implementation issue, but
  3214.      the basic complexity of C++ certainly is something that can be
  3215.      objectively considered to be harmful for kernel development.
  3216.      
  3217.   Alessandro: What do you think of the Java phenomenon? Did you ever consider
  3218.   integrating a Java VM, like kaffe, in the kernel?
  3219.   
  3220.      Linus: I've always felt that Java had a lot too much hype
  3221.      associated with it, and that is still true. I _hope_ sincerely that
  3222.      Java will succeed, but I'm pragmatic and I'm not going to jump on
  3223.      the Java bandwagon prematurely.
  3224.      
  3225.      Linux already supports seamless running of Java applications as it
  3226.      is, and the fact that the kernel only acts as a wrapper for the
  3227.      thing rather than trying to run the Java VM directly I consider to
  3228.      be only an advantage.
  3229.     ________________________________________________________________________
  3230.   
  3231.   This article is reprinted with the permission of Infomedia, Italy. An Italian
  3232.   translation of this article can be found at
  3233.   http://www.pluto.linux.it/journal/pj9807/linus.html. The interview was done
  3234.   by e-mail in February, 1998.
  3235.     ________________________________________________________________________
  3236.   
  3237.                     Copyright ⌐ 1998, Alessandro Rubini
  3238.            Published in Issue 32 of Linux Gazette, September 1998
  3239.     ________________________________________________________________________
  3240.   
  3241.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  3242.     ________________________________________________________________________
  3243.   
  3244.     "Linux Gazette...making Linux just a little more fun!"
  3245.     ________________________________________________________________________
  3246.   
  3247.                              It takes its toll
  3248.                                       
  3249.                                      by
  3250.                                       
  3251.                                Martin Vermeer
  3252.                                       
  3253.                                mv@liisa.pp.fi
  3254.                                       
  3255.   The origin of the current mess can be traced back to a short spell of
  3256.   ultra-liberalism, when the government caved in to the pressure to cut taxes
  3257.   and eliminate the national debt by selling off the road network. Politicaly,
  3258.   it has been a success; taxes are consistently lower than they have been for
  3259.   long, and the man in the street seems to be satisfied.
  3260.   
  3261.   Of course in the beginning, the situation was quite messy; highway segments
  3262.   were auctioned off, and the result was toll booths everywhere, so you had to
  3263.   stop many times and have a lot of petty cash handy if you wanted to get
  3264.   anywhere.
  3265.   
  3266.   But then, gradually, a market leader appeared. Federal Transport Corp. bought
  3267.   strategically placed road segments, connected them into a countrywide
  3268.   network, made it impossible for anyone else to do the same, and slowly took
  3269.   over the rest.
  3270.   
  3271.   By the motorists, it was felt to be a blessing. Sure, prices went up; but you
  3272.   could get by with getting a yearly license and putting the barcode sticker on
  3273.   the roof of your car; you didn't even have to brake anymore when passing the
  3274.   toll station. And the more roads FT acquired, the better the offer they could
  3275.   make their customers; such are the ways of "network externalities".
  3276.   
  3277.   Obviously as many of us now realise, the net effect was no tax drop at all.
  3278.   The yearly fee to FT is just another tax, if you want to use your car to go
  3279.   anywhere at all; and what's worse, it is paid to an authority we didn't elect
  3280.   ourselves. There has been a groundswell of resistance, such as the freetown
  3281.   (or "open roads") movement, and I sympathise fully with this.
  3282.   
  3283.   I live in a freetown now; a small one, at the foot of the mountains. Others
  3284.   are on the coast, or around airports. Few are inland. We have our own road
  3285.   network that we own ourselves collectively, just like in the old days. If you
  3286.   want to go to another freetown, you have the options of air, rail and water
  3287.   transport, which are not (yet) under FT's control. If you want to visit
  3288.   people outside freetown land, you have to pay the toll, of course :-(  This
  3289.   -- referred to as "gating out" --  is minimized by careful planning.
  3290.   
  3291.   You may ask, why did I choose to live in a place, and under a regime, that
  3292.   limits my freedom of movement so much? Well first of all, it is my own
  3293.   choice. I don't want to owe my "freedom" to an authority that does not
  3294.   represent me. And then, there are compensations. The people. Freetowners are
  3295.   active, involved citizens; everything is debated, and decisions are taken by
  3296.   informed people. Compare that to the way outside. It's a different culture
  3297.   really, and I like it. They are my kind of people.
  3298.   
  3299.   And, except in the matter of transport, life in a freetown is just as good or
  3300.   better than outside. There is a lot of employment in hi-tech; as I said, we
  3301.   are a sophisticated lot. And there are no advertisements of FT, like there
  3302.   are everywhere outside, enquiring politely but insistently where you would
  3303.   feel like going today... that really gets my blood pressure up.
  3304.   
  3305.   These are interesting times we live in; recently the freetown movement has
  3306.   gained a lot of interest and newcomers are flowing in. Resentment at the
  3307.   Federal Transport monopoly is tangible, now that fees are going up and road
  3308.   maintenance is being neglected. Earlier, just after the sell-off, roads were
  3309.   maintained well; you had the option of choosing alternative routes, and the
  3310.   toll revenue was channeled to maintenance and improvement. Now, many road
  3311.   segments seem to be in free fall down towards their natural state. You still
  3312.   have alternative routes to choose from; but they are all under FT's control
  3313.   and in uniformly poor shape.
  3314.   
  3315.   And then there is this crazy project called the RoadPlane. It is a gigantic
  3316.   vehicle, carrying hundreds of people at 200 mph along the highways, rolling
  3317.   along smoothly on smart-strutted wheels, navigated by satellite, electronic
  3318.   map and road radar. I have heard of people riding one of those things; quite
  3319.   an impressive experience, it appears. FT's slogan is "A Better Plane Than The
  3320.   Plane", but some bad accidents have happened already. It is a very complex
  3321.   system; OK as long as everything works, but winter weather, the poor state of
  3322.   the roads, and errors in the maps -- or an animal straying on to the road --
  3323.   are hard to foresee and take into account. These problems have generally been
  3324.   glossed over in the media; FT represents a major advertising budget for them.
  3325.   
  3326.   RoadPlane is FT hybris at its best. It is a white elephant and that fills me
  3327.   with glee. This could be the undoing of FT, who knows. But it will only
  3328.   happen if people take the trouble to inform themselves, understand how they
  3329.   are being ripped off, and become active!
  3330.   
  3331.   Similarity to real events and circumstances is, again, purely and wholly
  3332.   intentional.
  3333.   
  3334.   
  3335.     ________________________________________________________________________
  3336.   
  3337.                       Copyright ⌐ 1998, Martin Vermeer
  3338.            Published in Issue 32 of Linux Gazette, September 1998
  3339.     ________________________________________________________________________
  3340.   
  3341.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  3342.     ________________________________________________________________________
  3343.   
  3344.     "Linux Gazette...making Linux just a little more fun!"
  3345.     ________________________________________________________________________
  3346.   
  3347.                                Java and Linux
  3348.                                       
  3349.                               By Shay Rojansky
  3350.     ________________________________________________________________________
  3351.   
  3352.   Not long ago, Javasoft celebrated Java's third birthday. Java, once seen as
  3353.   merely another way to animate and spice up web pages, has become much more
  3354.   than that. Nowadays, well-known software corporations have pledged their
  3355.   support to Java, and new Java APIs are being defined in record time. The Java
  3356.   technology enables programmers to finally write truly multi-platform
  3357.   programs, offers an advanced cross-platform GUI toolkit, embedded threading
  3358.   in the language and much more.
  3359.   
  3360.   At the same time, we are seeing remarkable events in the computer software
  3361.   world. Microsoft, the behemoth of the industry, is being seriously threatened
  3362.   by anti-trust action from both the Justice Department and 20 different
  3363.   states. Netscape has released the source code for Communicator and may be the
  3364.   first company to break free of Open Software prejudice. This has attracted
  3365.   much interest in Open Software from companies who have traditionally feared
  3366.   the concept.
  3367.   
  3368.   What do all of these events mean for the Linux operating system? It means we
  3369.   have a window of opportunity. Never before has the time been so right. On one
  3370.   hand, the industry is seriously taking a look at Linux as an open (and free)
  3371.   OS. Hey, if Netscape is doing it with their browser, why not an Open OS? On
  3372.   the other hand, Java technology offers a machine-independant way to write
  3373.   applications, and much of the industry has rallied behind it.
  3374.     ________________________________________________________________________
  3375.   
  3376.   Java and the Linux Community
  3377.   
  3378.   The Linux community itself, however, has always treated Java with an
  3379.   ambivalent attitude. The language that has promised to topple the hegemony of
  3380.   Microsoft, a dream like that of any Linux enthusiast, hasn't been accepted
  3381.   into the mainstream of Linux development. There are several reasons for this.
  3382.   
  3383.   First and foremost, Java is a proprietary language owned by Sun Microsystems.
  3384.   This means that Sun controls every aspect of the language, the APIs and their
  3385.   licensing conditions. Tactics by Microsoft, like changing APIs in their Java
  3386.   suite J++ and rendering their virtual machine incompatible with other Java
  3387.   virtual machines, have forced Sun to seek exclusive rights to dub a product
  3388.   ``Java-compatible''. Although this may be the only way to fight Microsoft's
  3389.   unfair tactics, never before has a language been so much in the hands of a
  3390.   single corporation. The Linux community was born much in protest of this kind
  3391.   of ownership.
  3392.   
  3393.   Second, the multi-platform concept of Java, the Java Virtual Machine (JVM),
  3394.   means that programmers feel they are programming for the Java environment and
  3395.   not for the Linux environment. This also means that it's much more difficult
  3396.   to exploit the features of Linux.
  3397.   
  3398.   Third, Java is still slow. Many promising enhancements are available such as
  3399.   Just-in-Time compilers and Sun's Hotspot (still in beta). Java has certainly
  3400.   improved since it was first created, but it still requires a powerful
  3401.   platform. The Linux world is relatively speed-minded, and one of the main
  3402.   advantages of Linux is its ability to run on obsolete hardware.
  3403.     ________________________________________________________________________
  3404.   
  3405.   The Advantages of Programming in Java
  3406.   
  3407.   Despite all these shortcomings in the nature of Java, it is the only real
  3408.   challenge made in the last few years to Microsoft's rule. It is also an
  3409.   advanced language, written from the ground up with modern programming
  3410.   concepts in mind; all the flaws C++ retained from C for backwards
  3411.   compatibility are gone in Java, along with other complex features (multiple
  3412.   inheritance, for example). An automatic garbage collector removes the need to
  3413.   free memory, drastically reducing development time. Threads are so embedded
  3414.   in the language they become an indispensible tool for the programmer.
  3415.   
  3416.   I hope Linux developers take a second look at Java as a development language
  3417.   and start using it regularly. Some Linux developers have already made
  3418.   impressive progress with Java tools, including several Java virtual machines
  3419.   (JVMs), several Just-In-Time (JIT) compilers and others. Take a look at these
  3420.   if you are considering using your Linux platform for developing Java. The
  3421.   Java-Linux resources page can be found at:
  3422.   http://www.blackdown.org/java-linux.html
  3423.   
  3424.   I will now go over some of the key features in JDK 1.1.x. Note that the next
  3425.   version, 1.2 is in beta but should be available soon.
  3426.     ________________________________________________________________________
  3427.   
  3428.   Object Serialization
  3429.   
  3430.   Object serializing means taking an object and flattening it into a stream of
  3431.   bytes. In practice, this is usually used for two things--passing objects
  3432.   through a network and storing objects in files. Usually, a programmer who
  3433.   wishes to store a data structure on disk has to write a specific algorithm
  3434.   for doing so, which can be quite tedious. Java simplifies all this by doing
  3435.   it automatically for you. For example, if you have a tree in memory and wish
  3436.   to pass it to another Java program on the network, all you have to do is to
  3437.   pass the root object--Java will follow the pointers and copy the entire tree.
  3438.   If you have special considerations (like security), you may design the way
  3439.   the object is serialized.
  3440.     ________________________________________________________________________
  3441.   
  3442.   Java Foundation Classes (Swing)
  3443.   
  3444.   The original AWT, which is the windowing toolkit for Java, was very clunky
  3445.   and uncomfortable. Many components were missing and the programming model was
  3446.   needlessly painful. The current accepted toolkit for Java is code-named
  3447.   Swing. Swing offers a large number of lightweight components; they are fully
  3448.   implemented in Java but do not use the underlying windowing architecure as in
  3449.   AWT. This assures the same functionality across platforms. Another appealing
  3450.   feature is the completely pluggable look and feel, which lets you switch
  3451.   between Windows and Motif, for example, while the program is running. You can
  3452.   also design your own look.
  3453.     ________________________________________________________________________
  3454.   
  3455.   RMI (Remote Method Invocation)
  3456.   
  3457.   RMI is the Java equivalent of CORBA, which is a way to invoke methods in
  3458.   objects that are in a different JVM (or even machine). For those of you who
  3459.   know the RPC (Remote Procedure Call) frequently used in UNIX machines, RMI
  3460.   (and CORBA) are its object-oriented counterparts. The concept of
  3461.   ``distributed programming'' has gotten very popular lately. In general, it
  3462.   means a very tight integration between programs across the network; objects
  3463.   in different machines can talk to each other simply by calling each other's
  3464.   methods. This is accomplished by having a Java program hold a ``stub'' of a
  3465.   remote object. Then, when a method is invoked on that stub, Java
  3466.   transparently sends the request over the network and returns the requested
  3467.   value. The extent by which distribution and serialization are embedded in
  3468.   Java show the advantage of a modern language designed to support these
  3469.   concepts.
  3470.     ________________________________________________________________________
  3471.   
  3472.   JNI (Java Native Interface)
  3473.   
  3474.   Often programmers can get frustrated when they wish to use the benefits of
  3475.   Java to do something that is system dependant. The JNI allows you to
  3476.   interface with a native-shared object and run its functions. This means you
  3477.   can write system-dependant code in C (or any other language) and use it from
  3478.   Java. Of course, as a result, your program would not be portable unless you
  3479.   supply the shared object to all platforms. This could be useful, for example,
  3480.   to catch signals in UNIX and to access the registry in Windows.
  3481.     ________________________________________________________________________
  3482.   
  3483.   JDBC (Java Database Connectivity)
  3484.   
  3485.   Java Database Connectivity is an SQL database access interface. It provides a
  3486.   database-independent way to perform SQL queries on any database that provides
  3487.   JDBC drivers. Currently, many popular databases do, and those that don't can
  3488.   still be accessed via the JDBC-ODBC bridge, which allows you to use ODBC
  3489.   drivers instead. For a list of database drivers see:
  3490.   http://java.sun.com/products/jdbc/jdbc.drivers.html.
  3491.   
  3492.   Take a good look at Java. If we could manage to separate the applications
  3493.   from the operating systems running them, we'd have the freedom to choose
  3494.   shich OS we like best. Although in spirit the Linux community has a
  3495.   ``renegade'' non-conformist element in it, Java has a great potential and
  3496.   deserves our attention. The Linux-Java combination can turn into a winning
  3497.   one.
  3498.   
  3499.   Java Resources
  3500.   
  3501.   Java home: "http://java.sun.com/
  3502.   
  3503.   Java developer connection (free registration): http://java.sun.com/jdc/
  3504.   
  3505.   Swing (JFC): http://java.sun.com/products/jfc/index.html
  3506.   
  3507.   Java for Linux: http://www.blackdown.org/java-linux.html
  3508.     ________________________________________________________________________
  3509.   
  3510.                       Copyright ⌐ 1998, Shay Rojansky
  3511.            Published in Issue 32 of Linux Gazette, September 1998
  3512.     ________________________________________________________________________
  3513.   
  3514.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  3515.     ________________________________________________________________________
  3516.     ________________________________________________________________________
  3517.   
  3518.     "Linux Gazette...making Linux just a little more fun!"
  3519.     ________________________________________________________________________
  3520.   
  3521.                          Linux Installation Primer
  3522.                                       
  3523.                                By Ron Jenkins
  3524.     ________________________________________________________________________
  3525.   
  3526.   You've heard all the hype, and decided to find out what this "Linux" thing is
  3527.   all about. Or maybe you need a low cost alternative to one of the commercial
  3528.   operating systems. Perhaps you need an easy way to connect diverse systems
  3529.   and let them all communicate with each other..tomorrow.. or you'll be
  3530.   encouraged to "seek new employment challenges." In any case, you have a
  3531.   problem that needs a solution, or a curiosity that needs to be satisfied.
  3532.   Well, you have come to the right place. Join me as we take a journey into the
  3533.   exciting world of the Linux operating system. Please keep your hands inside
  3534.   the car at all times, and remain in your seat.
  3535.     ________________________________________________________________________
  3536.   
  3537.   What the heck is Linux anyway?
  3538.   
  3539.   Linux is a freely distributable version of Unix developed by Linus Torvalds
  3540.   and thousands of other programmers scattered all over the world. What started
  3541.   as a hacker's system, designed primarily for the technically adept, has now
  3542.   evolved in to a viable, stable operating system with a robust set of
  3543.   applications and tools making it suitable for both personal and mission
  3544.   critical commercial use.
  3545.   
  3546.   In just the past six months Linux growth has undergone an exponential
  3547.   expansion. Every day Linux gains more and more press and exposure. Many
  3548.   commercial vendors are announcing support, or ports of their products to the
  3549.   Linux operating system. I saw just the other day that Oracle and Informix,
  3550.   both major players in the Unix database world, have ports to Linux underway.
  3551.     ________________________________________________________________________
  3552.   
  3553.   Well, that's fine and dandy, but what does it mean to me?
  3554.   
  3555.   This is incredibly significant, not just to the techno-geeks (yes, that's me)
  3556.   but to the entire spectrum of computer users. One of the benchmarks of the
  3557.   commercial viability of any product is the support of the application
  3558.   vendors.
  3559.   
  3560.   While it's great fun for me to write my own programs and applications, most
  3561.   people just need to get some work done, on time, as easily as possible. Or
  3562.   perhaps you want to surf the net for entertainment, or playing games. Without
  3563.   the "killer apps", an operating system is doomed commercially.
  3564.   
  3565.   What this all means to you is never before has there been an operating
  3566.   system, with a robust set of applications and development tools, available
  3567.   for little or no cost, other than the "sweat equity" required to learn to use
  3568.   it effectively.
  3569.   
  3570.   An additional point to consider is that as you progress in your Linux
  3571.   education you are also increasing your skill level and, ultimately, your
  3572.   worth in the marketplace.
  3573.   
  3574.   One of the strengths of Linux is that you have the power to choose the depth
  3575.   of knowledge required to accomplish your tasks. Want to just bang out a
  3576.   document or two, or play games? You can. Want to surf the Internet and
  3577.   exchange e-mail with your friends and coworker's? No problem. Want to learn
  3578.   to program in a variety of different languages? Go ahead.
  3579.   
  3580.   The point here is Linux can do all these things, and much more. Additionally,
  3581.   with Linux, you are not required to fork over more money for each function
  3582.   you want to add.
  3583.     ________________________________________________________________________
  3584.   
  3585.   Okay. That sounds great, but I've heard that Unix is difficult to configure,
  3586.   hard to install, only for the pocket protector crowd, etc.
  3587.   
  3588.   While this was the case at one time, here and now, in 1998, it's simply not
  3589.   true. Major advancements have been made in the installation and configuration
  3590.   process, and in most cases Linux is no more difficult to install than any
  3591.   other operating system. With the advent of package managers, Graphical User
  3592.   Interfaces, and "smart" probing of your system's components, installation has
  3593.   become largely a moot issue.
  3594.   
  3595.   The truth is, you could not have picked a better time to join the Linux
  3596.   world. Granted, once you get to networking issues, there is more to it in a
  3597.   Unix machine than a Windows box, but with the new configuration utilities,
  3598.   combined with an intuitive, easy to understand process, I firmly feel that
  3599.   Linux is about as easy to configure as Windows.
  3600.     ________________________________________________________________________
  3601.   
  3602.   Well, if you say so, but if Linux is not a commercial product, where do I go
  3603.   if I get in trouble?
  3604.   
  3605.   Luckily, there are commercial distributions of Linux available, as well as
  3606.   commercial support contractors who will be happy to help you out. And usually
  3607.   for quite a bit less than the people in Redmond, and the Linux vendors
  3608.   actually answer the phone. And call you back.
  3609.   
  3610.   Now I'm going to tell you about Linux's secret weapon. Remember, those
  3611.   thousands of people I mentioned before? Well, there is a virtual universe,
  3612.   populated with people who are ready, willing, and able to help you out. You
  3613.   will find them on USENET, commonly called newsgroups, on Internet Relay Chat,
  3614.   commonly called IRC and in your local area, in the form of Linux User's
  3615.   Groups. As a matter of fact, this free noncommercial group of people have
  3616.   made such an impact on the end user community, that in an unprecedented move,
  3617.   Infoworld magazine named the Linux support community as a whole, as the 1997
  3618.   Product of the Year!
  3619.     ________________________________________________________________________
  3620.   
  3621.   Okay, that all sounds good, but I've got an old 486 DX2/66 that's real slow.
  3622.   Would Linux do me any good?
  3623.   
  3624.   The answer is a resounding yes! Linux will run on anything from a diskless
  3625.   workstation, to an XT, to the latest whizbang hardware. As a matter of fact,
  3626.   I've used these machines for everything from routers to web servers, from
  3627.   dialup servers to file servers. I currently run 2 486 66's as my backup DNS
  3628.   machines, each hosting multiple zones.
  3629.   
  3630.   This is another one of Linux's strengths. The ability to take "obsolete"
  3631.   machines and do great things with them. This is a great low cost method for
  3632.   nonprofit organizations, and cost conscious organizations to squeeze extra
  3633.   value from "old" machines.
  3634.   
  3635.   The one exception to this is your video subsystem. X, the Graphical User
  3636.   Interface , is very picky about the video cards it will and will not support.
  3637.   This is primarily due to the fact that many video card manufacturers are
  3638.   reluctant to release specification information to Linux developers.
  3639.   
  3640.   However, support is improving every day, and there are also commercial X
  3641.   servers available to address these issues. The bottom line here is to try to
  3642.   make sure your video card is supported by X if you want to run more than VGA
  3643.   at 16 colors.
  3644.   
  3645.   That said, different distributions of Linux have different hardware
  3646.   requirements. And of course, I don't mean to imply that you should not take
  3647.   advantage of a newer machine if you have access to one. I simply want to
  3648.   convey to you that you don't have to have a Pentium II with 256 Megs of RAM,
  3649.   or a 600Mhz Alpha to be able to use Linux.
  3650.   
  3651.   As a general guideline, any 386 or better with 4MB of RAM or more should run
  3652.   quite nicely. If you plan on running X, 8MB would be better, 16MB better
  3653.   still.
  3654.   
  3655.   Generally speaking, the more RAM, the better. As a matter of fact, I often
  3656.   tell my clients that I would rather have a slower processor with more RAM,
  3657.   than a faster processor with less RAM.
  3658.   
  3659.   Contrary to what you may have been told, the processor speed is NOT the
  3660.   primary determining factor of performance. In reality the performance of your
  3661.   system is determined by the amount of RAM you have, The speed of your Disk
  3662.   subsystem, and your processor. In that order.
  3663.   
  3664.   Any type of IDE HDD, and any ATAPI CD-ROM drive will work quite nicely, as
  3665.   will most SCSI hosts and disks. However, SCSI installations can often be more
  3666.   involved, and will be covered in a separate document.
  3667.     ________________________________________________________________________
  3668.   
  3669.   Okay, you've sold me on the idea. What next?
  3670.   
  3671.   The first thing you will need to do is pick a distribution. Linux is packaged
  3672.   as collections of programs, applications, utilities, and the operating
  3673.   system, by different people and vendors. These are called distributions.
  3674.   There are many, fine distributions out there, and choosing the "right" one is
  3675.   a nebulous process. This is somewhat analogous to picking the "best" vacation
  3676.   spot, or the "best" outfit to wear.
  3677.   
  3678.   I will be discussing the Slackware 3.5, and RedHat 5.1, as these are the ones
  3679.   I am familiar with. Many of the descriptions and configuration options, most
  3680.   notably the autoprobing of PCI devices, and support for many newer video
  3681.   cards, are applicable ONLY to these distributions. All my comments and
  3682.   recommendations are just that - comments and recommendations. Your
  3683.   preferences may be entirely different.
  3684.   
  3685.   Slackware 3.5
  3686.   
  3687.   The first distribution I ever used, and still my favorite. It has the option
  3688.   for either a Command Line Interface (CLI) install, or a Graphical User
  3689.   Interface (GUI) install. Uses Tarballs, or .tgz package format. I like this
  3690.   because I am not "forced" to install X just to use my system like some of the
  3691.   other distributions ( see below.) I am also given more control over what does
  3692.   and does not get installed. (Upgrade path is not too good.) Best for people
  3693.   who want to really learn about how the system works, and like installing and
  3694.   compiling their own software. A full install will eat up ~400MB of disk
  3695.   space.
  3696.   
  3697.   RedHat 5.1
  3698.   
  3699.   This is the current "darling" of the commercial side of the Linux community.
  3700.   Probably the easiest to install. Forces the installation of the X window
  3701.   system, whether you want it or not. Uses the RPM package format to ensure all
  3702.   packages and programs are installed correctly (sort of.) Upgrade path is
  3703.   good. Currently has the lion's share of the media attention, and thus,
  3704.   application support. This is the one I recommend for people who want a
  3705.   working system quickly, and are less concerned about the internal workings of
  3706.   the Operating System. A full install will eat up ~600MB of disk space.
  3707.   
  3708.   I had originally intended to do an in-depth comparison of the various
  3709.   distributions, but the August issue of the Linux Journal just arrived in my
  3710.   mailbox today, and I see that Phil has beat me to it. I respectfully disagree
  3711.   with regard to the Caldera Distribution. I am overwhelmed by it's cost, and
  3712.   underwhelmed by it's performance. Other than that, I would suggest you refer
  3713.   to his article for a more in-depth comparison. He has done an outstanding
  3714.   job, much better than I could have ever done.
  3715.     ________________________________________________________________________
  3716.   
  3717.   How do I get the software?
  3718.   
  3719.   Here you have several options. All the distributions I mention are freely
  3720.   available on the Internet for download. Additionally, RedHat, and Slackware
  3721.   are available for purchase, either directly from the manufacturers, or
  3722.   through third parties. Finally, some or all of them are often bundled with
  3723.   books on Linux or can be had at your local Linux User's Group's Install
  3724.   Party, an event where people bring in their computers and the hosts at your
  3725.   Linux users Group will install the software for you.
  3726.   
  3727.   IMPORTANT NOTE: While it is possible to install some of these distributions
  3728.   using FTP or NFS, I strongly urge you to acquire a CD-ROM for your first
  3729.   installation. See the resources section at the end of this document for
  3730.   vendors, or check your local book store.
  3731.   
  3732.   While an Install Party is probably the easiest method to get your system up
  3733.   and running, You will get more out of it by doing the installation yourself.
  3734.   Messing up, and doing it yourself is the best way to learn.
  3735.     ________________________________________________________________________
  3736.   
  3737.   What sort of planning should I do beforehand?
  3738.   
  3739.   Excellent question. Here are some things to consider:
  3740.   
  3741.   While it is possible and feasible to have multiple operating systems residing
  3742.   on one system, I recommend using a separate machine if possible, or at least
  3743.   a separate disk or disks on your machine just for Linux.
  3744.   
  3745.   This will give you the confidence to bang away at it, install multiple times,
  3746.   and decrease the chance of harming your primary OS or data. Also, in later
  3747.   installments, I will show you how to make this machine do all kinds of neat
  3748.   tricks, like serve up your Internet connection, store files and applications,
  3749.   even become the starting point for your own home network.
  3750.     ________________________________________________________________________
  3751.   
  3752.   I'm not rich, where can I find a cheap machine like you mention?
  3753.   
  3754.   Check around in the paper, your local Linux user group, your place of
  3755.   employment or even your local community college for one of those "old"
  3756.   machines. They can often be had at little or no cost.
  3757.   
  3758.   What we are aiming for here is maximizing your chances for a successful
  3759.   installation, there will be plenty of time for you to learn the more esoteric
  3760.   methods as your Unix skills increase.
  3761.   
  3762.   If at all possible try to get a separate machine, preferably with two Hard
  3763.   Disk Drives, and an ATAPI compliant CD-ROM.
  3764.     ________________________________________________________________________
  3765.   
  3766.   That sounds like a lot of trouble. Can't I just try it out without all that
  3767.   extra stuff?
  3768.   
  3769.   If you absolutely must disregard my warnings, and intend to try out Linux on
  3770.   your primary machine, BACKUP ANYTHING YOU CAN NOT AFFORD TO LOSE ONTO FLOPPY
  3771.   DISK, TAPE, OR WHATEVER BACKUP DEVICE YOU PRESENTLY USE. IF YOU DON'T HAVE
  3772.   ONE, PUT THIS DOWN AND GO GET ONE! YOU HAVE BEEN WARNED. Consider the
  3773.   Slackware distribution. It offers the option of running directly off of the
  3774.   CD-ROM.
  3775.     ________________________________________________________________________
  3776.   
  3777.   Okay, I have the machine or extra disk(s), what next?
  3778.   
  3779.   If you have not acquired a separate machine, refer to the warning above.
  3780.   BACKUP ANYTHING YOU CANNOT AFFORD TO LOSE.
  3781.   
  3782.   The first thing you will need to do is create your boot disk, and in some
  3783.   cases, a root or supplemental disk.
  3784.   
  3785.   If you purchased the commercial distribution of RedHat, the required disks
  3786.   should already be included. The commercial version of Slackware should be
  3787.   bootable directly from the CD-ROM on newer systems.
  3788.   
  3789.   If you obtained the software bundled with a book, you will probably need to
  3790.   create the disk or disks yourself.
  3791.   
  3792.   You will need one or two DOS formatted disks for this.
  3793.   
  3794.   What boot image you need will depend on which distribution you are
  3795.   installing.
  3796.   
  3797.   For RedHat, look for the /images directory, which should contain two files
  3798.   named boot.img and supp.img. Normally only the boot.img disk will be
  3799.   required.
  3800.   
  3801.   For Slackware, look for a directory called /bootdsks.144, and another called
  3802.   /rootdsks. Unless you have something other than IDE devices in your machine,
  3803.   the bare.i image is the one you will be looking for as your boot disk. In the
  3804.   rootdsks directory, you will need the color.gz image for your root disk.
  3805.   
  3806.   The method used for creating your boot and/or root disks will depend on
  3807.   whether you are using a Linux (or Unix) machine, or a DOS based machine.
  3808.   
  3809.   If you are on a DOS based machine, I.E. Windows 3.x, Windows 95, Windows 98
  3810.   or Windows NT, you will need to use RAWRITE.EXE to create your images. This
  3811.   program should be included either in the same place as the images we just
  3812.   discussed, or under an /install, or /dosutils directory in some cases.
  3813.   
  3814.   You will need to open a command prompt (sometimes called a DOS box) on your
  3815.   machine, or exit windows to get to the command prompt.
  3816.   
  3817.   Then type: RAWRITE <enter> You will be asked for the source file name:bare.i
  3818.   <enter>
  3819.   
  3820.   You will next be asked for your target drive: A: <enter>
  3821.   
  3822.   If the program errors out, and complains about "Attempting to DMA across 64k
  3823.   boundary," FTP to sunsite.unc.edu, then cd to:
  3824.   
  3825.   /pub/Linux/distributions/redhat/redhat-5.1/i386/dosutils/
  3826.   
  3827.   And retrieve the version of RAWRITE there. It will be smaller than the one
  3828.   you were using (~14k,) and the problem should go away. As I recall this is
  3829.   only an issue on NT and possibly Windows 98 boxes.
  3830.   
  3831.   If you are on a Linux or Unix box, the command to get it done is:
  3832. dd if=<your boot or root image> of=<where to write it to> bs=1440k
  3833.  
  3834.   So, if you are making a Slackware boot disk:
  3835.  
  3836. dd if=bare.i of=/dev/fd0 bs=1440k <:enter>
  3837.  
  3838.   For the root disk:
  3839.  
  3840. dd if=color.gz of=/dev/fd0 bs=1440k <enter>
  3841.     ________________________________________________________________________
  3842.   
  3843.   Okay, I've got the proper disk(s). Now what?
  3844.   
  3845.   Now insert the boot disk into your floppy drive and re-boot your machine.
  3846.   
  3847.   At this point, you will be prompted to login as root. After you login, you
  3848.   must partition your disk or disks to prepare the HDD for formatting, and
  3849.   ultimately, the installation of your software.
  3850.   
  3851.   Linux requires at least two partitions for installation. You must have a
  3852.   partition for your root or top level directory to live in, and you also need
  3853.   a partition for your swap file to live in.
  3854.   
  3855.   This is just a fancy way of saying you need at least one place on your hard
  3856.   drive to store your operating system, and one place on your hard drive to be
  3857.   used as a temporary storage area for your operating system to put things that
  3858.   are not immediately needed.
  3859.   
  3860.   If you are familiar with a Windows based system, the root partition is the
  3861.   equivalent of your C:\ drive, and the swap file is the equivalent of your
  3862.   pagefile.sys.
  3863.   
  3864.   Just as it is always a good idea on a Windows box to store your data on a
  3865.   separate device, apart from the operating system, the same rule applies to
  3866.   Linux. This is why I urge you to have two HDD's in your Linux machine.
  3867.   
  3868.   Depending on which distribution you choose, the process required to create
  3869.   the necessary partitions will vary. Similarly, whether you have one or two
  3870.   HDD's will also make the best partitioning scheme vary.
  3871.   
  3872.   Slackware:
  3873.   
  3874.   Use the cfdisk utility. It is fairly easy to understand, and has decent help.
  3875.   
  3876.   RedHat:
  3877.   
  3878.   You will probably want to use Disk Druid here.
  3879.   
  3880.   For a single disk system, I would suggest two partitions:
  3881.   
  3882.   One swap partition, between 16 and 32MB in size, depending on how much RAM
  3883.   you have in your machine. The utility you are using, may or may not ask you
  3884.   to specify the hex code to tell Linux that this is a swap partition. If
  3885.   prompted for it, the proper code is type 82.
  3886.   
  3887.   The rest of the disk should be partitioned as Linux native.
  3888.   
  3889.   Some might argue that there should be three partitions here, in case
  3890.   something goes wrong with the root partition, thus saving your data. I have
  3891.   rarely seen a disk fail in just "spots", usually if a disk commits suicide
  3892.   it's an all or nothing kind of deal.
  3893.   
  3894.   I recommend two disks for precisely this sort of situation. The only time I
  3895.   have ever seen two disks fail at once was due to a lightening strike, which
  3896.   smoked the whole machine.
  3897.   
  3898.   For a two disk system, I would suggest the following:
  3899.   
  3900.   On the primary or first HDD (usually called hda in most distributions:)
  3901.   
  3902.   Create two partitions, as stated above.
  3903.   
  3904.   On the second HDD or secondary IDE interface:
  3905.   
  3906.   Another swap partition of 16 or 32MB as above.
  3907.   
  3908.   The rest of the drive should be partitioned Linux native.
  3909.   
  3910.   After partitioning the disk or disks, you will be prompted to format them.
  3911.   
  3912.   Depending on the distribution used, at some point you will be asked where you
  3913.   want the Linux native partition or partitions to be mounted. This simply is
  3914.   asking you where in the filesystem hierarchy each formatted partition should
  3915.   reside.
  3916.   
  3917.   For single disk systems, mount your single Linux native partition as your
  3918.   root, or / partition.
  3919.   
  3920.   For two disk systems, mount your first disk as described above, then mount
  3921.   the Linux native partition on your second drive as your /home directory. This
  3922.   will be where all of your user specific information and files will be stored,
  3923.   thus preventing an OS failure from taking all your hard work and critical
  3924.   data with it.
  3925.   
  3926.   THIS IS INTENDED TO COMPLEMENT, NOT REPLACE A DILIGENT, REGULAR BACKUP
  3927.   SCHEME. I CAN'T STRESS ENOUGH THE IMPORTANCE OF REGULAR, RELIABLE BACKUPS.
  3928.   
  3929.   If I seem to be a bit paranoid about backups, I proudly state that I am. I
  3930.   cannot begin to count the times my clients, friends and coworkers have
  3931.   snickered, giggled, and laughed outright when I talk about this. I am a
  3932.   constant source of jokes and entertainment for them. Until something goes
  3933.   wrong. Then I am suddenly a savior to them.
  3934.   
  3935.   By the way, when something like this happens to you, and it will, when all
  3936.   the suits are sweating bullets, and looking to you like Moses with the backup
  3937.   tablets in each hand, this is a great time for salary negotiation.
  3938.     ________________________________________________________________________
  3939.   
  3940.   Well, I've got the partitions made, and my disks are hungry for 1's and 0's.
  3941.   What are my options for installation, and what programs do I really need?
  3942.   
  3943.   You have, with one notable exception, four possible choices for your Linux
  3944.   installation. I will list them in order, from the smallest to the largest.
  3945.   EXCEPTION - Option one, running directly off of the CD-ROM is not available
  3946.   with the RedHat Distribution.
  3947.   
  3948.   1. Running directly off of the CD-ROM, called a "live" filesystem.
  3949.   
  3950.   This is the best option for just trying out Linux with a minimum impact to
  3951.   your present system. Performance will be degraded, particularly if you have a
  3952.   slow CD-ROM. This is the ONLY option I can safely recommend if you are not
  3953.   doing this on a machine other than your primary system.
  3954.   
  3955.   The exact actions required to accomplish this will vary between the
  3956.   distributions, but will be called something like "run from CD-ROM", or "run
  3957.   from live filesystem"
  3958.   
  3959.   2. A minimal, or base installation, with just enough stuff to get you up and
  3960.   running.
  3961.   
  3962.   Slackware:
  3963.   
  3964.   Select the following disk series:
  3965.   A
  3966.   AP (optional)
  3967.   RedHat:
  3968.   
  3969.   You can safely accept the defaults. (Not much choice here, accept the
  3970.   default, or it won't boot. You will be assimilated ;-).
  3971.   
  3972.   3. A well rounded installation, consisting of the base stuff, plus some
  3973.   productivity, network, and development tools
  3974.   
  3975.   Slackware:
  3976.   
  3977.   Select the following disk series:
  3978.   A
  3979.   AP
  3980.   F
  3981.   D
  3982.   N
  3983.   X
  3984.   XAP
  3985.   RedHat:
  3986.   
  3987.   To the default selections, add:
  3988.   
  3989.   X applications
  3990.   Development tools
  3991.   4. The entire distribution, sometimes called the "let's see how much this
  3992.   sucker can take" installation.
  3993.   
  3994.   Slackware:
  3995.   
  3996.   Select the top option, "complete installation"
  3997.   
  3998.   RedHat:
  3999.   
  4000.   Select the "Everything" option.
  4001.   
  4002.   A couple of suggestions concerning the everything install:
  4003.   
  4004.   Below the dialog box where you chose "Everything", there will be another box
  4005.   with the phrase "Choose individual packages." Select it.
  4006.   
  4007.   You will then be taken to another dialog box listing the categories of all
  4008.   the software that will be installed on the system. Scroll down to
  4009.   Documentation.
  4010.   
  4011.   For some reason RedHat wants to install the How-To's and things in every
  4012.   format known to man, and in every language spoken by man.
  4013.   
  4014.   Choose the text format and html format of the documents. The one exception to
  4015.   this is if for whatever reason, you would find it useful to have these
  4016.   documents in another language, in which case you should select the
  4017.   appropriate language desired as well. When you are finished, select done.
  4018.   This will save you a significant amount of disk space.
  4019.   
  4020.   Common to both of the distributions, the following tasks are ones you need to
  4021.   perform regardless of which distribution you use:
  4022.   
  4023.     1. Creating boot and rescue disks.
  4024.     
  4025.   Slackware:
  4026.   
  4027.   Toward the end of the installation process, you will be asked to configure
  4028.   your new Linux system. I strongly recommend making both a lilo bootdisk, and
  4029.   a default, or vmlinuz bootdisk for your new machine, and choosing NO to the
  4030.   install LILO option.
  4031.   
  4032.   RedHat:
  4033.   
  4034.   Toward the end of the installation, you will be asked if you want to make a
  4035.   boot disk. Answer yes. Make several.
  4036.   
  4037.   If prompted to configure either X windows, or your networking, answer no. If
  4038.   you are forced to do either of these things for X, accept the defaults. For
  4039.   networking, if asked for a network address, use 127.0.0.1, or choose the
  4040.   "loopback" option if available. We will be configuring these things in the
  4041.   next installment.
  4042.   
  4043.     2. Logging in as root for the first time and creating a user account for
  4044.     yourself.
  4045.     
  4046.   While there are times when it will be useful to be logged into your system as
  4047.   root, most of the time, you will want to be logged in to your own account on
  4048.   the machine.
  4049.   
  4050.   There are many reasons for this, not the least of which is that when logged
  4051.   in as yourself, just about the worst thing you can do is screw up your own
  4052.   account.
  4053.   
  4054.   However, when logged in as root, most of the safeguards built into the system
  4055.   go away. You can do anything, even things you should not do. Like hose the
  4056.   entire filesystem. This is both the strength, and the weakness of the
  4057.   superuser account.
  4058.   
  4059.   Treat it like a loaded gun. Don't pull it out unless you mean to use it. If
  4060.   you mean to use it make sure you have a clear target and put it right back in
  4061.   the holster as soon as you're done.
  4062.   
  4063.   Now that I hope I've properly scared you, here's what you need to do:
  4064.   
  4065.   Login as root. Then create a user account for yourself:
  4066.  
  4067. adduser rjenkins
  4068.  
  4069.   You will be asked a series of questions. You can safely press enter to accept
  4070.   the defaults for these things.
  4071.   
  4072.     3. Selecting and entering your root and personal user account passwords.
  4073.     
  4074.   Now you need to password protect the root account and your user account.
  4075.   Logged in as root, use the passwd command to do this for both the root or
  4076.   superuser account, and your personal account.
  4077.  
  4078. passwd root
  4079.  
  4080.   And then your user account:
  4081.  
  4082. passwd rjenkins
  4083.  
  4084.   A short comment on password selection and security. Good password discipline
  4085.   is very important, whether you are connected to a network or not. Briefly,
  4086.   here are a few guidelines:
  4087.   
  4088.   Choose something you can easily remember, say kibble.
  4089.   
  4090.   Now, add a punctuation mark and a number to it, say ?kibble4.
  4091.   
  4092.   Finally, for best security, a neat trick is to take the word you can remember
  4093.   easily, in this case kibble, and for each letter in the word, move up one row
  4094.   on the keyboard, and over either to the left or the right.
  4095.   
  4096.   So for ?kibble4 if we move up and to the left, we get: ?u8ggi34.
  4097.   
  4098.   If we go up and to the right we get: ?o9hhp44.
  4099.   
  4100.   This is easy to remember, and will defeat all but the most sophisticated
  4101.   password cracking programs.
  4102.     ________________________________________________________________________
  4103.   
  4104.   Navigating the Linux system, and obtaining help and information from the
  4105.   documentation.
  4106.   
  4107.   The first thing you will want to do is learn how to navigate your system. You
  4108.   will find a wealth of documentation in the /usr/doc directory. In particular,
  4109.   look at the /usr/doc/how-to directory, and check out the installation and
  4110.   user's guide.
  4111.   
  4112.   If you purchased your CD bundled with a book, make use of it. There should be
  4113.   enough information there, or in the doc directory to get you started.
  4114.   
  4115.   While the editors and document tools available will vary from distribution to
  4116.   distribution, every distribution should have vi available. You will probably
  4117.   either learn to love or hate it. There does not seem to be any middle ground,
  4118.   but I suggest you at least learn to use it, since it will allow you to plunk
  4119.   down at any Unix machine and use it.
  4120.   
  4121.   Much abbreviated, here's a short list of relevant commands:
  4122.   
  4123.   To open a file:
  4124.   vi filename
  4125.   
  4126.   To insert text in a file:
  4127.   Press the i key to enter insert mode, then enter your text.
  4128.   
  4129.   To write your changes to a file:
  4130.   Press the escape <Esc> key, then :w <:enter>
  4131.   
  4132.   To close a file:
  4133.   Press the escape <Esc> key, then :q <enter>
  4134.   
  4135.   An even better option is to use the Midnight Commander, if it is available on
  4136.   your system. Simply enter mc.
  4137.   
  4138.   It looks and acts a lot like the N*rton Commander, and makes an easy
  4139.   transition for anyone who has used that program, or is familiar with the
  4140.   DOSSHELL.
  4141.   
  4142.   Well, that's about it for now, Congratulations! See, that wasn't so hard now
  4143.   was it? In the next installment, we'll configure the X windowing system and
  4144.   your networking setup.
  4145.     ________________________________________________________________________
  4146.   
  4147.   Resources
  4148.   
  4149.   Software Manufacturers:
  4150.   RedHat Linux: http://www.redhat.com/
  4151.   Slackware: http://www.cdrom.com/
  4152.   
  4153.   Third Party Distributors:
  4154.   http://www.cheapbytes.com
  4155.   http://www.linuxmall.com
  4156.   http://www.infomagic.com/
  4157.   http://www.cdrom.com
  4158.   
  4159.   Local User Groups:
  4160.   Most areas have several local computer-oriented publications available. Have
  4161.   a look for a local user group in your area. There are also list of user
  4162.   groups by area at http://www.ssc.com/glue/groups/
  4163.     ________________________________________________________________________
  4164.   
  4165.                        Copyright ⌐ 1998, Ron Jenkins
  4166.            Published in Issue 32 of Linux Gazette, September 1998
  4167.     ________________________________________________________________________
  4168.   
  4169.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  4170.     ________________________________________________________________________
  4171.   
  4172.                       Linux Kernel Compilation Benchmark
  4173.                                        
  4174.   by William Henning
  4175.   Editor, CPUReview
  4176.   Copyright July 1, 1998
  4177.   ALL RIGHTS RESERVED
  4178.   I have purchased a K6-2/266Mhz processor and a Soyo 5EHM Super7 motherboard
  4179.   specifically so that I would be able to benchmark the K6-2 against Intel PII
  4180.   and Cyrix processors. Since I have been running Linux since the v0.10 days, I
  4181.   thought it would be useful to perform some benchmarks under Linux. Here are
  4182.   my findings.
  4183.   
  4184.   As I have time (and access to equipment) to add additional results, I will
  4185.   update this page. Soon I hope to add PII results (ABIT LX6, 64Mb 10ns Hyundai
  4186.   SDRAM, Riva 128, same 1.6Gb WD hard drive).
  4187.   
  4188. System Description - Super Socket 7
  4189.  
  4190.           + Soyo 5EHM motherboard (MVP3, AGP, 1M cache, Super7)
  4191.           + 64Mb 10ns SDRAM (Hyundai, 2x32Mb sticks)
  4192.           + 1.6Gb Western Digital hard drive
  4193.           + Asus 3DExplorer AGP (Riva 128)
  4194.             
  4195. System Description - Slot 1
  4196.  
  4197.           + ABIT LX6 Slot 1 motherboard
  4198.           + 64Mb 10ns SDRAM (Hyundai, 2x32Mb sticks)
  4199.           + 1.6Gb Western Digital hard drive
  4200.           + Asus 3DExplorer AGP (Riva 128)
  4201.             
  4202. Methodology
  4203.  
  4204.           + 'make clean; make dep; time make zdisk'
  4205.           + using the same kernel configuration under Redhat 5.0
  4206.           + Linux v2.0.32, with this .config file
  4207.           + GCC v2.7.2.3
  4208.     ________________________________________________________________________
  4209.   
  4210. Cyrix/IBM PR233 Results
  4211.     ________________________________________________________________________
  4212.   
  4213.   PR Rating Voltage Setting BogoM User System Elapsed CPU util
  4214.   PR200 2.9 2.5X66 166.30 283.22 21.26 5:28.56 92%
  4215.   PR233 2.9 2X100 199.88 236.4 17.48 4:35.97 91%
  4216.   PR233 2.9 2.5X75 187.19 257.99 20.17 5:01.32 92%
  4217.   PR266 2.9 2.5X83 207.67 233.75 19.51 4:35.40 91%
  4218.   
  4219. AMD K6-2 266 Results
  4220.  
  4221.   PR Rating Voltage Setting BogoM User System Elapsed CPU util
  4222.   166 2.3 2.5x66 332.60 274.57 24.11 5:22.43 92%
  4223.   187.5 2.2 2.5x75 374.37 244.5 20.38 4:47.52 92%
  4224.   200 2.3 3x66 398.95 242.10 21.42 4:37.33 91%
  4225.   210 2.2 2.5x83 415.33 221.5 19.96 4:18.61 93%
  4226.   233 2.3 3.5x66 465 220.53 19.55 4:24.61 90%
  4227.   250 2.2 2.5x100 499.71 183.13 17.64 3:43.42 89%
  4228.   266 2.3 4x66 530.84 199.90 19.55 4:04.19 89%
  4229.   280 2.2 2.5x112 558.69 164.17 15.29 3:23.83 88%
  4230.   300 2.3 4.5x66 598.02 187.84 19.63 3:51.50 89%
  4231.   300 2.3 4x75 598.02 176.94 19.26 3:37.84 90%
  4232.   300 2.3 3x100 599.65 161.73 15.06 3:20.87 88%
  4233.   
  4234. Intel Pentium-II 233 Results
  4235.  
  4236.   PR Rating Voltage Setting BogoM User System Elapsed CPU util
  4237.   233 Default 3.5x66 233.47 197.46 15.25 3:57.26 89%
  4238.   262.5 Default 3.5x75 262.14 180.75 12.73 3:38.96 88%
  4239.   291.7 Default 3.5x83 291.64 157.49 11.69 3:12.69 87%
  4240.   
  4241. Simulated Celeron Results - Intel Pentium-II 233 with L2 Cache disabled
  4242.  
  4243.   PR Rating Voltage Setting BogoM User System Elapsed CPU util
  4244.   233 Default 3.5x66 233.47 324.07 20.19 6:08.43 93%
  4245.   262.5 Default 3.5x75 262.14 291.43 16.96 5:32.61 92%
  4246.   291.7 Default 3.5x83 291.64 262.19 16.10 5:02.45 92%
  4247.     ________________________________________________________________________
  4248.   
  4249. Discussion of results
  4250.     ________________________________________________________________________
  4251.   
  4252.   Please note, in the comparisons below, only the "User" time of the kernel
  4253.   compilations is used.
  4254.   
  4255.   BogoMips is equivalent to the megahertz it is running at, and the AMD K6-2
  4256.   has a BogoMips rating that is twice the megahertz it is run at.
  4257.   
  4258.   In order to be able to make a direct, Mhz-to-Mhz comparison of the
  4259.   processors, I underclocked the K6-2 to run at 2.5x75 (Cyrix PR233 rating) and
  4260.   2.5x83 (PR266 rating). Comparing the total elapsed time for the compilation,
  4261.   we find that:
  4262.   
  4263.   Comparison by actual Mhz
  4264.   CPU Cyrix Amd Amd % faster
  4265.   2.5x75 257.99 244.5 5.23%
  4266.   2.5x83 233.75 221.5 5.24%
  4267.   
  4268.   The AMD K6-2 processor seems to be 5.25% faster than a Cyrix MX processor at
  4269.   the same clock speed. The PR rating system would not seem to apply to Linux
  4270.   kernel compilations.
  4271.   
  4272.   Comparison by PR rating
  4273.   CPU Cyrix Amd Amd % faster
  4274.   PR233 257.99 220.53 14.52%
  4275.   PR266 233.75 199.90 14.48%
  4276.   
  4277.   The AMD K6-2 is 14.5% faster than a Cyrix/IBM 686MX when comparing a K6-2 at
  4278.   the same Mhz as a Cyrix chip is PR rated for.
  4279.   
  4280. How about the Pentium II?
  4281.  
  4282.   I wanted to see how the P2 would compare to the K6-2. As I only have a
  4283.   P2-233, I had to overclock it to approach 300Mhz. Please note, I used an
  4284.   extra 3" fan blowing air at the CPU.
  4285.   
  4286.   Comparison between P2 and K6-2
  4287.   CPU P2 Amd P2 % faster
  4288.   266Mhz #1 180.75 183.13 1.3%
  4289.   300Mhz #2 157.49 161.71 2.6%
  4290.   
  4291.   NOTES
  4292.   
  4293.          1. P2 at 262.5Mhz (75x3.5), K6-2 at 250Mhz (2.5x100)
  4294.          2. P2 at 291.6Mhz (83x3.5), K6-2 at 300Mhz (3x100)
  4295.             
  4296.   The P2 was faster for compiling the kernel by less than three percent. There
  4297.   is no point in comparing the K6-2 to the Celeron - see the simulated Celeron
  4298.   benchmarks on the previous page. The Celeron is not suitable for use as a
  4299.   Linux development machine.
  4300.     ________________________________________________________________________
  4301.   
  4302.   Price Comparison
  4303.     ________________________________________________________________________
  4304.   
  4305.   As we all know, absolute performance is just part of deciding which processor
  4306.   to get. If cost was no object, we would all be running Kryotech Alpha 767's,
  4307.   or dual PII-400's. For reference purposes, here are some prices, in US$, as
  4308.   1:14pm PST of July 5 from PriceWatch.
  4309.   
  4310.   CPU 233 266 300
  4311.   Cyrix $49 $74 $96
  4312.   AMD K6-2 n/a $113 $163
  4313.   AMD K6 $68 $93 $125
  4314.   Pentium II $158 $177 $235
  4315.   
  4316. Conclusion
  4317.  
  4318.   There is no question that the Cyrix processors provide excellent performance
  4319.   for a low cost. The K6 (non-3d) processors are also an excellent value,
  4320.   however as I don't have such a CPU I was unable to run tests on one - but I
  4321.   would expect that on the same motherboard with similar memory and hard disk
  4322.   the performance of the plain K6's would be very close to the K6-2's.
  4323.   
  4324.   The K6-2 appears to be an excellent value for a developer's machine. A 14.5%
  4325.   increase in speed over the 686MX is difficult to ignore. The P2 is less than
  4326.   three percent faster than the K6-2 at comparable speeds. I do not think that
  4327.   such a small difference in speed justifies the price differential between the
  4328.   P2 and the K6-2.
  4329.   
  4330.   I hope you found this article to be of use. Please remember that I welcome
  4331.   feedback on this (or other) articles. I can be contacted at
  4332.   editor@cpureview.com.
  4333.   
  4334.   Regards,
  4335.   
  4336.   William Henning
  4337.   Editor, CPUReview
  4338.     ________________________________________________________________________
  4339.   
  4340.                      Copyright ⌐ 1998, William Henning
  4341.            Published in Issue 32 of Linux Gazette, September 1998
  4342.     ________________________________________________________________________
  4343.   
  4344.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  4345.     ________________________________________________________________________
  4346.   
  4347.     "Linux Gazette...making Linux just a little more fun!"
  4348.     ________________________________________________________________________
  4349.   
  4350.   A Linux Journal Review: This article appeared in the November 1997 issue of
  4351.   Linux Journal.
  4352.     ________________________________________________________________________
  4353.   
  4354.                          Linux Kernel Installation
  4355.                                       
  4356.                              By David A. Bandel
  4357.     ________________________________________________________________________
  4358.   
  4359.   Linux is many users' introduction to a truly powerful, configurable operating
  4360.   system. In the past, a Unix-like operating system was out of reach for most.
  4361.   If it wasn't the operating system's 4-digit price tag, it was the hardware.
  4362.   Even the now free-for-personal-use SCO Unixware requires a system with SCSI
  4363.   drives, and most of us are using IDE to keep costs down. Along with the power
  4364.   that Linux brings comes the need to perform a task users have not had to do
  4365.   on simpler operating systems: configure the kernel to your hardware and
  4366.   operations.
  4367.   
  4368.   Previous installation kernels from 1.2.x and before suggested that you
  4369.   rebuild; however, with the new 2.0.x kernel, rebuilding has almost become a
  4370.   necessity. The kernel that comes with the installation packages from Red Hat,
  4371.   Caldera, Debian and most others, is a generic, ``almost everything is
  4372.   included'' kernel. While rebuilding a kernel may seem like a daunting task
  4373.   and living with the installed kernel may not be too bad, rebuilding is a good
  4374.   introduction to your system.
  4375.     ________________________________________________________________________
  4376.   
  4377.   Why Roll Your Own?
  4378.   
  4379.   The standard installation kernels are an attempt to make as many systems as
  4380.   possible usable for the task of installing a workable Linux system. As such,
  4381.   the kernel is bloated and has a lot of unnecessary code in it for the average
  4382.   machine. It also does not have some code a lot of users want.
  4383.   
  4384.   Then, of course, there's always the need to upgrade the kernel because you've
  4385.   bought new hardware, etc. Upgrading within a series is usually very
  4386.   straightforward. When it comes to upgrading, say from 1.2.something to
  4387.   2.0.something, now the task is beyond the scope of this article and requires
  4388.   some savvy. Better to get a new distribution CD and start fresh--this is also
  4389.   true for upgrading to the experimental 2.1.x kernels.
  4390.     ________________________________________________________________________
  4391.   
  4392.   Kernel Version Numbering
  4393.   
  4394.   All Linux kernel version numbers contain three numbers separated by periods
  4395.   (dots). The first number is the kernel version. We are now on the third
  4396.   kernel version, 2. Some of you may be running a version 1 kernel, and I am
  4397.   aware of at least one running version 0 kernel.
  4398.   
  4399.   The second number is the kernel major number. Major numbers which are even
  4400.   numbers (0 is considered an even number) are said to be stable. That is,
  4401.   these kernels should not have any crippling bugs, as they have been fairly
  4402.   heavily tested. While some contain small bugs, they can usually be upgraded
  4403.   for hardware compatibility or to armor the kernel against system crackers.
  4404.   For example, kernel 2.0.30, shunned by some in favor of 2.0.29 because of
  4405.   reported bugs, contains several patches including one to protect against SYN
  4406.   denial of service attacks. The kernels with odd major numbers are
  4407.   developmental kernels. These have not been tested and often as not will break
  4408.   any software packages you may be running. Occasionally, one works well enough
  4409.   that it will be adopted by users needing the latest and greatest support
  4410.   before the next stable release. This is the exception rather than the rule,
  4411.   and it requires substantial changes to a system.
  4412.   
  4413.   The last number is the minor number and is increased by one for each release.
  4414.   If you see kernel version 2.0.8, you know it's a kernel 2.0, stable kernel,
  4415.   and it is the ninth release (we begin counting with 0).
  4416.     ________________________________________________________________________
  4417.   
  4418.   Assumptions
  4419.   
  4420.   I hate to make any assumptions; they always seem to come back to bite me. So
  4421.   I need to mention a few things so that we're working off the same sheet of
  4422.   music. In order to compile a kernel, you'll need a few things. First, I'll
  4423.   assume you've installed a distribution with a 2.0.x kernel, all the base
  4424.   packages and perhaps a few more. You'll also need to have installed gcc
  4425.   version 2.7 and all the supporting gcc libraries. You'll also need the
  4426.   libc-dev library and the binutils and bin86 packages (normally installed as
  4427.   part of a standard distribution install). If you download the source or copy
  4428.   it from a CD, you'll also need the tar and gunzip packages. Also, you'll need
  4429.   lots of disk real estate. Plan on 7MB to download, another 20MB to unpack
  4430.   this monster and a few more to compile it.
  4431.   
  4432.   Needless to say, many of the things we will discuss require you to be logged
  4433.   in as root. If you've downloaded the kernel as a non-privileged user and you
  4434.   have write permission to the /usr/src subdirectory, you can still do much of
  4435.   this task without becoming root. For the newcomers to Linux, I highly
  4436.   recommend you do as much as possible as a non-privileged user and become root
  4437.   (type: su - face) only for those jobs that require it. One day, you'll be
  4438.   glad you acquired this habit. Remember, there are two kinds of systems
  4439.   administrators, those who have totally wrecked a running setup inadvertently
  4440.   while logged in as root, and those who will.
  4441.     ________________________________________________________________________
  4442.   
  4443.   Obtaining/Upgrading the Source
  4444.   
  4445.   Kernel sources for Linux are available from a large number of ftp sites and
  4446.   on almost every Linux distribution CD-ROM. For starters, you can go to
  4447.   ftp.funet.fi, the primary site for the Linux kernel. This site has a list of
  4448.   mirror sites from which you can download the kernel. Choosing the site
  4449.   nearest you helps decrease overall Internet traffic.
  4450.   
  4451.   Once you've obtained the source, put it in the /usr/src directory. Create a
  4452.   subdirectory to hold the source files once they are unpacked using tar. I
  4453.   recommend naming the directories something like linux-2.0.30 or
  4454.   kernel-2.0.30, substituting your version numbers. Create a link to this
  4455.   subdirectory called linux using the following command:
  4456.   
  4457. ln -sf linux-2.0.30 linux
  4458.  
  4459.   I included the -f in the link command because if you already have a kernel
  4460.   source in /usr/src, it will contain this link too, and we want to force it to
  4461.   look in our subdirectory. (On some versions of ln (notably version 3.13), the
  4462.   force option (-f) does not work. You'll have to first remove the link then
  4463.   establish it again. This works correctly by version 3.16.) The only time you
  4464.   may have a problem is if linux is a subdirectory name, not a link. If you
  4465.   have this problem, you'll have to rename the subdirectory before continuing:
  4466.   
  4467. mv linux linux-2.0.8
  4468.  
  4469.   Now issue the command:
  4470.   
  4471. tar xzvf linux-kernel-source.tar.gz
  4472.  
  4473.   I have a habit of always including w (wait for confirmation) in the tar
  4474.   option string, then when I see that the .tar.gz or .tgz file is going to
  4475.   unpack into its own subdirectory, I ctrl-C out and reissue the command
  4476.   without the w. This way I can prevent corrupted archives from unpacking into
  4477.   the current directory.
  4478.   
  4479.   Once you have the kernel unpacked, if you have any patches you wish to apply,
  4480.   now is a good time. Let's say you don't wish to run kernel 2.0.30, but you do
  4481.   want the tcp-syn-cookies. Copy the patch (called tcp-syn-cookies-patch-1)
  4482.   into the /usr/src directory and issue the command:
  4483.   
  4484. patch < tcp-syn-cookies-patch-1
  4485.  
  4486.   This command applies the patch to the kernel. Look for files with an .rej
  4487.   extension in in the /usr/src directory. These files didn't patch properly.
  4488.   They may be unimportant, but peruse them anyway. If you installed a Red Hat
  4489.   system with some but not all of the kernel source (SPARC, PowerPC, etc.),
  4490.   you'll see some of these files. As long as they're not for your architecture,
  4491.   you're okay.
  4492.     ________________________________________________________________________
  4493.   
  4494.   Preparation
  4495.   
  4496.   As a final note, before we change (cd) into the kernel source directory and
  4497.   start building our new kernel, let's check some links that are needed. In
  4498.   your /usr/include directory, make sure you have the following soft links:
  4499.   
  4500. asm - /usr/src/linux/include/asm
  4501. linux - /usr/src/linux/include/linux
  4502. scsi - /usr/src/linux/include/scsi
  4503.  
  4504.   Now, you see another reason to standardize the location of the kernel. If you
  4505.   don't put the latest kernel you wish to install in /usr/src/linux (via a
  4506.   link), the above links will not reach their intended target (dangling links),
  4507.   and the kernel may fail to compile.
  4508.     ________________________________________________________________________
  4509.   
  4510.   How to proceed
  4511.   
  4512.   Once everything else is set up, change directories into /usr/src/linux.
  4513.   Although you may want to stop off and peruse some of the documentation in the
  4514.   Documentation directory, particularly if you have any special hardware needs.
  4515.   Also, several of the CD-ROM drivers need to be built with customized
  4516.   settings. While they usually work as is, these drivers may give warning
  4517.   messages when loaded. If this doesn't bother you and they work as they
  4518.   should, don't worry. Otherwise, read the appropriate .txt, .h (header) files
  4519.   and .c (c code) files. For the most part, I have found them to be well
  4520.   commented and easy to configure. If you don't feel brave, you don't have to
  4521.   do it. Just remember you can always restore the original file by unpacking
  4522.   the gzipped tar file (or reinstalling the .rpm files) again.
  4523.     ________________________________________________________________________
  4524.   
  4525.   Beginning to Compile
  4526.   
  4527.   The first command I recommend you issue is:
  4528.   
  4529. make mrproper
  4530.  
  4531.   While this command is not necessary when the kernel source is in pristine
  4532.   condition, it is a good habit to cultivate. This command ensures that old
  4533.   object files are not littering the source tree and are not used or in the
  4534.   way.
  4535.     ________________________________________________________________________
  4536.   
  4537.   Configuring the Kernel
  4538.   
  4539.   Now, you're ready to configure the kernel. Before starting, you'll need to
  4540.   understand a little about modules. Think of a module as something you can
  4541.   plug into the kernel for a special purpose. If you have a small network at
  4542.   home and sometimes want to use it (but not always), maybe you'll want to
  4543.   compile your Ethernet card as a module. To use the module, the machine must
  4544.   be running and have access to the /lib/modules This means that the drive
  4545.   (IDE, SCSI, etc., but could be an ethernet card in the case of nfs), the file
  4546.   system (normally ext2 but could be nfs) and the kernel type (hopefully elf)
  4547.   must be compiled in and cannot be modules. Modules aren't available until the
  4548.   kernel is loaded, the drive (or network) accessed, and the file system
  4549.   mounted. These files must be compiled into the kernel or it will not be able
  4550.   to mount the root partition. If you're mounting the root partition over the
  4551.   network, you'll need the network file system module, and your Ethernet card
  4552.   compiled.
  4553.   
  4554.   Why use modules? Modules make the kernel smaller. This reduces the amount of
  4555.   protected space never given up by the kernel. Modules load and unload and
  4556.   that memory can be reallocated. If you use a module more than about 90% of
  4557.   the time the machine is up, compile it. Using a module in this case can be
  4558.   wasteful of memory, because while the module takes up the same amount of
  4559.   memory as if it were compiled, the kernel needs a little more code to have a
  4560.   hook for the module. Remember, the kernel runs in protected space, but the
  4561.   modules don't. That said, I don't often follow my own advice. I compile in:
  4562.   ext2, IDE and elf support only. While I use an Ethernet card almost all the
  4563.   time, I compile everything else as modules: a.out, java, floppy, iso9660,
  4564.   msdos, minix, vfat, smb, nfs, smc-ultra (Ethernet card), serial, printer,
  4565.   sound, ppp, etc. Many of these only run for a few minutes at a time here and
  4566.   there.
  4567.   
  4568.   The next step is to configure the kernel. Here we have three choices--while
  4569.   all do the same thing, I recommend using one of the graphical methods. The
  4570.   old way was to simply type: make config. This begins a long series of
  4571.   questions. However, if you make a mistake, your only option is to press
  4572.   ctrl-C and begin again. You also can't go back in the sequence, and some
  4573.   questions depend on previous answers. If for some reason you absolutely can't
  4574.   use either of the graphical methods, be my guest.
  4575.   
  4576.   I recommend using either make menuconfig or make xconfig. In order to use
  4577.   menuconfig, you must have installed the ncurses-dev and the tk4-dev
  4578.   libraries. If you didn't install them and you don't want to use the next
  4579.   method, I highly recommend that you install them now. You can always
  4580.   uninstall them later.
  4581.   
  4582.   To run make xconfig, you must install and configure X. Since X is such a
  4583.   memory hog, I install, configure and startx only for this portion of the
  4584.   process, going back to a console while the kernel compiles so it can have all
  4585.   the memory it needs. The xconfig menu is, in my opinion, the best and easiest
  4586.   way to configure the kernel. Under menuconfig, if you disable an option, any
  4587.   subordinate options are not shown. Under xconfig, if you disable an option,
  4588.   subordinate options still show, they are just greyed out. I like this because
  4589.   I can see what's been added since the last kernel. I may want to enable an
  4590.   option to get one of the new sub-options in order to to experiment with it.
  4591.   
  4592.   I'm going to take some space here to describe the sections in the kernel
  4593.   configuration and tell you some of the things I've discovered--mostly the
  4594.   hard way.
  4595.   
  4596.   The first section is the code-maturity-level option. The only question is
  4597.   whether you want to use developmental drivers and code. You may not have a
  4598.   choice if you have some bleeding edge hardware. If you choose ``no'', the
  4599.   experimental code is greyed out or not shown. If you use this kernel for
  4600.   commercial production purposes, you'll probably want to choose ``no''.
  4601.   
  4602.   The second section concerns modules. If you want modules, choose ``yes'' for
  4603.   questions 1 and 3. If you want to use proprietary modules that come with
  4604.   certain distributions, such as Caldera's OpenLinux for their Netware support,
  4605.   also answer ``yes'' to the second question since you won't be able to
  4606.   recompile the module.
  4607.   
  4608.   The third section is general setup. Do compile the kernel as ELF and compile
  4609.   support for ELF binaries. Not compiling the proper support is a definite
  4610.   ``gotcha''. You'll get more efficient code compiling the kernel for the
  4611.   machine's specific architecture (Pentium or 486), but a 386 kernel will run
  4612.   in any 32-bit Intel compatible clone; a Pentium kernel won't. An emergency
  4613.   boot disk for a large number of computers (as well as distribution install
  4614.   disks) is best compiled as a 386. However, a 386 will not run a kernel
  4615.   compiled for a Pentium.
  4616.   
  4617.   Next comes block devices--nothing special here. If your root device is on an
  4618.   IDE drive, just make sure you compile it.
  4619.   
  4620.   Then comes networking. For computers not connected to a network, you won't
  4621.   need much here unless you plan to use one computer to dial-out while others
  4622.   connect through it. In this case, you'll need to read up on such things as
  4623.   masquerading and follow the suggested guidelines.
  4624.   
  4625.   SCSI support is next, though why it doesn't directly follow block devices I
  4626.   don't know. If your root partition is on a SCSI device, don't choose modules
  4627.   for SCSI support.
  4628.   
  4629.   SCSI low-level drivers follow general SCSI support. Again, modules only for
  4630.   devices that don't contain the root partition.
  4631.   
  4632.   The next section takes us back to networking again. Expect to do a lot of
  4633.   looking for your particular card here as well as some other support such as
  4634.   ppp, slip, etc. If you use nfs to mount your root device, compile in Ethernet
  4635.   support.
  4636.   
  4637.   For those lucky enough to be needing ISDN support, the ISDN subsection will
  4638.   need to be completed.
  4639.   
  4640.   Older CD-ROMs may require support from the next section. If you're using a
  4641.   SCSI or IDE CD-ROM, you can skip this one.
  4642.   
  4643.   Next comes file systems. Again, compile what you need, in most cases ext2 and
  4644.   use modules for the rest.
  4645.   
  4646.   Character devices are chosen next. Non-serial mice, like the PS/2 mouse are
  4647.   supported. Look on the bottom of your mouse. Many two-button mice are PS/2
  4648.   type, even though they look and connect like serial mice. You'll almost
  4649.   certainly want serial support (generic) as a minimum. Generic printer support
  4650.   is also listed here.
  4651.   
  4652.   The penultimate section is often the most troubling: sound. Choose carefully
  4653.   from the list and read the available help. Make sure you've chosen the
  4654.   correct I/O base and IRQs for your card. The MPU I/O base for a SoundBlaster
  4655.   card is listed as 0. This is normally 330 and your sound module will complain
  4656.   if this value is incorrect. Don't worry. One of the nice things about modules
  4657.   is you can recompile and reinstall the modules as long as the kernel was
  4658.   compiled with the hook. (Aren't modules great?).
  4659.   
  4660.   The final section contains one question that should probably be answered as
  4661.   ``no, kernel hacking''.
  4662.   
  4663.   Save your configuration and exit.
  4664.   
  4665.   I have, on several occasions, had trouble editing the numbers in menuconfig
  4666.   or xconfig to values I knew were correct. For whatever reason, I couldn't
  4667.   change the number or config wouldn't accept the number, telling me it was
  4668.   invalid. For example, changing the SoundBlaster IRQ from the config default
  4669.   of 7 to 5, and the MPU base I/O from 0 to 300. If you experience this
  4670.   problem, but everything else went well, don't despair. The file you just
  4671.   wrote when you did a ``Save'' and ``Exit'' is an editable text file. You may
  4672.   use your text editor of choice: Emacs, vi, CrispLite, joe, etc. Your
  4673.   configuration file is in the /usr/src/linux directory and is called .config.
  4674.   The leading dot causes the file to be hidden during a normal directory
  4675.   listing (ls), but it shows up when the -a option is specified. Just edit the
  4676.   numbers in this file that you had trouble with in the configuration process.
  4677.   Next, type make dep to propagate your configurations from the .config file to
  4678.   the proper subdirectories and to complete the setup. Finally, type make clean
  4679.   to prepare for the final kernel build.
  4680.     ________________________________________________________________________
  4681.   
  4682.   Building the Kernel
  4683.   
  4684.   We're now ready to begin building the kernel. There are several options for
  4685.   accomplishing this task:
  4686.   
  4687.           + make zImage: makes the basic, compressed kernel and leaves it
  4688.             in the /usr/src/linux/arch/i386/boot directory as zImage.
  4689.           + make zlilo: Copies the zImage to the root directory (unless
  4690.             you edited the top-level Makefile) and runs LILO. If you
  4691.             choose to use this option, you'll have to ensure that
  4692.             /etc/lilo.conf is preconfigured.
  4693.           + make zdisk: Writes zImage to a floppy disk in /dev/fd0 (the
  4694.             first floppy drive--the a: drive in DOS). You'll need the
  4695.             disk in the drive before you start. You can accomplish the
  4696.             same thing by running make zImage and copying the image to a
  4697.             floppy disk cp /usr/src/linux/arch/i386/boot/zImage /dev/fd0
  4698.             Note that you'll need to use a high-density disk. The low
  4699.             density 720k disks will reportedly not boot the kernel.
  4700.           + make boot: Works just the same as the zImage option.
  4701.           + make bzImage: Used for big kernels and operates the same as
  4702.             zImage. You will know if you need this option, because make
  4703.             will fail with a message that the image is too big.
  4704.           + make bzdisk: Used for big kernels and operates the same as
  4705.             zdisk. You will know if you need this option, because make
  4706.             will fail with a message that the image is too big.
  4707.             
  4708.   Other make options are available, but are specialized, and are not covered
  4709.   here. Also, if you need specialized support, such as for a RAM disk or SMP,
  4710.   read the appropriate documentation and edit the Makefile in /usr/src/linux
  4711.   (also called the top-level Makefile) accordingly. Since all the options I
  4712.   discussed above are basically the same as the zImage option, the rest of this
  4713.   article deals with make zImage--it is the easiest way to build the kernel.
  4714.   
  4715.   For those of you who wish to speed up the process and won't be doing other
  4716.   things (such as configuring other applications), I suggest you look at the
  4717.   man page for make and try out the -j option (perhaps with a limit like 5) and
  4718.   also the -l option.
  4719.   
  4720.   If you chose modules during the configuration process, you'll want to issue
  4721.   the commands:
  4722.   
  4723. make modules
  4724. make modules_install
  4725.  
  4726.   to put the modules in their default location of /lib/modules/2.0.x/, x being
  4727.   the kernel minor number. If you already have this subdirectory and it has
  4728.   subdirectories such as block, net, scsi, cdrom, etc., you may want to remove
  4729.   2.0.x and everything below it unless you have some proprietary modules
  4730.   installed, in which case don't remove it. When the modules are installed, the
  4731.   subdirectories are created and populated.
  4732.   
  4733.   You could just as easily have combined the last three commands:
  4734.   
  4735. make zImage; make modules; make modules_install
  4736.  
  4737.   then returned after all the disk churning finished. The ; (semicolon)
  4738.   character separates sequential commands on one line and performs each command
  4739.   in order so that you don't have to wait around just to issue the next
  4740.   command.
  4741.   
  4742.   Once your kernel is built and your modules installed, we have a few more
  4743.   items to take care of. First, copy your kernel to the root (or /boot/ or
  4744.   /etc/, if you wish):
  4745.   
  4746. cp /usr/src/linux/arch/i386/boot/zImage /zImage
  4747.  
  4748.   You should also copy the /usr/src/linux/System.map file to the same directory
  4749.   as the kernel image. Then change (cd) to the /etc directory to configure
  4750.   LILO. This is a very important step. If we don't install a pointer to the new
  4751.   kernel, it won't boot. Normally, an install kernel is called vmlinuz.
  4752.   Old-time Unix users will recognize the construction of this name. The
  4753.   trailing ``z'' means the image is compressed. The ``v'' and ``m'' also have
  4754.   significance and mean ``virtual'' and ``sticky'' respectively and pertain to
  4755.   memory and disk management. I suggest you leave the vmlinuz kernel in place,
  4756.   since you know it works.
  4757.   
  4758.   Edit the /etc/lilo.conf file to add your new kernel. Use the lines from the
  4759.   image=/vmlinuz line to the next image= line or the end. Duplicate what you
  4760.   see, then change the first line to image=/zImage (assuming your kernel is in
  4761.   the root directory) and choose a different name for the label=. The first
  4762.   image in the file is the default, others will have to be specified on the
  4763.   command line in order to boot them. Save the file and type:
  4764.   
  4765. lilo
  4766.  
  4767.   You will now see the kernel labels, and the first one will have an asterisk.
  4768.   If you don't see the label that you gave your new kernel or LILO terminates
  4769.   with an error, you'll need to redo your work in /etc/lilo.conf (see LILO man
  4770.   pages).
  4771.   
  4772.   We're almost ready to reboot. At this point, if you know your system will
  4773.   only require one reboot to run properly, you might want to issue the command:
  4774.   
  4775. depmod -a 2.0.x
  4776.  
  4777.   where x is the minor number of the kernel you just built. This command
  4778.   creates the dependencies file some modules need. You'll also want to make
  4779.   sure you don't boot directly into xdm. For Red Hat type systems, this means
  4780.   ensuring the /etc/inittab file doesn't have a default run level of 5, or that
  4781.   you remember to pass LILO the run level at boot time. For Debian systems, you
  4782.   can just type:
  4783.   
  4784. mv /etc/init.d/xdm /etc/init.d/xdm.orig
  4785.  
  4786.   for now and move it back later.
  4787.     ________________________________________________________________________
  4788.   
  4789.   Normal Rebooting the New Kernel
  4790.   
  4791.   Reboot your machine using:
  4792.   
  4793. shutdown -r now
  4794.  
  4795.   While typing reboot or pressing the ctrl+alt+del key combination usually
  4796.   works, I don't recommend either one. Under some circumstances, the file
  4797.   systems won't be properly unmounted and could corrupt open files. At the LILO
  4798.   prompt, if you need to boot the old kernel or pass some parameters for bootup
  4799.   and you don't see the boot: prompt, you can try pressing either the shift or
  4800.   ctrl key, and the boot: prompt should appear. Once you have it, press tab to
  4801.   see the available kernel labels. Type the label and optionally enter any
  4802.   parameters for bootup. Normally, however, the default kernel should boot
  4803.   automatically after the timeout interval specified in the /etc/lilo.conf
  4804.   file. During bootup, you may see a few error messages containing: SIOCADDR or
  4805.   the like. These usually indicate that a module (normally a network module)
  4806.   didn't load. We'll handle this shortly. If you got the error, ``VFS, cannot
  4807.   mount root'', you didn't compile the proper disk or file-system support into
  4808.   the kernel.
  4809.     ________________________________________________________________________
  4810.   
  4811.   Troubleshooting
  4812.   
  4813.   Due to the different ways in which each distribution handles daemon startup
  4814.   from /etc/inittab, it is difficult in this article to cover all the possible
  4815.   reasons your bootup may not have gone smoothly and the reasons why. However,
  4816.   I can tell you where to start looking.
  4817.   
  4818.   First, run depmod -a to ensure you have an up-to-date, module dependency file
  4819.   (it will be created in the appropriate subdirectory). If you get a string of
  4820.   errors about unresolved dependencies, old modules are present in the modules
  4821.   subdirectories, and you didn't configure the kernel with ``Module Versions''
  4822.   enabled. This is not a fatal error. The modules you compiled and installed
  4823.   are good. Check the /etc/conf.modules file and make sure that any lines
  4824.   pointing to /lib/modules are complete:
  4825.  
  4826. /lib/modules/`uname -r`/xx
  4827.  
  4828.   (Note: the grave quote on each side of uname -r is located above the Tab key
  4829.   in the upper left corner of the keyboard on a U.S. keyboard).
  4830.   
  4831.   Make sure kerneld is running and that it is loaded early in the bootup
  4832.   process. If it is, then the system doesn't need to explicitly load modules,
  4833.   kerneld will handle it. Be careful about calling kerneld too early in the
  4834.   first rc script. kerneld will stop the bootup process forcing a hard reboot
  4835.   via the reset button or power switch, if it is called before the system knows
  4836.   its host name. If this happens to you, you can reboot passing LILO the -b
  4837.   argument which prevents init from executing any rc scripts. Next, look in
  4838.   /etc/rc.d/ at the rc, rc.sysinit and rc.modules files. One or more may point
  4839.   to a directory such as /etc/modules/`uname -r`/`uname -v` where a list of
  4840.   bootup modules are located. You can just copy the old file over to the new
  4841.   directory;
  4842.  
  4843. mkdir /etc/modules/`uname -r` ;
  4844. cp /etc/modules/2.0.xx/g#1 Thu 3 Sep 1997.\
  4845.         default /etc/modules/`uname -r`/\
  4846.         `uname -v`.default""
  4847.  
  4848.   Your system will almost certainly have a different date for the modules file.
  4849.   Your system also may or may not use the default extension. Pay close
  4850.   attention to the use of grave quotes and double quotes in the above example,
  4851.   since both are needed in the proper places. Once you have found the keys to
  4852.   your system, you should be able to reboot into a properly functioning system.
  4853.   If you experience further problems, the best place to get quick, expert
  4854.   advice is on a mailing list dedicated to your particular distribution. Those
  4855.   successfully running a particular distribution usually delight in assisting
  4856.   novices with problems they may encounter. Why? Because they hit the same
  4857.   brick walls when they were novices and received help with many problems. Lurk
  4858.   a few days on a list, and if your question isn't asked by someone else, ask
  4859.   it yourself. Check the mail-list archives first, if any are present. These
  4860.   archives contain answers to frequently asked questions (FAQ).
  4861.     ________________________________________________________________________
  4862.   
  4863.   Conclusion
  4864.   
  4865.   While building a kernel tailored to your system may seem a daunting challenge
  4866.   for new administrators, the time spent is worth it. Your system will run more
  4867.   efficiently, and more importantly, you will have the satisfaction of building
  4868.   it yourself.
  4869.   
  4870.   The few areas where you may encounter trouble are in remembering to rerun
  4871.   LILO after installing the new kernel, but you didn't overwrite your old one
  4872.   (or did you?), so you can always revert to one that worked from the lilo:
  4873.   prompt. Distribution specific problems during bootup may also be encountered
  4874.   during the first reboot but are usually easily resolved. Help is normally
  4875.   only an e-mail away for those distributions that don't come with technical
  4876.   support.
  4877.     ________________________________________________________________________
  4878.   
  4879.                      Copyright ⌐ 1998, David A. Bandel
  4880.            Published in Issue 32 of Linux Gazette, September 1998
  4881.     ________________________________________________________________________
  4882.   
  4883.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  4884.     ________________________________________________________________________
  4885.   
  4886.     "Linux Gazette...making Linux just a little more fun!"
  4887.     ________________________________________________________________________
  4888.   
  4889.                             Patch for Beginners
  4890.                                       
  4891.                                By Larry Ayers
  4892.     ________________________________________________________________________
  4893.   
  4894.                                 Introduction
  4895.                                       
  4896.   The aim of this article is to introduce new Linux users to an invaluable
  4897.   resource, Larry Wall's patch program. Patch is an interface to the GNU diff
  4898.   utility, which is used to find differences between files; diff has a
  4899.   multitude of options, but it's most often used to generate a file which lists
  4900.   lines which have been changed, showing both the original and changed lines
  4901.   and ignoring lines which have remained the same. Patch is typically used to
  4902.   update a directory of source code files to a newer version, obviating the
  4903.   need to download an entire new source archive. Downloading a patch in effect
  4904.   is just downloading the lines which have been changed.
  4905.   
  4906.   Patch originated in the nascent, bandwidth-constrained internet environment
  4907.   of a decade ago, but like many Unix tools of that era it is still much-used
  4908.   today. In the February issue of the programmer's magazine Dr. Dobb's Journal
  4909.   Larry Wall had some interesting comments on the early days of patch:
  4910.  
  4911.      DDJ: By the way, what came first, patch or diff? LW: diff, by a
  4912.      long ways. patch is one of those things that, in retrospect, I was
  4913.      totally amazed that nobody had thought of it sooner, because I
  4914.      think that diff predated patch by at least ten years or so. I think
  4915.      I know why, though. And it's one of these little psychological
  4916.      things. When they made diff, they added an option called -e, I
  4917.      think it was, and that would spit out an ed script, so people said
  4918.      to themselves, "Well, if I wanted to automate the applying of a
  4919.      diff, I would use that." So it never actually occurred to someone
  4920.      that you could write a computer program to take the other forms of
  4921.      output and apply them. Either that, or it did not occur to them
  4922.      that there was some benefit to using the context diff form, because
  4923.      you could apply it to something that had been changed and still
  4924.      easily get it to do the right thing. It's one of those things
  4925.      that's obvious in retrospect. But to be perfectly honest, it wasn't
  4926.      really a brilliant flash of inspiration so much as self defense. I
  4927.      put out the first version of rn, and then I started putting out
  4928.      patches for it, and it was a total mess. You could not get people
  4929.      to apply patches because they had to apply them by hand. So, they
  4930.      would skip the ones that they didn't think they needed, and they'd
  4931.      apply the new ones over that, and they'd get totally messed up. I
  4932.      wrote patch so that they wouldn't have this excuse that it was too
  4933.      hard. I don't know whether it's still the case, but for many years,
  4934.      I told people that I thought patch had changed the culture of
  4935.      computing more than either rn or Perl had. Now that the Internet is
  4936.      getting a lot faster than it used to be, and it's getting much
  4937.      easier to distribute whole distributions, patches tend to be sent
  4938.      around only among developers. I haven't sent out a patch kit for
  4939.      Perl in years. I think patch has became less important for the
  4940.      whole thing, but still continues to be a way for developers to
  4941.      interchange ideas. But for a while in there, patch really did make
  4942.      a big difference to how software was developed.
  4943.  
  4944.   Larry Wall's assessment of the diminishing importance of patch to the
  4945.   computing community as a whole is probably accurate, but in the free software
  4946.   world it's still an essential tool. The ubiquity of patch makes it possible
  4947.   for new users and non-programmers to easily participate in alpha- and
  4948.   beta-testing of software, thus benefiting the entire community.
  4949.   
  4950.   It occurred to me to write this article after noticing a thread which
  4951.   periodically resurfaces in the linux-kernel mailing list. About every three
  4952.   months someone will post a plea for a split Linux kernel source distribution,
  4953.   so that someone just interested in, say, the i386 code and the IDE disk
  4954.   driver wouldn't have to download the Alpha, Sparc, etc. files and the many
  4955.   SCSI drivers for each new kernel release. A series of patient (and some
  4956.   not-so-patient) replies will follow, most urging the original poster to use
  4957.   patches to upgrade the kernel source. Linus Torvalds will then once again
  4958.   state that he has no interest in undertaking the laborious task of splitting
  4959.   the kernel source into chunks, but that if anyone else wants to, they should
  4960.   feel free to do so as an independent project. So far no-one has volunteered.
  4961.   I can't blame the kernel-hackers for not wanting to further complicate their
  4962.   lives; I imagine it would be much more interesting and challenging to work
  4963.   directly with the kernel than to overhaul the entire kernel distribution
  4964.   scheme! Downloading an eleven megabyte kernel source archive is
  4965.   time-consuming (and, for those folks paying by the minute for net access,
  4966.   expensive as well) but the kernel patches can be as small as a few dozen
  4967.   kilobytes, and are hardly ever larger than one megabyte. The 2.1.119
  4968.   development kernel source on my hard disk has been incrementally patched up
  4969.   from version 2.1.99, and I doubt if I'd follow the development as closely if
  4970.   I had to download each release in its entirety.
  4971.   
  4972.                                 Using Patch
  4973.                                       
  4974.   Patch comes with a good manual-page which lists its numerous options, but 99%
  4975.   of the time just two of them will suffice:
  4976.           + patch -p1 < [patchfile]
  4977.           + patch -R < [patchfile]  (used to undo a patch)
  4978.             
  4979.   The -p1 option strips the left-most directory level from the filenames in the
  4980.   patch-file, as the top-level directory is likely to vary on different
  4981.   machines. To use this option, place your patch within the directory being
  4982.   patched, and then run patch -p1 < [patchfile] from within that directory. A
  4983.   short excerpt from a Linux kernel patch will illustrate this:
  4984.  
  4985. diff -u --recursive --new-file v2.1.118/linux/mm/swapfile.c linux/mm/swapfile.c
  4986. --- v2.1.118/linux/mm/swapfile.c        Wed Aug 26 11:37:45 1998
  4987. +++ linux/mm/swapfile.c Wed Aug 26 16:01:57 1998
  4988. @@ -489,7 +489,7 @@
  4989.         int swap_header_version;
  4990.         int lock_map_size = PAGE_SIZE;
  4991.         int nr_good_pages = 0;
  4992. -       char tmp_lock_map = 0;
  4993. +       unsigned long tmp_lock_map = 0;
  4994.  
  4995.   Applying the patch from which this segment was copied with the -p1 switch
  4996.   effectively truncates the path which patch will seek; patch will look for a
  4997.   subdirectory of the current directory named /mm, and should then find the
  4998.   swapfile.c file there, waiting to be patched. In this excerpt, the line
  4999.   preceded by a dash will be replaced with the line preceded by a plus sign. A
  5000.   typical patch will contain updates for many files, each section consisting of
  5001.   the output of diff -u run on two versions of a file.
  5002.   
  5003.   Patch displays its output to the screen as it works, but this output usually
  5004.   scrolls by too quickly to read. The original, pre-patch files are renamed
  5005.   *.orig, while the new patched files will bear the original filenames.
  5006.   
  5007.                              Patching Problems
  5008.                                       
  5009.   One possible source of problems using patch is differences between various
  5010.   versions, all of which are available on the net. Larry Wall hasn't done much
  5011.   to improve patch in recent years, possibly because his last release of the
  5012.   utility works well in the majority of situations. FSF programmers from the
  5013.   GNU project have been releasing new versions of patch for the past several
  5014.   years. Their first revisions of patch had a few problems, but I've been using
  5015.   version 2.5 (which is the version distributed with Debian 2.0) lately with no
  5016.   problems. Version 2.1 has worked well for me in the past. The source for the
  5017.   current GNU version of patch is available from the GNU FTP site, though most
  5018.   people will just use the version supplied with their distribution of Linux.
  5019.   
  5020.   Let's say you have patched a directory of source files, and the patch didn't
  5021.   apply cleanly . This happens occasionally, and when it does patch will show
  5022.   an error message indicating which file confused it, along with the line
  5023.   numbers. Sometimes the error will be obvious, such as an omitted semicolon,
  5024.   and can be fixed without too much trouble. Another possibility is to delete
  5025.   from the patch the section which is causing trouble, but this may or may not
  5026.   work, depending on the file involved.
  5027.   
  5028.   Another common error scenario: suppose you have un-tarred a kernel source
  5029.   archive, and while exploring the various subdirectories under /linux/arch/
  5030.   you notice the various machine architecture subdirectories, such as alpha,
  5031.   sparc, etc. If you, like most Linux users, are running a machine with an
  5032.   Intel processor (or one of the Intel clones), you might decide to delete
  5033.   these directories, which are not needed for compiling your particular kernel
  5034.   and which occupy needed disk space. Some time later a new kernel patch is
  5035.   released and while attempting to apply it patch stalls when it is unable to
  5036.   find the Alpha or PPC files it would like to patch. Luckily patch allows user
  5037.   intervention at this point, asking the question "Skip this patch?" Tell it
  5038.   "y", and patch will proceed along its merry way. You will probably have to
  5039.   answer the question numerous times, which is a good argument for allowing the
  5040.   un-needed directories to remain on your disk.
  5041.   
  5042.                             Kernel-Patching Tips
  5043.                                       
  5044.   Many Linux users use patch mainly for patching the kernel source, so a few
  5045.   tips are in order. Probably the easiest method is to use the shell-script
  5046.   patch-kernel, which can be found in the /scripts subdirectory of the kernel
  5047.   source-tree. This handy and well-written script was written by Nick Holloway
  5048.   in 1995; a couple of years later Adam Sulmicki added support for several
  5049.   compression algorithms, including *.bz, *.bz2, compress, gzip, and plain-text
  5050.   (i.e., a patch which has already been uncompressed). The script assumes that
  5051.   your kernel source is in /usr/src/linux,, with your new patch located in the
  5052.   current directory. Both of these defaults can be overridden by command-line
  5053.   switches in this format: patch-kernel [ sourcedir [ patchdir ] ].
  5054.   Patch-kernel will abort if any part of the patch fails, but if the patch
  5055.   applies cleanly it will invoke find, which will delete all of the *.orig
  5056.   files which patch leaves behind.
  5057.   
  5058.   If you prefer to see the output of commands, or perhaps you would rather keep
  5059.   the *.orig files until you are certain the patched source compiles, running
  5060.   patch directly (with the patch located in the kernel source top-level
  5061.   directory, as outlined above) has been very reliable in my experience. In
  5062.   order to avoid uncompressing the patch before applying it a simple pipe will
  5063.   do the trick:
  5064.   
  5065.   gzip -cd patchXX.gz | patch -p1
  5066.   or:
  5067.   
  5068.   bzip2 -dc patchXX.bz2 | patch -p1
  5069.   
  5070.   After the patch has been applied the find utility can be used to check for
  5071.   rejected files:
  5072.   
  5073.   find . -name \*.rej
  5074.   
  5075.   At first the syntax of this command is confusing. The period indicates that
  5076.   find should look in the current directory and recursively in all
  5077.   subdirectories beneath it. Remember the period should have a space both
  5078.   before and after it. The backslash before the wildcard "*" "escapes" the
  5079.   asterisk in order to avoid confusing the shell, for which an asterisk has
  5080.   another meaning. If find locates any *.rej files it will print the filenames
  5081.   on the screen. If find exits without any visible output it's nearly certain
  5082.   the patch applied correctly.
  5083.   
  5084.   Another job for find is to remove the *.orig files:
  5085.   
  5086.   find . -name \*.orig -print0 | xargs -0r rm -f
  5087.   
  5088.   This command is sufficiently cumbersome to type that it would be a good
  5089.   candidate for a new shell alias. A line in your ~/.bashrc file such as:
  5090.   
  5091.   alias findorig 'find . -name \*.orig -print0 | xargs -0r rm -f'
  5092.   
  5093.   will allow just typing findorig to invoke the above command. The single
  5094.   quotes in the alias definition are necessary if an aliased command contains
  5095.   spaces. In order to use a new alias without logging out and then back in
  5096.   again, just type source ~/.bashrc at the prompt.
  5097.   
  5098.                      Incidental Comments and Conclusion
  5099.                                       
  5100.   While putting this article together I upgraded the version of patch on my
  5101.   machine from version 2.1 to version 2.5. Both of these versions come from the
  5102.   current FSF/GNU maintainers. Immediately I noticed that the default output of
  5103.   version 2.5 has been changed, with less information appearing on the screen.
  5104.   Gone is Larry Wall's "...hmm" which used to appear while patch was attempting
  5105.   to determine the proper lines to patch. The output of version 2.5 is simply a
  5106.   list of messages such as "patching file [filename]", rather than the more
  5107.   copious information shown by earlier versions. Admittedly, the information
  5108.   scrolled by too quickly to read, but the output could be redirected to a file
  5109.   for later perusal. This change doesn't affect the functionality of the
  5110.   program, but does lessen the human element. It seems to me that touches such
  5111.   as the old "...hmm" messages, as well as comments in source code, are
  5112.   valuable in that they remind the user that a program is the result of work
  5113.   performed by a living, breathing human being, rather than a sterile
  5114.   collection of bits. The old behavior can be restored by appending the switch
  5115.   --verbose to the patch command-line, but I'm sure that many users either
  5116.   won't be aware of the option or won't bother to type it in. Another
  5117.   difference between 2.1 and 2.5 is that the *.orig back-up files aren't
  5118.   created unless patch is given the -b option.
  5119.   
  5120.   Patch is not strictly necessary for an end-user who isn't interested in
  5121.   trying out and providing bug-reports for "bleeding-edge" software and
  5122.   kernels, but often the most interesting developments in the Linux world
  5123.   belong in this category. It isn't difficult to get the hang of using patch,
  5124.   and the effort will be amply repaid.
  5125.     ________________________________________________________________________
  5126.   
  5127.   Last modified: Mon 31 Aug 1998
  5128.     ________________________________________________________________________
  5129.   
  5130.                        Copyright ⌐ 1998, Larry Ayers
  5131.            Published in Issue 32 of Linux Gazette, September 1998
  5132.     ________________________________________________________________________
  5133.   
  5134.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  5135.     ________________________________________________________________________
  5136.   
  5137.     "Linux Gazette...making Linux just a little more fun!"
  5138.     ________________________________________________________________________
  5139.   
  5140.                        Typist: A Simple Typing Tutor
  5141.                                       
  5142.                                By Larry Ayers
  5143.     ________________________________________________________________________
  5144.   
  5145.   Recently a small, ncurses-based typing tutor program appeared on the Sunsite
  5146.   archive site. Typist is a revision of an old, unmaintained Unix program.
  5147.   Simon Baldwin is responsible for this updated version, and he has this to say
  5148.   about the origin of his involvement:
  5149.  
  5150.      This program came from a desire to learn 'proper' typing, and not
  5151.      the awkward keyboard prodding I've been doing for the past 10 years
  5152.      or more. Since I usually run Linux rather than Windows or DOS, I
  5153.      looked around for a tutor program, and surprisingly, found nothing
  5154.      in the usual places. Eventually, I stumbled across Typist - a
  5155.      little gem of a program for UNIX-like systems. The original worked
  5156.      great, but after a while I started noticing odd things - some
  5157.      lessons seemed to go missing, and the programs were apt to exhibit
  5158.      some strange behaviours. After fixing a few bugs it seemed that the
  5159.      time was right for something of a rewrite.
  5160.  
  5161.   Don't expect a Linux version of Mavis Beacon; Typist has a simple but
  5162.   efficient interface without extraneous graphical fluff. Start it up and here
  5163.   is what you will see:
  5164.   1st Typist screenshot
  5165.   
  5166.   Once a choice of lessons has been made, a series of help screens explain the
  5167.   usage of the program. Here is a lesson screenshot:
  5168.   Typist lesson screenshot
  5169.   
  5170.   The general idea is to type the exact letters or words shown on the screen;
  5171.   if a mistake is made a caret is shown rather than the letter typed. If no
  5172.   mistakes were made, the next section of the lesson appears; otherwise the
  5173.   first section is repeated until there are no errors. After each run through a
  5174.   lesson, a box appears showing typing speed and number of errors.
  5175.   
  5176.   A Dvorak lesson is even included for those willing to swim against the tide
  5177.   in the pursuit of greater typing speed. I've considered learning the Dvorak
  5178.   system, but have refrained due to my family's occasional need to use my
  5179.   machine. I don't want to make the transition between Windows and Linux
  5180.   systems more of a culture shock than it already is!
  5181.   
  5182.   Typist's small size and spartan interface does have the advantages of quick
  5183.   start-up and low overhead, making it ideal for quick usage in the intervals
  5184.   between other tasks, or while waiting for a web-site to load.
  5185.   
  5186.   Typist also exemplifies one my favorite scenarios in the free software world:
  5187.   an old source code archive languishing on an FTP site somewhere is now
  5188.   revived and given new life and new users.
  5189.   
  5190.   At the moment, the only source of the program seems to be the
  5191.   /pub/Linux/Incoming directory at the Sunsite archive site. Presumably Typist
  5192.   will eventually be filed away elsewhere on the site, but I don't know just
  5193.   where it will end up. Incidentally, Typist has now been re-released under the
  5194.   GNU GPL.
  5195.     ________________________________________________________________________
  5196.   
  5197.   Last modified: Mon 31 Aug 1998
  5198.     ________________________________________________________________________
  5199.   
  5200.                        Copyright ⌐ 1998, Larry Ayers
  5201.            Published in Issue 32 of Linux Gazette, September 1998
  5202.     ________________________________________________________________________
  5203.   
  5204.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  5205.     ________________________________________________________________________
  5206.   
  5207.     "Linux Gazette...making Linux just a little more fun!"
  5208.     ________________________________________________________________________
  5209.   
  5210.                                Paradigm Shift
  5211.                                       
  5212.                                 By Joe Barr
  5213.     ________________________________________________________________________
  5214.   
  5215.   paradigm shift paradigm shift (pair uh dime shift) 1. a profound and
  5216.   irreversible change to a different model of behavior or perception. 2. an
  5217.   epiphany with staying power. 3. a sea change of such magnitude that it alters
  5218.   the course of all who pass through it. 
  5219.   
  5220.   Paradigm shifts. Thinking back over my years in the industry, there haven't
  5221.   been that many. Especially when you consider the thousands of times the term
  5222.   has been used. The move of the center from the glass house to the desktop
  5223.   certainly qualifies. Likewise the rethinking of systems analysis and design,
  5224.   from the physical to the logical, was echoed by structured programming.
  5225.   
  5226.   But programming was to be swept by a second, perhaps even more fundamental
  5227.   change in perspective as we moved from procedural languages to object
  5228.   oriented. And to put it in everyday terms, there is a whole new mindset today
  5229.   when you connect to the internet than there was when you reached out to touch
  5230.   a BBS.
  5231.   
  5232.   There have been plenty of impostors: bubble memory, the death of mainframes,
  5233.   quality management, cold fusion, new Coke and "push content" on the web. It's
  5234.   
  5235.   often impossible to tell the difference between la buzz de jour and the first
  5236.   stirrings of a new-born, honest to baud, as real as the day is long, paradigm
  5237.   shift.
  5238.   
  5239.   The incubation period can last for years. Eventually, though, a thing either
  5240.   emerges and changes everything or it quietly fades away. Only then can you
  5241.   know for sure. I believe we are at the edge of the largest paradigm shift in
  5242.   the history of the industry. This one will smash the current model beyond
  5243.   recognition. Our children and our children's children will look back at the
  5244.   first age, the first 30 years of personal computing, and see it for the
  5245.   barbaric, archaic, self inhibiting, self impeding dinosaur that it is.
  5246.   
  5247.   A paradigm shift does not mean one thing is simply replaced by another. A new
  5248.   force field appears, draws attention to itself, and may coexist with, perhaps
  5249.   even languish alongside for some period of time, the model that it will
  5250.   replace.
  5251.   
  5252.   There may even be a longer period of time during which the original gradually
  5253.   fades away. The shift occurs, quite simply, when you wake up one day and find
  5254.   yourself seeing things in a new way, from a new perspective.
  5255.   
  5256.   The glass house and the personal computer? That one has been underway for
  5257.   many years. Microsoft has eclipsed IBM as the largest seller of software in
  5258.   the quarter just ended.
  5259.   
  5260.   The shift, by definition, never occurs in isolation. There must be related
  5261.   spheres, energizing pulses, co-dependent orbs circling the prime. It is when
  5262.   the catalyst works its magic that you are transported. Suddenly you are
  5263.   "there."
  5264.   
  5265.   Object oriented programming has been around for quite awhile now. I remember
  5266.   in the early 80's my brother asking if I had taken a look at Smalltalk yet.
  5267.   He seemed quite taken with the language and what it was about. I toyed with
  5268.   the turtle and got some inkling of objects and inheritance, but I really
  5269.   couldn't see that much would ever happen in the real world with Alan Kay's
  5270.   brainchild.
  5271.   
  5272.   Years later C++ would begin to move into the mainstream. Not replacing Cobol
  5273.   and C but just establishing its own place in the landscape. OO methodologies
  5274.   
  5275.   began to abound as more and more people crossed the line. But the big push
  5276.   hadn't even happened yet, Oak hadn't even dropped the acorn that became Java.
  5277.   
  5278.   Today, with the wildfire popularity of Java among developers, with its entry
  5279.   into the enterprise not only assured but an established fact, with its
  5280.   continued maturing and fleshing out, it is Java that is carrying the banner
  5281.   of object oriented programing to the dwindling herd of procedural
  5282.   programmers.
  5283.   
  5284.   Of course, in the time between Kay's conceptualization of objects, GUIs and
  5285.   cut-and-paste, and where we are today, it has not always been clear that this
  5286.   was the kind of stuff that would have profound, far-reaching impact on the
  5287.   way we look at software and design, the way we look at the tasks to be done
  5288.   and how we plan to do them.
  5289.   
  5290.   To many of the brightest and the best, at least to many outside of the
  5291.   Learning Research Group at Xerox Palo Alto Research Center during the 70's
  5292.   and 80's, bubble memory was much more likely to be the next big thing. And so
  5293.   it is with some trepidation that I hereby formally and officially predict
  5294.   that we are today awash in the first tides of a sea change that will once
  5295.   again change everything.
  5296.   
  5297.   But keep in mind, my dweebs, that my track record as a Karmac for Computing
  5298.   is something less than perfect. It was in the fall of 1978 that I told Sam
  5299.   Skaggs, then president of Skaggs-Albertsons superstores, the first marriage
  5300.   of drug and grocery emporiums, that scanning technology would never work in a
  5301.   grocery store.
  5302.   
  5303.   And in 1994 I predicted OS/2 would win the desktop from Windows. So don't bet
  5304.   the digital dirtfarm on this just yet. Your narrator is guessing, just as
  5305.   every other pundit who looks out past the breakers for first signs of the
  5306.   swell that will become the next big wave.
  5307.   
  5308.   My hunch is this: free/open source software will emerge as the only sensible
  5309.   choice. Feel the tremors in the Northwest? This one could be killer. There
  5310.   has been much debate over which term ("free software" or "open source") is
  5311.   the best choice, the most descriptive, and the truest to its philosophical
  5312.   roots. I am not going to go there. I will compromise by using both terms
  5313.   interchangeably.
  5314.   
  5315.   But please note that the word free in "free software" applies to a state of
  5316.   being, not to its price. It is about freedom. Also note that the hottest
  5317.   software product in the world today, Linux, qualifies as free software under
  5318.   this definition, whether you download it for free from the internet or pay
  5319.   anywhere from $1.99 to $99.99 for specific distributions.
  5320.   
  5321.   Linux is the only non-Windows operating system in the world that is gaining
  5322.   market share. How hot is it? It's almost impossible these days to keep up
  5323.   with articles in the press about Linux. A mailing list dedicated to Linux
  5324.   News recently had to split into three separate lists in order to handle the
  5325.   load. Linus Torvalds, its creator, is on the cover of the August issue of
  5326.   Forbes.
  5327.   
  5328.   Every major computer trade publication is showering it with attention.
  5329.   Oracle, Ingres, and Informix have just announced they will be porting their
  5330.   database products to Linux. Caldera has just announced (and has available for
  5331.   free download today) a Netware server for Linux. And that's just the news
  5332.   from the past two weeks. Linux has cache, bebe.
  5333.   
  5334.   The roots of Linux-mania began in the early 80's when Richard Stallman
  5335.   founded the GNU Project. Stallman had worked at MIT during the 70's and
  5336.   witnessed the destructive (in terms of group productivity and effort) nature
  5337.   of restrictive licensing of proprietary software. He wanted to create a free,
  5338.   modern operating system that could be used by everyone.
  5339.   
  5340.   In the GNU Manifesto (1983), he explained why he must write GNU: "I consider
  5341.   that the golden rule requires that if I like a program I must share it with
  5342.   other people who like it. Software sellers want to divide the users and
  5343.   conquer them, making each user agree not to share with others.
  5344.   
  5345.   I refuse to break solidarity with other users in this way. I cannot in good
  5346.   conscience sign a nondisclosure agreement or a software license agreement.
  5347.   
  5348.   For years I worked within the Artificial Intelligence Lab to resist such
  5349.   tendencies and other inhospitalities, but eventually they had gone too far: I
  5350.   could not remain in an institution where such things are done for me against
  5351.   my will.
  5352.   
  5353.   So that I can continue to use computers without dishonor, I have decided to
  5354.   put together a sufficient body of free software so that I will be able to get
  5355.   along without any software that is not free.
  5356.   
  5357.   I have resigned from the AI lab to deny MIT any legal excuse to prevent me
  5358.   from giving GNU away."
  5359.   
  5360.   By the time (almost ten years later) Linus Torvalds had a good working Linux
  5361.   kernel available, the GNU project had most of the non-kernel essentials
  5362.   ready. It was a marriage made in free/open source software heaven, and Linus
  5363.   converted the original Linux license to the GPL (GNU's General Public
  5364.   License).
  5365.   
  5366.   After all, it seemed the obvious choice to the young college student who had
  5367.   wanted to create a free version of Unix that everyone could use. Not only is
  5368.   Linus a true code wizard, he is delightfully perfect for his role today as
  5369.   poster boy of the free/open source movement.
  5370.   
  5371.   Every interview, every public appearance, each bit of history about him and
  5372.   Linux unearthed reveals a warm, wise, friendly, candid and particularly
  5373.   unpretentious personality. How else could someone whose views are so
  5374.   diametrically opposed to those of Bill Gates and the money mongers end up on
  5375.   the cover of Forbes? But Linux is not the only success story in the world of
  5376.   free/open source.
  5377.   
  5378.   Netscape rocked the commercial world earlier this year when it announced it
  5379.   would free the source code for its browser and make it available for download
  5380.   to
  5381.   
  5382.   anyone who wanted it. Netscape now claims that the browser has been improved
  5383.   as much over the past couple of months as it would have in 2.5 years in its
  5384.   closed source environment.
  5385.   
  5386.   FreeBSD, a rival for Linux in the UNIX like, free/open source sector, has its
  5387.   own fanatical users and supporters. Just this past week it shattered an
  5388.   existing world record for total bytes transferred from an FTP site in a
  5389.   single day. CRL Network Services, host of the popular Walnut Creek CD-ROM ftp
  5390.   site, announced on July 30th that they had moved over 400 gig of files on
  5391.   July 28, 1998. The previous mark of about 350 gig had been set by Microsoft
  5392.   during the Win95 launch period.
  5393.   
  5394.   Oh, one other thing. The FreeBSD record was set on a single 200Mhz Pentium
  5395.   box. The Microsoft record was set using 40 separate servers. Results like
  5396.   those are probably the driving force behind the emerging model. The
  5397.   performance just blows away what Windows is able to deliver in their closed,
  5398.   sealed, NDA protected, shoot you if you see it source code, proprietary
  5399.   model.
  5400.   
  5401.   Eric S. Raymond, keeper of the tome on internetese called "The Jargon File"
  5402.   and author on the must read essay "The Cathedral and The Bazaar," talks about
  5403.   the success he had with FETCHMAIL using the Bazaar model of development. Lots
  5404.   of eyes on the code: bugs are found more quickly, enhancements made more
  5405.   quickly, design becomes more normalized.
  5406.   
  5407.   But Linus is the candle for the moth. Leo LaPorte had him as a guest on his
  5408.   ZDTV show the night that Win98 was launched. I caught him in chat on the way
  5409.   out and asked him how SMP was looking for the next release. He said it looked
  5410.   very good.
  5411.   
  5412.   It seems he is always this accessible, and that is part of his magic and part
  5413.   of the reason for the success of Linux and shift in thinking about software
  5414.   development. For open software to not only flourish but become the norm, at
  5415.   least for those essential bits, like operating systems, that everyone needs
  5416.   to run, there must be huge successes to attract the rest of the crowd.
  5417.   
  5418.   Linux and FreeBSD are two of those attractions. Linus is the advantage that
  5419.   Linux holds over FreeBSD, not in a technical sense, but in a human sense. To
  5420.   get a sense of what Linus is like, it's interesting to follow his exchange of
  5421.   USENET messages with Andy Tanenbaum, the creator of Minix.
  5422.   
  5423.   Linus began his 386 experience with Minix and began to extend it to create
  5424.   Linux. He and Andy exchanged a series of messages in comp.os.minix over the
  5425.   issues of microkernel architecture, truly free software, and the relative
  5426.   merits of Minix and Linux.
  5427.   
  5428.   It began with a post by Tanenbaum which said in part:
  5429.   
  5430.   "MINIX is a microkernel-based system. The file system and memory management
  5431.   are separate processes, running outside the kernel. The I/O drivers are also
  5432.   separate processes (in the kernel, but only because the brain-dead nature of
  5433.   the Intel CPUs makes that difficult to do otherwise).
  5434.   
  5435.   LINUX is a monolithic style system. This is a giant step back into the 1970s.
  5436.   That is like taking an existing, working C program and rewriting it in BASIC.
  5437.   To me, writing a monolithic system in 1991 is a truly poor idea."
  5438.   
  5439.   To which Linus replied:
  5440.   
  5441.   "True, Linux is monolithic, and I agree that microkernels are nicer. With a
  5442.   less argumentative subject, I'd probably have agreed with most of what you
  5443.   said. From a theoretical (and aesthetical) standpoint Linux loses. If the GNU
  5444.   kernel had been ready last spring, I'd not have bothered to even start my
  5445.   project: the fact is that it wasn't and still isn't. Linux wins heavily on
  5446.   points of being available now.
  5447.   
  5448.   >>MINIX is a microkernel-based system. >>LINUX is a monolithic style system.
  5449.   
  5450.   If this was the only criterion for the "goodness" of a kernel, you'd be
  5451.   right. What you don't mention is that minix doesn't do the micro-kernel thing
  5452.   very well, and has problems with real multitasking (in the kernel). If I had
  5453.   made an OS that had problems with a multithreading filesystem, I wouldn't be
  5454.   so fast to condemn others: in fact, I'd do my damndest to make others forget
  5455.   about the fiasco."
  5456.   
  5457.   Notice what is missing from the post? Even though his pet project, the
  5458.   fledgling Linux, has been slapped around pretty hard by the man who created
  5459.   its predecessor, Linus did not fall into the trap of name calling and
  5460.   hysterics that too often goes hand-in-glove with online debate.
  5461.   
  5462.   Notice what is present in the post? Concession of valid points made by
  5463.   Tanenbaum. Factual assertions that represent Linux quite nicely, thank you
  5464.   very much. And even for this well behaved defense, Linus closed with this:
  5465.   
  5466.   "PS. I apologize for sometimes sounding too harsh: minix is nice enough if
  5467.   you have nothing else. Amoeba might be nice if you have 5-10 spare 386's
  5468.   lying around, but I certainly don't. I don't usually get into flames, but I'm
  5469.   touchy when it comes to Linux :)"
  5470.   
  5471.   For all his dweebness, Linus is a people person. He is likable. He is
  5472.   brilliant. He is passionate about Linux but not to the point of resorting to
  5473.   bashing its detractors or alternatives to it. Earlier I mentioned an ongoing
  5474.   debate among proponents of the terms "free software" and "open source
  5475.   software." That is really symptomatic of a deeper argument over what type of
  5476.   licensing free/open source software should have.
  5477.   
  5478.   There is the GNU GPL that Linux uses, and there is the BSD model. Listen to
  5479.   Linus the diplomat walk that tightrope (while still making his preference
  5480.   known) in an interview with Linux Focus's Manuel Martinez:
  5481.   
  5482.   "I'd like to point out that I don't think that there is anything
  5483.   fundamentally superior in the GPL as compared to the BSD license, for
  5484.   example.
  5485.   
  5486.   But the GPL is what _I_ want to program with, because unlike the BSD license
  5487.   it guarantees that anybody who works on the project in the future will also
  5488.   contribute their changes back to the community. And when I do programming in
  5489.   my free time and for my own enjoyment, I really want to have that kind of
  5490.   protection: knowing that when I improve a program those improvements will
  5491.   continue to be available to me and others in future versions of the program.
  5492.   
  5493.   Other people have other goals, and sometimes the BSD style licenses are
  5494.   better for those goals. I personally tend to prefer the GPL, but that really
  5495.   doesn't mean that the GPL is any way inherently superior - it depends on what
  5496.   you want the license to do.."
  5497.   
  5498.   His views on the Evil Empire? Strong, perhaps, but certainly not inflammatory
  5499.   or angry. In his words, from the same interview:
  5500.   
  5501.   "I can certainly understand the "David vs Goliath" setup, but no, I don't
  5502.   personally share it all that much. I can't say that I like MicroSoft: I think
  5503.   they make rather bad operating systems - Windows NT is just more of the same
  5504.   - but while I dislike their operating systems and abhor their tactics in the
  5505.   marketplace I at the same time don't really care all that much about them.
  5506.   
  5507.   I'm simply too content doing what I _want_ to do to really have a very
  5508.   negative attitude towards MicroSoft. They make bad products - so what? I
  5509.   don't need to care, because I happily don't have to use them, and writing my
  5510.   own alternative has been a very gratifying experience in many ways. Not only
  5511.   have I learnt a lot doing it, but I've met thousands of people that I really
  5512.   like while developing Linux - some of them in person, most of them through
  5513.   the internet."
  5514.   
  5515.   Three potentially disasterous discussions on red button issues: Linux versus
  5516.   Minix, the GNU GPL license versus that of BSD, and Linux versus Windows. In
  5517.   each he makes his points politely but with utter candor.
  5518.   
  5519.   One last example. There is finally an official Linux logo. It is the cute,
  5520.   fat and friendly Penguin you often see on Linux sites. There was heated
  5521.   debate among the Linuxites on the choice of the logo. Many wanted something
  5522.   other than a cute, fat penguin. Something more aggressive or sleek, perhaps.
  5523.   
  5524.   Linus calmed these waters at the release of Linux 2.0 by saying:
  5525.   
  5526.   "Some people have told me they don't think a fat penguin really embodies the
  5527.   grace of Linux, which just tells me they have never seen an angry penguin
  5528.   charging at them in excess of 100mph. They'd be a lot more careful about what
  5529.   they say if they had."
  5530.   
  5531.   He is completely believable, obviously passionate about the project, and
  5532.   possessed of a contagious good humor. Linux could have no better leader from
  5533.   a technical point of view, and it couldn't have a better poster boy either.
  5534.   Its success more than anything else is pulling the rest of the world's
  5535.   mindset towards the notion of free/open source software.
  5536.   
  5537.   Nicholas Petreley raised the issue of open source software recently in his
  5538.   forum at InfoWorld Electric. It triggered a huge number of responses about
  5539.   the phenomenum. There may even be an Open Source magazine in the works. I
  5540.   credit my rethinking on this software dynamic to the reading I did there. I
  5541.   believe it is what finally made me realize that a paradigm shift has already
  5542.   occurred. That we are no longer discussing a possibility, but simply what is.
  5543.   
  5544.   The conclusion to the Forbes article behind the Linus cover calls for the
  5545.   Department of Justice to take note of the success of Linux in growing market
  5546.   share and to call of the investigation of Microsoft as unregulated monopoly.
  5547.   While I consider that a lame conclusion, the DOJ should be interested in
  5548.   enforcing antitrust law whether Linux is flourishing or not, I can't help but
  5549.   wonder if there's not some truth to the inspiration for that thinking. That
  5550.   it won't be government intervention or regulation that busts up Microsoft,
  5551.   but a revolution in our thinking about software.
  5552.   
  5553.   The Dweebspeak Primer, http://www.pjprimer.com/
  5554.     ________________________________________________________________________
  5555.   
  5556.                          Copyright ⌐ 1998, Joe Barr
  5557.            Published in Issue 32 of Linux Gazette, September 1998
  5558.     ________________________________________________________________________
  5559.   
  5560.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  5561.     ________________________________________________________________________
  5562.   
  5563.     "Linux Gazette...making Linux just a little more fun!"
  5564.     ________________________________________________________________________
  5565.   
  5566.        Running Remote X Sessions on Windows 95/98/NT/Mac/PPC Clients
  5567.                                       
  5568.                                By Ron Jenkins
  5569.     ________________________________________________________________________
  5570.   
  5571.   Copyright « 1998 by Ron Jenkins. This work is provided on an "as is" basis.
  5572.   The author provides no warranty whatsoever, either express or implied,
  5573.   regarding the work, including warranties with respect to its merchantability
  5574.   or fitness for any particular purpose.
  5575.   
  5576.   Corrections and suggestions are welcomed by the author. He can be reached by
  5577.   electronic mail at rjenkins@unicom.net.
  5578.   
  5579.   This document came about as a result of a client's problem and my solution. I
  5580.   have since seen this question asked a zillion times on USENET right up there
  5581.   with "Why can't Linux see all my (insert your >64MB number here,) of RAM?"
  5582.     ________________________________________________________________________
  5583.   
  5584.   The original problem
  5585.   
  5586.   One of my clients had a rather classical old-style Unix host to dumb terminal
  5587.   setup, connected through multiple serial termservers.
  5588.   
  5589.   They also had a PC on every desk, also connecting through a "dumb" serial
  5590.   connection.
  5591.   
  5592.   The problem was that they needed to administer the host, as well as run many
  5593.   other programs on the host that required a GUI. To accomplish this, they
  5594.   utilized a couple of Unix workstations.
  5595.   
  5596.   Obviously this was unacceptable, as they had everyone fighting for time on
  5597.   the workstations.
  5598.   
  5599.   The version of Unix they were running, had no CLI other than a network telnet
  5600.   session or the aforementioned serial setup, only administration through their
  5601.   proprietary interface running on top of X.
  5602.   
  5603.   A quick investigation showed an X server running on the host, but not being
  5604.   utilized. A previous consultant from the company they purchased the two
  5605.   systems from had suggested X Terminals as a solution, which by coincidence,
  5606.   they just happened to have handy.
  5607.   
  5608.   They never did tell me what his quote was, but rumor has it was staggering.
  5609.   (Look the price of an X Terminal sometime and you'll see what I mean.)
  5610.   
  5611.   Enter Linux. First, I did away with the serial connections on the PC's and
  5612.   got them on a switched 10 base T network.
  5613.   
  5614.   Next, I setup a couple of 486/100's as file servers and proxy hosts, using
  5615.   ip_masq and Samba. These machine then connected to the external WAN over a 10
  5616.   base 2 bus. All the suits had quota'd storage, could e-mail and memo the
  5617.   begeezus out of each other, surf the "net, and were happy as clams.
  5618.     ________________________________________________________________________
  5619.   
  5620.   What does this have to do with X sessions and Windows?
  5621.   
  5622.   One word - POLITICS.
  5623.   
  5624.   To convince the suits (the ones with the money) to let me use Linux to solve
  5625.   the problem for the programmers and administrators (the ones who actually do
  5626.   the work to produce the money), I had to impress them first.
  5627.   
  5628.   While they don't understand diddly squat about the technical side of the
  5629.   business, they do understand I gave them e-mail, file services, intranet, and
  5630.   Internet access for just the cost of my time, since they had the 486's
  5631.   setting in a closet collecting dust.
  5632.   
  5633.   Now I had the go-ahead for the X solution I proposed, which was 2 more 486's
  5634.   also already on site, also not being used, upgraded to SCSI-3 Ultra Wide
  5635.   Disks, and honked up the RAM, to serve as X proxies, for reasons I can't go
  5636.   into. This interposes an additional barrier between the Xhost and the
  5637.   clients. You shouldn't need this, so I'm going to pretend everything behind
  5638.   the 486's does not exist.
  5639.   
  5640.   Just to make it really fun, I was also asked to include the web design
  5641.   department on this subnet, who were all on Mac's and Power PC's.
  5642.   
  5643.   After creating a 10 base T subnet with the 486's and the clients wired up and
  5644.   TCP/IP configured on all the clients, it was time to show 'em some magic.
  5645.   
  5646.   From this point forward, the 486 will be referred to as the "X host", and any
  5647.   Windows 95/98/NT/Mac/PPC machine will be referred to as "the client".
  5648.   
  5649.     Step One:
  5650.     
  5651.   On the X host, create a user account for each of the desired clients.
  5652.   
  5653.     Step Two:
  5654.     
  5655.   Acquire X server software for the clients.
  5656.   
  5657.   I am a freeware fanatic, so I chose to use MI/X, available from
  5658.   http://tnt.microimages.com/www/html/freestuf/mix/, or my mirror,
  5659.   ftp.brokewing.com/pub/mix/.
  5660.   
  5661.   An additional factor that led me to choose the MI/X package, is that it runs
  5662.   on all three platforms.
  5663.   
  5664.   Install the MI/X software
  5665.   
  5666.   Note for Windows clients - either install the program in it's own place like
  5667.   C:\mix, or if you put it in Program Files, create a shortcut directly to
  5668.   $BASEDIR\TNTSTART.EXE startmix (note the space) for some reason, on the 95
  5669.   machines you may get a not enough memory message when you try to run it if
  5670.   you don't.
  5671.   
  5672.     Step Three:
  5673.     
  5674.   Acquire Telnet software for the clients.
  5675.   
  5676.   In my case they were already setup for telnet, from the previous serial
  5677.   thing.
  5678.   
  5679.   All Windows clients should already have telnet, the Mac's may or may not.
  5680.   
  5681.   If not, NCSA produces a telnet client that runs on the Mac platform.
  5682.   
  5683.     Step Four:
  5684.     
  5685.   You should be ready to go. I am sure that this whole thing could be done more
  5686.   elegantly, but here's what I did:
  5687.           + Start MI/X on the client.
  5688.           + Open a telnet session to the Xhost:
  5689.           + telnet 192.162.0.1
  5690.           + After logging in, you need to tell the Xhost to display the
  5691.             output of a program running on the Xhost on a different
  5692.             machine (the client.)
  5693.             
  5694.   For the bourne shell:
  5695.   DISPLAY=<the IP of the client machine>:0.0
  5696.   For example, DISPLAY=192.0.0.3:0.0
  5697.   
  5698.   Now you need to tell the Xhost to use this Environment Variable for all
  5699.   subsequent programs.
  5700.   
  5701.   The command to accomplish this is:
  5702.   export DISPLAY
  5703.   
  5704.   For the csh:
  5705.   setenv DISPLAY <client IP as above>
  5706.   
  5707.   You should now be able to run any X application you want on the Xhost and
  5708.   have it display on your client machine.
  5709.   
  5710.   In the telnet window, to launch an xterm, type:
  5711.   xterm &
  5712.   
  5713.   After the xterm comes up in the MI/X window, you can close the telnet
  5714.   session.
  5715.   
  5716.   That's all there is to it!
  5717.     ________________________________________________________________________
  5718.   
  5719.                        Copyright ⌐ 1998, Ron Jenkins
  5720.            Published in Issue 32 of Linux Gazette, September 1998
  5721.     ________________________________________________________________________
  5722.   
  5723.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  5724.     ________________________________________________________________________
  5725.   
  5726.     "Linux Gazette...making Linux just a little more fun!"
  5727.     ________________________________________________________________________
  5728.   
  5729.                       Searching a Web Site with Linux
  5730.                                       
  5731.                             By Branden Williams
  5732.     ________________________________________________________________________
  5733.   
  5734.   As your website grows in size, so will the number of people that visit your
  5735.   site. Now most of these people are just like you and me in the sense that
  5736.   they want to go to your site, click a button, and get exactly what
  5737.   information they were looking for. To serve these kinds of users a bit
  5738.   better, the Internet community responded with the ``Site Search''. A way to
  5739.   search a single website for the information you are looking for. As a system
  5740.   administrator, I have been asked to provide search engines for people to use
  5741.   on their websites so that their clients can get to their information as fast
  5742.   as possible.
  5743.   
  5744.   Now the trick to most search engines (Internet wide included) is that they
  5745.   index and search entire sites. So for instance, you are looking for used
  5746.   cars. You decide to look for an early 90s model Nissan Truck. You get on the
  5747.   web, and go to AltaVista. If you do a search for ``used Nissan truck'', you
  5748.   will most likely come up with a few pages that have listings of cars. Now the
  5749.   pain comes when you go to that link and see that 400K HTML file with text
  5750.   listings of used trucks. You have to either go line by line until you find
  5751.   your choice, or like most people, find it on your page using your browser's
  5752.   find command.
  5753.   
  5754.   Now wouldn't it be nice if you could just search for your used truck and get
  5755.   the results you are looking for in one fail swoop?
  5756.   
  5757.   A recent search CGI that I designed for a company called Resource Spectrum
  5758.   (http://www.spectrumm.com/) is what precipitated DocSearch. Resource Spectrum
  5759.   needed a solution similar to my truck analogy. They are a placement agency
  5760.   for high skilled jobs that needed another alternative to posting their job
  5761.   listing to newsgroups. What was proposed was a searchable Internet listing of
  5762.   the jobs on their new website.
  5763.   
  5764.   Now as the job listing came to us, it was in a word document that had been
  5765.   exported to HTML. As I searched (no pun intended) long and hard for something
  5766.   that I could use, nothing turned up. All of the search engines I found only
  5767.   searched sites, not single documents.
  5768.   
  5769.   This is where the idea for DocSearch came from.
  5770.   
  5771.   I needed a simple, clean way to search that single HTML document so users
  5772.   could get the information they needed quickly and easily.
  5773.   
  5774.   I got out the old Perl Reference and spent a few afternoons working out a
  5775.   solution to this problem. After a few updates, you see in front of you
  5776.   DocSearch 1.0.4. You can grab the latest version at
  5777.   ftp://ftp.inetinc.net/pub/docsearch/docsearch.tar.gz.
  5778.   
  5779.   Let's go through the code here so we can see how this works. First before we
  5780.   really get into this though, you need to make sure you have the CGI Library
  5781.   (cgi-lib.pl) installed. If you do not, you can download it from
  5782.   http://www.bio.cam.ac.uk/cgi-lib/. This is simply a Perl library that
  5783.   contains several useful functions for CGIs. Place it in your cgi-bin
  5784.   directory and make it world readable and executable. (chmod a+rx cgi-lib.pl)
  5785.   
  5786.   Now you can start to configure DocSearch. First off, there are a few
  5787.   constants that need to be set. They are in reference to the characteristics
  5788.   of the document you are searching. For instance...
  5789.   
  5790. # The Document you want to search.
  5791. $doc = "/path/to/my/list.html";
  5792.  
  5793.   Set this to the absolute path of the document you are searching.
  5794.   
  5795. # Document Title. The text to go inside the
  5796. <title></title> HTML tags.
  5797. $htmltitle = "Nifty Search Results";
  5798.  
  5799.   Set this to what you want the results page title to be.
  5800.   
  5801. # Optional Back link. If you don't want one, make the string null.
  5802. # i.e. $backlink = "";
  5803. $backlink = "http://www.inetinc.net/some.html";
  5804.  
  5805.   If you want to provide a ``Go Back'' link, enter the URL of the file that we
  5806.   will be referencing.
  5807.   
  5808. # Record delimiter. The text which separates the records.
  5809. $recdelim = " ";
  5810.  
  5811.   This part is one of the most important aspects of the search. The document
  5812.   you are searching must have something in between the "records" to delimit the
  5813.   html document. In English, you will need to place some HTML comment or
  5814.   something in between each possible result of the search. In my example, MS
  5815.   Word put the $nbsp; tag in between all of the records by default, so I just
  5816.   used that as a delimiter.
  5817.   
  5818.   Next we ReadParse() our information from the HTML form that was used as a
  5819.   front end to our CGI. Then to simplify things later, we go ahead and set the
  5820.   variable $query to be the term we are searching for.
  5821.   
  5822. $query = $input{`term'};
  5823.  
  5824.   This step can be repeated for each query item you would like to use to narrow
  5825.   your search. If you want any of these items to be optional, just add a line
  5826.   like this in your code.
  5827.   
  5828. if ($query eq "") {
  5829.  $query = " ";
  5830. }
  5831.  
  5832.   This will match relatively any record you search.
  5833.   
  5834.   Now comes a very important step. We need to make sure that any meta
  5835.   characters are escaped. Perl's bind operator uses meta characters to modify
  5836.   and change search output. We want to make sure that any characters that are
  5837.   entered into the form are not going to change the output of our search in any
  5838.   way.
  5839.   
  5840. $query =~ s/([-+i.<>&|^%=])/\\\1/g;
  5841.  
  5842.   Boy does that look messy! That is basically just a Regular Expression to
  5843.   escape all of the meta characters. Basically this will change a + into a \+.
  5844.   
  5845.   Now we need to move right along and open up our target document. When we do
  5846.   this, we will need to read the entire file into one variable. Then we will
  5847.   work from there.
  5848.   
  5849. open (SEARCH, "$doc");
  5850. undef $/;
  5851. $text = <SEARCH>;
  5852. close (SEARCH);
  5853.  
  5854.   The only thing you may not be familiar with is the undef $/; statement you
  5855.   see there. For our search to work correctly, we must undefine the Perl
  5856.   variable that separates the lines of our input file. The reason this is
  5857.   necessary is due to the fact that we must read the entire file into one
  5858.   variable. Unless this is undefined, only one line will be read.
  5859.   
  5860.   Now we will start the output of the results page. It is good to customize it
  5861.   and make it appealing somehow to the user. This is free form HTML so all you
  5862.   HTML guys, go at it.
  5863.   
  5864.   Now we will do the real searching job. Here is the meat of our search. You
  5865.   will notice there are two commented regular expressions in the search. If you
  5866.   want to not display any images or show any links, you should uncomment those
  5867.   lines.
  5868.   
  5869. @records = split(/$recdelim/,$text);
  5870.  
  5871.   We want to split up the file into an array of records. Each record is a valid
  5872.   search result, but is separate from the rest. This is where the record
  5873.   delimiter comes into play.
  5874.   
  5875. foreach $record (@records)
  5876. {
  5877. #       $record =~ s/<a.*//ig; # Do not print links inside this
  5878. #       doc.
  5879. #       $record =~ s/<img.*>//ig; # Do not display images inside this
  5880. #       doc.
  5881.  if ( $record =~ /$query/i ) {
  5882.  print $record;
  5883.  $matches++;
  5884.  }
  5885. }
  5886.  
  5887.   This basically prints out every $record that matches our search criteria.
  5888.   Again you can change the number of search criterion you use by changing that
  5889.   if statement to something like this.
  5890.   
  5891. if ( ($record =~ /$query/i) && ($record =~ /$anotheritem/) ) {
  5892.  
  5893.   This will try to match both queries with $record and upon a successful match,
  5894.   it will dump that $record to our results page. Notice how we also increment a
  5895.   variable called $matches every time a match is made. This is not as much as
  5896.   to tell the user how many different records were found, but more of a count
  5897.   to tell us if no matches were found so we can tell the user that no, the
  5898.   system is not down, but in fact we did not match any records based upon that
  5899.   query.
  5900.   
  5901.   Now that we are done searching and displaying the results of our search, we
  5902.   need to do a few administrative actions to ensure that we have fully
  5903.   completed our job.
  5904.   
  5905.   First off, as I was mentioning before, we need to check for zero matches in
  5906.   our search and let the user know that we could not find anything to match his
  5907.   query.
  5908.   
  5909. if ($matches eq "0") {
  5910.  $query =~ s/\\//g;
  5911.  
  5912. print << "End_Again";
  5913.  
  5914.  <center>
  5915.  <h2>Sorry! "$query" was not found!</h2><p>
  5916.  </center>
  5917. End_Again
  5918. }
  5919.  
  5920.   Notice that lovely Regular Expression. Now that we had to take all of the
  5921.   trouble to escape those meta characters, we need to remove the escape chars.
  5922.   This way when they see that their $query was not found, they will not look at
  5923.   it and say ``But that is not what I entered!'' Then we want to dump the HTML
  5924.   to disappoint the user.
  5925.   
  5926.   The only two things left to do is end the HTML document cleanly and allow for
  5927.   the back link.
  5928.   
  5929. if ( $backlink ne "" ) {
  5930.  print "<center>";
  5931.  print "<h3><a href=\"$backlink\">Go
  5932. back</a></h3>";
  5933.  print "</center>";
  5934. }
  5935.  
  5936. print << "End_Of_Footer";
  5937.  
  5938. </body>
  5939. </html>
  5940.  
  5941. End_Of_Footer
  5942.  
  5943.   All done. Now you are happy because the user is happy. Not only have you
  5944.   streamlined your website by allowing to search a single page, but you have
  5945.   increased the user's utility by giving them the results they want. The only
  5946.   result of this is more hits. By helping your user find the information he
  5947.   needs, he will tell his friends about your site. And his friends will tell
  5948.   their friends and so on. Putting the customer first sometimes does work!
  5949.     ________________________________________________________________________
  5950.   
  5951.                      Copyright ⌐ 1998, Branden Williams
  5952.            Published in Issue 32 of Linux Gazette, September 1998
  5953.     ________________________________________________________________________
  5954.   
  5955.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next 
  5956.     ________________________________________________________________________
  5957.   
  5958.                           Linux Gazette Back Page
  5959.                                       
  5960.            Copyright ⌐ 1998 Specialized Systems Consultants, Inc.
  5961. For information regarding copying and distribution of this material see the
  5962.                               Copying License.
  5963.     ________________________________________________________________________
  5964.   
  5965.   Contents:
  5966.           + About This Month's Authors
  5967.           + Not Linux
  5968.     ________________________________________________________________________
  5969.   
  5970.                          About This Month's Authors
  5971.     ________________________________________________________________________
  5972.   
  5973.     Larry Ayers
  5974.     
  5975.   Larry lives on a small farm in northern Missouri, where he is currently
  5976.   engaged in building a timber-frame house for his family. He operates a
  5977.   portable band-saw mill, does general woodworking, plays the fiddle and
  5978.   searches for rare prairie plants, as well as growing shiitake mushrooms. He
  5979.   is also struggling with configuring a Usenet news server for his local ISP.
  5980.   
  5981.     David Bandel
  5982.     
  5983.   David is a Computer Network Consultant specializing in Linux, but he
  5984.   begrudgingly works with Windows and those ``real'' Unix boxes like DEC 5000s
  5985.   and Suns. When he's not working, he can be found hacking his own system or
  5986.   enjoying the view of Seattle from 2,500 feet up in an airplane. He welcomes
  5987.   your comments, criticisms, witticisms, and will be happy to further obfuscate
  5988.   the issue.
  5989.   
  5990.     Joe Barr
  5991.     
  5992.   Joe has worked in software development for 24 years. He has served as
  5993.   programmer, analyst, consultant, and manager. He started writing about the
  5994.   industry in 1994 and his monthly column (Papa Joe's Dweebspeak Primer) became
  5995.   a favorite in Austin's "Tech Connected" magazine. The Dweebspeak Primer
  5996.   exists today in the form of an email newsletter and website. His articles
  5997.   have been reprinted in places like IBM Personal Systems Magazine, the
  5998.   legendary e-zine phrack, and the Manchester Guardian.
  5999.   
  6000.     Jim Dennis
  6001.     
  6002.   Jim is the proprietor of Starshine Technical Services. His professional
  6003.   experience includes work in the technical support, quality assurance, and
  6004.   information services (MIS) departments of software companies like
  6005.   Quarterdeck, Symantec/ Peter Norton Group, and McAfee Associates -- as well
  6006.   as positions (field service rep) with smaller VAR's. He's been using Linux
  6007.   since version 0.99p10 and is an active participant on an ever-changing list
  6008.   of mailing lists and newsgroups. He's just started collaborating on the 2nd
  6009.   Edition for a book on Unix systems administration. Jim is an avid science
  6010.   fiction fan -- and was married at the World Science Fiction Convention in
  6011.   Anaheim.
  6012.   
  6013.     Michael J. Hammel
  6014.     
  6015.   Michael is a transient software engineer with a background in everything from
  6016.   data communications to GUI development to Interactive Cable systems--all
  6017.   based in Unix. His interests outside of computers include 5K/10K races,
  6018.   skiing, Thai food and gardening. He suggests if you have any serious interest
  6019.   in finding out more about him, you visit his home pages at
  6020.   http://www.csn.net/~mjhammel. You'll find out more there than you really
  6021.   wanted to know.
  6022.   
  6023.     Bill Henning
  6024.     
  6025.   Bill runs http://www.CPUReview.com, a computer hardware oriented site. He is
  6026.   a systems analyst who designs real time industrial control software for a
  6027.   custom engineering company in Richmond, B.C. Bill is also the proprietor of a
  6028.   small web design / hosting / consulting business (Web Technologies,
  6029.   http://webtech.door2net.com).
  6030.   
  6031.     Phil Hughes
  6032.     
  6033.   Phil Hughes is the publisher of Linux Journal, and thereby Linux Gazette. He
  6034.   dreams of permanently tele-commuting from his home on the Pacific coast of
  6035.   the Olympic Peninsula. As an employer, he is "Vicious, Evil, Mean, & Nasty,
  6036.   but kind of mellow" as a boss should be.
  6037.   
  6038.     Ron Jenkins
  6039.     
  6040.   Ron is the self taught, fairly unstable, and hopelessly unskilled proprietor
  6041.   of Blackwing Communications. He welcomes your comments, questions, and
  6042.   corrections. When he's not giving out crummy advice, he can usually be found
  6043.   warping young and old minds with what little expertise he has managed to
  6044.   retain.
  6045.   
  6046.     James M. Rogers
  6047.     
  6048.   James, his wife, and their pets have moved to a new home on the Olympic
  6049.   Peninsula In Washington State. I am now a Systems Programmer for the
  6050.   University of Washington Medical Center and Harbor View Medical Center. I
  6051.   work on the interfaces between medical computer systems.
  6052.   
  6053.     Shay Rojansky
  6054.     
  6055.   Shay Rojansky is an 18-year-old high school student about to be drafted into
  6056.   the Israeli Defence Forces (IDF), where he hopes to push Linux as an OS. He
  6057.   sometimes works in his high school as a system administrator (mainly Linux).
  6058.   
  6059.     Vincent Stemen
  6060.     
  6061.   Vincent is a programmer, Unix/network administrator, and avid Linuxer who
  6062.   goes snow skiing every chance he gets. The day he installed Linux version
  6063.   0.12 approximately seven years ago and saw how well it ran, he bulk erased
  6064.   most of his floppy disks containing software for other operating systems and
  6065.   went out and celebrated.
  6066.   
  6067.     Martin Vermeer
  6068.     
  6069.   Martin is a European citizen born in The Netherlands in 1953 and living with
  6070.   his wife in Helsinki, Finland, since 1981, where he is employed as a research
  6071.   professor at the Finnish Geodetic Institute. His first UNIX experience was in
  6072.   1984 with OS-9, running on a Dragon MC6809E home computer (64k memory, 720k
  6073.   disk!). He is a relative newcomer to Linux, installing RH4.0 February 1997 on
  6074.   his home PC and, encouraged, only a week later on his job PC. Now he runs 5.0
  6075.   at home, job soon to follow. Special Linux interests: LyX, Pascal (p2c),
  6076.   tcl/tk.
  6077.   
  6078.     Branden R. Williams
  6079.     
  6080.   Branden is Vice President of I-Net Solutions, Inc. (http://www.inetinc.net/).
  6081.   There he consults with several other companies doing UNIX system and network
  6082.   administration, security management, and system performance tuning. When he
  6083.   is not in the office, he enjoys sailing, camping, and astronomy.
  6084.     ________________________________________________________________________
  6085.   
  6086.                                  Not Linux
  6087.     ________________________________________________________________________
  6088.   
  6089.   Thanks to all our authors, not just the ones above, but also those who wrote
  6090.   giving us their tips and tricks and making suggestions. Thanks also to our
  6091.   new mirror sites.
  6092.   
  6093.   [INLINE] The news this month and last was gathered by Ellen Dahl. Amy Kukuk
  6094.   put the News Byte column together for me. Thanks to them both for good and
  6095.   needed help.
  6096.   
  6097.   Have fun!
  6098.     ________________________________________________________________________
  6099.   
  6100.   Marjorie L. Richardson
  6101.   Editor, Linux Gazette, gazette@ssc.com
  6102.     ________________________________________________________________________
  6103.   
  6104.   [ TABLE OF CONTENTS ] [ FRONT PAGE ] Back 
  6105.     ________________________________________________________________________
  6106.   
  6107.   Linux Gazette Issue 32, September 1998, http://www.linuxgazette.com
  6108.   This page written and maintained by the Editor of Linux Gazette,
  6109.   gazette@ssc.com
  6110.