Booter un Raspberry sur une clé USB ou un Disque Dur

RPi_USB

Si vous êtes un bidouilleur et vous utiliser régulièrement un Raspberry Pi, vous avez du surement au moins une fois se heurter au probleme de la carte SD qui ne répond plus ! Et oui, durée de vie de la carte SD, et toute autres mémoire flash, dépende de son nombre de cycles d’écriture. Au repos, les cartes SD dépourvues d’alimentation propre ont pour une durée de vie plus de 100 ans. Mais en écriture, elles nécessitent l’application d’une tension électrique supérieur à celle nécessaire à la lecture. Bref.. cette durée de vie dépend du nombre de cycles d’écriture.

  • pour une carte SD elle est d’environs 10 000 cycles
  • pour une clé USB elle est d’environ 100 000 cycles
  • pour un disque SSD elle est de plus de 100 000 cycles

(donnée moyenne pour matériel MLC (Multi Level Cell) soit 2 bits de données par cellule)

Alors pourquoi de n’est pas booter sur clé USB ou disque SSD ce qui peut être une bénédiction pour les systèmes ayant de nombreuses lectures écritures (Jeedom, Domoticz, Serveur HA-Bridge, LAMP, LMS etc…). L’avantage est de supporté les vitesses de transferts propres à l’USB 2, le système est bien plus réactif que sur une simple carte SD et éviter les problèmes  de système se corrompu.

Matériels nécessaire:

Procédure pour un Raspberry Pi 3.

  1. Mise à jour de la framboise
    1
    
    sudo apt-get update && sudo apt-get upgrade
    sudo apt-get update && sudo apt-get upgrade
  2. Reprogrammer OTP (One-Time Programmable)
    1
    
    echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
    echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
  3. Redémarrer avec
    1
    
    sudo reboot
    sudo reboot
  4. Verifier si le changement a bien été pris en compte
    1
    
    $ vcgencmd otp_dump | grep 17:
    $ vcgencmd otp_dump | grep 17:
  5. Si 17:3020000a s’afficher alors c’est bon 😉
  6. Arrêter votre RPi
  7. installer une image vierge de Raspbian sur votre Clé USB
    ou
    installer une copie de sauvegarde de votre carte SD sur votre clé USB
  8. brancher la clé sans la carte SD et démarrer votre RPI
  9. Le démarrage est un peu plus long mais une fois fait, ça ronronne…

Pour un Raspberry Pi 1 et 2 essayer une mise a jour de firmware avec
sudo rpi-update puis continuer avec les étapes cité plus haut.
si cela ne fonctionne pas télécharger, installer sur une carte SD le fichier bootcode.bin et démarrer votre RPI pour modifier le firmware.

PS: On peut raccourcir le délai de boot sur USB en insérant une carte micro SD vierge.

J’ai fait tourner sur USB un serveur HA-Bridge, mon LSM et bientôt je vais faire passer mon Jeedom sur un SSD.
mes système désormais sont bien plus réactif que sur une simple carte SD, que du bonheurs 😉

Attention, tous les clé USB ne sont pas compatible, ci joint  les clés testées.

Matériels compatible.

Gearbest Clé USB 32 Go
Clé USB 32 Go

Gearbest Clé USB 64 Go
Clé USB 64 Go

Gearbest Disque SSD 120 GBDisque SSD 120 GB

 

 

