Le kernel panic est une erreur du noyau qui peut intervenir dans de
diverses circonstances.
Il existe deux catégories de kernel
panic :
-
Matériel (connu sous le nom de Aieee!). Un composant matériel est défaillant, ou mal pris en charge par le noyau...
-
Logiciel (connu sous le nom de Oops!), à savoir des erreurs dans le code du noyau, des modifications erronées, une compilation ou une installation du noyau incorrectes, etc.
Il peut survenir à différents
moments et provoque une indisponibilité de l’ordinateur. Un
message d’erreur peut apparaître éventuellement à l’écran. Les
leds du clavier peuvent aussi clignoter... Vous pouvez considérer
que le niveau de gravité est élevé.
1. Caractérisation
Si le fonctionnement normal du système
GNU/Linux est perturbé alors :
-
Vous pouvez tenter de démarrer le système d’exploitation avec un autre noyau qui serait installé.
-
Le dépannage se fait depuis un CD, un DVD ou une clef USB contenant un système « live » GNU/Linux.
Vous devez déterminer si :
-
Le problème survient au premier démarrage du noyau après son installation. Il faut le désinstaller et sans doute le recompiler avec les bonnes options puis effectuer une nouvelle installation.
-
Le noyau ne fonctionne pas systématiquement ou de temps en temps lors du démarrage de l’ordinateur.
-
Le noyau se fige systématiquement sur un événement précis ou de façon aléatoire pendant le fonctionnement du système d’exploitation.
2. Fréquence du problème
Voici un ensemble de questions à se
poser :
-
Depuis combien de temps avez-vous ce problème ?
-
Est-ce la première fois ? Sinon, est-ce un plantage fréquent ? À quelle fréquence ?
-
Pouvez-vous reproduire le problème ?
-
Le système est-il complètement immobilisé ?
-
Avez-vous changé quelque chose juste avant l’apparition du problème ? Si oui, quoi ?
-
Avez-vous une trace écrite des interventions sur cet ordinateur ?
3. Analyse de la source du problème
Pour déterminer facilement la source
du problème, vérifiez que votre noyau n’est pas
en mode « quiet » dans le fichier /etc/default/grub pour
GRUB version 2. Si c’est le cas, il faut remplacer avec un éditeur
de texte la ligne suivante :
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
# If you change this file, run ’update-grub’ afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n ’Simple configuration’ GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet" GRUB_CMDLINE_LINUX="" ...
par :
GRUB_CMDLINE_LINUX_DEFAULT=""
# If you change this file, run ’update-grub’ afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n ’Simple configuration’ GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="" ...
Après l’enregistrement du fichier,
exécutez dans un terminal update-grub :
# update-grub Generating grub.cfg ... Found background image: /usr/share/images/desktop-base/desktop- grub.png Found linux image: /boot/vmlinuz-3.10.2-20130726 Found initrd image: /boot/initrd.img-3.10.2-20130726 Found linux image: /boot/vmlinuz-3.2.0-4-amd64 Found initrd image: /boot/initrd.img-3.2.0-4-amd64 done
Concernant GRUB version 1, le fichier grub.conf se situe dans le dossier /boot/grub. Le fichier /boot/grub/menu.lst est
un lien symbolique de grub.conf :
# cat grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/VolGroup- lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (3.10.2) root (hd0,0) kernel /vmlinuz-3.10.2 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap LANG=fr_FR.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=fr-latin9 crashkernel=auto rd_LVM_LV=VolGroup/lv_root rd_NO_DM rhgb quiet initrd /initramfs-3.10.2.img title CentOS (2.6.32-358.14.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap LANG=fr_FR.UTF-8 SYSFONT=latarcyrheb- sun16 KEYBOARDTYPE=pc KEYTABLE=fr-latin9 crashkernel=auto rd_LVM_LV=VolGroup/lv_root rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-358.14.1.el6.x86_64.img title CentOS (2.6.32-358.11.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.11.1.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap LANG=fr_FR.UTF-8 SYSFONT=latarcyrheb- sun16 KEYBOARDTYPE=pc KEYTABLE=fr-latin9 crashkernel=auto rd_LVM_LV=VolGroup/lv_root rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-358.11.1.el6.x86_64.img title CentOS (2.6.32-358.6.2.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.6.2.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap LANG=fr_FR.UTF-8 SYSFONT=latarcyrheb- sun16 KEYBOARDTYPE=pc KEYTABLE=fr-latin9 crashkernel=auto rd_LVM_LV=VolGroup/lv_root rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-358.6.2.el6.x86_64.img
Avec un éditeur de texte, vous pouvez
enlever le mot « quiet » pour
le noyau concerné. Enregistrez votre modification qui sera
prise en compte au prochain démarrage.
Lors du démarrage du système,
notez les messages du noyau précédant le kernel panic.
Notez toutes les informations que vous considérez utiles.
4. Analyse du matériel
Le noyau peut être sain et tombé en
raison d’un composant matériel défaillant. Vous
pouvez allumer l’ordinateur et l’amorcer avec un système « Live » GNU/Linux.
Vous pouvez lancer des logiciels comme par
exemple Memtest86+ pour effectuer un diagnostic complet
de la mémoire.
Pour plus d’informations, consultez
le chapitre Dépannage matériel.
La lecture des journaux du système
situé dans /var/log peut
aussi donner des pistes :
Distribution
|
Nom du journal
|
Description
|
Debian 7
|
Syslog
messages
kern.log
dmesg
|
Journal standard du système.
Informations générales
du système.
Informations
du noyau Linux.
Affiche la mémoire
tampon de message du noyau.
|
Ubuntu 12.04
|
syslog
kern.log
dmesg
|
Journal standard du système.
Informations du noyau Linux.
Affiche la mémoire tampon de
message du noyau.
|
CentOS 6
|
messages
dmesg
|
Informations générales
du système.
Affiche
la mémoire tampon de message du noyau.
|
Concernant CentOS 6, il manque le journal
kern.log. Vous pouvez modifier avec un éditeur de texte
le fichier de configuration du service journaux d’événements /etc/rsyslog.conf pour
créer le journal /var/log/kern.log.
Il suffit de modifier la ligne :
#kern.* /dev/console
Et d’ajouter en dessous :
kern.* /var/log/kern.log
Comme ceci :
# cat /etc/rsyslog.conf # rsyslog v5 configuration file # For more information see /usr/share/doc/rsyslog- */rsyslog_conf.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html ... #### RULES #### # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console kern.* /var/log/kern.log ...
Après, vous devez paramétrer
la rotation du journal dans le dossier /etc/logrotate.d/.
Pour cela, créez avec un éditeur de texte un nouveau
fichier que vous appellerez kernel puis
entrez-y ces lignes :
/var/log/kernel.log { missingok notifempty size 30k yearly create 0600 root root }
Enregistrez le fichier et redémarrez
le service rsyslog :
# service rsyslog restart Arrêt de l’enregistreur de journaux du système : [ OK ] Démarrage de l’enregistreur de journaux du système : [ OK ]
5. Analyse des logiciels
a. Chargeur d’amorçage
Assurez-vous que la configuration de votre
chargeur d’amorçage est correcte car c’est une cause fréquente.
Pour plus d’informations, consultez
le chapitre Séquence d’amorçage.
b. Origine du noyau
Si votre noyau provient d’une mise à jour
de la distribution, consultez :
-
le code source et aussi le journal des modifications (changelog),
-
les rapports de bugs,
-
les listes de diffusion (mailing lists),
-
les documentations officielles ou non officielles,
-
les IRC (Internet Relay Chat),
-
les forums...
Si le noyau est compilé par vos soins,
reprenez les différentes étapes pour déceler une éventuelle
erreur dans la configuration du noyau. Analysez le fichier .config.
c. Modules
Avez-vous un module du noyau (Loadable kernel modules) défaillant ? Déchargez le
module concerné et testez à nouveau. Lisez les
journaux système du tableau précédent.
Pour plus d’informations, consultez
le chapitre Loadable Kernel Modules.
6. Recherche de solutions
Tout en restant critique sur la qualité et
la confiance à accorder aux informations collectées
sur Internet, vous pouvez rechercher si le problème est
connu ou non. Avez-vous trouvé des solutions ?
Avez-vous trouvé juste une solution de contournement (workaround) ?
Analysez les solutions et comprenez le déroulement
de la procédure. N’intervenez pas en aveugle. Testez ensuite
les solutions une par une.
7. Appliquer la solution
Dès que vous avez compris ce qui
passe, que vous avez vérifié la solution, alors vous
pouvez l’appliquer. Et n’oubliez pas de créer une documentation
sur le sujet.
Aucun commentaire :
Enregistrer un commentaire