Systèmes de fichiers et debug
- Système de fichiers virtuel procfs.
- Système de fichiers virtuel sysfs.
- Collecter des informations de debug avec debugfs.
- Stocker des informations de manière persistente avec pstore.
Travaux pratiques
Récupérer un core dump. Utiliser gdb.
Erreurs kernel et dialogue avec le noyau
- Détection de head corruption avec heap / alloc.
- cktrace.
- Warn, Kernel tainted, liste des flags.
- Oops, panic, bug.
Configurer son kernel pour améliorer le debug
- Debug info.
- Kdump / kexec.
Travaux pratiques
Configuration de spin lock, mutex, utilisation de locks printk.
Les outils debug de kernel
- System.map.
- Mettre en place une console série.
- Spécificités de l’utilisation d’une console série sous Xen.
- kgbd (port série).
- Crash / kdump.
- Racing / ftrace.
- Paramètres kernel utiles : panic=oops, vga=, earlyprintk=, ignore_loglevel, initcall_debug, log_buf_len.
Travaux pratiques
Utilisations des outils. Mettre en place une netconsole. Utiliser qemu pour debugger.
Analyser les informations recueillies
- Identifier des adresses mémoire avec addr2line.
- Gdb, le couteau suisse du débogage.
- Outil d’analyse dédié au kernel : crash.
- Outil d’aide à l’analyse : printk.
- Définir un format de message avec pr_*.
- Extraire le device et son driver avec dev_*printk versus dev_* ?
Travaux pratiques
Analyse de rapports de bugs.