[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 !

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

  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

  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 :)

    1. 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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.