j2c-s2c.com » Informatique » Linux » Compiller un noyau

Compilation d'un noyau sur un système SMP

Avant de compiler le noyau, il faut récupérer les sources (on travail sur Débian):

server:/# apt-get install kernel-package
server:/# apt-get install kernel-source-2.6.8
server:/# apt-get install kernel-headers-2.6.8-2-686-smp

On décompresse le noyau

server:/# cd /usr/src
server:/usr/src# bzip2 -d kernel-source-2.6.8.tar.bz2
server:/usr/src# tar xvf kernel-source-2.6.8.tar

Puis il faut créer un lien symbolique entre les sources et un repertoire "linux" :

server:/usr/src# ln -s kernel-source-2.6.8 linux
server:/usr/src# ll
total 191500
drwxr-xr-x  16 root root       496 2005-08-18 23:35 kernel-headers-2.6.8-2
drwxr-xr-x   4 root root       784 2005-08-19 23:17 kernel-headers-2.6.8-2-686-smp
drwxr-xr-x   3 root root        72 2005-08-18 23:35 kernel-kbuild-2.6-3
drwxr-xr-x  18 root root       704 2005-05-19 12:52 kernel-source-2.6.8
-rw-r--r--   1 root root 195901440 2005-05-19 12:53 kernel-source-2.6.8.tar
lrwxrwxrwx   1 root src         19 2005-08-19 23:17 linux -> kernel-source-2.6.8

On verifie que linux n'est pas un lien rompu

On passe maintenant dans le repertoire linux

server:/usr/src# cd linux

On va maintenant paramétrer le nouveau noyau avec un générateur

server:/usr/src/linux# make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  -fPIC scripts/kconfig/zconf.tab.o
  HOSTLLD -shared scripts/kconfig/libkconfig.so
  HOSTLD  scripts/kconfig/mconf
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status

>> Unable to find the Ncurses libraries.
>>
>> You must install ncurses-devel in order
>> to use 'make menuconfig'

make[2]: *** [scripts/lxdialog/ncurses] Error 1
make[1]: *** [menuconfig] Error 2
make: *** [menuconfig] Error 2

Apparemment, il manque un paquet, c'est pas grave.. on l'installe

server:/usr/src/linux# apt-get install libncurses5-dev

On rééxecute l'installation

server:/usr/src/linux# make menuconfig 

Ce qui donne le menu ncurse suivant

Linux Kernel v2.6.8-2-686-smp Configuration
 ---------------------------------------------------------------------------------
  +------------------------ Linux Kernel Configuration ------------------------+
  ¦  Arrow keys navigate the menu.  <Enter> selects submenus --->.             ¦
  ¦  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,    ¦
  ¦  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.        ¦
  ¦  Legend
: [*] built-in  [ ] excluded  <Mmodule  < > module capable        ¦
  ¦ 
+------------------------------------------------------------------------+ ¦
  ¦ ¦             Code maturity level options  
--->                          ¦ ¦
  ¦ ¦             General setup  
--->                                        ¦ ¦
  ¦ ¦             Loadable module support  
--->                              ¦ ¦
  ¦ ¦             Processor type 
and features  --->                          ¦ ¦
  ¦ ¦             Power management options 
(ACPIAPM)  --->                 ¦ ¦
  ¦ ¦             Bus options 
(PCIPCMCIAEISAMCAISA)  --->            ¦ ¦
  ¦ ¦             Executable file formats  
--->                              ¦ ¦
  ¦ ¦             Device Drivers  
--->                                       ¦ ¦
  ¦ ¦             File systems  
--->                                         ¦ ¦
  ¦ ¦             Profiling support  
--->                                    ¦ ¦
  ¦ 
+----------(+)-----------------------------------------------------------+ ¦
  
+----------------------------------------------------------------------------¦
  ¦                      
<Select>    < Exit >    < Help >                      ¦
  
+----------------------------------------------------------------------------+

Utilisez cette interface pour paramétrer votre noyau, à la fin, n'oubliez pas de sauver le fichier de config (.config)

Une fois revenu à la console, on nettoie une éventuelle compilation précédente

server:/usr/src/linux# make clean
CLEAN   include/asm-i386/asm_offsets.h

On crée l'image du noyau en SMP donc je met 3 (2CPU + 1 pour le temps libre..)

server:/usr/src/linux# make bzImage MAKE="make -j3"
 CHK     include/linux/version.h
  UPD     include/linux/version.h
  SYMLINK include/asm -> include/asm-i386
  SPLIT   include/linux/autoconf.h -> include/config/*
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  HOSTCC  scripts/genksyms/genksyms.o
...

  OBJCOPY arch/i386/boot/vmlinux.bin
  BUILD   arch/i386/boot/bzImage
Root device is (253, 0)
Boot sector 512 bytes.
Setup is 4831 bytes.
System is 1152 kB
Kernel: arch/i386/boot/bzImage is ready

Une fois cette étape de terminée.. on lance la compilation des modules

server:/usr/src/linux# make modules MAKE="make -j3"
...
server:/usr/src/linux# make modules_install MAKE="make -j3"

ça y est .. c'est compilé..


Aucun commentaire - VOUS NE POUVEZ PAS POSTER DE COMMENTAIRES = votre IP n'est pas valide (spam ?)

.: Dernière mise à jour le 19/07/2008

Conception et design Jérôme CROCHET © 2000 - 2008 · j2c-s2c.com · Tous droits réservés.

Votre IP : 38.103.63.59 () - Page générée en 0,5698 s

Toute diffusion, même partielle de ce document, doit être soumise à une autorisation écrite préalable de son auteur.

Attention : Toutes les tentatives d'attaque envers ce serveur sont enregistrées, une plainte pourra être déposée.

miam