Pi5 EEPROM Fix - Debian Trixie
Problema
Debian Trixie en Raspberry Pi 5 tiene un conflicto crítico entre la EEPROM del bootloader y el kernel:
- EEPROM abril 2024 (la que funciona) = incompatible con kernel 6.18.29 (clock error -22, RTC error, HEVC decoder fail, boot hang)
- EEPROM diciembre 2025 (la nueva) = provoca 8 flashes y la Pi5 no arranca (bug conocido: github.com/raspberrypi/rpi-eeprom/issues/747)
rpi-eeprom-config --applyen Trixie genera imagenes corruptas ” NUNCA usar este comando
Solucion DEFINITIVA ( metodo seguro )
Metodo: flashrom directo ( SIN rpi-eeprom-config —apply )
# 1. Leer EEPROM actual con flashrom
sudo flashrom -p linux_spi:dev=/dev/spidev10.0,spispeed=16000 -r ~/eeprom-current.bin
# 2. Extraer config actual
rpi-eeprom-config ~/eeprom-current.bin > ~/boot.conf
# 3. Agregar FREEZE_VERSION=1
echo "FREEZE_VERSION=1" >> ~/boot.conf
# 4. Crear nueva imagen (modo 3: --config + --out, NO --apply)
rpi-eeprom-config --config ~/boot.conf --out ~/eeprom-frozen.bin ~/eeprom-current.bin
# 5. Verificar la imagen antes de flashear
rpi-eeprom-config ~/eeprom-frozen.bin
# Debe mostrar FREEZE_VERSION=1
# 6. Flashear DIRECTAMENTE con flashrom (sin rpi-eeprom-update)
sudo flashrom -p linux_spi:dev=/dev/spidev10.0,spispeed=16000 -w ~/eeprom-frozen.bin
# flashrom verifica automaticamente tras escribir (VERIFIED)
# 7. Leer de vuelta y comparar MD5
sudo flashrom -p linux_spi:dev=/dev/spidev10.0,spispeed=16000 -r ~/eeprom-verify.bin
md5sum ~/eeprom-frozen.bin ~/eeprom-verify.bin
# Deben ser identicos6 capas de proteccion
# 1. FREEZE_VERSION=1 en EEPROM (hecho arriba)
# 2. Mask del servicio
sudo systemctl mask rpi-eeprom-update
# 3. chmod 000 al binario
sudo chmod 000 /usr/bin/rpi-eeprom-update
# 4. chattr +i en todos los .bin
sudo chattr +i /usr/lib/firmware/raspberrypi/bootloader-2712/default/pieeprom-2025-05-08.bin
sudo chattr +i /usr/lib/firmware/raspberrypi/bootloader-2712/default/pieeprom-2025-11-05.bin
sudo chattr +i /usr/lib/firmware/raspberrypi/bootloader-2712/default/pieeprom-2025-12-08.bin
sudo chattr +i /usr/lib/firmware/raspberrypi/bootloader-2712/default/recovery.bin
# 5. apt-mark hold (evita actualizaciones)
sudo apt-mark hold rpi-eeprom rpi-eeprom-images
sudo apt-mark hold linux-image-rpi-2712 linux-headers-rpi-2712
# 6. Mantener kernel 6.12.75 (incompatible EEPROM abr2024 + kernel 6.18.29)Verificacion
# EEPROM config
sudo rpi-eeprom-config
# Debe mostrar: FREEZE_VERSION=1
# Bootloader version
vcgencmd bootloader_version
# Debe mostrar: 2024/04/20 11:53:30
# Servicios masked
systemctl list-unit-files | grep eeprom
# Paquetes en hold
apt-mark showhold
# Bins inmutables
sudo lsattr /usr/lib/firmware/raspberrypi/bootloader-2712/default/pieeprom-*.bin
# Binario no ejecutable
ls -la /usr/bin/rpi-eeprom-update
# Debe mostrar: ----------NUNCA hacer
rpi-eeprom-config --apply←’ genera imagenes corruptas, 8-flash brickapt upgradesin hold previo ←’ instala kernel 6.18.29 ←’ boot hangrpi-eeprom-updatebajo ninguna circunstancia
Recovery (si se brickea con 8 flashes)
- Raspberry Pi Imager en Windows ←’ “Misc utility images” ←’ “Bootloader” ←’ “SD Card Boot”
- Flashear en otra SD
- Arrancar la Pi5 con esa SD ←’ flashea EEPROM de recovery
- Apagar, meter SD de Trixie, arrancar
Hardening SecOps aplicado
| Componente | Estado |
|---|---|
| sysctl (ASLR, dmesg, kptr, rp_filter) | Activo |
| nftables (drop-all + SSH LAN) | Activo |
| sshd (MaxAuth 3, no root, no X11) | Activo |
| auditd (reglas SecOps) | Activo |
| fail2ban (ban 1h, 3 reintentos) | Activo |
| AIDE (integridad ficheros) | DB generandose |
| avahi-daemon | Masked |
| autologout 15min + umask 027 | Activo |
| Permisos restrictivos (root 700, shadow 600) | Activo |
Config actual
EEPROM: abril 2024 (d1744d218076d7eee7c14763bbf3d3cf6278191a)
Kernel: 6.12.75+rpt-rpi-2712
OS: Debian Trixie (13.4)
FREEZE_VERSION=1
BOOT_ORDER=0xf461
Backups
~/eeprom-original-backup.bin” EEPROM original sin FREEZE~/eeprom-frozen.bin” EEPROM con FREEZE_VERSION=1~/eeprom-verify.bin” Verificación post-flash