🛠 Démarrer sur un SSD NVMe et récupérer un bootloader cassé
Objetivos
Instalar el sistema en un SSD NVMe conectado al conector PCIe 2.0 ×1 (FPC) del Raspberry Pi 5, configurar el orden de arranque del bootloader EEPROM y saber restaurar un bootloader mediante el modo de recuperación USB (rpiboot) en caso de bloqueo.
Material
- Raspberry Pi 5 (4-16 GB) + fuente de alimentación oficial de 27 W
- HAT M.2 o carcasa compatible con HAT+ con SSD NVMe (el conector FPC está desactivado si no se detecta un HAT+ o
dtparam=pciex1) - Lector de tarjetas microSD + cable USB-C de datos para el modo de recuperación
- PC con
rpiboot(paquete rpiboot / util Linux) instalado
Código completo
# 1) Activer le contrôleur PCIe côté OS
sudo raspi-config -> Advanced -> PCIe -> Boot Original Firmware
# ou manuellement dans /boot/firmware/config.txt :
grep -q '^dtparam=pciex1$' /boot/firmware/config.txt || \
echo 'dtparam=pciex1' | sudo tee -a /boot/firmware/config.txt
# 2) Copier le système en cours sur le NVMe (après redémarrage)
sudo apt install -y nvme-cli rsync
lsblk | grep nvme
sudo rsync -aHAXx --info=progress2 / /mnt/nvme/ # NVMe monté, /boot inclus
# 3) Ordre de boot EEPROM : SD -> USB -> NVMe, et sonde PCIe sans HAT+
sudo rpi-eeprom-config --edit
# BOOT_ORDER=0xf416
# PCIE_PROBE=1
sudo rpi-eeprom-config | grep -E 'BOOT_ORDER|PCIE_PROBE'
# 4) Recouvrement : bootloader EEPROM effacé/cassé
# Éteindre, maintenir le bouton PWR_ON, brancher USB-C vers le PC, puis :
sudo rpiboot -d /usr/share/rpiboot/msd
# La carte apparaît comme lecteur USB : réécrire l'EEPROM avec
# Raspberry Pi Imager -> Bootloader administration (ou rpi-eeprom-update).
Verificación esperada
Tras reiniciar, lsblk muestra la raíz en /dev/nvme0n1 y dmesg | grep -i nvme registra la enumeración PCIe. El arranque se realiza sin tarjeta microSD. En modo de recuperación, lsusb en el PC detecta un dispositivo «BCM2835 Boot ROM» y aparece el volumen MSD.
Errores frecuentes
- Olvidar
dtparam=pciex1o el modo HAT+: el NVMe nunca se enumera y el Pi reinicia desde la SD. - Intentar el modo Gen 3 no certificado: inestabilidades y desconexiones aleatorias documentadas; mantenerse en Gen 2.
- Fuente de alimentación insuficiente: un SSD NVMe consume mucho en pico; con una fuente que no sea de 5 V/5 A, el presupuesto USB/PCIe se limita a 600 mA.
- rsync sin montar /boot/firmware por separado: el kernel permanece en la SD; verificar con
findmnt /boot/firmware. - Confundir la recuperación con rpiboot y la reescritura de la imagen: rpiboot solo repara el bootloader EEPROM, no el sistema.
- Cable USB-C de solo carga: no hay enumeración USB en el PC; usar un cable de 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