KernelNewbies
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Kernel Hacking

  • Frontpage

  • Kernel Hacking

  • Kernel Documentation

  • Kernel Glossary

  • FAQ

  • Found a bug?

  • Kernel Changelog

  • Upstream Merge Guide

Projects

  • KernelJanitors

  • KernelMentors

  • KernelProjects

Community

  • Why a community?

  • Regional Kernelnewbies

  • Personal Pages

  • Upcoming Events

References

  • Mailing Lists

  • Related Sites

  • Programming Links

Wiki

  • Recent Changes

  • Site Editors

  • Side Bar

  • Tips for Editors

  • Hosted by WikiWall

Navigation

  • RecentChanges
  • FindPage
  • HelpContents
Revision 2 as of 2008-12-29 02:34:10
KernelNewbies:
  • FAQ
  • KernelCompilation

How do I compile a kernel?

(These 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

         tar xivf linux-2.6.0.tar.bz2
  • (Replace xivf with xzvf if you downloaded the .gz)
  • cd into the linux directory. You'll now need to configure the kernel to select the features you want/need. There are several ways to do this..
    1. make config
      • Command line questions.
    2. make oldconfig
      • (Useful only if you kept a .config from a previous kernel build. With the newest kernels, the .config of the currently-running kernel is used by default if it's available, so you usually won't need this feature.)
    3. make menuconfig
      • (ncurses based)
    4. make gconfig
      • (GTK+ based X-Windows configuration)
    5. make xconfig
      • (QT based X-Windows configuration)
  • Now we can build the kernel (for older kernel like 2.4.x first build the dependencies with "make dep").

         make
  • Wait. When its finished, it will have built both the kernel (bzImage) and the modules (for older kernels like 2.4.x, you need to run "make bzImage ; make modules").
  • 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.
  • Install the modules.

         make modules_install
  • Install the new kernel..

         make install 

If your distribution uses lilo:

  • Edit /etc/lilo.conf, and add these lines...

         image = /boot/vmlinuz-2.6.0
         label = 2.6.0
  • Also copy your root=/dev/??? line here too.
  • Run /sbin/lilo, reboot, and enjoy.

If your distribution uses grub:

  • Edit /boot/grub/grub.conf:

          title=Linux 2.6.0
          root (hd0,1) ''#or whatever your current root is ''
          kernel /boot/vmlinuz-2.6.26 root=/dev/hda1 ''# or whatever ''

If you get modversion problems (symbols ending in _Rxxxxxxxx), have a look at [http://www.tux.org/lkml/#s8-8 this question] in the linux-kernel mailing list FAQ to solve the problem.

Still not getting it? Try this [http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html more indepth tutorial]


["CategoryFAQ"]

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01