Linux Fu : débogage facile du noyau

Autrefois, construire le noyau Linux n’était pas facile. Les tests et le débogage étaient encore pires. De nos jours, il est raisonnablement facile de créer un noyau personnalisé et de le tester ou de le déboguer à l’aide de la virtualisation. Mais si cela vous semble toujours intimidant, essayez [deepseagirl’s] script pour télécharger, configurer, construire et déboguer le noyau.

Le programme Python prend des arguments de ligne de commande afin que vous puissiez sélectionner une version du noyau et différentes opérations. Le script peut télécharger les sources, corriger la configuration, construire le noyau, puis le conditionner dans un package Debian que vous pouvez démarrer sous qemu. À partir de là, vous pouvez tester et même déboguer avec gdb. Aucun risque d’arroser votre système quotidien et pas besoin de comprendre comment tout configurer pour fonctionner.

Si vous êtes impatient, l’option -a fera tout. Par exemple, pour construire le noyau 6.2, vous pouvez exécuter :

python3 easylkb.py -k 6.2 -a

Cela prendra quelques minutes et sollicitera votre processeur car il crée de nombreux fichiers en utilisant autant de processeurs qu’il peut en trouver. Cependant, vous souhaiterez généralement modifier un peu la configuration. Vous pouvez utiliser le -d flag pour télécharger simplement les sources du noyau.

Vous trouverez la source dans le sous-répertoire du noyau du répertoire où se trouve easylkb. Il y aura un sous-répertoire pour chaque version du noyau que vous avez téléchargée. Il existe également un fichier create-image.sh qui nécessite le bit d’exécution défini. Si vous n’y parvenez pas, une partie du processus d’empaquetage échouera probablement. Si vous recevez un message d’erreur, vous devrez trouver la copie du script et y définir l’indicateur (par exemple, linux-6.2/img/create-image.sh).

Contrôle des sources

Utiliser xconfig est pratique et explique également les options.

Si vous disposez déjà d’une arborescence des sources du noyau, le -p L’option vous permettra de pointer vers cela au lieu de spécifier une version du noyau avec -k. Si vous spécifiez une version, vous pouvez spécifier la -d possibilité de le télécharger.

Une fois téléchargé, vous souhaiterez peut-être accéder au répertoire et modifier la configuration à l’aide de l’une des options de configuration de make. Alors que make config est classique, vous préférerez probablement make menuconfig ou make xconfig pour rendre la vie plus facile. Vous pouvez également exécuter make help pour voir toutes les options disponibles.

Vous pouvez spécifier un fichier de configuration à ajouter à la configuration du noyau en utilisant –kconfig. Par défaut, le example.KConfig Le fichier définit certaines options utiles pour le débogage sous qemu.

Construire et exécuter

L’étape suivante consiste à utiliser le -m option pour compiler le noyau. Cela prendra un peu de temps et rendra probablement votre machine lente. Une fois cela fait, vous pouvez utiliser le -i option pour créer un package amorçable pour qemu.

Le système virtuel démarre

Il ne reste plus qu’à démarrer le système avec -r. Vous verrez la console de démarrage familière s’exécuter dans votre terminal. La documentation du projet contient quelques conseils sur la façon de ssh dans le système virtuel et comment l’utiliser gdb pour déboguer le noyau.

Si vous voulez juste tout faire, utilisez -a. Il téléchargera soit le noyau (si vous utilisez -k) ou récupérez celui que vous précisez avec -p. Vous pouvez également effectuer plusieurs étapes en une seule fois. Par exemple, si vous souhaitez configurer et créer rien d’autre, vous pouvez utiliser quelque chose comme :

python3 easylkb -p /tmp/ksource -cm

Conclure

Devez-vous utiliser ce script ? Bien sûr que non. Les gens construisent des noyaux depuis longtemps. Mais cela vous permet de vous concentrer sur le problème réel et moins sur la façon de conditionner et de démarrer le noyau pour les tests.

Nous ne sommes pas choqués que le script ne fonctionne pas pour le noyau 0.01. Besoin de savoir à quoi sert cette étrange fonction du noyau Linux ? Cartographiez-le.

François Zipponi
Je suis François Zipponi, éditorialiste pour le site 10-raisons.fr. J'ai commencé ma carrière de journaliste en 2004, et j'ai travaillé pour plusieurs médias français, dont le Monde et Libération. En 2016, j'ai rejoint 10-raisons.fr, un site innovant proposant des articles sous la forme « 10 raisons de... ». En tant qu'éditorialiste, je me suis engagé à fournir un contenu original et pertinent, abordant des sujets variés tels que la politique, l'économie, les sciences, l'histoire, etc. Je m'efforce de toujours traiter les sujets de façon objective et impartiale. Mes articles sont régulièrement partagés sur les réseaux sociaux et j'interviens dans des conférences et des tables rondes autour des thèmes abordés sur 10-raisons.fr.