🛠 Boot sur SD/USB et procédure de recouvrement
Objetivos
Comprender la cadena de arranque del Raspberry Pi 3 Model B (ROM del SoC → archivos en la partición FAT → kernel Linux), arrancar desde un disco USB de almacenamiento masivo y saber cómo restaurar una tarjeta después de una imagen corrupta. Particularidad del 3B: no tiene una EEPROM de arranque actualizable (a diferencia de los 3B+/4); el arranque USB existe, pero el inicio desde el host está deshabilitado por defecto y se activa mediante un bit OTP permanente.
Material
- Raspberry Pi 3 Model B
- Tarjeta microSD sana (para el arranque y la resolución de problemas)
- Llave/disco USB 2.0, alimentado si es posible
- Lector de tarjetas + Raspberry Pi Imager en un ordenador
- Cable Ethernet + otra máquina para el SSH de respaldo
Código completo
# 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.
Verificación esperada
Tras la activación de OTP, vcgencmd otp_dump | grep 17: devuelve 17:3020000a y el Pi arranca desde el USB sin ninguna tarjeta SD insertada. El LED de actividad del disco parpadea durante el arranque. En caso de una config.txt rota intencionadamente (un dtoverlay incorrecto), el montaje de la partición FAT desde un ordenador permite corregir el archivo y reiniciar normalmente: el Pi vuelve a la vida sin necesidad de reescribir la imagen.
Errores frecuentes
- Ignorar la advertencia «OTP permanente»: una vez escrito, el bit no se puede eliminar; el arranque desde SD sigue siendo posible, pero la opción queda activada definitivamente.
- Olvidar retirar
program_usb_boot_mode=1de config.txt: es innecesario a largo plazo. - Disco USB que consume demasiada energía en el puerto único: caídas de tensión (brownouts) y arranques aleatorios; prefiera un disco alimentado externamente.
fstabno adaptado después de un rsync: el kernel entra en pánico con «unable to mount root fs»; verifique elPARTUUIDconblkid.- Confundirlo con el 3B+/4: estos tienen una EEPROM de arranque, los procedimientos
rpiboot/recovery no se aplican al 3B. - Corromper la SD por cortes de energía bruscos: apague con
sudo poweroffy haga copias de seguridad de los datos.
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