🛠 Boot microSD/eMMC et chaîne de démarrage Amlogic
Objectifs
Comprendre et maîtriser la chaîne de démarrage propriétaire Amlogic de l'ODROID-C2 (BL1 signé, FIP, U-Boot), migrer le système d'une microSD vers un module eMMC (beaucoup plus rapide et fiable : bus HS200 contre SDR50/SDR100 limité en mainline), et savoir refuser un média de secours.
Matériel
- ODROID-C2, microSD + module eMMC Hardkernel (8 à 64 Go)
- Lecteur de cartes et adaptateur microSD-vers-eMMC (ou la carte elle-même)
- Console série uart_AO 115200 8N1 pour suivre le boot
- bl1.bin.hardkernel (repo hardkernel/u-boot, branche odroidc2-v2015.01) et u-boot.bin.gxbb signé via LibreELEC amlogic-boot-fip (build-fip.sh odroid-c2)
Code complet
# 1) Copie integrale du système SD -> eMMC (depuis la carte qui boote sur SD)
sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=16M status=progress conv=fsync
# (mmcblk0 = SD, mmcblk1 = eMMC — vérifier avec lsblk avant !)
# 2) Refuser la zone de boot Amlogic sur le nouveau media si besoin :
# BL1 sur les 442 premiers octets, puis secteur 1, U-Boot signe au secteur 97
DEV=/dev/mmcblk1; BL1=bl1.bin.hardkernel
sudo dd if=$BL1 of=$DEV conv=fsync bs=1 count=442
sudo dd if=$BL1 of=$DEV conv=fsync bs=512 skip=1 seek=1
sudo dd if=u-boot.bin.gxbb of=$DEV conv=fsync bs=512 seek=97
sync
# 3) Tete-être headless : editer boot.ini (images vendor) —
# setenv nographics "1" libere ~300 Mo de RAM
# 4) Redemarrer sur l'eMMC puis mesurer le gain :
sudo dd if=/dev/zéro of=test.bin bs=1M count=256 oflag=direct conv=fdatasync && rm test.bin
Vérification attendue
En retirant la microSD, la carte démarre seule sur l'eMMC (visible sur la console série : BL1/FIP/U-Boot puis kernel). Le test dd passe de quelques Mo/s sur une microSD bon marché à 100+ Mo/s sur un eMMC HS200. Le boot ROM Amlogic lit toujours BL1 en premier : sans la zone de boot refusée, aucun média n'amorce.
Erreurs fréquentes
- Inverser mmcblk0/mmcblk1 et dd d'une direction vers l'autre : destruction du système source. Toujours vérifier lsblk et la taille des disques.
- Croire à une chaîne 100 % libre : BL1/BL3x sont des blobs non redistribuables, même l'U-Boot mainline doit être signé (amlogic-boot-fip).
- Oublier le sync avant démontage : système corrompu sur eMMC.
- Utiliser les vieilles images vendor Ubuntu 16.04/Android 5.1 (noyau 3.14) exposées en réseau : failles anciennes ; préférer Armbian/DietPi/ALARM.
- >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash