🛠 Boot sur SD et procédure de recouvrement
Objectifs
Comprendre la chaîne de boot du Model B Rev 2 (ROM du BCM2835 qui lit bootcode.bin sur la partition FAT d'une carte SD format pleine taille) et savoir remettre une carte hors service en état : le boot USB n'existe pas sur cette génération, la SD est le seul chemin.
Matériel
- Raspberry Pi Model B Rev 2, carte SD pleine taille (pas de microSD nu : le connecteur est SD 2.0)
- Lecteur de cartes SD sur un PC, image Raspbian legacy 32 bits, balenaEtcher ou
dd - Une seconde carte SD saine pour les diagnostics
Code complet
# Écrire une image propre (remplacer /dev/sdX par le lecteur!)
sudo dd if=2021-05-07-raspios-buster-armhf.img of=/dev/sdX bs=4M status=progress conv=fsync
# Recouvrement sans reecrire: monter la partition boot sur le PC et reparer
# - config.txt invalide -> supprimer/renommer config.txt (valeurs par defaut)
# - noyant absent -> copier bootcode.bin, start.elf, fixup.dat, kernel*.img
# Diagnostic carte usee (la SD est le defaut matériel n1 de l'ere 2012-2014):
sudo fsck.vfat -v /dev/sdX1
# Sur la carte montee, tracer les demarrages:
sudo touch /boot/ssh ; cat /boot/cmdline.txt | grep root=
Vérification attendue
Après écriture, la carte bootte : LED verte d'activité, HDMI affiché. En recouvrement, renommer un config.txt cassé restaure le démarrage aux valeurs par défaut ; la LED verte clignote selon le code d'erreur si le firmware est absent (clignotements réguliers = bootcode introuvable).
Erreurs fréquentes
- Écrire l'image sur une partition au lieu du disque brut (
/dev/sdX1au lieu de/dev/sdX) : la carte reste vierge. - Adapter microSD bas de gamme dans le connecteur pleine taille : corruption aléatoire, faux contacts.
- Croire au boot USB ou à une EEPROM : le BCM2835 ne lit que la SD, aucun mode de récupération alternatif n'existe.
- Ignorer la sous-tension : un polyfuse F1 fatigué fait échouer le boot de façon intermittente, la carte semble « morte » par intermittence.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython