Blaise Braye, IT Edition

Aller au contenu | Aller au menu | Aller à la recherche

mardi, 6 novembre 2007

Kernel panic au réveil

Wao une belle grosse frayeur ce matin en allumant la bête :D

je me rend compte un peu tard qu'elle boot sur le nouveau kernel, celui qui est défectueux lol... Je me dis nonnnn!! Il va encore falloir attendre une heure pour redémarrer proprement, marre.

à l'arrache, j'appuie sur le bouton reset du pc et je demande un démarrage classique sur le noyau précédent...

est-ce qu'il me dit pas kernel panic??? çà le fait vraiment pas, je reset à nouveau, même message... je lit un peux plus et il me dit qu'il arrive pas à lire la partition de swap... qu'est-ce que c'est que cette histoire? je me dit... peut-être qu'elle a besoin de se reposer hihi, j'éteins l'ordi, je le débranche et je plonge sous la douche (sans l'ordi hein)

Quand j'en sors, je relance la machine et voilà qu'elle se porte comme un charme!

Je me disais bien qu'une journée aussi ensoleillé ne pouvait pas commencer avec un pur crash system!!

malheureusement, à ce stade du boot, les logs ne sont pas encore lancés et je ne pourrai donc savoir exactement ce qui s'est passé...

lundi, 5 novembre 2007

BootChart

Dans mon billet précédent, je découvrais au passage un outil permettant d'observer le démarrage du système de manière graphique. Je vais à présent tenter de l'utiliser et de voir ce que je peux en tirer.

Installation

J'ai d'abors télécharger le dépot svn de bootchart

[Bash]
$ svn co https://bootchart.svn.sourceforge.net/svnroot/bootchart bootchart

une fois télécharger, je me suis rendu sous le répertoire trunk et suivi les instruction du README et INSTALL. qd j'ai voulu exécuter install.sh, il ne trouvait pas rubby; je me suis donc arrangé en modifiant la variable d'environnement $PATH. Pour faire cela de manière durable, j'ai ajouté dans les fichier /home/blaisouille/.bashrc et /root/.bashrc la ligne suivante:

[Bash]
export PATH="/sbin:/usr/sbin:$PATH"

J'ai modifié les deux fichiers pour que ce changement soit effectué de manière durable, cela m'a donc ajouté deux répertoire dans le path. Vous trouverez un tutoriel très bien réalisé ce sujet ici.

Ensuite, j'ai pu exécuter le script d'installation sans le moindre soucis. Cependant il semble ne pas avoir su mettre grub à jour; ce que j'ai donc fait en ajoutant dans /boot/grub/grub.conf les lignes suivantes (en gros j'ai copié un autre boot et ajouté init=/sbin/bootchartd)

[Bash]
title Bootchart (2.6.22.9-91.fc7)
	root (hd0,6)
	kernel /vmlinuz-2.6.22.9-91.fc7 ro root=LABEL=/ init=/sbin/bootchartd rhgb quiet
	initrd /initrd-2.6.22.9-91.fc7.img

