I had a friend who used to be an engineering manager at Intel, directing a team that designed the big interface chips that sit on the motherboard between an Intel CPU and the rest of the world. I imagine it was a challenging job (he didn't talk about it much), but he was a very patient fellow, and I suspect that he was probably a good manager. Many times, when faced with unexpected results while working on some complex problem, I'd see him sit back and smile where others would have banged on the equipment or cursed the operating system.
Then he'd say "Good—we're making progress!" It was his way of calming down and pointing out that if you are good at engineering, even an unexpected result can give you clues to help solve your problem; it's all in how you look at life.
Remembering that lesson, I'll take a deep breath here and announce that I am, indeed, making progress in installing Linux. Here's the story so far.
Nurse, Pass Me That Scalpel, Please
After I browsed through the Red Hat Linux 7 for Dummies book, I carefully removed my Windows hard disk drive and plugged in a brand-new hard drive, straight out of the box. My local office supply store, part of a large chain, usually has excellent prices on hard drives; 30 GB cost me well under $100. I popped in the Red Hat Linux 7 boot CD and powered up the PC. The BIOS tried the floppy drive, then the hard disk, and then the CD-ROM drive; it booted from the CD. Most PCs can do that nowadays; you might have to change some BIOS settings to get your PC to try the CD-ROM drive. If it hadn't worked, I would have tried the directions in Chapter 2 of the Dummies book for making a Linux boot diskette using Windows or DOS.
The CD's first boot screen was a text menu for installing or upgrading Red Hat Linux 7. There were a number of choices, but while I was reading them, the menu unexpectedly "timed out" and started installing Red Hat Linux 7 on my hard drive. I thought that was rather rude, but I let it go on, since it happened to be the right choice.
The installation process generated a long stream of very technical text messages, most of them rushing by too fast to read and understand. Some of them reported problems with the hard drive (probably because it was brand new, with no format or partitions), but it continued anyway. Soon it detected my PS/2-style mouse, and then it switched to a simple GUI which let me use the mouse to pick choices from graphical menus. The choices had to do with languages, keyboards, and mice.
Of course, I didn't remember the exact model mouse that I had, so I had to go off to find the original mouse documents. That was a warning of things to come:
At several times when installing Linux, you need to know the model number and options of various pieces of hardware in your PC. It's easiest to gather all that information in advance. You can get some of it from Windows, by right-clicking on the "My Computer" icon, choosing Properties | Device Manager, and telling it to print a "System summary." But some of the information will have to come from original product documents, as with my mouse; Windows didn't list the model of mouse—just that it was a PS/2 mouse, with a Logitech driver.
The next menu asked me what kind of installation I was doing. By using the online help, I figured out to tell it that I was doing an "Install" to a "Workstation"; there were a number of different choices. The Dummies book helped here, too, amplifying the explanations given in the online help system.
That menu led to a warning that the hard drive's partition table was corrupted. I wasn't surprised—being a new drive, it didn't have a partition table—and so I chose to initialize that drive anyway. The other choice was to skip that drive, which would probably have aborted the installation, since there were no other hard drives in the system. As it turned out, I made the correct choice, and subsequent menus asked me to make choices about partitioning the drive, setting my local time zone, adding Linux login accounts for the system administrator (always named "root") and at least one non-administrative user, choosing "packages" of GUIs and applications, and choosing my video monitor and display card.
Murk
Towards the end, the choices tended to get confusing; they didn't always list the exact model hardware that I had, and the instructions sometimes said that I could defer making some choices until after Linux was installed (which seemed to me that it might lead to a chicken-and-egg sort of problem). I began to suspect that I might end up trying the installation more than once.
I also noticed that the GUI used pushbuttons that were different than the usual Windows-style buttons; they relied on subtle shading differences to show whether something was selected or not. A few times, I almost made mistakes because it wasn't clear that some buttons weren't the usual "radio-style" buttons, where selecting one button deselects all others, and where one button must always be selected. Instead, zero, one or more buttons could be chosen. In Windows, the choices would have been made with check marks, not pushbuttons.
After it gathered enough information about what I wanted, Red Hat began actually using those choices to install Linux. This included formatting and partitioning the hard drive and installing the software packages. Those steps took 18 minutes.
Then it asked for a blank diskette, to create a Linux boot disk in case of emergencies. I gave it a diskette that was empty, but that had been used for Windows files. That was probably a mistake; much later, I tried booting with that diskette, but it wouldn't boot. Perhaps I should have used a freshly-formatted diskette instead.
Finally, it prompted me to remove the CD-ROM (even though it later tried to eject the CD-ROM itself), and it restarted the PC, booting the new Linux installation.
I Can't Hear You
While Linux was booting (accompanied by many screens of cryptic technical messages), I turned on my external amplifier and speakers. I was hoping to hear some sounds, but there were none. The default GUI desktop—called "Gnome"—did appear after I logged in, but it didn't make any sounds either.
At this point, I should briefly explain that Linux lets you use different GUIs.
The two most popular ones are "KDE" (which stands for "the K Desktop Environment"—I don't know what the "K" is for) and "Gnome" (which doesn't seem to stand for anything at all). There are plenty of other GUIs available, and you can even write your own if you wish, if you know how to program.
Every time that you login, you can choose which GUI to use. After some time, I came to prefer KDE over Gnome, because I could configure KDE to look and feel pretty much like Windows 9x— but that's getting ahead in this story.
Steering through Gnome's popup menus, I soon found an "Audio Mixer" application. I hoped that it would reveal that my sound card volume was turned down too low to hear, but instead it popped up an error message that said: "No mixers found. Make sure you have sound support compiled into the kernel."
Wandering in the Wilderness
Now, this is the point where my adventures really began. Over the next several days, I ran many utility programs, thumbed through the Dummies book a lot, read many documents and visited many Web sites as I tried to get my PC's motherboard sound system to work with Red Hat Linux 7. None of the applications, games, or multimedia programs would play sounds, and none of them could clearly explain why not.
I also tried to configure my modem, without luck. It's a USB modem made by Diamond, a well-known company, but I could not get Linux to recognize it. The same problems happened with my relatively new Wacom Graphire USB graphics tablet/mouse, and my old Mustek flatbed parallel-port scanner.
I was able to get my laser printer to work, after some time tussling with the Linux printing controls. In that case, there were two problems: First, my particular model wasn't listed, so I had to use the generic PostScript printer settings and dig up my HP documentation to check that I had the printing resolution set correctly. Second, the instructions didn't mention that I had to "restart the lpd printing daemon" before I would be able to print for the first time. (I figured that one out by remembering how I solved similar UNIX issues many, many years ago, when I was developing UNIX printer drivers for large industrial laser-based film recorders; Linux imitates UNIX, so my previous UNIX experience helped a lot.)
In the end, the printer worked, but it took a long time to print documents with graphics in them, and there were no control panels that let me easily control the printer's special features.
Time went by, and I learned that many things that we take for granted in Windows, such as the ability to play multimedia sound and movie files, are not necessarily ready for prime time in Linux. The basic operating system itself works and is quite reliable—but sound card support, fancy printer graphics, accelerated video displays, high-speed modems, graphics tablets, and any other fancy hardware must depend upon driver software created especially for that hardware; and those drivers aren't always provided with Linux.
Drivers
Windows needs drivers, too, of course; we are all familiar with installing Windows drivers for our fancy new accessories. You merely pop in the Install CD that came with your latest toy, and it autostarts, installs the Windows driver files, reconfigures Windows to recognize the new drivers, and perhaps restarts the PC. (At least, installing Windows drivers is that simple MOST of the time!)
The problem is that most PC accessories nowadays are targeted to work with Windows, so the manufacturers supply Windows drivers, not Linux drivers. If a device is supported by Linux, it's probably because some dedicated Linux programmer somewhere figured out how to write a device driver for it. But if your hardware is anywhere out of the ordinary; if it is very new; if it is very complex; or if the manufacturer jealously guards the technical details of programming the hardware, then you stand a definite risk that Linux doesn't support the hardware.
There are exceptions, of course. For example, Wacom supplies technical information about their graphics tablets to Linux programmers, and so there are Linux drivers for many of their tablets. Cirrus Logic, the makers of the Crystal sound chips that my motherboard uses, also supply technical advice to Linux programmers. So, for both of those devices, there are Linux programmers working on drivers, and as time goes by and Linux evolves, its support for those devices will improve. Later on, I'll list some Web sites you can search to find out what hardware is supported by your Linux distribution.
Changing Horses in Midstream
But let's get back to the action. Although I got the printer working, and although the display, keyboard, serial mouse, and disk drives all worked, I was very irritated about the lack of sound. The technical clues indicated that Linux recognized the presence of the Crystal sound chip, but for some reason Linux refused to control the chip. Since I wasn't yet actually using Linux for anything important, I decided to see if the sound problem lay in Red Hat Linux 7. I had an older, never-used Debian Linux distribution CD that I had picked up at a user's group meeting some time ago, so I tried to install it, completely overwriting the Red Hat Linux 7 installation. And in doing so, I learned an important lesson for Linux newcomers: Always choose a distribution that has a good reputation for having a "friendly" installer. The Debian Linux installer was hopelessly arcane for a newcomer. I gave up on it after just a few minutes.
Next, I dug out a slightly dated Linux Mandrake distribution (version 6.5) that I had been given a few years before. Its installer was usable, although it was still pretty intimidating. That version of Linux didn't support my Crystal sound chip either—but at least it told me that it recognized the chip and that it knew that the heart of Linux (its "kernel") couldn't support that particular chip.
It also told me that I could look into the "ALSA" project to find support for the Crystal sound chips. I did, and I discovered that sound support in Linux is currently divided into two camps. The older method is called "OSS." It's built into most versions of Linux, regardless of the distributor, and so most of the Linux GUIs support OSS. So, it's more or less a standard. The problem is, it doesn't support some sound cards and chips— including the one on my PC's motherboard.
Of course, others have noticed the problems with OSS, and, since Linux is a wide-open software architecture, some daring programmers have decided to create their own method for using sound cards and chips. "ALSA" is the "Advanced Linux Sound Architecture" effort; it aims to support more sound gear than OSS, and to do a better job than OSS does. It even claims to support the Crystal chip in my PC. And for all I know, ALSA does support it; but I don't know that for a fact. You see, when I downloaded the ALSA support files for my chip, I found that they are supplied as "source code," not as ready-to-use driver files. A "source code" file contains the actual C programming instructions to make an executable program—it's not the actual executable program itself. To use the source code, you have to have your Linux system set up to "compile" the source code, you have to know how to compile it, and you have to know how to install and configure the executable files you create by compiling the source code. It's part of what programmers do for a living, and while it's not impossible for a non-programmer to do, given careful instructions and some luck, it's also not something most beginners or non-programmers want to get involved in.
It's the same as the difference between having the recipe for brownies, and having a nice big plate of brownies, ready to eat. Some folks don't really want to bake their own brownies, and some folks don't really want to reprogram their Linux system in order to use their PC hardware.
Batteries Not Included
Of course, being a programmer, I went back and checked whether the Dummies distribution of Red Hat Linux 7 came with the necessary programming tools, such as "make," "gcc," and a current set of "libraries" (these are the programmer's equivalent of pots, pans, spatulas, ovens, and so on). Here I discovered a real shortcoming of the Dummies version of Red Hat Linux 7: It didn't contain all of the bits and pieces that I would need once I really got into modifying the Linux system. Specifically, it was missing the "Linux source code." I found a place in the book where I could send in a coupon and some more money to receive more CDs with the source code, but I wasn't too happy about waiting for the CDs to be mailed to me, and I wasn't even too sure that I wanted to continue with Red Hat Linux 7, or with ALSA. I decided to finally give up on the Dummies distribution; I did not order the extra CDs.
Now, while all this was going on, I also found out more about my Wacom tablet:
It is possible to use it with Linux, if you go to a certain amount of technical trouble to find and install the drivers that you will need; but the tablet support is not already built into Linux. Worse, since the tablet support is not built into Linux, only a few Linux programs can use the Wacom tablet; most don't use it now, and will never use it at all unless their creators modify their programs.
Scanners are a similar story. There is a project called "SANE" that is trying to support scanners in Linux, but the particular Mustek scanner that I have isn't supported. Maybe it will be supported some day; maybe not.
My USB modem isn't supported, either; as far as I could tell, Diamond doesn't supply Linux drivers for it, and nobody else has written one. Later on, I learned that USB modems in Linux seem to be a trouble spot in general.
I Think I Need a Vacation
When all of this finally sank in, I reminded myself that I was making progress, and then I deliberately put Linux out of my head for a while. I went for long walks in the brisk winter air, I contemplated the stars at night, and gradually my blood pressure returned to normal.
A few days later, I stopped in the Linux section of a large bookstore. Mixed in with the books were several different full Linux distributions of the software on CD-ROM, including Red Hat Linux 7 and Mandrake Linux 8.1. I was surprised that Mandrake seemed to be so far ahead of Red Hat, so I checked the Mandrake box to see its release date. It was quite new—November, 2001—but even more interesting was that the box explicitly said that it supported the Crystal sound chips, and all Wacom tablets. This particular box was the Mandrake "Power Pack Edition 8.1." It contained 7 CD-ROMs, including the full source code to Linux and several commercial applications. It also contained StarOffice from Sun, an office tools suite that I knew I wanted because of its reputed compatibility with Microsoft's office tools.
All of those features made the Mandrake 8.1 package look pretty good, compared to the wimpy Red Hat Linux 7 distribution that had come with the Dummies book, so I bought it and tried it out.
Newer is Better
Right away, I learned another important lesson for Linux beginners: Try to install the most recent non-beta distribution of Linux that you can find. I was surprised (and pleased) to see that this recent Mandrake installer was much smoother and easier to use than installers that were just a little older.
The same was true of the GUIs supplied with the distribution; and it supported more kinds and models of hardware, too. It was quite obvious that the Linux distributions are still evolving and improving very quickly.
Although the installation was smoother, it wasn't flawless. The installation process automatically started up a Network Configuration Wizard. It detected my PC's Ethernet card, and so it started asking me quite a few questions about configuring my network. It seemed to think that I would be using the Ethernet interface to connect to the Internet. While that might be true in a corporate setting, it's not so likely in a small office; instead, a telephone modem would probably be used to connect to the Internet, and Ethernet would be used to tie several PCs together in a small local network. The Wizard asked about telephone modems, too, further muddying the picture.
At about that time, I realized that my USB modem wasn't being detected and installed. I found some very small print on the side of the package's box that said that the distribution "...supports classic modem...connections (except Winmodem and USB modems)." I wasn't surprised about the lack of support for Winmodems; they have always been a pain, in general, even in Windows. They are made from a little bit of incredibly wimpy hardware and a lot of specialized Windows software. The hardware is so weak that it can't do the job of a normal modem; instead, it relies on the CPU and the special software to imitate a normal modem. Winmodems were created to save money for the manufacturers, since it costs them more to build hardware into a modem than to distribute a CD of software.
But I was surprised about the lack of support for USB modems. Apparently, full USB support isn't a given in Linux yet, either. The box did say that USB Zip drives were supported, along with most USB mice, keyboards and cameras. I've got a nice little Intel USB camera and two Sony cameras that have USB interfaces that make them look like CD-writer drives (one actually has a miniature CD-writer drive in it); I made a note to look into trying them out in the future.
For the time being, I decided to ignore the modem issue (I figured I could always dig out an old external serial modem and plug it into a serial port when I finally hooked the system up to the Internet). I slogged through the Network Configuration Wizard, leaving most of its questions about my Ethernet system unanswered. It didn't seem to mind that; but later on in the installation, the Wizard came back again. I did the best that I could and continued further into the installation.
I thought that the printed Installation and User Guide booklet that came with this distribution could have been a lot more helpful about the network installation questions. It didn't give any details; instead, it said things like "This step is generally ignored for Recommended mode" and "Simply make sure that you have all the parameters from your Internet Service Provider or system administrator." It also said to consult the manual chapter about Internet connections—but the Reference Manual didn't have a chapter on Internet connections. In fact, its chapter on LAN Server Configuration Wizards said "Configuring and bringing up the Internet connection (if you have one) is out of the scope of this chapter."
This distribution of Linux did know how to support both of my printers (a rock-solid HP LaserJet 4050N and a very nice, very fast medium-format HP DeskJet 1220C color printer). I was able to print test pages on both of them during the installation process; but they took a very long time to print full-page photographs (the LaserJet took more than ten minutes; I was astounded, since it takes just a few seconds to print a page of that quality under Windows 9x!). My best guess was that Linux was using some sort of generic printer drivers that weren't really optimized for those printers.
Near the end of the installation, Linux detected and reported the correct Crystal sound chip, to my delight (although it didn't make any sounds at that point). Then it asked about my graphics card, let me choose the screen resolution and color depth, told me that installation was complete, and rebooted the system.
Are We There Yet?
I thought that, at last, I would be able to login, fire up a GUI, and try out the sound card. But the installation wasn't really complete; a "First Time Wizard" popped up after the reboot, and asked me just a few more questions.
These questions were about personal information, mail configuration, preferred GUI, passwords, and so on. Then it fired up the Network Configuration Wizard again—twice!
When I finally canceled my way past those Wizards, I got the reward I had struggled towards for so long: my speakers played some music, and I was logged in!
Of course, I still had to finish one other installation: I had told the installer that I wanted to install the package containing the StarOffice tools, from Sun Microsystems. I'll talk about those tools in a later column. Sun is famous for championing the Java language and run-time environment, so I was surprised to see a message that said that no Java Runtime Environment was found, so Java and JavaScript would not be supported. The StarOffice installation seemed to finish properly anyway. I logged out, logged back in again, smiled at the music, fired up StarOffice, created and printed a simple test document, and called it a day.
More Hardware Questions
In the week that followed, I found several hardware configuration tools that could be accessed from the GUI. Since I had very little to lose except my time and my patience, I used the tools to try doing something that would be simple in Windows: changing the current resolution of the screen. I came very close to reinstalling Mandrake all over again. It seems that some of the configuration tools and control panels override each other, fighting about the screen resolution, the monitor model, and the color depth. By chance I found one tool ("XFdrake") that seemed to leave things the way I set them.
I'm sure that I was doing things incorrectly (the feeling was a familiar one that I've encountered more than once in working with computers over the years!), but I'm also sure that the system shouldn't really have configuration tools that conflict with each other.
The root cause of these conflicts, I believe, is that Linux, like UNIX, isn't inherently a multimedia operating system. It was developed based on simple ideas about being able to send and get streams of characters to and from text-mode terminals and modems, and getting and sending blocks of data to and from disk drives and tape drives. All of this business of using graphical displays, mice, sound cards, GUIs, and so on came to UNIX much later, and was added as layers on top of UNIX (and hence, Linux) by various programmers, not all necessarily working with the same goals. And so there are different tools all affecting the PC hardware, sometimes causing conflicts.
It's the same with plug-and-play concepts such as USB devices: UNIX wasn't originally designed for hardware that could be reconfigured while it was running. Even sticking a floppy diskette into a drive, or popping a tape or a CD into a drive, required the user to issue special commands to "mount" the new diskette, tape, or CD before it could be used (you also had to "unmount" it when you were done with it, before you removed it from the drive, or your data could come unraveled). And in fact, in many distributions of Linux, you still have to issue those commands.
Grinding the Gears
All of this means that installing and running Linux is perhaps a lot more like using a stick shift than using an automatic transmission. You've got a lot more learning to do, if you choose a stick shift; some people never learn to use one.
I'll continue exploring these basic installation and hardware issues for at least one more column. For now, I'll close with this advice on choosing a distribution:
First, examine a boxed software distribution, not a freebie CD or a partial set of CDs included with a Linux book (sorry, Dummies authors!).
Before you buy the distribution, read the box carefully to see what hardware is required, what is supported, what version of Linux is included, whether all of the Linux "source code" CDs are included, what third-party applications such as StarOffice are included, and so on. Then see if the box lists a Web site that you can visit to check the list of hardware supported by this distribution.
Finally, put the box back on the shelf and go visit that Web site before you buy the box! You may find that some important part of your system isn't well-supported yet. While you're at the Web site, see if a newer distribution is going to be released soon; the wait might very well be worthwhile.
I have listed a few Web sites that I found that can help you figure out whether your particular hardware is supported.
Note, please, that I don't think that all of the information on the package boxes and on the Web sites is as complete and accurate as it should be.
For example, while the box for the Mandrake PowerPack Edition 8.1 distribution claimed to support my Wacom tablet, it certainly seems as if my tablet wasn't automatically installed; I'll have to do some tinkering to get it to work. (But that will be a good topic for a future column!)
A Few Linux Web Sites that I've Used for Installation Problems
Red Hat Linux, Mandrake Linux, Linux (in general), Advanced Linux Sound Architecture, Linux Printing, Linux USB, Wacom Tablets.
Good – We're Making Progress!
It's been a long process, and this has been a long edition of the column. I've got Linux installed well enough to discover plenty more issues that need exploration. I'll continue next month. Right now, I think I'll go get some fresh air and remember how patient my engineering friend always was.