Connect with us

Raspberry Pi 3 : Booter sur un disque ou clé USB

Do It Yourself

Raspberry Pi 3 : Booter sur un disque ou clé USB

Le Raspberry Pi 3 est capable de booter depuis un stockage USB, disque dur externe ou clé USB, ce qui peut être une bénédiction pour les systèmes ayant de nombreuses lectures écritures. Les cartes SD supporte mal ce genre d’exercices, j’en ai fait les frais plusieurs fois, principalement sur mon installation domotique à base de Jeedom, au bout de quelques semaines le système se corrompait. L’autre 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.

L’opération est relativement simple, en quelques minutes on est capable d’activer le boot USB et le clonage du contenu de la carte vers le support externe. Tellement simple que cela peut aussi servir à créer des backups du système avec une clé USB de taille équivalente à la carte SD


Rendre compatible la partition /boot avec le lancement sur support USB

# Si raspbian lite il faut rpi-update :
sudo apt-get update; sudo apt-get install rpi-update
sudo BRANCH=next rpi-update

Ensuite, activer la fonction

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
#Suivi d'un reboot du Raspberry PI 3 pour que ça soit pris en compte
sudo reboot

Après reboot, on vérifie que c’est actif, la bonne réponse est 17:3020000a

vcgencmd otp_dump | grep 17:

Maintenant vient le partitionnement du support externe,

# Pour trouver l'identifiant du stockage externe, qui devrait normalement être /dev/sda
sudo fdisk -l
# Maintenant le partitionnement 
sudo parted /dev/sda

(parted) mktable msdos
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) mkpart primary fat32 0% 100M
(parted) mkpart primary ext4 100M 100%
(parted) print
Model: SanDisk Ultra (scsi)
Disk /dev/sda: 30.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  99.6MB  98.6MB  primary  fat32        lba
 2      99.6MB  30.8GB  30.7GB  primary  ext4         lab
# Pour en sortir, c'est un habituel "ctrl+c"

Création des deux partitions boot et root

sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2

Montage et transfert de la carte SD vers le support externe, c’est assez rapide avec rsync

sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/
sudo apt-get update; sudo apt-get install rsync
sudo rsync -ax --progress / /boot /mnt/target

Optionnellement, régénérer une nouvelle clé SSH pour ce nouveau système

cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit
sudo umount dev
sudo umount sys
sudo umount proc

Dernière étape, rendre le nouveau boot actif sur le support externe

sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt
sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab

# Finir le taff en demontant et stoppant le système 
cd ~
sudo umount /mnt/target/boot 
sudo umount /mnt/target
sudo poweroff 

Déconnecter l’alimentation du Raspberry PI 3, retirer la carte SD, rebrancher, prier, ça boot, Ayé

Continue Reading
Advertisement
16 Comments

