Réparer une « journal commit I/O error » sur le Raspberry Pi

La problématique
Il m’est arrivé récemment d’avoir à arrêter le Pi d’une manière qui n’est pas très recommandable, soit en lui coupant le courant, la console ne répondant plus via SSH. En le remettant en marche, j’avais quelques appréhensions sur sa capacité à tout remettre en ordre, mais visiblement tout se passait bien… ou presque. En coupant l’électricité durant l’installation (foireuse) d’une application, j’ai endommagé le système de fichiers, plus précisément le journal du système. En tentant de relancer l’installation, j’ai obtenu une très jolie erreur qui me tenait à peu près ce langage:
[52666.031183] journal commit I/O error
Malheureusement, après une erreur comme celle-ci, il s’avérait que le Raspberry Pi rentrait dans un état incohérent et me faisait perdre l’usage de nombreuses commandes système, dont la commande shutdown qui m’aurait permis de l’arrêter correctement. Fâcheux…
La solution
En recherchant un peu sur Internet une solution au problème que je rencontrais, je suis tombé sur l’article d’une personne qui avait rencontré le même problème mais sur un disque dur externe. Il apparaît que la solution trouvée par cette personne (et trop peu mise en avant à mon goût, d’où cet article) est extrêmement simple à appliquer même sur le disque du système. Voici ce que cela donne en pratique:
- Si l’erreur se produit sur l’utilisation d’un disque externe, il suffit de le démonter et de le scanner à l’aide de l’utilitaire fdisk (on suppose ici que le volume est sous /dev/sdb1, utiliser la commande fdisk -l pour trouver l’emplacement de montage du volume):
# lister les disques et partitions du système
sudo umount /dev/sdb1
# lancer une analyse du disque
fsck /dev/sdb1
- Si l’erreur se produit au niveau du système (comme cela a été mon cas), il faut redémarrer le Pi et planifier une vérification du système de fichier en vue d’une réparation:
# l'option 'r' demande le reboot et 'F' une vérification forcée
sudo shutdown -rF now