Deuxième étape importante: installation du renderer. Pour cela il faut installer le package ant de Apache (j'ai installé la ver 1.6.5-4jpp.2) ensuite il n'y a plus qu'à taper ant à la console sous l'arborescence de bootchart.

Utilisation

A présent, il est temps de redémarrer, au reboot je choisis la nouvelle entrée Bootchart. Je peux lire qu'il l'initialise bien et le système semble démarrer correctement.

Une fois arrivé dans l'os, je vérifie tout de suite si /var/log/bootchart.tgz existe... et c'est bien le cas! youpie; next.

il ne me reste en principe plus qu'à visualiser l'évolution du boot. je retourne dans le répertoire d'installation de bootchart et exécute la commande

[Bash]
$ java -jar bootchart.jar%%%
Parsing /var/log/bootchart.tgz

Wrote image: ./bootchart.svgz

çà met un certain temps... mais çà fonctionne :D

J'ai ensuite utilisé inkscape pour visualiser le graphique vectoriel généré que vous trouverez en pièce jointe de ce billet (exporté en png)

La première chose que j'ai voulu faire une fois cela fait est de virer la détection d'un cable réseau au démarrage; ce message en rouge qui s'affiche à tous les démarrage commençait à me filer la nausée. Un coup d'oeuil sur ce graphique et je suis fixé en moins de deux. Je vois que c'est un script qui répond au nom de S10network qui s'occupe de çà; je constate également qu'il fait appelle à ifup deux fois avec un sleep entre les deux; c'est certain, c'est là que çà se passe. je cherche S10network, il se trouve dans /etc/rc.d/rc1-5.d/S10network mais il s'agit en gros d'un lien vers /etc/init.d/network. je commente sa ligne 134 sans me prendre la tête et le problème est réglé.

plutôt pratique non?

conclusion:

j'adopte l'outil; une méthode simple qui peut permettre de diagnostiquer des problèmes basiques liés au démarrage de manière rapide et efficace grâce à une présentation visuelle du processus d'initialisation du système. De plus, il a également un côté ludique puisqu'il permet de mieux voir dans quel ordre chaque service est lancé et donne une idée sur la dépendances entre chacun d'eux.

Problème d'irq dans mon nouveau noyau

Voici une semaine que la mise à jour de mon noyau (2.6.23.1-10.fc7-i686) sous fedora a été effectuée automatiquement. Si tout allait bien jusque là, il semble que ce ne soit plus d'actualité; à l'heure où j'écris ce texte, j'ai du repasser dans la version antérieure que j'utilisais (2.6.22.9-91.fc7-i686).

Avec le nouveau kernel, deux problèmes majeurs sont apparents. premièrement, mon matériel usb n'est plus reconnu à chaud. deuxio, et c'est le plus embêtant, une fois booté, il faut plus ou moins attendre une minutes pour que le son cesse de fonctionner ainsi que le wifi.

Voici ce que le syslog me dit sur cette fameuse minute qui fout le brin.

[Bash]
    Nov 4 17:46:54 Bujeman kernel: irq 10: nobody cared (try booting with the "irqpoll" option)
    Nov 4 17:46:54 Bujeman kernel: [<c045ad5e>] __report_bad_irq+0x36/0x75
    Nov 4 17:46:54 Bujeman kernel: [<c045af74>] note_interrupt+0x1d7/0x213
    Nov 4 17:46:54 Bujeman kernel: [<c045a41f>] handle_IRQ_event+0x23/0x51
    Nov 4 17:46:54 Bujeman kernel: [<c045b8a3>] handle_level_irq+0x88/0xb9
    Nov 4 17:46:54 Bujeman kernel: [<c045b81b>] handle_level_irq+0x0/0xb9
    Nov 4 17:46:54 Bujeman kernel: [<c04074cf>] do_IRQ+0x8c/0xb9
    Nov 4 17:46:54 Bujeman kernel: [<c0405b6f>] common_interrupt+0x23/0x28
    Nov 4 17:46:54 Bujeman kernel: [<c0431dd6>] __do_softirq+0x56/0xd3
    Nov 4 17:46:54 Bujeman kernel: [<c04073e1>] do_softirq+0x6c/0xce
    Nov 4 17:46:54 Bujeman kernel: [<c045b81b>] handle_level_irq+0x0/0xb9
    Nov 4 17:46:54 Bujeman kernel: [<c0431ca9>] irq_exit+0x38/0x6b
    Nov 4 17:46:54 Bujeman kernel: [<c04074e2>] do_IRQ+0x9f/0xb9
    Nov 4 17:46:54 Bujeman kernel: [<c0405b6f>] common_interrupt+0x23/0x28
    Nov 4 17:46:54 Bujeman kernel: [<c061c5c1>] _spin_unlock_irqrestore+0xa/0x13
    Nov 4 17:46:54 Bujeman kernel: [<f885629b>] ehci_urb_enqueue+0x234/0xc97 [ehci_hcd]
    Nov 4 17:46:54 Bujeman kernel: [<c0425d51>] enqueue_entity+0x2dd/0x307
    Nov 4 17:46:54 Bujeman kernel: [<c042ab51>] check_preempt_curr_fair+0x6b/0x71
    Nov 4 17:46:54 Bujeman kernel: [<c04264a0>] __wake_up+0x32/0x43
    Nov 4 17:46:54 Bujeman kernel: [<c043a502>] insert_work+0x50/0x53
    Nov 4 17:46:54 Bujeman kernel: [<c057a38e>] usb_hcd_submit_urb+0x6ca/0x770
    Nov 4 17:46:54 Bujeman kernel: [<c0431cc4>] irq_exit+0x53/0x6b
    Nov 4 17:46:54 Bujeman kernel: [<c04074e2>] do_IRQ+0x9f/0xb9
    Nov 4 17:46:54 Bujeman kernel: [<c0425d51>] enqueue_entity+0x2dd/0x307
    Nov 4 17:46:54 Bujeman kernel: [<c0405b6f>] common_interrupt+0x23/0x28
    Nov 4 17:46:54 Bujeman kernel: [<f8cfbbb4>] wrap_alloc_urb+0x288/0x292 [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cfbc1d>] wrap_submit_urb+0x5f/0x113 [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cfc04f>] wrap_submit_irp+0x2f2/0xc2b [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cec4c3>] NdisInterlockedDecrement+0x9/0xc [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cf5193>] pdoDispatchDeviceControl+0xe/0x28 [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cf3424>] IofCallDriver+0x80/0xaf [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cf3ca1>] IofCompleteRequest+0x8f/0x13f [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cfca34>] wrap_urb_complete_worker+0x0/0x24c [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cfcc25>] wrap_urb_complete_worker+0x1f1/0x24c [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<f8cfca34>] wrap_urb_complete_worker+0x0/0x24c [ndiswrapper]
    Nov 4 17:46:54 Bujeman kernel: [<c043a3e3>] run_workqueue+0x7d/0x109
    Nov 4 17:46:54 Bujeman kernel: [<c043d4fb>] prepare_to_wait+0x24/0x3f
    Nov 4 17:46:54 Bujeman kernel: [<c043ac3c>] worker_thread+0x0/0xc4
    Nov 4 17:46:54 Bujeman kernel: [<c043acf6>] worker_thread+0xba/0xc4
    Nov 4 17:46:54 Bujeman kernel: [<c043d3b1>] autoremove_wake_function+0x0/0x35
    Nov 4 17:46:54 Bujeman kernel: [<c043d2ea>] kthread+0x38/0x5e
    Nov 4 17:46:54 Bujeman kernel: [<c043d2b2>] kthread+0x0/0x5e
    Nov 4 17:46:54 Bujeman kernel: [<c0405dbb>] kernel_thread_helper+0x7/0x10
    Nov 4 17:46:54 Bujeman kernel: =======================
    Nov 4 17:46:54 Bujeman kernel: handlers:
    Nov 4 17:46:54 Bujeman kernel: [<c0579368>] (usb_hcd_irq+0x0/0x4e)
    Nov 4 17:46:54 Bujeman last message repeated 2 times
    Nov 4 17:46:54 Bujeman kernel: [<f89b0f8e>] (snd_intel8x0_interrupt+0x0/0x1e2 [snd_intel8x0])
    Nov 4 17:46:54 Bujeman kernel: [<f893cc27>] (sis900_interrupt+0x0/0x5e9 [sis900])
    Nov 4 17:46:54 Bujeman kernel: Disabling IRQ #10
    Nov 4 17:46:54 Bujeman kernel: ndiswrapper (iw_get_freq:278): getting configuration failed (C00002B6)
    Nov 4 17:46:54 Bujeman kernel: ndiswrapper (get_ndis_encr_mode:741): getting encryption status failed (C00002B6)
    Nov 4 17:46:54 Bujeman kernel: ndiswrapper (iw_get_essid:126): getting essid failed (C00002B6)
    Nov 4 17:46:54 Bujeman kernel: ndiswrapper (iw_get_infra_mode:214): getting operating mode failed (C00002B6)
    Nov 4 17:46:55 Bujeman kernel: ndiswrapper (iw_get_network_type:258): getting network type failed: C00002B6
    Nov 4 17:46:55 Bujeman kernel: ndiswrapper (iw_get_freq:278): getting configuration failed (C00002B6)
    Nov 4 17:46:55 Bujeman kernel: ndiswrapper (get_ndis_encr_mode:741): getting encryption status failed (C00002B6)
    Nov 4 17:46:55 Bujeman kernel: ndiswrapper (iw_get_essid:126): getting essid failed (C00002B6)
    Nov 4 17:46:55 Bujeman kernel: ndiswrapper (iw_get_infra_mode:214): getting operating mode failed (C00002B6)


J'ai posté mon problème sur le forum de fedora et l'on m'a répondu assez rapidement que je devais travailler sur les options de boot de mon kernel... Dans l'instant, je me demande ce que c'est pour du chinoix? où est-ce qu'on règle çà? ne vais-je pas faire de bêtises supplémentaires? Puis, prenant mon courage à deux mains, je plonge sur google et je lis des histoire de compilation de noyau, de modifications des modules à charger,...

Je tombe sur ce blog qui me parle de services, de drivers,... de démarrage système en gros; il ne m'apporte pas une grand intérêt si ce n'est l'outil qu'il utilise pour analyser le démarrage d'une machine de manière concrète, c'est pourquoi je tiens à en garder une trace pour un éventuel approfondissement à l'avenir.

La seconde page visitée est de loin bien plus intéressante : comment compiler son noyeau. Tout ne semble pas d'actualité mais çà m'en dit assez pour comprendre vers où je vais. A la différence de ce tutoriel, pour exécuter le front end graphique de configuration du futur noyau, je tape make xconfig (taper make help pour voir toutes les commandes offertes par le MakeFile en un coup d' oeil )

Dans tous les cas l'interface est bien foutu; à chaque sélection d'une option j'ai un message d'information dans une fenêtre supplémentaire qui me dit à quoi sert l'option sélectionnée.

Pour vérifier que la configuration du kernel est en ordre, j'ai simplement comparé les options sélectionnées entre l'ancien noyau et le nouveau.

Après vérification, je me résous à penser que la solution est ailleurs... il semble qu'il y ai moyen de chipoter à des options supplémentaires à partir du boot comme expliqué ici

après modification de la ligne de commande de boot dans grub (en ajoutant au bou "irqpoll" je n'ai plus de problème avec le son et ethernet mais le wifi reste instable:

[Bash]
Nov 5 12:10:16 Bujeman kernel: ndiswrapper (iw_get_network_type:258): getting network type failed: C00002B6
Nov 5 12:10:16 Bujeman kernel: ndiswrapper (iw_get_freq:278): getting configuration failed (C00002B6)
Nov 5 12:10:16 Bujeman kernel: ndiswrapper (get_ndis_encr_mode:741): getting encryption status failed (C00002B6)
Nov 5 12:10:16 Bujeman kernel: ndiswrapper (iw_get_essid:126): getting essid failed (C00002B6)
Nov 5 12:10:16 Bujeman kernel: ndiswrapper (iw_get_infra_mode:214): getting operating mode failed (C00002B6)
Nov 5 12:10:18 Bujeman kernel: ndiswrapper (iw_get_range:1443): getting bit rates failed: C00002B6
Nov 5 12:10:18 Bujeman kernel: ndiswrapper (iw_get_network_type:258): getting network type failed: C00002B6
Nov 5 12:10:18 Bujeman kernel: ndiswrapper (iw_get_freq:278): getting configuration failed (C00002B6)
Nov 5 12:10:18 Bujeman kernel: ndiswrapper (get_ndis_encr_mode:741): getting encryption status failed (C00002B6)
Nov 5 12:10:18 Bujeman kernel: ndiswrapper (iw_get_essid:126): getting essid failed (C00002B6)
Nov 5 12:10:18 Bujeman kernel: ndiswrapper (iw_get_infra_mode:214): getting operating mode failed (C00002B6)

J'ai cherché encore une bonne paire d'heure après un moyen de résoudre ce conflit, je me suis retrouvé sur cette page qui propose de réinstaller la dernière version de ndiswrapper via subversion... rien n'y fait, je dois actuellement accepter de rester sur l'ancien noyau avec les risques que çà comporte.

page 3 de 3 -