🛠 Boot sur microSD et eMMC, procédure de recouvrement
Objetivos
Comprender la cadena de arranque Amlogic del ODROID-C4 (BL1 en la OTP del SoC, blob propietario BL2/DDR, y luego U-Boot), instalar Armbian en una microSD, migrar el sistema a un módulo eMMC (hasta 256 GB, controlado en HS200 bajo mainline) y saber cómo recuperarse de una tarjeta corrupta. Esta es la base de cualquier despliegue fiable 24/7.
Material
- ODROID-C4 + fuente de alimentación 12 V/2 A con conector DC
- microSD UHS-I (soporte SDR104) ≥ 16 GB + lector USB
- Módulo eMMC Hardkernel opcional (8 a 256 GB)
- Imagen Armbian odroidc4 (archive.armbian.com/odroidc4), balenaEtcher o
dd - >
Código completo
#!/usr/bin/env bash
# 1) Écrire l'image sur la microSD (périphérique à vérifier !)
zcat Armbian_*_Odroidc4_bookworm_current_*.img.xz | sudo dd of=/dev/sdb bs=4M status=progress conv=fsync
sync
# 2) Démarrer sur SD, puis identifier les stockages
lsblk -o NAME,SIZE,MODEL,MOUNTPOINT # mmcblk0 = eMMC, mmcblk1 = SD (typique)
cat /proc/device-tree/memory@0/reg | xxd | tail -1 # vérifier les 4 GB vus
# 3) Cloner SD -> eMMC (carte NE DOIT PAS être la racine active)
sudo dd if=/dev/mmcblk1 of=/dev/mmcblk0 bs=16M status=progress conv=fsync
sync && sleep 5
# 4) Redémarrer éjecté-SD pour valider le boot eMMC ; en cas d'échec,
# remettre la SD de secours : elle reprend la main (boot de repli).
sudo poweroff
Verificación esperada
Tras la escritura, el LED azul pasa del modo heartbeat a un ritmo lento una vez que el sistema se inicia; lsblk muestra la raíz en mmcblk1p2 (SD) y luego en mmcblk0p2 tras la migración. free -h debe confirmar ~4 GB (o 2 GB según la SKU) — si solo muestra 1 GB, el bootloader no ha corregido el nodo de memoria del DTS. hdparm -Tt /dev/mmcblk0 compara SD y eMMC (HS200).
Errores frecuentes
- Escribir la imagen en
/dev/sdb1en lugar del disco completo/dev/sdb: ninguna partición arrancable. - Clonar mientras la fuente está montada: copiar desde un sistema de rescate o usar una USB live.
- Creer en HS400 bajo mainline: el árbol mainline limita el eMMC a HS200; el HS400 solo existe en el kernel vendor 4.9.
- Olvidar el blob propietario: un U-Boot mainline
odroid-c4_defconfigsolo no arranca sin el FIP BL1/BL2 de Amlogic — mantenerse en las imágenes Armbian/Hardkernel que los incluyen. - >
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash