Source: Linux Kernel in a Nutshell: 11. Kernel build command line reference
L'outil qui construit les générations de noyau est le programme make, auquel on passe une option qui spécifie ce que l'on veut construire. La Configuration de la construction passe en revue les Options de base nécessaires pour construire correctement le noyau, mais le système de construction du noyau a également un large éventail d'autres Options. Ce chapitre détaille ces Options et à quoi elles peuvent servir.
Toutes ces options sont transmises au programme make sur la ligne de commande, et un certain nombre d'entre elles peuvent être regroupées si on le souhaite. Par exemple:
make mrproper xconfig
Les options sont réparties en différents types dans les sections suivantes.
On peut obtenir un résumé de la plupart de ces options en exécutant, dans le répertoire de génération:
make help
Cela imprime une grande partie des options courantes décrites dans le reste de ce chapitre.
Ces options impriment la version du noyau, basée sur un certain nombre d'options différentes. Ils sont couramment utilisés par les scripts pour déterminer la version du noyau en cours de construction.
Option | Description |
---|---|
kernelrelease | Affiche la version actuelle du noyau, telle que déterminée par le système de génération. |
kernelversion | Affiche la version actuelle du noyau, comme indiqué par le Makefile principal. Cela diffère de la Option kernelrelease en ce qu'il n'utilise aucune information de version supplémentaire basée sur les options de configuration ou les fichiers de version locale. |
Ces options suppriment simplement les fichiers des versions précédentes. Leur utilisation est fortement recommandée pour s'assurer de ne pas contaminer les nouvelles versions avec des fichiers restants qui peuvent avoir été créés avec différentes options. Ils diffèrent dans la quantité qu'ils enlèvent; parfois, on peut souhaiter conserver les fichiers que l'on a modifiés.
Option | Description |
---|---|
clean | Supprime la plupart des fichiers générés par le système de construction du noyau, mais conserve la configuration du noyau. |
mrproper | Supprime tous les fichiers générés par le système de construction du noyau, y compris la configuration et certains fichiers de sauvegarde divers. |
distclean | Fait tout ce que mrproper fait et supprime certains fichiers de sauvegarde de l'éditeur et les correctifs restants. |
Ces options permettent au noyau d'être configuré de différentes manières.
Option | Description |
---|---|
config | Met à jour la configuration actuelle du noyau en utilisant un programme orienté ligne. |
menuconfig | Met à jour la configuration actuelle du noyau en utilisant un programme de menu basé sur du texte. |
xconfig | Met à jour la configuration actuelle du noyau en utilisant un programme graphique basé sur QT. |
gconfig | Met à jour la configuration actuelle du noyau en utilisant un programme graphique basé sur GTK+. |
oldconfig | Met à jour la configuration actuelle du noyau en utilisant le fichier .config actuel et en demandant toutes les nouvelles options qui ont été ajoutées au noyau. |
silentoldconfig | Tout comme oldconfig, mais n'imprime rien à l'écran sauf lorsqu'il faut répondre à une question. |
randconfig | Génère une nouvelle configuration du noyau avec des réponses aléatoires à toutes les différentes options. |
defconfig | Génère une nouvelle configuration du noyau avec la réponse par défaut utilisée pour toutes les options. Les valeurs par défaut sont extraites d'un fichier situé dans le fichier arch/$ARCH/defconfig 1), où $ARCH fait référence à l'architecture spécifique pour laquelle le noyau est construit. |
allmodconfig | Génère une nouvelle configuration du noyau dans laquelle les modules sont activés chaque fois que possible. |
allyesconfig | Génère une nouvelle configuration du noyau avec toutes les options définies sur yes. |
allnoconfig | Génère une nouvelle configuration du noyau avec toutes les options définies sur no. |
Les options allyesconfig, allmodconfig, allnoconfig et randconfig tirent également parti de la variable d'environnement KCONFIG_ALLCONFIG. Si cette variable pointe vers un fichier, ce fichier sera utilisé comme une liste de valeurs de configuration que l'on veut définir sur une valeur spécifique. En d'autres termes, le fichier remplace le comportement normal des Options de création.
Par exemple, si le fichier ~/linux/must_be_set
contient les variables suivantes:
cat ~/linux/must_be_set CONFIG_SWAP=y CONFIG_DEBUG_FS=y
et qu'on fait make allnoconfig
avec la variable d'environnement KCONFIG_ALLCONFIG appropriée:
KCONFIG_ALLCONFIG=../must_be_set make allnoconfig grep CONFIG_SWAP .config CONFIG_SWAP=y
alors les résultats incluent:
grep CONFIG_DEBUG_FS .config CONFIG_DEBUG_FS=y
Sinon, cette variable n'aurait normalement pas été définie sur y.
Si la variable KCONFIG_ALLCONFIG n'est pas définie, le système de génération vérifie les fichiers dans le répertoire de génération de niveau supérieur nommé:
Si l'un de ces fichiers est présent, la génération les utilise comme des listes de valeurs de configuration qui doivent être forcées aux valeurs spécifiées. Si aucun de ces fichiers n'est trouvé, le système de génération recherche finalement un fichier appelé all.config
pour une liste de valeurs de configuration forcée.
On peut utiliser ces différents fichiers pour mettre en place une bonne configuration de base connue qui fonctionnera toujours. Ensuite, les autres options de configuration peuvent être utilisées pour générer différentes configurations de test pour la situation requise.
Ces options construisent le noyau lui-même de différentes manières.
Option | Description |
---|---|
all | Construit toutes les différentes cibles nécessaires pour que ce noyau puisse être utilisé. Cela inclut à la fois les modules et la partie statique du noyau. |
vmlinux | Construit juste la partie statique du noyau, pas tous les modules chargeables. |
modules | Construit tous les modules du noyau chargeables pour cette configuration. |
modules_install | Installe tous les modules à l'emplacement spécifié. Si aucun emplacement n'est spécifié avec la variable d'environnement INSTALL_MODULE_PATH, ils sont installés dans le répertoire racine par défaut de la machine. |
dir/ | Génère tous les fichiers dans le répertoire spécifié et dans tous les sous-répertoires en dessous. |
dir/file.[o/i/s] | Génère uniquement le fichier spécifié. |
dir/file.ko | Génère tous les fichiers nécessaires et les relie ensemble pour former le module spécifié. |
tags | Construit toutes les balises nécessaires que les éditeurs de texte les plus courants peuvent utiliser lors de la modification du code source. |
TAGS | Construit toutes les balises nécessaires que les éditeurs de texte les plus courants peuvent utiliser lors de la modification du code source. |
cscope | Construit une image cscope, utile dans les recherches d'arborescence source, de l'arborescence source pour l'architecture spécifiée par le fichier de configuration (pas tous les fichiers source du noyau). |
On peut également transmettre un certain nombre de variables d'environnement pour que cela change la construction. Ceux-ci peuvent être spécifiés pour presque toutes les cibles.
Variables d'environnement | Valeur | Description |
---|---|---|
V | 0 | Cela indique au système de génération de s'exécuter de manière silencieuse, en affichant uniquement le fichier en cours de génération, et non la commande entière en cours d'exécution afin de générer ce fichier. Il s'agit de l'option par défaut pour le système de génération. |
V | 1 | Cela indique au système de génération de fonctionner de manière détaillée, en affichant la commande complète utilisée pour générer chacun des fichiers spécifiques. |
O | dir | Cela indique au système de génération de localiser tous les fichiers de sortie dans le répertoire dir , y compris les fichiers de configuration du noyau. Cela permet au noyau d'être construit à partir d'un système de fichiers en lecture seule et de placer la sortie dans un autre emplacement. |
C | 1 | Cela vérifie tous les fichiers C qui sont sur le point d'être créés avec l'outil sparse, qui détecte les erreurs de programmation courantes dans les fichiers source du noyau. sparse peut être téléchargé à l'aide de git depuis git://git.kernel.org/pub/scm/devel/sparse/sparse.git . Des instantanés peuvent être trouvés sur https://www.codemonkey.org.uk/projects/git-snapshots/sparse/. On peut trouver plus d'informations sur l'utilisation de sparse dans le fichier Documentation/sparse.txt de l'arborescence des sources du noyau. |
C | 2 | Cela force tous les fichiers C à être vérifiés avec l'outil sparse, même s'ils n'ont pas besoin d'être créés. |
Ces options regroupent un noyau intégré dans un package autonome qui peut être installé sur une large gamme de machines différentes.
Option | Description |
---|---|
rpm | Construit d'abord le noyau, puis le conditionne en tant que package RPM qui peut être installé. |
rpm-pkg | Construit un package RPM source contenant le noyau de base. |
binrpm-pkg | Construit un package RPM qui contient un noyau et des modules compilés. |
deb-pkg | Construit un paquet Debian qui contient le noyau et les modules compilés. |
tar-pkg | Construit une archive tar (tarball) qui contient le noyau et les modules compilés. |
targz-pkg | Construit une archive tar compressée par gzip qui contient le noyau et les modules compilés. |
tarbz2-pkg | Construit une archive tar compressée bzip2 qui contient le noyau et les modules compilés. |
Ces optionss construisent la documentation interne du noyau dans une variété de formats différents.
Option | Description |
---|---|
xmldocs | Génère la documentation du noyau sous forme de fichiers XML DocBook. |
psdocs | Génère la documentation du noyau sous forme de fichiers PostScript. |
pdfdocs | Construit la documentation du noyau sous forme de fichiers PDF. |
htmldocs | Génère la documentation du noyau sous forme de fichiers HTML. |
mandocs | Construit la documentation du noyau comme un ensemble de pages de manuel, qui peuvent ensuite être installées avec l'option installmandocs. |
Chaque architecture de noyau a un ensemble de cibles spécifiques qui lui sont propres. L'architecture Intel 32 bits a les cibles suivantes disponibles.
Option | Description |
---|---|
bzImage | Crée une image de noyau compressée et la place dans le fichier arch/i386/boot/bzImage . Il s'agit de la cible par défaut pour la construction du noyau i386. |
install | Installe l'image du noyau à l'aide du programme /sbin/installkernel spécifique à la distribution. Cela n'installe pas les modules du noyau; cela doit être fait avec l'option modules_install. |
bzdisk | Crée une image de disquette de démarrage et l'écrit sur le périphérique /dev/fd0 . |
fdimage | Crée une image de disquette de démarrage et la place dans le fichier arch/i386/boot/fdimage . Le package mtools doit être présent sur le système pour que cela fonctionne correctement. |
isoimage | Crée une image de démarrage du CD-ROM et la place dans le fichier arch/i386/boot/image.iso . Le paquet syslinux doit être présent sur le système pour que cela fonctionne correctement. |
Ces options sont utiles pour essayer de trouver du code problématique dans le noyau. C'est une bonne idée de créer une liste d'espace de pile lors de la création de nouveau code pour déterminer que les modifications n'occupent pas trop d'espace de pile du noyau. L'option namespacecheck est utile pour déterminer si les modifications peuvent ajouter en toute sécurité ses symboles à l'espace de noms global du noyau.
Option | Description |
---|---|
checkstack | Génére une liste des fonctions qui utilisent le plus d'espace de la pile du noyau. |
namespacecheck | Généree une liste de tous les symboles du noyau et de leurs espaces de noms. Ce sera une grande liste. |