21 réflexions au sujet de « Booter un Raspberry sur une clé USB ou un Disque Dur »

  1. Bonjour
    Cela fonctionne impecablement. Merci pour ce tuto.
    Penser cependant à vérifier que /boot est bien positionné sur la clé USB (ou le SSD dans mon cas) dans le fichier /etc/fstab.

  2. bonjour,

    merci pour le tuto

    petite question : si on laisse la carte microSD et on branche également la clé USB, sur quelle périphérique le rapsberry va démarrer ?

    merci

  3. Bonjour !
    Tout d’abord, merci pour ce tuto !
    Je souhaiterai passer sur clé USB mon Jeedom qui est installé sur une micro carte de 8 Go géré par un Pi3.
    Mais comme je ne suis pas un expert dans le domaine, je préfère poser quelques questions !
    Si je comprends bien, les étapes 1 à 6 seront faites avec la carte SD actuellement installée dans mon Pi3.
    C’est à partir de l’étape 7 que je ne comprends pas bien:
    Étape 7: j’installe une image vierge de raspbian (stretch light actuellement)
    Étape 8: brancher la clé sans la carte SD: alors on ne se sert pas de ce qui a été fait dans les étapes 1 à 6 ??
    Autre choix:
    Etape 7: installer une copie de sauvegarde de votre carte SD sur votre clé USB: On parle bien ici d’installer une image de la carte SD ? (faite avec Win32DiskImager ou Etcher, par ex)
    Si c’est cela, et avec le second choix, mon Jeedom sera opérationnel de suite ?

    C’est peut être des questions idiotes, mais avant de faire une bêtise…
    En vous remerciant de votre aide,
    Cordialement,
    Philippe

    Etape 7:

    • Bonjour,
      L’étape a 1 à 6 permet d’activer le multiboot sur RPi. Il peut être fait avec n’importe quelle carte SD.
      Les étapes 7 à 9 installe une nouvelle distribution sur la clé USB.
      Pour transferer ton Jeedom il faut que tu fasse 1 à 6.
      tu clones ton SD avec Win32DiskImager par exemple
      attention à la taille si besoins (USB > SD) tu dois redimensionner ta partition sur la clé, si non tu va te retrouver avec seulement 8 Go sur une clé plus grande.
      après tu insères ta clé USB avec Jeedom cloné et tu démarre ta Framboise (sans la SD).

      • Bonsoir,

        Merci beaucoup pour vos réponses!!
        OK, je n’avais pas compris que l’activation du multiboot se faisait sur le RPi et non sur la carte SD !!
        OK pour graver une image de mon Jeedom sur la clé USB. Dans ce cas, pas besoin d’installer une nouvelle distribution sur la clé.
        J’ai une clé de 8 Go, donc pas besoin de redimensionner la partition ! Je fais le test avec cette clé. Mais merci pour cette remarque qui me servira si je veux passer sur une clé de plus grande capacité !

        Je me lance de suite dans l’aventure !!
        Je vous tiendrai au courant du résultats !!

        Merci encore pour votre aide !!
        Philippe

        • Bonsoir,

          Retour d’expérience :
          Ça marche nickel !! Plus de carte SD !
          Merci beaucoup pour votre tuto et vos explications ! je ne devrai plus avoir de plantage comme c’était le cas avec les cartes SD.

          Pas contre suite au redémarrage du Pi3, la led verte clignote sans arrêt !
          Elle n’est plus représentative de l’activité de jeedom me semble t il.
          J’ai trouvé un tuto pour l’éteindre:

          En SSH, j’ai suivi ceci:
          Enter these commands into terminal:

          mount -o remount,rw /
          mount -o remount,rw /boot
          nano /boot/config.txt

          At the bottom of /boot/config.txt add this:

          # Disable the ACT LED.
          dtparam=act_led_trigger=none
          dtparam=act_led_activelow=off

          CTRL + X, then Y, then enter, reboot the pi. No more LED.

          Et ça à fonctionné, plus de led verte allumée !

          Si cela peut servir à d’autre, tant mieux !

          Encore merci pour votre aide.
          Philippe

  4. Bonjour ,
    j’ai une petite question , peut on revenir en arriére de cette procédure ? une fois que le boot est sur la clé USB et que l’on veut remettre une carte SD en boot comment on fait ? si on enlevé la clé USB le boot se fera automatiquement sur la carte SD ou faut il faire d’autres manipulations ?

    Merci d’avance pour vos futures réponses

    Patrice

  5. Ping : Cloud personnel la meilleure solution pour gérer ses données à la maison - Domotiques Home

  6. Bonjour,

    J’ai suivi vos conseil, j’ai fait sur mon RPI en ssh :
    cp -v /boot/config.txt /boot/config.txt.bak
    echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
    sudo reboot
    une fois le RPI démarrer en console j’ai tapé
    vcgencmd otp_dump | grep 17:
    le retour été correct :

    serveur@raspberrypi:~ $ vcgencmd otp_dump | grep 17:
    17:3020000a
    serveur@raspberrypi:~ $ exit
    d�connexion
    Connection to 192.168.1.32 closed.
    laurent@laurent-PC-Bureau:~$

    J’ai donc installer l’image disque de raspbian sur mon disque dur

    laurent@laurent-PC-Bureau:~$ sudo dd if=/home/laurent/Téléchargements/Raspberry/PI-3/2018-06-27-raspbian-stretch.img of=/dev/sdg bs=4M
    24+1 enregistrements lus
    24+1 enregistrements écrits
    100925440 octets (101 MB) copiés, 1,16834 s, 86,4 MB/s
    laurent@laurent-PC-Bureau:~$

    Puis avec gparted sur mon disque dur /dev/sdh j’ai coché boot dans Gérer les drapeaux
    puis j’ai brancher mon disque dur maxtor 1To, sans la carte SD et démarrer le RPI
    Rien ne fonctionné !!!!

    J’ai alors m’y ma carte sd sur un lecteur clé usb sd à lusb ainsi que mon disque dur le tout sur mon PC Linux.
    Puis j’ai fait un dd

    dd :
    laurent@laurent-PC-Bureau:~$ sudo dd if=/dev/sdh of=/dev/sdg bs=4M
    1900+0 enregistrements lus
    1900+0 enregistrements écrits
    7969177600 octets (8,0 GB) copiés, 95,2907 s, 83,6 MB/s
    laurent@laurent-PC-Bureau:~$ dd if=/dev/sdh of=/dev/sdg bs=4M

    Fdisk :
    laurent@laurent-PC-Bureau:~$ sudo fdisk -l

    Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sda » ! L’utilitaire fdisk ne prend pas GPT en charge. Utilisez GNU Parted.

    Disk /dev/sda: 4000.8 GB, 4000787030016 bytes
    255 têtes, 63 secteurs/piste, 486401 cylindres, total 7814037168 secteurs
    Unités = secteurs de 1 * 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 4096 octets
    taille d’E/S (minimale / optimale) : 4096 octets / 4096 octets
    Identifiant de disque : 0x00000000

    Périphérique Amorçage Début Fin Blocs Id. Système
    /dev/sda1 1 4294967295 2147483647+ ee GPT
    La partition 1 ne commence pas sur une frontière de cylindre physique.

    Disque /dev/sdh : 7969 Mo, 7969177600 octets
    246 têtes, 62 secteurs/piste, 1020 cylindres, total 15564800 secteurs
    Unités = secteurs de 1 * 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d’E/S (minimale / optimale) : 512 octets / 512 octets
    Identifiant de disque : 0xd27dfcf5

    Périphérique Amorçage Début Fin Blocs Id. Système
    /dev/sdh1 * 8192 93814 42811+ c W95 FAT32 (LBA)
    /dev/sdh2 94208 15564799 7735296 83 Linux

    Disk /dev/sdg: 1000.2 GB, 1000204885504 bytes
    255 têtes, 63 secteurs/piste, 121601 cylindres, total 1953525167 secteurs
    Unités = secteurs de 1 * 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 4096 octets
    taille d’E/S (minimale / optimale) : 4096 octets / 33553920 octets
    Identifiant de disque : 0x000cb048

    Périphérique Amorçage Début Fin Blocs Id. Système
    /dev/sdg1 8192 30719999 15355904 c W95 FAT32 (LBA)
    /dev/sdg2 30720000 1953523711 961401856 83 Linux
    laurent@laurent-PC-Bureau:~$
    laurent@laurent-PC-Bureau:~$ dd if=/dev/sdh of=/dev/sdg bs=4M
    dd: impossible d’ouvrir «/dev/sdh»: Permission non accordée
    laurent@laurent-PC-Bureau:~$

    Puis j’ai demarrer le RPI sans carte SD avec le disque dur USB 3.0 Maxtor 1To.
    Et ça marche nickel, au début il faut un peut attendre env 20mn.
    Tout ça pour dire c’est dommage je préférer partir d’une image vierge, voila si ça peut aider certain.

    Merci.

  7. Bonjour,

    Après plusieurs tentative, il m’est impossible d’avoir le résultat obtenu, je me retrouve toujours avec le même résultat:
    17:1020000a

    Merci d’avance pour l’aide apporté

      • Bonjour,
        Merci de la rapidité de votre réponse.
        Rien n’y fait, malgré la mise à jour de la framboise, et du firmware. Tout fonctionne parfaitement, aucune erreur, excepté la modification du boot.

        J’ai même pris l’initiative de rajouter moi même la ligne de commande dans le fichier config.txt, sans résultat positif.

        Je continu mes recherches, et je vous remercie pour l’aide apporté.

        Cordialement, Valmone

        • Bonjour,

          Je suis dans le même cas que vous, sur mes 2 RPI, un RPI 1 et un RPI 1 B+.

          Il semblerait qu’ils soient trop vieux pour supporter cela, même avec une MAJ du firmeware…

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.