🛠 Boot sur SD et procédure de recouvrement
Objetivos
Comprender la cadena de arranque del Model B Rev 2 (ROM del BCM2835 que lee bootcode.bin en la partición FAT de una tarjeta SD de tamaño completo) y saber cómo restaurar una tarjeta inservible: el arranque por USB no existe en esta generación, la SD es el único camino.
Material
- Raspberry Pi Model B Rev 2, tarjeta SD de tamaño completo (no usar microSD suelta: el conector es SD 2.0)
- Lector de tarjetas SD en un PC, imagen Raspbian legacy de 32 bits, balenaEtcher o
dd - Una segunda tarjeta SD sana para los diagnósticos
Código completo
# Ecrire 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 materiel 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=
Verificación esperada
Tras la escritura, la tarjeta arranca: LED verde de actividad, señal HDMI visible. En caso de recuperación, renombrar un config.txt dañado restaura el arranque a los valores predeterminados; el LED verde parpadea según el código de error si falta el firmware (parpadeos regulares = bootcode no encontrado).
Errores frecuentes
- Escribir la imagen en una partición en lugar del disco bruto (
/dev/sdX1en lugar de/dev/sdX): la tarjeta permanece vacía. - Usar un adaptador microSD de baja calidad en el conector de tamaño completo: corrupción aleatoria, falsos contactos.
- Creer en el arranque por USB o en una EEPROM: el BCM2835 solo lee la SD, no existe ningún modo de recuperación alternativo.
- Ignorar la subtensión: un fusible polimérico F1 desgastado hace que el arranque falle de forma intermitente, la tarjeta parece «muerta» por momentos.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython