Publié le 26 juillet 2017 - par

Boot simplifié sur USB avec les Raspberry Pi 1, 2 et 3

La Fondation a dû avoir les retours sur les dégâts que le  Raspberry Pi occasionne aux cartes SD. C’est sans doute pour pallier à ce problème qu’elle a développé des moyens de s’affranchir de la carte SD, le maillon faible du Raspberry. Dyox vous propose ce tutoriel pour éliminer la carte micro SD du Raspberry Pi.

Boot simplifié sur USB avec les Raspberry Pi 1, 2 et 3

Nous devons cet article à Jean-François (@dyox), lecteur assidu et attentif du blog, et participant actif au forum framboise314. Il a publié ce tutoriel il y a quelques jours sur le forum.

Lexique
OTP : One-Time Programmable
MSD : Mass Storage Device (pour dire disque dur ou clé USB)
DD : Disque Dur

Si c’est une nouvelle installation :Sinon, il faut refaire une image complète de la carte micro SD pour la mettre sur le MSD.

Les prérequis

  • Un Raspberry Pi 3 (BCM2837)
  • Une version de Raspian >= 2017-04-10 (actuellement 2017-07-05)
  • Le nouveau bootcode.bin pour les Raspberry Pi (BCM2835), Raspberry Pi 2 (BCM2836) et si la méthode conventionnelle pour le Raspberry Pi 3 ne fonctionne pas.

Nota : Le tutoriel qui suit concerne le Raspberry Pi 3 avec une nouvelle installation de Raspian, en l’occurrence la version du 2017-07-05.

Tutoriel

Sur PC (pour ma part sous Windows) :

  1. Installez Raspian sur la SD ET ensuite sur le MSD avec la procédure conventionnelle.
  2. Reprogrammer l’OTP en ajoutant program_usb_boot_mode=1 à la fin du fichier config.txt de la carte SD. Pour cela, aucune difficulté. Bien que la SD possède au moins 2 partitions, seule la 1ère (la partition de boot), qui est en FAT32, est accessible sous Windows et donc le fichier config.txt peut être modifié sous Windows
  3. Démarrer le Raspberry Pi avec la carte microSD et on vérifier tout de suite la modification du registre 17 de l’OPT :
    $ vcgencmd otp_dump | grep 17
    17:3020000a  la réponse doit être cette valeur, sinon il est inutile de continuer

On peut maintenant effacer ou commenter la ligne program_usb_boot_mode=1

Vous pouvez éteindre le Raspberry Pi et enlever la carte micro SD.

Branchez le MSD et démarrez le Raspberry Pi. Si le MSD est compatible, on boote dessus. Le temps de démarrage se situe entre 5 et 10s.

Les résultats


Pour ma part, cela fonctionne avec un -très vieux- DD 2,5 » 40Go (Momentus, 0,47A) PATA branché sur hub alimenté car directement sur le Raspberry Pi il « gratte », même avec son cordon double USB. Et je n’ai pas besoin de ralentir la séquence de boot (voir plus loin).

Si cela ne fonctionne pas pour vous voir la section dépannage.

Voilà c’est fini ! Votre Raspberry Pi peut maintenant booter sur USB et LAN, en plus de la micro SD bien sûr ! Si celle-ci est présente, elle reste prioritaire lors de la séquence de boot.

Dépannage

  • Si cela ne fonctionne pas, essayez d’étendre la durée d’initialisation du MSD (5s au lieu de 2s) avec l’option program_usb_timeout=1 dans le config.txt.
  • Augmentez l’intensité des ports USB avec l’option max_usb_current=1 dans le config.txt (1200mA au lieu de 600mA) pour un DD. Inutile car automatique sur la v3 !
  • Essayez aussi avec le nouveau bootcode.bin. A mettre SEUL sur une carte microSD formatée en FAT32. Si cela ne fonctionne toujours pas, ajoutez un fichier timeout en plus pour étendre la durée d’initialisation du MSD à 6s.
  • Si cela ne fonctionne toujours pas, alors le MSD n’est pas compatible.

Astuces

On peut raccourcir le délai de boot sur MSD en insérant une carte micro SD vierge (5s de gagnées)

Si le MSD est une clé USB, pensez à utiliser le système de fichier F2FS.

Pour en savoir plus

Lisez les articles pointés par des liens dans les sources, tout est bien documenté et expliqué en particulier sur https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/README.md

Pour info

Mes clés OCZ ATV USB2 32Go et INTEGRAL USB2 32Go (ci-dessus) n’ont pas fonctionné

Par contre cette clé Transcend 16 Go a fonctionné sans « artifice », comme mon DD.

Sur les Pi 1 et 2 et la manip du bootcode.bin modifié (pas besoin du fichier timeout ) :
Cette clé fonctionne, mes précédentes clés, toujours pas… et mon DD a toujours besoin de son hub.
Le boot sur le Raspberry Pi 3 avec NOOBS sur ma clé USB Transcend fonctionne également.

Bon maintenant, j’ai besoin de motivation :mrgreen:
L’objectif est de modifier rpi-clone pour que le clonage se fasse sur MSD et si c’est une clé qui est détectée, celle-ci sera formatée en F2FS.

Conclusion

L’article sur le boot du Raspberry Pi 3 que j’avais publié en août 2016 n’est plus d’actualité car la Fondation a fait évoluer les méthodes de boot pour tous les Raspberry Pi.

Merci à Jean-François @dyox pour ce tutoriel publié sur le forum framboise314 🙂 et dont il a autorisé la reprise sur le blog, afin qu’un maximum de lecteurs en profite.

Bien entendu si @dyox aboutit dans sa modification de rpi-clone, les pages de framboise314 lui sont ouvertes 😀

Si vous utilisez la méthode de Jean-François, n’hésitez pas à signaler dans les commentaires ci-dessous les modèles de clés, disques durs… qui fonctionnent et ceux qui restent récalcitrants malgré vos efforts.

Sources

Bootez votre Raspberry Pi 3 sur une clé USB

 

 

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. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

27 réflexions au sujet de « Boot simplifié sur USB avec les Raspberry Pi 1, 2 et 3 »

    1. dyox

      Bonjour et merci Pascal,
      Concernant votre lien, le tuto date du 16/05/2017, et il manque la version de Raspian en tant que prérequis. Si c’était la version 2017-04-10, mon tuto aurait été applicable car seules les versions >= 2017-04-10 fonctionnent. Je l’avais marqué dans les prérequis mais François a décidé de le faire sauter, étant donné que je pars sur une nouvelle installation.
      Et c’est pourquoi j’affectionne particulièrement la section « prérequis » dans les tutos. Nous avons une vision chronologique du déroulement, quelles versions ont été utilisées… Cela évite bien des surprises !
      La différence avec la nouvelle méthode est que celle-ci permet de s’affranchir complètement de la SD (au détriment de 5s supplémentaires). De plus il est évident qu’elle est extrêmement simple. La Fondation a fait de l’excellent travail !

      Voici en plus quelques clés compatibles
      https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/

      Répondre
      1. François MOCQ Auteur de l’article

        oups désolé pour la modif je n’avais pas fait attention
        j’ai rajouté l’info pour la version 🙂
        et mea culpa c’est vrai que j’indique rarement quelle version j’ai utilisée

        Répondre
  1. Bruno

    Bonjour,
    Tout grand merci pour cet article à vous et à Jean-François.
    Je souhaiterais un peu d’explication sur ce que vous entendez lorsque vous parlez de la méthode conventionnelle quand celle-ci est appliquée au MSD ? J’ai essayé d’écrire un fichier img vers mon DD mais celui-ci n’apparaît pas.
    Il faut qu’il soit formater en Fat32 ?
    Bruno

    Répondre
  2. Seb

    Bonjour,
    Etes vous sûr que booter sur l’usb réduit le risque de corruption ?
    D’après ce que j’ai pu lire, les clés USB sont aussi sensibles à l’usure et aux corruptions (lors de coupure de courant) que les cartes SD.
    F2FS semble avoir une meilleure gestion de l’usure.
    Les seules solutions vraiment fiables seraient de passer le système en read only (avec tmpfs comme OpenEnergyMonitor ou overlayFS comme Domoticz). On peu passer en RW une fois par jour pour y écrire les données et la remettre ensuite en RO.

    Répondre
    1. dyox

      Merci Seb, j’attendais avec impatience cette réflexion. 🙂 Il est sûr que si le MSD est une clé est que celle-ci n’est pas « retravaillée » et est donc l’image de la SD, on reporte le problème de la SD sur la clé… Je pense quand même la clé légèrement plus résistante mais ce n’est que mon ressenti/fantasme !
      Je pense aussi que la Fondation à proposer le boot usb pour principalement brancher un DD. Cela renforce leur idée que la Pi peut être considérée comme un mini-ordinateur, pouvant se subsituer à un pc pour des petites tâches. Peut-être aussi une valeur ajoutée pour papie/mamie, cela fait plus sérieux !
      Si j’étais vendeur de matériel, je me lancerai sur le créneau : vendre une Pi déverrouillée + dd compatible + boitier + alim. Du clef en main en quelque sorte. Certes il y a WDlabs mais ils utilisent encore l’ancienne méthode.
      Pour prendre soin de la mémoire flash, on doit utiliser F2FS, mettre les logs en ram, désactiver le swap, virer l’horadage des fichiers(timestamp)…
      Voici quelques liens:
      https://www.blaess.fr/christophe/2015/10/19/renforcer-une-distribution-raspbian-jessie/
      https://github.com/azlux/log2ram (merci à je ne sais plus qui du forum 🙂 )
      http://www.framboise314.fr/et-si-on-se-passait-du-swap/

      Répondre
  3. dyox

    Mais de rien.
    J’entends par méthode conventionnelle celle appliquée ici par François ou par la Fondation, à savoir utiliser de préférence Win32DiskImager pour windows…
    Voir ici : https://www.raspberrypi.org/documentation/installation/installing-images/README.md
    Personnellement, je l’ai fait avec Win32DiskImager.
    Et il faut savoir que dans le fichier .img, c’est lui qui impose son type de FS (File System). Vous avez beau formaté votre SD ou MSD en FAT32 ou NTFS, celui-ci se retrouvera toujours pour Raspian avec la 1ère partition en FAT32 (type 0C) et la 2ème en EXT4 (type 83).
    Si vous voulez en savoir plus, j’avais posé une réflexion sur le forum (d’ailleurs c’était mon tout 1er post 🙂 ):
    http://forums.framboise314.fr/viewtopic.php?f=63&t=464

    Répondre
  4. Julien

    Bonjour,

    Merci pour cet article très intéressant.

    Juste une question concernant le titre qui fait mention des Pi1, 2 et 3.

    À la lecture de l’article, je ne comprends pas le rapport avec les Pi1 et 2…?!

    Julien

    Répondre
    1. dyox

      Il est vrai que ce n’est pas très clair pour les v1 et v2.
      En résumant, il faut mettre le nouveau bootcode.bin (lien dans les prérequis) SEUL sur une carte SD formatée en FAT32. Si cela ne fonctionne toujours pas, ajoutez un fichier timeout en plus pour étendre la durée d’initialisation du MSD à 6s.
      Et bien sûr si cela ne fonctionne toujours pas, le MSD n’est pas compatible.

      Répondre
      1. Geo

        salutations,
        donc pour les version 1 et 2, si le MSD est compatible, après avoir booté avec seulement la SD remplie uniquement par le nouveau bootcode.bin (+timeout 6s), il n’est plus nécessaire de laisser la SD dans le Rpi… ceci est la méthode pour modifier la séquence de bootage du Rpi 1 et 2 (mise à jour du microcode ?), mais peux éventuellement marcher sur une Rpi 3 si les méthodes pour ce modèle ont échoué.
        Me suis-je trompé quelque part ?

        Utiliser une SD vierge fait gagner 5s… pareil avec un SD précédemment grillé ?

        PS: (concernant le Rpi 3) qu’est-ce que l’OTP ? -> la EPROM du Rpi ?
        « en ajoutant program_usb_boot_mode=1 à la fin du fichier », ce fichier ce situe où… dans l’OTP ?

        dernier point sur l’alimentation des DD :
        est-ce uniquement le pic au démarrage de la rotation du DD qui pose problème ?
        Un simple Y (dédoubleur) micro USB sur l’alim ne résoudrait-il pas le problème ?… à moins que l’appel de courant du DD + la consommation du Rpi surpasse la capacité de l’alim -> voir la doc pour chaque DD (datasheet).

        personnellement j’utilise un SSD 32Go (0,5 Watt) avec un adaptateur USB/SATA récupéré dans un boitier de DD externe 2″5… je ne suis pas sujet à ce problème =)

        Répondre
        1. dyox

          Bonjour,
          Pour les 1 et 2, il faut obligatoirement une SD car comme l’OTP n’a pas été modifié, le système s’attend à trouver le bootcode.bin sur la carte SD, et ceci à chaque redémarrage. Oui, c’est bien ça pour le reste de la question.
          Pour en savoir plus sur la séquence de boot :
          http://www.framboise314.fr/bootez-votre-raspberry-pi-3-sur-une-cle-usb/
          https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/bootflow.md

          Je ne sais pas pour une SD grillée. J’aurai tendence à dire non mais il faut tester. Dites le nous ! 🙂

          On peut comparer l’OTP comme un BIOS. François l’a bien expliqué. Voir mon 1er lien au dessus.
          Comme je disais en point 2.
          « Reprogrammer l’OTP en ajoutant program_usb_boot_mode=1 à la fin du fichier config.txt de la carte SD. Pour cela, aucune difficulté. Bien que la SD possède au moins 2 partitions, seule la 1ère (la partition de boot), qui est en FAT32, est accessible sous Windows et donc le fichier config.txt peut être modifié sous Windows ».
          Sinon, sous Raspian, ce fichier est accessible sous « /boot/config.txt »
          En fait, une fois Raspian démarré, la 1ère partition se retrouve en /boot/

          Oui, alim faiblarde d’où le hub.

          Répondre
  5. Adrien

    Bonjour,

    Dans l’article il est fait mention de bootcode.bin pour les versions 1 & 2 du raspberry.

    Par contre en est-il de même pour les versions zero et zero w ? Au pire je peux tester et vous faire un retour.

    Répondre
  6. yann

    Bonjour à tous !

    Merci pour ce tuto, je vais m’empresser de le tester sur un DD externe!

    Avant, je vais vous faire part de mon expérience d’utilisation et de fiabilité du Raspberry comme PC familial…

    Au départ j’ai acheté un Raspberry par curiosité,poussé par framboise314 afin de faire des bidouilles électroniques.

    J’ai été rapidement étonné par la puissance de cette carte…

    En parallèle je songeais à remplacer le PC familial fixe sous windows XP (17 ans d’âge) dont l’alimentation commençait à donner des signes de faiblesse…un condensateur hs je parie!

    Et j’ai eu une idée farfelue…pourquoi ne pas utiliser un Raspberry à la place de ce PC…moins coûteux qu’une nouvelle alimentation ou qu’un nouveau pc ! Utopique ?

    Est-ce que le Raspberry peut faire tout ce que fait mon poste XP :

    Traitement texte, tableur, impression et scanner via mon imprimante Canon, connexion aux appareils photos, lecture de DVD, Web évidemment, et éventuellement du développement.

    Il fallait aussi pouvoir lire tous les fichiers créés sur le poste Windows !

    Après des jours de recherches dans les dépôts et d’essais…je me décide de me lancer dans l’achat d’un disque SATA, d’un adaptateur USB / SATA avec alimentation, d’un adaptateur HDMI / VGA, d’un hub USB alimenté et d’un lecteur/graveur DVD.

    Voici le résultat…

    Pour remplacer le pack Office :

    Libre office que l’on peut trouver en dernière version dans le dépôt backports https://backports.debian.org/changes/jessie-backports.html, après près de 6 mois d’utilisation, aucun problème de lecture de formats word et excel (si on n’utilise pas de macro VBA).
    En prime avec la dernière version on peut éditer des fichiers PDF ! Génial!

    Pour l’impression / Scan :
    J’étais un peu dubitatif sur la possibilité d’utiliser mon imprimante / scanner Canon…
    Erreur, avec CUPS aucun souci, et pour scanner, simple-scan et gscan2pdf, c’est même beaucoup plus rapide que sous mon PC windows!

    Pour remplacer l’explorateur :
    Comme explorateur on a le choix, Nautilus + nautilus-image-converter pour retailler les photos en un clic, xfe (pratique et léger !), Thunar, il y en a pour tous les goûts !

    Pour la lecture de DVD :
    Après quelques paramétrages trouvés sur le net on peut utiliser VLC…un peu déçu du résultat malgré tout, notamment pour l’ergonomie…mais c’était avant de tomber sur KODI – épatant !

    Pour le WEB :
    Chromium me parait le meilleur, il faut simplement éviter d’ouvrir plusieurs onglets, le manque de RAM se ressent…mais ce n’est pas vraiment un problème il suffit de le savoir.

    En prime j’ai installé Sweet Home 3D pour modéliser des pièces d’appartement ! ça marche !

    On peut trouver aussi des tas de jeux, qui peuvent paraître ringards mais qui font le bonheur des petits et des grands…

    Pour faire un peu de développement, après de longues recherches d’un vrai environnement intégré, permettant de faire des IHM sans jongler avec des outils abscons et assez léger pour ma Framboise, j’ai trouvé Lazarus pour compiler du pascal (finalement c’est le seul compilateur en dehors du C/C++)!
    Lazarus intègre un vrai générateur d’IHM, sans nous noyer dans des lignes de codes, et rien n’empêche de faire des appels Python via du code Pascal. Génial ! Mais il y a aussi l’étonnant gambas3 ! Tout cela marche impec sur raspberry !

    Pour en revenir dans le sujet, au cours de mes essais j’ai grillé 2 cartes SD avec le Raspberry sans vraiment comprendre pourquoi. Peut-être une mauvaise qualité.

    En tout cas depuis presque 6 mois mon PC Framboise fonctionne à merveille avec la même carte SD, j’ai appliqué la méthode
    http://www.framboise314.fr/et-si-on-se-passait-du-swap/. J’ai un double de la carte SD en cas de pépin.

    La Framboise est utilisée tous les jours, il boote en 30 secondes (mon pc Windows c’étaient plusieurs minutes), il consomme presque rien. On découvre régulièrement des nouveaux logiciels (je crois qu’il y en a près de 20000 !).

    Enfin la sauvegarde est faite via grsync sur un disque externe USB.

    Merci à François et Framboise314 qui m’ont fait découvrir cette merveille !

    Répondre
    1. msg

      Bonjour ,

      Canon comme imprimante est à éviter sous linux , préférer plutôt HP , Brother , Samsung …. dont la mention Linux figure sur les OS supportés .
      J’ai une Canon LBP1120 , c’est une catastrophe sous linux , sous windows , elle fonctionne nickel , la faute aux drivers Linux de chez Canon .

      Quelques utilitaires intérressant Linux , certains fonctionne sous interface KDE:
      K3B : gravure / copie , CD , CD-RW , DVD
      Xsane : Scanner documents
      Audacity : enregistrement et traitement du son
      Gimp : dessin / retouche photo (photoshop)
      Ksnapshtot : capture image d’écran (écran entier , fenêtre entières ou zone définie )

      En jeux , j’aime bien :
      Kbreakout : casse briques
      Kiriki ; je de dés Yam’s
      Kmahjongg : jeu de tuiles
      Ksquares : mon préféré qui me rappelle un jeu d’enfance !!!
      Sur une feuille à petit carreaux , il fallait dessiner à tour de role les cotés de carrés , le point allait à celui qui ferme le carré . Le vainqueur est celui qui totalise le plus de carrés .
      Ksudoku ; le sudoku classique , mais aussi en 3D , très dur .
      Palapeli : excellent jeu de puzzle , à partir d’images personnelles et avec le nombre de pièces voulues .
      Marble : globe terrestre , très ludique .

      Répondre
  7. Gilles

    Petite question, si l’ont modifie l’OTP avec le bootcode.bin cela permet si j’ai bien compris de booter sur un hdd ou une clé usb branché sur un port USB.

    sur le site de raspberry il est écrit que cette opération est IRREVERSIBLE.

    comment doit être formaté le HDD (est-ce que l’install de libreelec créera un système de boot compatible ?

    Mon but est de faire un serveur multimédia avec Libreelec comme distribution, sur un disque dur 2.5″ de 1To .

    Merci

    Répondre
    1. dyox

      Petite question, si l’ont modifie l’OTP avec le bootcode.bin cela permet si j’ai bien compris de booter sur un hdd ou une clé usb branché sur un port USB
      => c’est l’option dans le config.txt qui modifie l’OTP et seulement pour le Pi3

      sur le site de raspberry il est écrit que cette opération est IRREVERSIBLE.
      => Dans la séquence de boot, la sd reste prioritaire à l’usb
      voir https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/bootflow.md

      comment doit être formaté le HDD
      => sur le msd, une partition doit être en FAT32 (celle contenant le boot) et l’autre en ext4. L’image de l’iso Raspian en quelque sorte. Et pour être précis, la seule condition est la partition de boot qui doit être en FAT32, et ce quelque soit sa position (1ere, 2e…)
      je cite : It is no longer necessary for the first partition to be the FAT partition, as the MSD boot will continue to search for a FAT partition beyond the first one.

      Répondre
  8. Gilles

    OK,

    j’ai cloné ma carte SD libreelec (1er partition FAT16 768Mb, 2eme partition EXT4 14.08Gb) sur un disque dur 300Go avec AOMEI Partition Assistant.

    le PI3 ne boot pas si hdd branché sans sd, pourtant l’OTP indique bien 17:3020000a

    soit j’ai oublié quelques choses soit il manque quelques chose 🙂

    Répondre
    1. dyox

      essayez déjà avec Raspian si tout se passe bien.

      le PI3 ne boot pas si hdd branché sans sd
      => quelle sd ? une vierge ou la libreelec

      Répondre
        1. dyox

          C’est ce que je disais plus haut : la sd est prioritaire donc cela ne fonctionne pas du tout.
          A voir maintenant avec Raspian.
          HDD auto-alimenté ?

          Répondre

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.