Publié le 13 octobre 2014 - par

Installer une version antérieure du noyau sur Raspberry Pi

demi_tour_200pxComme beaucoup d’entre nous, Richard met régulièrement à jour son Raspberry Pi. Jusque là tout va bien…
Sauf qu’après la dernière mise à jour, les choses commencent à se compliquer : « …Je viens de mettre à jour ma Framboise (sudo apt-get update ; sudo apt-get upgrade), puis j’ai tenté un sudo rpi-update, et c’est là que les ennuis ont commencé. Depuis le passage au noyau 3.12, quand j’essaie de lancer opencpn, j’obtiens :
FATAL : cannot locate cpu Mhz in /proc/cpuinfo » Richard souhaite revenir en arrière et réinstaller une version précédente du kernel et du firmware.

Une recherche amène à deux informations, l’une sur https://github.com/Hexxeh/rpi-update et l’autre sur http://tech.enekochan.com/en/2014/03/08/upgradedowngrade-to-a-specific-firmware-kernel-version-with-rpi-update-in-raspbian/

Pour ceux à qui l’anglais pose problème, voici comment procéder :

Dans un premier temps, prenez connaissance de la version de noyau GNU/Linux et de firmware installés sur votre Raspberry Pi :

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.12.29+ #714 PREEMPT Wed Oct 1 23:11:38 BST 2014 armv6l GNU/Linux

pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd version
Oct  6 2014 22:06:47
Copyright (c) 2012 Broadcom
version a363c9d4a3ff3c2f367d45044015674a8639dbeb (clean) (release)

Ici c’est un noyau 3.12.29+ qui est installé et vous avez la version de firmware sur la dernière ligne : a363c9d4a3ff3c2f367d45044015674a8639dbeb datée du 6 octobre 2014.

Rendez vous maintenant sur la page https://github.com/Hexxeh/rpi-firmware/commits/master

choix_kernel_600pxVous pouvez voir dans la liste les mises à jour de noyaux…

Choisissez celui qui vous intéresse en cliquant sur les chiffres situés à droite de la ligne, dans notre cas c’est le noyau 3.12.28 :

choix_firmware_2_600pxVous accédez à la page du commit. Sur la ligne d’adresse de votre navigateur relevez le hash du commit. c’est cette valeur qui va vous permettre de revenir en arrière…

choix_firmware_3_600px

Allez, on revient sur le terminal du Raspberry Pi et on lance l’installation du kernel et du firmware  en tapant sudo rpi-update suivi du hash que vous avez relevé :

pi@raspberrypi ~ $ sudo rpi-update de69b134dc6e4066fe70db29816d57895dffd9b9
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7635 100 7635 0 0 10769 0 --:--:-- --:--:-- --:--:-- 12962
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 168 0 168 0 0 267 0 --:--:-- --:--:-- --:--:-- 372
0 0 0 21.3M 0 0 360k 0 --:--:-- 0:01:00 --:--:-- 365k
*** Updating firmware
*** Updating kernel modules
*** depmod 3.12.28+
*** Updating VideoCore libraries
*** Using HardFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to de69b134dc6e4066fe70db29816d57895dffd9b9
*** A reboot is needed to activate the new firmware

Après un (long) moment d’attente, vous revenez à l’invite de commande. Il faut maintenant redémarrer votre framboise pour prendre les modifications en compte :

sudo reboot

Vous pouvez maintenant revérifier les versions installées :

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux

pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd version
Sep  8 2014 18:59:28
Copyright (c) 2012 Broadcom
version 3f2f2607186be72e4945cfa8edc77872dfc73195 (clean) (release)

Vous pouvez vérifier que c’est le noyau 3.12.28+ qui est actif, et que le firmware est une version datée du 8 septembre 2014.

Conclusion :

Cette solution n’est pas forcément la plus efficace si vous utilisez le Raspberry Pi pour une application « sérieuse » ou professionnelle.
Comme Richard qui est à l’origine de cet article, travaillez avec 2 cartes SD, une en version N et une autre en N-1. Ceci permet de revenir en arrière très facilement.
L’autre solution est de faire une sauvegarde systématique de la carte SD (win32DiskImager ou dd sous Linux) avant toute mise à jour.

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. .

7 réflexions au sujet de « Installer une version antérieure du noyau sur Raspberry Pi »

  1. simonet

    merci pour ce tuto de downgrade du firmware de nos cher Pi.

    ne serait il pas intéressant que les concepteurs de « RPI-UPDATE » incluent des options dans leur script de MAJ??

    un –downgrade « hash du firmware » par exemple

    je posterais bien une issue mais je ne dispose pas de compte sur github. (je vais voir pour le faire, on ne sait jamais).

    courage à tous ceux qui vont se lancer dans le down de leur firmware.

    Répondre
  2. Ping : Installer une version antérieure du noya...

  3. tilalo

    Bon, ben ça marche super bien. Il faut juste remonter jusqu’à la version 3.10.38 pour que Opencpn refonctionne. Il n’a pas supporté le passage à la version 3.12.

    Merci pour tout.

    Répondre
  4. Lionel

    Merci pour ce tuto…
    En passant hier du firmware 3.12.36 au 3.18.7, ma sonde 1-wire DS18B20 ne remontait plus de température et le montage sur ma freebox dans fstab ne fonctionnait plus….
    Je reste pour le moment en 3.12.36. Est-ce la série 3.18.x qui pose soucis?… à voir.

    Répondre
  5. Ping : 3 – Installation du Wifi – Piwi

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.