🛠 Boot sur SD/USB et procédure de recouvrement
Objectifs
Comprendre la chaîne de boot du Raspberry Pi 3 Model B (ROM du SoC → fichiers sur partition FAT → noyau Linux), démarrer sur un disque USB de masse, et savoir remettre une carte en état après une image corrompue. Particularité du 3B : pas de boot EEPROM mise à jour (contrairement aux 3B+/4) ; le boot USB existe mais le démarrage sur hôte est désactivé par défaut et s'active par un bit OTP permanent.
Matériel
- Raspberry Pi 3 Model B
- Carte microSD saine (pour l'amorçage et le dépannage)
- Clé/disque USB 2.0 alimenté si possible
- Lecteur de cartes + Raspberry Pi Imager sur un ordinateur
- Câble Ethernet + autre machine pour le SSH de secours
Code complet
# 1) Démarrer sur SD, puis activer le boot USB (OTP PERMANENT, irréversible)
echo 'program_usb_boot_mode=1' | sudo tee -a /boot/firmware/config.txt
sudo reboot
sudo vcgencmd otp_dump | grep 17: # doit afficher 17:3020000a
# Penser à retirer la ligne de config.txt après le redémarrage.
# 2) Copier le contenu de la SD vers le disque USB
sudo apt install -y rsync
sudo rsync -aax --exclude '/dev' --exclude '/proc' --exclude '/sys' \
/media/$USER/rootfs/ /media/$USER/usbdrive/
# Adapter /etc/fstab du disque (root=PARTUUID...) puis éteindre proprement.
# 3) Tester sans SD : le Pi doit booter sur l'USB.
# 4) Recouvrement : carte SD illisible ou config.txt cassée
# a) dépannage léger : monter la partition FAT sur le PC, éditer config.txt,
# retirer dtoverlay/over_voltage suspects, rajouter « initramfs » si besoin
# b) solution radicale : réécrire Raspberry Pi OS avec Imager,
# puis restaurer la partition home depuis une sauvegarde.
Vérification attendue
Après activation OTP, vcgencmd otp_dump | grep 17: renvoie 17:3020000a et le Pi démarre sur l'USB sans aucune carte SD insérée. La LED d'activité du disque clignote au boot. En cas de config.txt volontairement cassée (mauvais dtoverlay), le montage de la partition FAT depuis un ordinateur permet de corriger le fichier et de redémarrer normalement — le Pi revient à la vie sans réécriture.
Erreurs fréquentes
- Ignorer l'avertissement « OTP permanent » : le bit une fois écrit ne peut plus être retiré ; le boot SD reste possible mais l'option est définitivement activée.
- Oublier de retirer
program_usb_boot_mode=1de config.txt : inutile sur le long terme. - Disque USB trop gourmand sur le port unique : brownouts et boot aléatoire ; préférer un disque alimenté.
fstabnon adapté après rsync : le noyau panique « unable to mount root fs » ; vérifier lePARTUUIDavecblkid.- Confondre avec le 3B+/4 : eux ont une boot EEPROM, les procédures
rpiboot/recovery ne s'appliquent pas au 3B. - Corrompre la SD par coupures nettes : éteindre avec
sudo poweroffet sauvegarder les données.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython