New HOWTO: The Linux Kernel HOWTO - page 4
Table of Contents
3. Important questions and their answers
3.1. What does the kernel do, anyway?
The Unix kernel acts as a mediator for your programs and your
hardware. First, it does (or arranges for) the memory management for
all of the running programs (processes), and makes sure that they all
get a fair (or unfair, if you please) share of the processor's cycles.
In addition, it provides a nice, fairly portable interface for
programs to talk to your hardware.
There is certainly more to the kernel's operation than this, but these
basic functions are the most important to know.
3.2. Why would I want to upgrade my kernel?
Newer kernels generally offer the ability to talk to more types of
hardware (that is, 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.
3.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'.
This shows you all hardware supported by the standard kernel
distribution, but not everything that linux supports; many common
device drivers (such as the PCMCIA drivers and some tape drivers) are
loadable modules maintained and distributed separately.
3.4. What version of gcc and libc do I need?
Linus recommends a version of gcc in the README file included with the
linux source. If you don't have this version, the documentation in the
recommended version of gcc should tell you if you need to upgrade your
libc. This is not a difficult procedure, but it is important to
follow the instructions.
3.5. What's a loadable module?
These are pieces of kernel code which are not linked (included)
directly in the kernel. One compiles them separately, and can insert
and remove them into the running kernel at almost any time. Due to its
flexibility, this is now the preferred way to code certain kernel
features. Many popular device drivers, such as the PCMCIA drivers and
the QIC-80/40 tape driver, are loadable modules.
3.6. How much disk space do I need?
It depends on your particular system configuration. First, the
compressed linux source is nearly 14 megabytes large at version 2.2.9.
Many sites keep this even after unpacking. Uncompressed and built
with a moderate configuration, it takes up another 67 MB.
3.7. How long does it take?
With newer machines, the compilation takes dramatically less time than
older ones; an AMD K6-2/300 with a fast disk can do a 2.2.x kernel in
about four minutes. As for old Pentiums, 486s, and 386s, if you plan
to compile one, be prepared to wait, possibly hours, days..
If this troubles you, and you happen to have a faster machine around
to compile on, you can build on the fast machines (assuming you give
it the right parameters, that your ulilities are up-to-date, and so
on), and then transfer the kernel image to the slower machine.