🛠 Boot sur microSD et eMMC, procédure de recouvrement
Objectifs
Comprendre la chaîne de boot Amlogic de l'ODROID-C4 (BL1 dans l'OTP du SoC, blob BL2/DDR propriétaire, puis U-Boot), installer Armbian sur microSD, migrer le système vers un module eMMC (jusqu'à 256 GB, piloté en HS200 sous mainline), et savoir repartir d'une carte corrompue. C'est la base de tout déploiement 24/7 fiable.
Matériel
- ODROID-C4 + alimentation 12 V/2 A jack DC
- microSD UHS-I (SDR104 supporté) ≥ 16 GB + lecteur USB
- Module eMMC Hardkernel optionnel (8 à 256 GB)
- Image Armbian odroidc4 (archive.armbian.com/odroidc4), balenaEtcher ou
dd - >
Code complet
#!/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
Vérification attendue
Après écriture, la LED bleue passe du mode heartbeat au rythme lent une fois le système lancé ; lsblk montre la racine sur mmcblk1p2 (SD) puis sur mmcblk0p2 après migration. free -h doit confirmer ~4 GB (ou 2 GB selon SKU) — si 1 GB seulement, le bootloader n'a pas corrigé le nœud mémoire du DTS. hdparm -Tt /dev/mmcblk0 compare SD et eMMC (HS200).
Erreurs fréquentes
- Écrire l'image sur
/dev/sdb1au lieu du disque entier/dev/sdb: aucune partition bootable. - Cloner pendant que la source est montée : copier depuis un système de secours ou utiliser un live USB.
- Croire au HS400 sous mainline : l'arbre mainline limite l'eMMC à HS200 ; le HS400 n'existe que dans le noyau vendor 4.9.
- Oublier le blob propriétaire : un U-Boot mainline
odroid-c4_defconfigseul ne boote pas sans le FIP BL1/BL2 Amlogic — rester sur les images Armbian/Hardkernel qui les embarquent. - >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash