Introduction to Linux
I've gotten a number of emails asking me about this or that or the other thing from people who are either just starting with Linux, or are considering it. It occurs to me, recalling back to my own days when I was fresh and the world was young, or something like that, that there doesn't seem to be any sort of intro guide to Linux. So here it is.
Introduction to this article
I like the home metaphor for your operating system. Under the home metaphor, your computer is a piece of land and your operating system is the house that is built on it. The metaphor does quickly reach its limits, but in the areas where it holds up are to be found important stuff. When you buy a piece of land with a home already built on it, you inspect the home thoroughly, see what it needs, what it has, and so forth. You don't lightly decide to buy a piece of land and take whatever home is on it by default, and neither should you do that with your computer. Selecting a computer can be very difficult, especially with salesmen pushing buzzwords on you and trying to explain why you need to put more money on his commission check. But like selecting a piece of land, you should thoroughly inspect the home that comes with it, make sure you feel comfortable with it, see to it that it will suit your immediate needs, your needs in the foreseeable future, and that it has good prospects for supporting your needs into the far future. Read a few reviews, spend some time learning about the issues, the pros and cons of each available operating system, and so forth. Don't just jump in blindly, for all the same reasons you don't jump in blindly when it's a real piece of land with a house on it.
For me, the answer is emphatically yes. For you, possibly, the questions on your mind are "How easy is it to use?", "How much work is it to maintain?", "How much does it cost?", "How much does it cost to fix if it breaks and I can't fix it?", and so forth. Here I'll try to answer your questions with a simple how-to.
It's an interesting question, especially when you come over from the Windows world. It's also very difficult to answer. And if you go ask in any given Linux forum, you'll get many conflicting answers and possibly start a flame war. Not much help there, I'm afraid. Here's a quick rundown of distributions I am confident that anybody new to Linux will be able to approach, use, and install with relative ease. Each has its pros and cons, and I am hardly qualified to discuss them.
- Redhat Linux
- The main issue with Redhat Linux is understanding the relation of the Fedora Core distribution to the Redhat distribution. As a new user, I don't see why you should have to figure this out, nor do I think it's worth your time or mine to discuss it here. Suffice it to say, Fedora Core is the end-user version of Redhat, and if you're interested in the Redhat brand on your home computer, then Fedora Core is what you're looking at.
- Debian Linux
- Debian Linux is volunteer-run and -driven, and is a highly reputable distribution. It has its own special development process and a package management system that is different from all others. The development process has proven itself, though, and Debian is an excellent distribution. As a non-profit distribution, it is in many ways philosophically motivated. So if you're not interested in getting philosophically involved with your computer, you might find Debian a little thick for your tastes. If it doesn't matter to you, you might consider Debian.
- Mandrake Linux
- I have a bias towards Mandrake, I should point out, since it's the distribution I use and I know it pretty well. I can testify to its stability, ease of use, and ease of administration with first-hand knowledge, and I can't do that with any other distribution. Mandrake targets end-users like you and me, and Mandrake makes money doing that, so they're the company most likely to be able to provide the kind of service you need. They also provide several levels of ownership for you to choose from, also based on your need.
- SuSE Linux
- At the time of writing, SuSE's future is uncertain. It was recently bought by Novell, and there's likely to be a shift in focus as a result of that. SuSE is the distribution people usually wind up with when Mandrake fails them for some reason or other. Like Mandrake, SuSE depends on end-users for its income, so it's likely to provide the best support for end-users out of any of them.
All of the distributions listed provide the same basic set of stuff. They each provide a kernel that works with a whole ton of hardware out-of-the-box. They each provide a package management system for managing all of the software, libraries, and so forth on your computer. They each provide their own graphical tools for administering your system, and they each provide their own installers. You can expect all of these tools to be comparable, with each one having its own strengths and weaknesses. You can also find live versions of each one (with the possible exception of SuSE?) that you can test-drive the distribution.
Generally, for hardware requirements, you can expect any machine capable of running Windows 98 or higher to be capable of running any modern Linux distribution. If you're dependent on ISA slots, you might need to use a 2.4 series kernel (more on this later), but otherwise you should be fine.
What you can expect during an installation
You can expect it to be different than anything you've ever done. Last I heard, Debian's graphical installer was still in beta status, but the others have mature graphical installers. Each one proceeds a little differently, but they all take care of the same stuff. They configure your graphical environment, setup hardware configuration, install a kernel, install a set of packages that the maker thinks you need, create a user and set the root password, partition your hard drive, and a few other things. Most of them will try to sell you something while you're installing.
This is the meat of the article, here. There are a few core concepts that a user running Linux needs to be aware of. These same concepts exist on all modern operating systems in one form or other, but any OS running a Linux (or other POSIX-compliant) kernel is modular in nature, and this fact quickly becomes evident.
X Windows is what provides your graphical interface, sort of. It's a complicated thing, so I'll try just giving an analogy instead of getting involved in a long discussion. You can google for more technical information if you want it.
X Windows is the hardest thing to draw an analogy about. Basically all it does is provide graphics to your monitor and receive input from the devices attached. It doesn't actually make any graphics, those are provided by other components. It also doesn't actually do any work, work happens on either side of it. So it's more like a telephone operator on the old switched network, just connecting wires from one house to the other as asked.
This is the big thing. A desktop environment is the easiest thing to explain. Microsoft Windows is a desktop environment. All the other layers are buried in there somewhere, but what you normally think of when you think Microsoft Windows are the components that make up a desktop environment. You think of what the windows look like, how you interact with them, how you open programs, browse your harddrive and/or the web, and so forth. POSIX operating systems have many desktop environments to choose from, and they can all exist side by side, and you can choose which one to run every time you login to your computer. There are two major ones, though, which we'll discuss here.
KDE is the first open source desktop environment, and it is the oldest still running. It is a tightly-integrated environment which has implemented all of the same features you're used to seeing in Microsoft Windows, and it also has much more. KDE frequently receives criticism for being "a lot like Windows", but I personally find that it is and it isn't. If you accept that Microsoft actually made some good user-interface design decisions, then it follows that when someone else also makes good user-interface design decisions, what they build will overlap with what Microsoft built. I highly recommend KDE because they don't seem to be capable of making a bad user-interface design decision, and I find all of the KDE applications to be easy to use, and easy to discover. The only caveat is that most KDE applications aren't quite finished in the sense that they all seem to be lacking in one or two pretty important features for the type of work the application does. This caveat has lessened greatly over the last couple of years, but you will find yourself using a KDE application and noticing that it's lacking some important thing that its Windows counterpart has.
GNOME is in every way the complete opposite of KDE, and appears to be quite schizophrenic to boot. I don't personally like GNOME, and this is my disclaimer. You should try it out and see if you like it, because there are many people that love GNOME and hate KDE, and there's got to be a reason for it even if I can't recognize it. But I find that GNOME doesn't feel so tightly integrated. The applications it has that are complete are wonderful applications (Evolution rocks and makes Outlook "not so good"). But unlike KDE, GNOME has gaping holes in the applications department. The ones it has are feature rich, and then it just doesn't have others at all. GNOME also tends to make user-interface decisions that appear to some of us on the outside to be Microsoft-centric. First they do something that looks like the only reason they did it was to be unlike Microsoft, then they do something that's a blatant rip of Microsoft. I could be wrong, but when you get right down to it GNOME has a lot of American corporate support that KDE lacks (while KDE has a lot of German corporate and government support, and support from pretty much all of Europe).
There are others, but they are optional. Most people swear by one or more desktop environments, and it is an area you should really experiment. My advice is to pick one and use it for awhile, and then if you're not happy with it try another, and so on.
Choosing a desktop environment
This is a hard choice to make, especially considering that distributors favor one or the other. The rule is, however, that if you use Debian, expect both GNOME and KDE to be well-supported, and expect the others to all be well supported. If you use RedHat, it's a GNOME distribution. If you use Mandrake or SuSE, they favor KDE in a big way. Keeping this in mind, when you install your operating system, choose the one that's most consistent with the distributor's comfort level. You can always change later if you want, and you'll get the best support from your distributor for the environment they want to support.
Since the world of Linux is more or less evenly split between KDE and GNOME programmers, you should make sure you install both KDE and GNOME. That's why they are not considered optional, because you may need to use programs written for GNOME under KDE and vice-versa, so you should definitely install both of them. The other desktop environments all use components from one or the other of KDE and GNOME, so you don't have to install any of them unless you want to use them. But if you use KDE, you still need GNOME installed for those few applications you need that use GNOME libraries.
You only need to know that the kernel is what makes the hardware work. There's lots of good stuff to learn about the kernel, and if you're interested you should learn it. Linux Standards Base does dictate a 2.4 series kernel, while the latest stable kernels are 2.6 series. Obviously the LSB has some catching up to do already. The 2.4 series kernel is responsive the same way Windows 2000 is, while the 2.6 kernel is responsive in a way that no Windows version can match. But when you get right down to it, as an end-user the only thing you need to know about your kernel is that it's name is Linux, and you should try to keep it up to date.
This is perhaps the only thing that you have to learn that is new to you. The other stuff is there in Windows, just dumbed-down, but package management is something Windows doesn't have at all that's anywhere near as advanced and useful as you'll find with Linux.
Simply put, all software comes in packages, just like all things that you buy. Under Windows you've probably gotten used to downloading random software packages off the web and installing them. Maybe you've noticed that some of them are hard to uninstall, and some of them don't uninstall at all, and still others install crap you don't want, but since they don't tell you you don't know about it. You don't do this with Linux. Instead, you use packages provided by your distribution maker. These packages will show you everything that they install, and since they use a standard method of installation, each package will install *and* uninstall, smoothly. But we've got something Windows doesn't have, which is package dependency. When you install a software package, it may depend on one or more other packages. This is good, because otherwise you wind up with the One Microsoft Way, which is to have as many copies of the *same* library as you have programs that use it. Over here in POSIX-land we keep all of our libraries and other shared objects in one place so that any program that needs them can find them. In the long run, it saves space and makes the system easier to maintain. When a library has a security hole, all of the applications that use it will have the same hole. To fix it you only need to update the library, and every application that uses it is fixed.
Each distribution has a way of dealing with package dependencies, and their methods are most reliable when you only use packages provided by the distribution. This isn't as big a deal as it sounds, since they are *all* very good about packaging up each and every open source project out there. Many commercial software developers also work with Linux distributors to make sure their software runs for users of the distribution. So the rule is, if you use Mandrake Linux, use software packaged by Mandrake. If you use Fedora Core, use software packaged by Fedora Core. If you use Debian, use software packaged by Debian. Simple, and easy to follow.
I realize it sounds crazy that you can't just install any piece of software you download, but you actually can. You just shouldn't do it because it's dumb, and it's dumb that there are operating systems that encourage this sort of behavior. You don't take any person you meet to bed with you, so why should you install any piece of software you download? SOrry for the sexual reference (well, not really), but it is the best possible metaphor for this. Don't be promiscuous with your computer and you'll keep it much cleaner than otherwise. And in this Information Age, the repositories of information must be kept in good working order for us to receive the fullest possible benefit of the Information Age.
What applications do you actually need? Well, it's pretty simple, really. The typical user wants an office suite, email client, web browser, a few games, and one or two specialized applications. With GNOME you should use OpenOffice.org, since GNOME's office suite (last I checked) was still missing a few applications. You'll want Evolution in place of Outlook, and GNOME has Epiphany as its own web browser. GNOME has a few games of its own, and there are other games available. For KDE you'll use either KOffice or OpenOffice.org, Kontact for your email client (you can use KMail as a stand-alone mail client if you don't want a PIM), Konqueror for a web browser, and a few games. Personally, I'm not finding Konqueror ready to replace Mozilla, so I'll keep using Mozilla for the time being. For specialized applications, you'll need to look around and fine what you need. Nearly everything you can possibly want is already written, but in varying stages of maturity. If you have money to spend on applications (and you should since you didn't have to buy a $500 office suite), you might want to kick some money at one of the projects you need to help get it a little farther along.
Linux has a game shortage, I kid you not. Armagetron is good, and there are a number of good games, but don't expect to find anything like the Sims. You might have to accept that you won't be able to play Windows games anymore, and that's fine. Really, it is. It's a chicken and egg problem, game developers don't want to support Linux because they don't think there's enough users, and people don't want to use Linux because they don't think there are any games. The second is a myth, but you might have to sacrifice specific games for Linux. Why don't you go to the park or something instead of sitting around playing computer games?
3d acceleration is a sore spot. NVidia supports their cards very well, so I recommend going that route. ATI comes and goes with their support. I'm using an ATI Rage Mobility M right now and it plain sucks, but I don't know if it's Linux's problem or just that it's an old, sucky laptop 3d accelerator.
Expect any and all PCI sound cards to work. Don't be surprised if your ISA sound card doesn't work, however. VIA's stuff is well-supported, but hardly high-end sound. ALSA, which provides drivers for sound hardware under Linux, supports pretty much everything under the sun these days, but if you have a rare or uncommon card, don't be surprised if it doesn't work. If you depend on sound for your livelihood, though, the professional sound cards are well-supported (or so I hear), since many ALSA hackers are also sound professionals or at least hard-core enthusiasts dependent on their sound cards.
Throw away any Winmodem you might have and buy something that works. Those winmodems were trash anyway, but they definitely won't work in Linux. Get an external modem that uses a COM port instead. Most USB modems work well, too.
If you have a digital camera, it's likely supported one way or another. The best kind of digital camera to have at this time is one that plugs in as a USB Mass Storage device, which gives you access to the files themselves. You might have to pickup a small adapter to access your camera's media directly, but you can generally expect your camera to work in a fashion that you can retrieve photos from it. Both GNOME and KDE have special software for the cameras that use special protocols, and the 2.6 kernel directly supports most of the rest of the cameras. When it's time to process the photos, you'll probably use the GIMP. Which is fine, the GIMP is a fine piece of software. If you're still on Windows you can download a windows build of it from somewhere and check it out.
Most hardware these days works with Linux. I've been able to get every webcam I've plugged in to work, most PCI boards of various shapes, sizes, and abilities, and pretty much anything else I've plugged in. You do need to do some advance research before buying something, but it's a simple matter of browsing some website's hardware listings and then googling the hardware with the word "linux" appended to your search terms. For example, use "canon i350 linux" to find out you need a special aftermarket driver to use that printer with Linux.
When it comes down to basic assumptions, though, get used to your computer treating you with respect. Windows makes the basic assumption that you are an idiot, and Linux does not dare make such an assumption. Instead, anytime you see a prompt that says "You need root priviledges to do this", don't go any further unless you are either extremely confident you won't break anything or you are willing to break something. That's all the second-guessing you'll see from your computer, because that's really all that's needed. As a regular user, you can't accidentally break the system, and by asking you to become the superuser in order to do some task the computer is essentially checking your credentials to make sure you know what you are doing. If you have the right credentials, it's not up to the computer to decide what you should do, that's up to you.