🛠 Booter sur NVMe/USB et procédure de recouvrement
Objetivos
El Pi 4B es el primer Pi insignia con una EEPROM de arranque SPI integrada: arranque por USB/NVMe, arranque por red, orden personalizable, códigos LED y diagnóstico HDMI en caso de fallo. Este tutorial migra el sistema a un SSD y luego escribe el procedimiento de recuperación.
Material
- Raspberry Pi 4B, SSD NVMe + carcasa/adaptador USB 3.0
- > NO VERIFICADO: el 4B no tiene un conector M.2 nativo (el carril PCIe está reservado para las placas base CM4); aquí se asume un adaptador USB-NVMe.
- microSD para la EEPROM y Raspberry Pi Imager
- Fuente de alimentación de 5.1 V 3 A (los SSD USB consumen mucha corriente)
Código completo
# 1) Copier le systeme sur le SSD (Imager : choisir le SSD comme cible)
sudo apt install rpi-eeprom
vcgencmd bootloader_version # date de l'EEPROM
vcgencmd bootloader_config | grep BOOT_ORDER
# 2) Changer l'ordre de boot : 0xf = SD, 0x1 = USB
sudo rpi-eeprom-edit
# dans l'editeur : BOOT_ORDER=0xf41 (SD puis USB, puis reseau)
# sauvegarder : l'utilitaire reprogramme l'EEPROM, puis :
sudo reboot
# 3) Apres boot sur le SSD, verifier :
df -h / ; lsblk
Verificación esperada
Tras retirar la microSD, el Pi arranca solo desde el SSD (df -h / muestra /dev/sda2 o nvme). En caso de fallo, la recuperación es sencilla: insertar una SD válida con un archivo fixup.dat fuerza el regrabado de la EEPROM, o el BOOT_ORDER por defecto vuelve a la SD. Los parpadeos del LED verde codifican la avería.
Errores frecuentes
- Sobrescribir la EEPROM con el firmware de otro modelo: utilizar únicamente
rpi-eeprom-updateen un SO actualizado. - Olvidar el firmware VL805 (controlador del chip USB VIA VL805): está versionado por separado en la EEPROM, una actualización parcial puede inutilizar el USB.
- SSD que consume mucho en un hub no alimentado: el presupuesto total de USB está limitado a 1.2 A.
BOOT_ORDERmal escrito: la EEPROM rechaza la escritura, todo permanece igual.- Retirar la SD antes de haber verificado el arranque USB: mantener una SD de respaldo.
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