Cybersécurité & Protection
Collecte et analyse des informations liées à un dysfonctionnement du kernel Linux
Avancé
À propos de cette formation
Le noyau Linux génère de nombreux messages permettant d'identifier l'origine d'un bug ou d'un dysfonctionnement. Cette formation de 2 jours enseigne aux développeurs Linux/Unix comment localiser ces sources d'information (procfs, sysfs, debugfs, pstore), interpréter les messages d'erreur kernel (Oops, panic, tainted) et exploiter les outils de débogage spécialisés (gdb, crash, ftrace, kdump) pour analyser et résoudre les problèmes noyau.
Objectifs de la formation
- Identifier les différentes sources d'information relatives au fonctionnement du noyau Linux
- Collecter de manière exhaustive les données liées à un dysfonctionnement du kernel
- Analyser les informations recueillies pour en déduire l'origine du problème
Programme détaillé
Module 1 — Systèmes de fichiers virtuels et debug
- Système de fichiers virtuel procfs et exposition des informations noyau
- Système de fichiers virtuel sysfs et interaction avec les pilotes
- Collecte d'informations de débogage avec debugfs
- Persistance des données de crash avec pstore
- Détection de corruption mémoire avec heap/alloc
- Travaux pratiques : récupération d'un core dump et utilisation de gdb
Module 2 — Erreurs kernel et dialogue avec le noyau
- Traçage des appels avec cktrace
- Messages Warn, état Kernel tainted et liste des flags associés
- Analyse des messages d'erreur critiques : Oops, panic, bug
- Debug info, kdump et kexec pour la capture de l'état mémoire
- Exploitation du fichier System.map pour la résolution d'adresses
Module 3 — Configurer son kernel pour améliorer le debug
- Mise en place d'une console série et spécificités sous Xen
- kgdb via port série, crash/kdump et traçage avec ftrace
- Paramètres kernel utiles : panic=oops, vga=, earlyprintk=, ignore_loglevel, initcall_debug, log_buf_len
- Travaux pratiques : configuration de spin lock et mutex, utilisation de locks printk
Module 4 — Les outils de débogage du kernel
- Identification des adresses mémoire avec addr2line
- gdb : utilisation comme outil polyvalent de débogage kernel
- crash : outil d'analyse dédié aux dumps noyau
- printk et macros pr_* : définir et formater les messages de débogage
- dev_*printk : extraction du device et de son driver associé
- Travaux pratiques : utilisation des outils, mise en place d'une netconsole, débogage avec qemu
Module 5 — Analyser les informations recueillies
- Méthodologie d'analyse des rapports de bugs kernel
- Travaux pratiques : analyse de rapports de bugs réels
Prérequis
Bonnes connaissances de Linux/Unix et de la programmation C.