SystempTap est un ensemble d’outils permettant de suivre l’activité du noyau Linux, en traçant ses fonctions internes. Cela permet de recueillir de nombreuses informations non disponibles avec les outils habituels (ps, top, vmstat, iostat, netstat, …).
Commencez par récupérer le version du noyau en cours:
# uname -r 2.6.26-2-amd64
Ensuite, installez les paquetages suivants, en faisant correspondre la version des sources du noyau Linux:
# apt-get install linux-source-2.6.26 systemtap kernel-package fakeroot libncurses5-dev gcc libc6-dev
Attention! un noyau Debian compilé avec les informations de debuggage prend beaucoup de place, prévoyez :
- Sources + Compilation: 4.0Go
- Paquetages générés: 250Mo
- Paquetages installés:
- /lib/modules: 800Mo
- /boot: 120Mo
Placez-vous dans un répertoire de travail, puis: Décompressez les sources du noyau:
$ tar jxvf /usr/src/linux-source-2.6.26.tar.bz2
Récupérez la configuration actuelle de votre noyau Linux:
$ cd linux-source-2.6.26 $ cp /boot/config-`uname -r` .config
Configurez les paramètres du noyau en lançant la commande:
$ make menuconfig
Allez dans « General setup »:
Sélectionner « Kprobes »:
Revenez avec « Exit », et allez dans « Kernel hacking »:
Sélectionnez « Compile the kernel with debug info »:
Quittez avec « Exit » (2 fois) et confirmez l’enregistrement de la configruation.
Normalement les options suivantes sont activées (dans le fichier « .config »):
CONFIG_KPROBES=y CONFIG_KRETPROBES=y CONFIG_DEBUG_INFO=y
Modifiez le fichier /etc/kernel-pkg.conf et ajoutez le paramètre suivant:
install_vmlinux = YES
En passant, vous pouvez indiquer vos informations en remplaçant « your name » et « your email »:
# The maintainer information. maintainer := your name email := your email
Si vous avez plusieurs CPU/coeurs, utilisez la variable d’environnement suivante pour compiler en parallèle (une bonne règle est de mettre « Nombre de coeurs + 1″):
$ export CONCURRENCY_LEVEL=9
Récupérez la version du noyau actuel:
$ uname -r 2.6.26-2-amd64
Lancez la compilation en utilisant la révision récupérée:
$ make-kpkg --initrd --append-to-version=-2-amd64-st-1.0 kernel_image kernel_headers
Installez le noyau:
$ cd .. # dpkg -i linux-image-2.6.26-2-amd64-st-1.0_2.6.26-2-amd64-st-1.0-10.00.Custom_amd64.deb linux-headers-2.6.26-2-amd64-st-1.0_2.6.26-2-amd64-st-1.0-10.00.Custom_amd64.deb
Rebootez
Testez SystemTap en récupérant un exemple sur un des sites suivants:
http://sourceware.org/systemtap/examples/
Il suffit de lancer la commande suivante (Control-C pour quitter):
# stap -v <fichier.stp>
Happy tracing !