How do I compile a kernel?
( Also see a worked example of building a 3.3.6 Linux kernel in BuildLinux33 ).
(The following instructions assume we are installing version 2.6.0 of the kernel, replace all instances with the version you are trying to build. These instructions are also x86-specific; other architecture's build procedures may differ.)
Download your tarball from the index page at http://kernel.org , which links to the latest versions. If you are using FTP, go to ftp.kernel.org/pub/linux/kernel/[version] -- these subdirectories all contain an empty file named LATEST_IS_[version] to help you find the latest. Kernel.org has almost-complete kernel archives back to version 0.99 if you're feeling really adventurous.
Unpack the tarball in your home directory. If you're planning to do a lot of compiling and installing kernels (and other good stuff), you may want to read the Note on /usr/src at the bottom of this page first.
Become root to be able to install modules and kernel. Everything before this point can and should be done as a normal user, there is really no need to be root to compile a kernel. It's actually a very bad idea to do everything as root because root is too powerful, one single mistake is enough to ruin your system completely.
title=Linux 2.6.0 root (hd0,1) # or whatever your current root is kernel /boot/vmlinuz-2.6.0 root=/dev/hda1 # or whatever...
title=My very latest kernel install root (hd0,1) # or whatever your current root is kernel /boot/vmlinuz root=/dev/hda1 # or whatever...
If you get modversion problems (symbols ending in _Rxxxxxxxx), have a look at this question in the linux-kernel mailing list FAQ to solve the problem.
Still not getting it? Try this more indepth tutorial
If you're just trying out this procedure, do the unpacking and building in your home directory as discussed above. In a professional environment, though, the source would be stored in /usr/src or /usr/local/src, where compiling would also be done. To allow this, and at the same time avoid becoming root for the entire procedure, use your favorite GNOME or KDE utilities to create a group "devel" (or "hack" or whatever) and add yourself to that group. Then change the group owner of /usr/src to the new group and grant write privileges to the group.
That way you can unpack the kernel tarball into /usr/src (or whatever) and configure and build there without doing everything as root. Of course, you'll still need to sudo or become root when you install the new kernel and edit the lilo/grub configuration files.