2 Some questions that usually come up before anything else

Contents of this section

2.1 What does the kernel do, anyway?

In Unix, the kernel does a lot of things. First, it does all of that memory management for all of the running programs (processes), and makes sure that they all get a fair (or unfair, as the case may be) share of the processor's cycles. In addition, it provides a nice interface for the aforementioned programs to talk to your hardware.

Is that it? Well, it is a little more complicated, but it won't be discussed in detail here.

2.2 Why would I want to upgrade my kernel?

Newer kernels generally offer more the ability to talk to more kinds of weird hardware (ie, they have more device drivers), they can have better process management, they can run faster than the older versions, they could be more stable than the older versions, and they fix silly bugs in the older versions. Most people upgrade kernels because they want the device drivers and the bug-fixes.

2.3 What kind of hardware do the newer kernels support?

See the Hardware-HOWTO. Alternatively, you can look at the ``config.in'' file in the linux source, or just find out when you try ``make config.'' ``make config'' will allow you to see all hardware supported by the standard kernel source code, but not everything that linux supports; many common device drivers (like PCMCIA drivers and some tape drivers) are loadable modules maintained and distributed seperately.

2.4 What version of gcc or libc do I need?

Linus recommends this in the README in the linux source. If you don't have at least that version, the new distribution of gcc should tell you if you need to upgrade your libc. Both of these aren't really scary operations, but do follow the instructions.

2.5 What's a loadable module?

These are parts of the kernel (device drivers, usually) which aren't compiled into the kernel. One compiles them separately, and can insert and remove them into the running kernel just about any time. This has become a preferred way of adding things onto the kernel, since it's obviously more modular. Many popular device drivers, such as the PCMCIA drivers and the QIC-80/40 tape driver, are loadable modules.

2.6 How much disk space do I need?

It depends on a few things. First off, the compressed linux source was 1.66 megs at version 1.1.45. You'll usually want to keep this around. Uncompressed, that was about 8 megs. But that's not the end -- you'll need more to actually compile the thing. This depends on how much junk you've got configured into your kernel. For example, on my 386, I've networking, the 3Com 3C503 driver, and five filesystems configured, and it takes 16.2 megs. Adding the compressed linux source, you have about 18 megs for this particular configuration. On another system, without network device support (but still with networking support), and sound card support, it takes 12 megs. So, in general, if you've got a lot of hardware, make sure that you have a big enough hard disk in that mess..

2.7 How long does it take?

For most people, the answer is, ``kind of long.'' The speed of your processor is and the amount of memory you have ultimately determines the time, but there's a small bit to do with the amount of stuff you've got configured into the kernel. On a 486DX4/100 notebook with 16 megs of RAM, on a kernel with five filesystems, networking support, and sound card drivers, it takes under 20 minutes. On a 386DX/40 (8MB RAM) with a similar configuration, it's about 1.5 hours. (meaningless aside: I know someone with a 386SX/16 w/4MB RAM who compiles his kernels overnight (it usually takes longer (yes, I have told him to get a real computer)))

Next Chapter, Previous Chapter

Table of contents of this chapter, General table of contents

Top of the document, Beginning of this Chapter