[Raspberry Pi] Mettre tout le système sur disque dur USB ou SSD (et ne plus utiliser de carte SD)

Raspberry PI Raspbian sur SSD HDD USB

Ce qui devait arriver arriva… Ma carte SD accueillant le système Raspbian de mon Raspberry Pi est morte au bout d’un an d’uptime, malgré :

Ayant un SSD 256Go qui « trainait » chez moi, j’ai branché un cable USB3/SATA dessus et zou, voila une « méga clé USB » adossée au Raspberry Pi. Le but de ce tutoriel est de démarrer le raspberry Pi sur ce SSD/Clé USB/Disque dur et de s’affranchir totalement de la carte SD, point de fragilité du système.

Raspberry PI Raspbian sur SSD HDD USB2

Permettre le boot depuis les ports USB, sans carte SD insérée

Cette étape n’est possible que sur le Raspberry Pi 3B/3B+, et simplifie grandement la façon de faire. On va écrire dans la mémoire OTP du Raspberry Pi (One-Time Programmable). C’est une mémoire non volatile (donc qui ne s’efface pas quand on éteint l’appareil) et dont les registres ne peuvent être modifiés qu’une seule fois. Rien de bien grave cependant puisque :

  • Nous allons juste dire au Raspberry Pi de booter sur les ports USB s’il ne trouve aucun système valide sur le lecteur de carte micro-SD, comme on le ferait dans le bios d’un PC
  • Cela n’empeche en aucun cas l’utilisation classique du Raspberry Pi avec un système sur micro-SD, si vous changez d’avis plus tard.

Voyons la valeur actuelle inscrite dans la mémoire OTP du Raspberry Pi :

sudo vcgencmd otp_dump |grep 17

Vous devriez avoir la valeur 17:1020000a

On rajoute une petite ligne dans un fichier texte qui va dire au Raspberry de modifier l’adresse 17 de la mémoire OTP à la valeur souhaitée, permettant ainsi le boot sur USB :

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

On reboote le Raspberry Pi, à la main ou en ligne de commande :

sudo shutdown -r now

Une fois redémarré, on lit la valeur de l’adresse mémoire 17 dans la mémoire OTP :

sudo vcgencmd otp_dump |grep 17

Ca doit nous retourner 17:3020000a. Le plus dur est fait ! Le Raspberry Pi peut maintenant booter sur l’USB, mais toujours également sur la micro-SD, élargissant ainsi les manips et bidouilles possibles !

Vous pouvez éditer le fichier config pour enlever la ligne « program_usb_boot_mode=1 » devenue inutile, afin de ne pas induire une modification sur un autre Raspberry Pi par erreur si vous y branchez la carte SD.

sudo nano /boot/config.txt

Installer Raspbian sur le SSD

Téléchargez une version récente de Raspbian (ou autre système de votre choix) et copiez cette image sur le SSD préalablement formaté. S’il n’est pas formaté, il le sera à cette étape donc vérifiez que vous n’avez pas de donnée importante dessus !!!

Télécharger Balena Etcher (ici). C’est un logiciel sur Windows et Linux permettant d’écrire une image disque sur un support externe. Par défaut, il ne détecte que les supports de petite taille type clé USB ou Cartes SD mais pas les SSD ou HDD.

Il faut donc aller dans les options et cocher « unsafe mode ».  Il faudra redoubler de prudence en sélectionnant le disque à écrire !! Je vous laisse imaginer le désastre si vous écrivez sur le disque D de votre PC par exemple, avec toutes vos données de travail…

Balena-Etcher-copier-image-Raspbian-sur-SSD

Charger l’image disque de Raspbian et sélectionner le BON disque externe. Cliquer sur flash et c’est parti !

Balena-Etcher-ecriture-sur-SSD-Image-Raspbian-Raspberry-Pi

On peut alors connecter le disque externe ou SSD en USB sur le Raspberry Pi et enlever la carte micro-SD.

Le Raspberry Pi démarrera sur le SSD ou disque dur externe. Le démarrage est plus long de quelques secondes, la séquence de boot cherche si la micro-SD ne lui permet pas de booter avant de passer au hub USB.

Redimensionner les partitions (facultatif)

Souhaitant faire des images disques régulières de mon système (ça m’a sauvé plus d’une fois), il était inconcevable d’avoir une partition rootfs de 250Go ! J’ai donc éteint le Raspberry, débranché le SSD et l’ai branché sur un autre poste afin de redimensionner la partition rootfs (environ 8G suffisent largement) et créer une autre partition d’échange en ext4 de 215Go.

