Compilation du noyau

Compilation du noyau 201.2

Les candidats doivent être capables de configurer correctement un noyau pour ajouter ou désactiver des fonctionnalités spécifiques du noyau Linux, si nécessaire. Cet objectif inclut la compilation et la recompilation du noyau Linux au besoin, la mise à jour en notant les changements dans le nouveau noyau, la création d'une image initrd et installation de nouveaux noyaux.

Fichiers, termes et utilitaires clés :

  • /usr/src/linux
  • GRUB configuration files
  • Kernel 2.6.x make targets
  • mkinitrd
  • mkinitramfs
  • make
  • make targets (config, xconfig, menuconfig, oldconfig, mrproper, zImage, bzImage, modules, modules_install)

obtenir la source d'un noyau

Les sources pour le dernier noyau linux peut être trouvé dans Les Archives de Noyau Linux

Le nom générique du fichier est toujours sous la forme de linux-kernel-version.tar.gz ou linux-kernel-version.tar.bz2. Par exemple, linux-2.6.28.9.tar.gz est l'archive du noyau pour la version"2.6.28.9". Voir également le paragraphe sur les versions de noyaux vu précédemment.

Depuis la sortie du 2.6.0 en décembre 2003 le système de numérotation est en forme de A.B.C.D, où:

A représente la version du noyau. Changé uniquement lorsque des changements majeurs dans le code et le concept se produisent.

B désigne la révision. Avant Linux 2.6 le schéma de numérotation pair-impair a été utilisée ici.

C est la version du noyau

D compte du bug et correctifs de sécurité pour la version spécifique C

Ce système est utilisé (entre autres) pour permettre reportage de patchs et des corrections de sécurité. Si, par exemple, une correction a été faite dans le noyau 2.6.31.4 et cette correction est reportée de sorte qu'il puisse être appliqué au noyau 2.6.23.7​​, le noyau résultant ne serait pas numéroté 2.6.31.5 ou 2.6.32, pour des raisons évidentes. Au lieu de cela, le noyau résultant qui comprend cette correction seranuméroté 2.6.23.8.

Le lieu commun pour stocker et décompressez les sources du noyau est /usr/src.

S'il n'ya pas assez d'espace libre sur le répertoire /usr/src pour décompresser les sources, il est impossible de décompresser la source dans un répertoire différent. Créer un lien symbolique après la décompression vers /usr/src/linux pour le sous-répertoire linux dans cet emplacement permet un accès facile à la source.

Le code source du noyau est disponible sous forme d'archive tar compressée, compressés, soit avec gzip (extension .gz) ou bzip2 (extension .bz2). L'archive peut être décompressé en utilisant les programme gunzip ou de bunzip2 suivie par le dépaquetage de l'archive obtenue avec la commande tar, ou directement avec le tar en utilisant le options z (.gz) ou j (.bz2) . exemples:

# gunzip linux-2.6.28.9.tar.gz # tar xf linux-2.6.28.9.tar

ou en une seule étape:

# tar xzf linux-2.6.28.9.tar.gz

Pour les archives compressées en avec bzip2:

# bunzip2 linux-2.6.28.9.tar.bz2 # tar xf linux-2.6.28.9.tar

ou encore en une seule étape:

# tar xjf linux-2.6.28.9.tar.bz2

Lire les pages manuels de tar, gzip et bzip2 pour plus d'informations.

Nettoyage du noyau

Avant la configuration ou la construction du noyau, c'est bon de vérifier que le noyau est propre (clean). Si un noyau a été compilé avant avec l'arborescence des sources que vous allez utiliser, les fichiers objetset d'autres fichiers auront été créés. L'utilitaire make va essayer de travailler aussi efficacement que possible et ignorer les fichiers qui semblent être «en cours». Dans certains cas, cela peut causer des problèmes avec les configurations ultérieures et/ou la construction du noyau. Le nettoyage se fait à trois niveaux:

make clean

Supprime la plupart des fichiers générés, mais laisse assez pour construire des modules externes.

make mrproper

Supprimer la configuration actuelle et tous les fichiers générés.

make distclean

Supprimer les fichiers de sauvegarde de l'éditeur, les fichiers restants de patch et autres.

Lancer make mrproper avant de configurer et de construire un noyau est généralement une bonne idée.

Remarque

Gardez à l'esprit que makemrproper supprime aussi bien la configuration actuelle !

Création d'un fichier .config

La première étape dans la compilation d'un noyau est mise en place de la configuration du noyau. Les informations de configuration sont sauvegardés dans le fichier .config. Il ya bien plus de 500 options pour le noyau, qui se réfèrent au (entre autres) système de fichiers, SCSI et le support réseau. La plupart des options activent des fonctions du noyau qui seront, soit compilées directement dans le noyau oucompilées comme modules. Certaines sélections impliquent un groupe d'autres sélections. Par exemple, lorsque vous indiquez que vous souhaitez inclure le support SCSI, des options supplémentaires deviennent disponibles pour les fonctionnalités spécifiques des pilotes SCSI.

Certaines des options de support noyau doit être compilées comme modules, certaines ne peuvent être compilées uniquement dans le noyau et pour certaines options, vous serez en mesure de choisir si vousvoulez qu'elles soient compilées comme modules ou directement dans le noyau.

Les résultats de tous ces choix sont stockés dans le fichier de configuration du noyau dans /usr/src/linux/.config. Ce fichier est en texte clair et énumère toutes les options comme des variables shell.

Exemple. echantillon du contenu de.config

# # Automatically generated make config: don't edit # Linux kernel version: 2.6.28 # Sat Feb 6 18:16:23 2010 # CONFIG_64BIT=y # CONFIG_X86_32 is not set CONFIG_X86_64=y CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=y CONFIG_MMU=y CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y ...

Au début de la création d'une .config, définir le répertoire de travail courant dans le haut de la hiérarchie des dossiers de la source.:

# cd /usr/src/ linux

Il ya plusieurs façons de place .config. Bien que vous puissiez le faire, vous ne devez pas modifier le fichier manuellement (comme spécifié explicitement dans le haut du fichier). Au lieu de cela, sélectionnez l'une des trois approches interactives. Une option supplémentaire est disponible pour construire une configuration par défaut. Chaque cas commence par l'utilisation de make.