🛠 Boot sur carte SD, chaîne de démarrage et recouvrement
Objetivos
- Comprender la cadena de arranque del BCM2835: sin EEPROM ni arranque USB, la ROM del VideoCore siempre lee
bootcode.binen la partición FAT de la tarjeta SD de tamaño completo. - Preparar una tarjeta de respaldo y reparar una partición de arranque corrupta sin reinstalar.
- Implementar un procedimiento de recuperación sin interfaz gráfica (headless).
Material
- Model A, tarjeta SD de tamaño completo (la ranura es de tamaño completo, ¡no microSD!), lector de SD en el PC.
- Imagen de Raspberry Pi OS legacy de 32 bits (Buster o anterior; las imágenes actuales han abandonado ARMv6).
balena-etcher,win32diskimageroddpara la escritura en bruto.
Código completo
# Écrire l'image sur la carte SD (PC Linux)
sudo dd if=2021-05-07-raspios-buster-armhf.img of=/dev/sdX bs=4M status=progress conv=fsync
# Recouvrement sans réécriture : monter la partition FAT et réparer config.txt
sudo mount /dev/sdX1 /mnt/boot
mv /mnt/boot/config.txt /mnt/boot/config.txt.bak # config fautive de côté
sync && sudo umount /mnt/boot
# Indicateurs matériels : la LED verte clignote si bootcode.bin est trouvé,
# reste éteinte si la ROM ne lit rien (carte mal écrite / format incompatible)
cat /boot/config.txt | head
Verificación esperada
Tras la escritura, la tarjeta presenta una partición FAT (~64 MB: bootcode.bin, start.elf, fixup.dat, kernel.img, config.txt) y una partición raíz ext4. Al arrancar, el LED verde parpadea y luego el sistema inicia; un LED apagado indica que la ROM no encuentra bootcode.bin.
Errores frecuentes
- Escribir la imagen en la partición (sdX1) en lugar del disco completo (sdX): nada arranca.
- Utilizar una imagen reciente de Raspberry Pi OS: el ARMv6 del BCM2835 ya no es compatible, use una versión legacy.
- MicroSD con adaptador de baja calidad: la ROM del BCM2835 es caprichosa, prefiera una tarjeta de tamaño completo real.
- Sobrescribir
cmdline.txt(¡una sola línea!) durante una reparación: root=PARTUUID no encontrado, kernel panic.
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