Difference between revisions of "Compiling a kernel"

From Linuxintro
imported>ThorstenStaerk
imported>ThorstenStaerk
Line 1: Line 1:
 
This is an example how to compile a Linux kernel. It has been tested for SUSE Linux 10.2 and kernel 2.6.21, but should work same or similar for every combination.
 
This is an example how to compile a Linux kernel. It has been tested for SUSE Linux 10.2 and kernel 2.6.21, but should work same or similar for every combination.
  
 +
= Check prerequesites =
 
* Make sure you have a compiler installed
 
* Make sure you have a compiler installed
 
  yast -i gcc
 
  yast -i gcc
 +
 +
= Get the code =
 
* Download the kernel from ftp.kernel.org
 
* Download the kernel from ftp.kernel.org
 
  wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2
 
  wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2
Line 9: Line 12:
 
* unpack the kernel for the second time
 
* unpack the kernel for the second time
 
  tar xvf linux-2.6.21.tar
 
  tar xvf linux-2.6.21.tar
 +
 +
= Build it =
 
* configure the kernel
 
* configure the kernel
 
  cd linux-2.6.21
 
  cd linux-2.6.21
Line 17: Line 22:
 
* compile the drivers
 
* compile the drivers
 
  make -j4 modules
 
  make -j4 modules
 +
 +
= Install it =
 
* install the drivers
 
* install the drivers
 
  make modules_install
 
  make modules_install

Revision as of 07:30, 7 February 2009

This is an example how to compile a Linux kernel. It has been tested for SUSE Linux 10.2 and kernel 2.6.21, but should work same or similar for every combination.

Check prerequesites

  • Make sure you have a compiler installed
yast -i gcc

Get the code

  • Download the kernel from ftp.kernel.org
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2
  • unpack the kernel
bunzip linux-2.6.21.tar.bz2
  • unpack the kernel for the second time
tar xvf linux-2.6.21.tar

Build it

  • configure the kernel
cd linux-2.6.21
make oldconfig
  • answer some un-understandable questions
  • compile the kernel, note: on a two-CPU VMWare virtual machine with 2.4 GHz, this lasted 19m28.605s
make -j4
  • compile the drivers
make -j4 modules

Install it

  • install the drivers
make modules_install
  • install the kernel
cp arch/x86_64/boot/bzImage /boot/vmlinuz-2.6.21

This will install the kernel for the x86_64 architecture.

  • prepare the initial ramdisk
cp System.map /boot
mkinitrd

This will build an initial ramdisk for all kernels contained in /boot.

  • add an entry to the bootloader. Let's take grub's /boot/grub/menu.lst:
title 2.6.21-selfcompiled
   root (hd0,0)
   kernel /boot/vmlinuz-2.6.21 root=/dev/sda1
   initrd /boot/initrd-2.6.21