Introduction
If you have completed the Configuring a New Kernel guide, then you are ready to start the process of compiling the kernel. The kernel takes a while to compile, although the time needed to compile will vary from machine to machine. The amount of RAM on the system is just as important as the speed of the processor.
For example, on my old machine, a 200 MHz Pentium Pro with 90 MB of RAM, compiling the kernel takes about 20 minutes. Usually, during the make zImage step, I get an error message that says, "System is too big." Running the make bzImage command fixes this problem, which I'm guessing stems from not having enough RAM and swap space. However, on my new machine, an 850 MHz Athlon with 256 MB of RAM, compiling the kernel takes about 5 minutes (no kidding) and I don't get the "System is too big" error.
Compiling the Kernel
make dep - This step identifies kernel dependencies so that they will be resolved at compile time.
make clean - This step removes any old object files from previous builds. Even if you haven't compiled a kernel before, this step only takes a second and doesn't do any damage.
make zImage - This step actually compiles the kernel. If you get a message about the system being too big, try using the make bzImage command. This results in the kernel being named bzImage instead of zImage, but it will still be located in the /usr/src/linux directory. This step will take some time to complete..
make modules - This step compiles all the modules that the kernel may need to use in the future, such as the network and sound card drivers. This step will take some time to finish.
make modules_install - This step moves the module object files into the correct directory.
make install - This step will move the new kernel and its associated files into the correct directories on your system.
The previous step is supposed to modify your /etc/lilo.conf file to boot from the new kernel. However, it frequently fails to add the new kernel to the file! So, you need to modify the /etc/lilo.conf yourself.
For example, if your old kernel was 2.2.14, your current /etc/lilo.conf looks something like the following:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.2.14
label=linux
read-only
root=/dev/hda5
other=/dev/hda1
label=nt
Continuing with the example, let's say that you installed and compiled the 2.2.16 kernel. You will need to add another stanza to the /etc/lilo.conf file so that it looks something like:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.2.16
label=linux
read-only
root=/dev/hda5
image=/boot/vmlinuz-2.2.14
label=failsafe
read-only
root=/dev/hda5
Notice how we have renamed the label for the 2.2.14 to failsafe. This is so that if there is a problem of some kind with the new kernel, you can easily revert back to the old kernel. At the very least, this should allow the machine to boot so that you can fix whatever problems may have occured.
/sbin/lilo - Running this command will make the changes to /etc/lilo.conf take effect.
Now you're done. Sit back, cross your fingers, and reboot! Pay attention to the messages that scroll across as the kernel is booting. If there is a problem loading any modules, you will probably see some warning messages displayed. They scroll by quickly, so watch carefully. After your machine has rebooted, spend a few minutes checking to make sure all the devices like the network and sound cards work.