Command disabled: index
 


====TP: Compilation du noyau====
===Vérifier les pré-requis nécessaires pour compiler le noyau Linux====
----
Afin de pouvoir compiler le noyau Linux, nous allons avoir besoin:
D'un environnement de développement complet <wrap hi>(gcc, ld, make,, ...)</wrap>,
Des sources du noyau Linux,
Mais aussi d'espace disque (pour ceux qui en manqueraient !), l'archive décompressée des sources du noyau Linux fait plus de 230 Méga octets
Aprés avoir <wrap hi>vérifié la présence des commandes gcc, ld et make via la commande</wrap>:
<code=bash>
rabiven2@tssi:~$ dpkg -l | egrep -e "gcc|make|binutils"
ii ant 1.8.0-4 Java based build tool like make
ii ant-optional 1.8.0-4 Java based build tool like make - optional libraries
ii automake 1:1.11.1-1+squeeze1 A tool for generating GNU Standards-compliant Makefiles
ii automake1.9 1.9.6+nogfdl-3.1+squeeze1 A tool for generating GNU Standards-compliant Makefiles
ii binutils 2.20.1-16 The GNU assembler, linker and binary utilities
ii gcc 4:4.4.5-1 The GNU C compiler
ii gcc-4.1 4.1.2-29 The GNU C compiler
ii gcc-4.1-base 4.1.2-29 The GNU Compiler Collection (base package)
ii gcc-4.1-locales 4.1.2-29 The GNU C compiler (native language support files)
ii gcc-4.1-multilib 4.1.2-29 The GNU C compiler (multilib files)
ii gcc-4.1-source 4.1.2-29 Source of the GNU Compiler Collection
ii gcc-4.3 4.3.5-4 The GNU C compiler
ii gcc-4.3-base 4.3.5-4 The GNU Compiler Collection (base package)
ii gcc-4.3-locales 4.3.5-4 The GNU C compiler (native language support files)
ii gcc-4.3-multilib 4.3.5-4 The GNU C compiler (multilib files)
ii gcc-4.3-source 4.3.5-4 Source of the GNU Compiler Collection
ii gcc-4.4 4.4.5-8 The GNU C compiler
ii gcc-4.4-base 4.4.5-8 The GNU Compiler Collection (base package)
ii gcc-4.4-locales 4.4.5-8 The GNU C compiler (native language support files)
ii gcc-4.4-multilib 4.4.5-8 The GNU C compiler (multilib files)
ii gcc-4.4-source 4.4.5-8 Source of the GNU Compiler Collection
ii gcc-multilib 4:4.4.5-1 The GNU C compiler (multilib files)
ii lib32gcc1 1:4.4.5-8 GCC support library (32 bit Version)
ii libgcc1 1:4.4.5-8 GCC support library
ii llvm-gcc-4.2 2.7-3 Low-Level Virtual Machine (LLVM), C/C++ front-end
ii make 3.81-8 An utility for Directing compilation.

</code>

On télécharge ensuite le noyau sur le site [[http://www.kernel.org/]] avec la commande wget:
<code=bash>
rabiven2@tssi:~$ wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.6.tar.bz2
</code>
On le dézippe:
<code=bash>
rabiven2@tssi:~$ tar -xjf linux-3.6.6.tar.bz2
</code>
-----
===Créer un fichier de configuration===

Comme on ne désire pas changer la configuration du système Linux utilisé, mais simplement profiter des dernières corrections du noyau, on reprend le fichier de configuration de la version précédente (2.6.15):
<code=bash>
rabiven2@tssi:~/linux-3.6.6$ ls /boot
config-2.6.32-5-amd64 grub initrd.img-2.6.32-5-amd64 System.map-2.6.32-5-amd64 vmlinuz-2.6.32-5-amd64
rabiven2@tssi:~/linux-3.6.6$ cp /boot/config-2.6.32-5-amd64 .config

</code>
<note warning>

Note:

L'utilisation de make menuconfig nécessite l'installation préalable du package libncurses5-dev.
</note>

On entre ensuite:
<code=bash>
rabiven2@tssi:~/linux-3.6.6$ make menuconfig
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
HOSTCC scripts/kconfig/lxdialog/inputbox.o
HOSTCC scripts/kconfig/lxdialog/menubox.o
HOSTCC scripts/kconfig/lxdialog/textbox.o
HOSTCC scripts/kconfig/lxdialog/util.o
HOSTCC scripts/kconfig/lxdialog/yesno.o
HOSTCC scripts/kconfig/mconf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/mconf
scripts/kconfig/mconf Kconfig
.config:527:warning: symbol value 'm' invalid for PCCARD_NONSTATIC
.config:2845:warning: symbol value 'm' invalid for MFD_WM8400
.config:2846:warning: symbol value 'm' invalid for MFD_WM831X
.config:2847:warning: symbol value 'm' invalid for MFD_WM8350
.config:2848:warning: symbol value 'm' invalid for MFD_WM8350_I2C
.config:2853:warning: symbol value 'm' invalid for AB3100_CORE
.config:3796:warning: symbol value 'm' invalid for MMC_RICOH_MMC
.config:4015:warning: symbol value 'm' invalid for COMEDI_PCI_DRIVERS
.config:4016:warning: symbol value 'm' invalid for COMEDI_PCMCIA_DRIVERS
.config:4017:warning: symbol value 'm' invalid for COMEDI_USB_DRIVERS
#
# configuration written to .config
#


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

</code>
A l'affichage du menu, on fait simplement <wrap hi>Exit</wrap>, puis à la question "Do you want to save ...", on entre <wrap hi>"Yes"</wrap>.
Le fichier .config est alors sauvegardé.
----
===Sélectionner les modules pour les iptables===

Depuis la version 2.6.14 du noyau, il faut activer explicitement certains modules pour les iptables dans le fichier de configuration du noyau, sinon il ne le sont pas par défaut.
On vérifiera donc que l'on a bien notamment la ligne suivante dans .config:
<code=bash>
CONFIG_NETFILTER_XTABLES=y
</code>
----
===Lancer la compilation du noyau===
<code=bash>
rabiven2@tssi:~/linux-3.6.6$ make install
</code>
----
===Compiler les modules===
<code=bash>
rabiven2@tssi:~/linux-3.6.6$ make modules
</code>
Cette commande compilera les composants cela du temps
----
===Installer les modules Linux===

Pour installer les modules que l'on vient de compiler:
<WRAP center round alert 80%>
==Attention: Cela suppose d'installer auparavant la package initramfs-tools.==
</WRAP>

<code=bash>
root@tssi:~/linux-3.6.6$ make modules_install
</code>
Cette commande permet d'installer les modules et les autres fichiers nécessaires dans le répertoire /lib/modules/3.6.6.121113
<code=bash>
rabiven2@tssi:~$ cd /boot
rabiven2@tssi:/boot$
rabiven2@tssi:/boot$ mkinitramfs -o initrd.img-3.6.6.121113 3.6.6
</code>
<code=bash>
root@tssi:/boot$ reboot
</code>
Après le reboot faire un uname -r pour constater le changement

 
cours/activite1/compilation_du_noyau.txt · Dernière modification: 2019/05/11 14:35 (modification externe)     Haut de page