SheevaPlug qui ne boot pas après mise à jour du noyau
C'est rare mais les gars du projet Debian se sont planté. Peut être que j'ai loupé un truc, mais après avoir redémarrer suite à la mise à jour de mon SheevaPlug vers le noyau 2.6.32-5-kirkwood, le système sortait en kernel panic lors de l'initialisation du réseau. Pas pratique ...
Une petite recherche sur le web m'indique le liens suivant : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597302#35
Le problème vient du fait que la commande flash-kernel n'est pas appellée après la mise à jour du noyau. La marche à suivre est de rajouter l'option ipv6.disable=1 à la ligne de commande (setenv bootargs ipv6.disable=1) lors du boot. Evidement chez moi ça ne fonctionne pas.
Bref un système inutilisable (puisqu'il plante avant le boot). Ma configuration est la suivante :
- Ubuntu d'origine dans la mémoire flash intégrée
- Debian installée sur la clé USB avec les partitions suivantes :
/dev/sda1 /boot
/dev/sda2 /
/dev/sda3 swap
/dev/sda4 /home
Heureusement on a accès à la clé USB depuis l'Ubuntu d'origine, cela va permettre de remettre en marche tout ça. Il faut d'abord démarrer sous Ubuntu (sortir le cable USB pour accéder à l'interface RS232 via putty ou screen), monter la clé, se chrooter (c'est donc "comme" si on avait booté sur la clé). Hélàs /dev/sdaX n'est pas automatiquement détecté par udev (les événements ne lui sont pas envoyé pour qu'il crée les périphériques), on va donc le faire à la main avec mknod. Puis on monte /boot et /proc avant de pouvoir lancer flash-kernel. On revient sous Ubuntu, un petit fsck sur les partitions modifiées et on peut enfin redémarrer normalement sur notre ancien système !
mount -t ext2 /dev/sda2 /media chroot /media mknod /dev/sda1 b 8 1 # 8 2 pour /dev/sda2, 8 3 pour /dev/sda3 ... mount -t ext2 /dev/sda1 /boot mount -t proc /proc /proc flash-kernel exit reboot
redémarrer sous Ubuntu
fsck /dev/sda1 fsck /dev/sda2 reboot
J'ai remarqué que lorsqu'on débranche brutalement l'alimentation, il ne boote plus sur la clé USB. L'astuce consiste à démarrer sur l'Ubuntu d'origine, monter la partition, faire un ls, démonter la partition, faire les fsck sur les partitions modifiées (sinon il va le faire au boot de la clé et comme le système a été modifié va redémarrer ...), puis redémarrer le Sheeva (via un reboot).
mount -t ext2 /dev/sda2 /media ls /media umount /media fsck /dev/sda2 reboot
L'idéal est de créer un script et de le rajouter dans le crontab d'Ubuntu pour qu'il s'exécute toutes les 10 minutes. Comme ça si le redémarrage intervient pendant la nuit ou quand on n'a pas accès au SheevaPlug il revient tout seul sur Debian. Les 10 minutes permettent de désactiver le crontab quand on a des choses à faire sous Ubuntu (comme un flash-kernel par exemple ...).