L’excellent paquet Gparted sous Linux fait bien le travail, après avoir démonté le volume à redimensionner (clic droit > démonter). Aucune clé ne doit apparaitre à droite du nom du volume sinon vous ne pourrez pas le redimensionner.

gparted-Redimensionner-partitions-Raspberry-Pi-SSD-HDD

Voilà un Raspberry Pi 3B+ en parfait état de marche, fonctionnant sans carte SD et avec un SSD branché en USB, de taille conséquente. A moi les projets farfelus !

29 commentaires

  1. Bonjour j’aimerai savoir si il est possible de faire booter une image recalbox pi 3 b sur
    Une pi 3 b+ je ne connaît rien merci

    • Bonjour,
      Aucun souci, l’architecture matérielle est tellement proche que ça passera sans souci !
      Bon jeu rétro ;)

  2. Bonjour,
    Je démarre mon RPi 3+ depuis un USB 3.0. Savez-vous si je peux passer sur un RPi 4? Notez que j’ai mis à jour le système sur Buster. Mais j’hésite à acheter un Pi 4 car je ne suis pas sûr qu’il démarrera de la même façon.
    Merci :)

    • Bonjour,
      Malheureusement, le Raspberry Pi ne permet pas encore le boot sur USB. Il va falloir être patient, c’est prévu très prochainement. Vous pouvez faire une image disque avec Win32 disk imager et la copier sur une carte SD. Elle devrait (j’insiste sur devrait) fonctionner sur le RPI4.

  3. Salut , merci pour ce tuto , facile a mettre en oeuvre .

    Cependant , pour repondre a  » lls  » , il est certain que la copie exacte de la carte du pi3 ne permet pas de faire demarrer un pi 4 en l ‘ etat.

    la partirion du pi4 qui permet le demarrage est bien plus grande que celle du pi 3 , elle est prevu pour le demarrage de tous les pi .
    De plus , le pi 4 et le pi3 ont une configuration materielle bien differente ce qui implique des changements dans les pilotes et d’ autres fichiers du boot .

    bref vous l ‘ aurez compris , ca ne merchera jamais tel quel .

    Cependant , il existe une commande ou procedure ( je ne me rappelle plus ou j ‘ ai vu ca , je crois que c ‘ est sur : https://www.raspberrypi.org/forums/index.php , mais c ‘ est certain que ca existe ) qui permet de modifier la sauvegarde du pi3 et de faire demarrer le pi4 .

    evidemment , apres cela revenir en arriere , n ‘ est donc pas possible , j ‘ entends par là que apres la modification , si vous mettez la carte dans votre pi 3 , il ne demarrera pas .

    donc avant de modifier faites une sauvegarde complete de votre SD et placez la en lieu sur !
    en cas de probleme ca peut toujours etre utile :P

  4. bonjour a tous
    J’ai un raspberry 3b+ j’ai fait la manip pour booter sur un disque dur externe il me retourne 17:3020000a..
    j’ai un disque externe en ide auto alimenté et sa fonctionne pas y’a t’il une autre manip a faire?

  5. Bonjour,
    Il est dit parfois que la manip n’est pas obligatoire sur les 3b et les 3b+.
    Je ne sais quoi en penser. Mais quoi qu’il en soit, je vais essayer.

    Merci

  6. Bonjour, j’ai suivi la procédure à la lettre (pi3b ) et j’ai bien le « 17:3020000a » mais rien à faire cela ne veut pas booter sur le ssd ( avec une image raspbian lite sur usb .
    J’avais mis à jour le firmare du raspberry juste avant, peut-être est-ce lié….?
    Auriez-vous une idée?

  7. Bonjour,
    Pour ceux pour qui ça ne démarre pas, vous avez bien enlevé votre carte SD ?
    Je suis en train de me renseigné pour faire la même manip que je n’ai pas encore testé, mais des fois on oublie un truc tout simple et on cherche pendant longtemps avant de se rendre compte de notre boulette.
    En tous cas, merci pour ce tuto bien fait et les conseils comme la taille de la première partition pour pouvoir faire des images régulières sont qu’elle soient trop gourmandes en place.

  8. Bonjour,
    Merci pour votre tutoriel, je l’ai suivi à la lettre mais malheureusement je reste avec la même réponse… 17:1020000a.
    J’ai un raspberry pi 2b.
    Cordialement.
    Seb

  9. Bonjour, le disque dur est un VERBATIM 1To en USB3 sans Alimentation ext, il n’est pas détecté donc pas de création du fichier SDA ou SDA1 dans le répertoire /DEV
    comment faire pour que le disque dur soit détecté ?

    Cordialement

  10. Bonjour à vous,

    Je sais bien que vous n’êtes pas un helpdesk, mais j’ai tenté votre manoeuvre.
    Je démarre bien, sans carte SD, sur le disque SSD.
    Cependant, après chaque mise à jour, plus de démarrage possible sur ce disque…
    J’ai retenté la manoeuvre en reformattant le SSD, reflashé, répété l’opération … et même résultat :-(

    On ne sait jamais, si vous aviez une piste …

    Encore merci pour votre tuto

  11. Bonjour,

    Est-ce qu’aujourd’hui cette manipulation est possible sur une raspberry 4 (4Go) ?

    Merci pour cet excellent tuto.

    Cordialement.

  12. Bonjour;
    Je souhaiterai utiliser votre méthode pour plusieurs choses :
    – Installer un multiboot pour RASPBIAN + KODI + RECALBOX sur HDD externe
    – Utiliser le HDD externe également pour stocker toutes les roms des jeux recalbox.
    Pensez vous que c’est faisable ?
    Est ce que le fait d’utiliser un HDD externe à la place de la microSD me permettra un gain de vitesse sur raspbian ?

    Merci

  13. Bonjour
    j’ai essayé la procédure mais j’obtiens 17:1020000a et pas 17:3020000a
    J’ai installé la dernière version de Rasbian :4.19.97 du 30/01/2020. Mon Raspberry est bien in PI3
    j’ai fait 2 fois sudo apt-get update et sudo apt-get upgrade
    J’ai vérifié qu’à la fin du fichier config.txt il y a bien la ligne program_usb_boot_mode=1
    Bref je suis bloqué

    merci de vos suggestions

    • Bonjour, j’ai le même problème que toi. as tu eu une réponse ?
      cordialement,

  14. Bonjour je tombe sur votre tutoriel, je n’avais aucun soucis jusque présent. J’avais suivi un autre tuto tout fonctionnait depuis plus d’un an. Depuis 2 jours mon pi se « figé » je perd la liaison réseaux et quand je regarde physiquement celui ci mon disque dur est toujours avec sa diode allumée en fixe (la où avant elle clignotte par l’activité) j’ai refait un disque dur , pareil ça a fonctionné un jour. Et de nouveau perte de réseau et disque avec diode fixe. Auriez vous une idée.?

  15. bonjour, je viens de faire la manip sur un raspberry pi 3B. Ce qui est hallucinant c’est que ces instructions sont recopiées par plein de gens puisqu’on les retrouve partout sur le web, mais apparemment sans comprendre les manips. J’en veux pour preuve la commande trop compliquée :
    echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
    Et pourquoi pas
    sudo echo program_usb_boot_mode=1 >>/boot/config.txt
    ce qui est quand même bien plus compréhensible.
    Bises.

    • pour certains, tee est plus lisible. Pour d’autres, c’est la redirection de sortie >> . Simple question d’habitude aussi. Par exemple, écrire un script qui redirige les sorties standard et erreur est plus lisible avec tee (mais j’utilise les redirections, comme toi :thinking: )

      Après, les gens recopient ce qu’ils trouvent sans chercher à comprendre, ils ne peuvent s’en prendre qu’à eux-même en cas de mauvaise manip… c’est la base!

  16. Attention l’alimentation électrique du PI est très faible de ce fait les disques dur classiques (non SSD) externes qui ne pas connectés à un hub USB ayant une alimentation électrique externe ne fonctionnent pas ou provoque des reboot intempestifs.

    • Très bonne remarque, j’ai d’ailleurs laissé tombé car seule une clé USB pouvait tourner sur de longues durées sans coupure d’alim. Même avec une alimentation costaud, un SSD ou disque externe est trop gourmand. Dès que l’on lance des tâches un peu lourdes en processeur ou RAM sur le Raspi, le disque coupe et le Raspberry reboote.

    • Bonjour Brice,
      peux tu expliquer le hub USB pour assurer une alimentation fiable du SSD pour éviter les reboots ? Que faut-il que j’installe entre le ssd et le raspberry stp ?

  17. Bonjour,
    comme tout le monde, ma carte SD a cramé et j’ai installé ma solution domotique sur un SSD, ça boote et fonctionne parfaitement mais au bout de 24h environ, le SSD s’éteint, le Raspberry reste allumé mais sans SSD, plus rien ne fonctionne. Savez vous comment éviter ça en conservant mon SSD externe ? (dont le boitier n’a qu’une entrée pour l’alimentation + la data)

  18. Es ce que cette modification est elle compatible avec/sur un PI zero , merci.

Les commentaires sont fermés.