16 Comments

  1. thierrys

    24 novembre 2016 at 12 h 12 min

    Bonjour,

    J’ai déjà installé LAMP SAMBA et d’autres applications sur la carte sd.
    Mieux vaut repartir à 0 avec une raspbian neuve ou le transfert de tous les chemins et configurations sera effective aussi sur le DD?

    merci

    • Erwin de Saint Légier

      24 novembre 2016 at 15 h 09 min

      Salut Thierrys

      Tu peux sans hésitation tenter le clonage sur un support externe, normalement tu auras une copie 1:1 de ta carte SD ( avec de l’espace en plus -parce que j’imagine que ton DD est plus grand).
      Et tu peux t’éviter l’étape de la regénération des clés SSH.

      Normalement, ça marchera à l’identique avec un peu plus de vitesses de transferts. Et au pire, si ton DD externe n’est pas reconnu au boot, ce n’est pas grave, la carte SD restera intouché, donc tu pourras repartir dessus et essayer sur un autre DD.

    • I'm_not Geek

      24 novembre 2016 at 15 h 10 min

      Salut Thierrys

      Tu peux sans hésitation tenter le clonage sur un support externe, normalement tu auras une copie 1:1 de ta carte SD ( avec de l’espace en plus -parce que j’imagine que ton DD est plus grand).

      Et tu peux t’éviter l’étape de la regénération des clés SSH.

      Normalement, ça marchera à l’identique avec un peu plus de vitesses de transferts. Et au pire, si ton DD externe n’est pas reconnu au boot, ce n’est pas grave, la carte SD restera intouché, donc tu pourras repartir dessus et essayer sur un autre DD.

  2. Jemoba

    20 janvier 2017 at 19 h 44 min

    Merci à toi. J’ai testé avec un petit ssd msata Transcend et ça fonctionne à merveille. De fait je vais pouvoir poursuivre mon installation domotique en étant un peu plus sécurisé.

  3. Jemoba

    20 janvier 2017 at 22 h 44 min

    Après quelques essais je m’aperçois maintenant que je n’arrive plus à me connecter en SSH. Mais cet aspect dépasse mes compétences. Si une âme charitable veut bien me venir en aide je suis preneur.

    Merci d’avance.

    • Erwin Saint-Légier

      20 janvier 2017 at 23 h 03 min

      « ssh-keygen -R 192.168.1.8 » sur le client avec l’ip du pi

    • I'm_not Geek

      21 janvier 2017 at 17 h 04 min

      C’est peut être, si tu as régénéré une nouvelle clé SSH pour l’install du HDD, le ficher « known_hosts » sur ton client qui te refuse la connexion vu que l’ip est enregistré avec la clé précédente.
      Il y aurait une astuce avec « ssh-keygen -R ipDuServeur » sur le client, j’ai trouvé ça avec un « Supprimer une entrée SSH du fichier known_hosts » sur Google.
      :)

      • Jemoba

        23 janvier 2017 at 9 h 16 min

        Merci à toi je vais donc regarder dans cette direction.

  4. BLRPERES

    26 février 2017 at 15 h 12 min

    Bonjour,
    j’ai tenté de suivre les commandes listés si dessus mais j’ai plein de messages d’erreur et mon rpi3 ne boote pas sur la clef usb.

    pour information ma carte SD est une image de jeedom en DYI, par conséquent je ne peux me connecter en SSH que à [email protected] Ensuite quand je fais certaines commandes j’ai des messages d’erreur du type « sudo: unable to resolve host jeedom »

    une idée?

    • I'm_not Geek

      26 février 2017 at 15 h 45 min

      J’ai aussi fait l’opération avec une image Jeedom ainsi qu’une image rasp
      Ce que j’ai remarqué en utilisant des disque dur externe, c’est que certains contrôleurs ne bootaient pas, donc c’est peut être pareil sur clés USB.
      Pour le « Host Jeedom » ca a pas l’air d’être une erreur très grave, le mieux étant pour les liaisons réseau d’utiliser l’IP.

      De mon côté, j’ai toujours le même problème sur toutes les installations Jeedom sur des pi3 et Zero, c’est qu’au bout de 20min-6h le système crash complètement et n’est plus accessible. C’est peut être les plugins ? ( App mobile et Mqtt) mystérieux, du coup je m’étais dis que c’etait le stockage, le pourquoi de cet article, mais le problème doit être ailleurs.

      Même si, effectivement les carte SD sont beaucoup plus corruptibles en cas de coupures de courant que les HDD.

  5. PoIrS

    13 mai 2017 at 15 h 13 min

    Bonjour,

    Tout c’est bien passé, mais j’ai des erreur lors de la dernière étape:
    [email protected]:~ $ sudo sed -i « s,root=/dev/mmcblk0p2,root=/dev/sda2, » /mnt/target/boot/cmdline.txt
    sed: can’t read /mnt/target/boot/cmdline.txt: No such file or directory
    [email protected]:~ $ sudo sed -i « s,/dev/mmcblk0p,/dev/sda, » /mnt/target/etc/fstabsed: can’t read /mnt/target/etc/fstab: No such file or directory

    Du coup ça ne fonctionne pas.
    Merci pour votre aide.

    • I'm_not Geek

      18 mai 2017 at 14 h 49 min

      Hello, on dirait que les deux partitions du disque dur ne sont pas montées sur les points /mnt/target et /mnt/target/boot

      sudo mkdir /mnt/target
      sudo mount /dev/sda2 /mnt/target/
      sudo mkdir /mnt/target/boot
      sudo mount /dev/sda1 /mnt/target/boot/

      Peut-être que les id (sda1-2) sont différentes ( sudo fdisk -l )

  6. Bob34

    22 mai 2017 at 11 h 29 min

    Bonjour

    j’ai suivi le tuto tout semblait bien se dérouler

    mais quand je reboot sur la clé j’ai ce message d’erreur

    SQLSTATE[HY000] [2002] Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

    avez vous une idée

    Merci d’avance

  7. aurelien

    27 octobre 2017 at 19 h 58 min

    Bonjour,
    Super tuto, j’ai un Pi3 et suivis toutes les étapes à la lettre, tout se déroule bien mais dès que je reboot en retirant la µSD je n’ai plus accès en SSH. J’utilise la version lite de raspbian, j’ai testé avec un DD externe de 500 Gigas et une clé USB mais sans succès… ça fait des jours que je me casse les dents sur ce problème.

    Merci pour votre aide.

    • Erwin Saint-Légier

      30 octobre 2017 at 18 h 59 min

      Peut être qu’il faut reset l’empreinte SSH sur la machine qui essaye de se connecter, voir plus haut dans les commentaires.

    • BlockScene

      30 octobre 2017 at 19 h 03 min

      Peut être qu’il faut reset l’empreinte SSH sur la machine qui essaye de se connecter.
       » C’est peut être, si tu as régénéré une nouvelle clé SSH pour l’install du HDD, le ficher « known_hosts » sur ton client qui te refuse la connexion vu que l’ip est enregistré avec la clé précédente.
      Il y aurait une astuce avec « ssh-keygen -R ipDuServeur » sur le client, j’ai trouvé ça avec un « Supprimer une entrée SSH du fichier known_hosts » sur Google.
      :)  »

Leave a Reply

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

More in Do It Yourself

To Top
I'm_not /Geek
Magazine🗞 d'actualités "journalières"😅 pour et par des téchnophiles passionnés 💝 qui refusent à se croire Geek🤥😂 💻📱⌚️⚗️🌐🛰🚀🍔