🛠 Boot microSD/eMMC et chaîne de démarrage Amlogic
Objetivos
Comprender y dominar la cadena de arranque propietaria de Amlogic del ODROID-C2 (BL1 firmado, FIP, U-Boot), migrar el sistema de una microSD a un módulo eMMC (mucho más rápido y fiable: bus HS200 frente a SDR50/SDR100 limitado en mainline), y saber rechazar un medio de reserva.
Material
- ODROID-C2, microSD + módulo eMMC Hardkernel (8 a 64 GB)
- Lector de tarjetas y adaptador microSD-a-eMMC (o la propia tarjeta)
- Consola serie uart_AO 115200 8N1 para seguir el arranque
- bl1.bin.hardkernel (repo hardkernel/u-boot, rama odroidc2-v2015.01) y u-boot.bin.gxbb firmado mediante LibreELEC amlogic-boot-fip (build-fip.sh odroid-c2)
Código completo
# 1) Copie integrale du systeme 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 — verifier 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-etre 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/zero of=test.bin bs=1M count=256 oflag=direct conv=fdatasync && rm test.bin
Verificación esperada
Al retirar la microSD, la placa arranca sola desde el eMMC (visible en la consola serie: BL1/FIP/U-Boot y luego el kernel). La prueba dd pasa de unos pocos MB/s en una microSD barata a más de 100 MB/s en un eMMC HS200. La ROM de arranque de Amlogic siempre lee BL1 en primer lugar: sin la zona de arranque rechazada, ningún medio arranca.
Errores frecuentes
- Invertir mmcblk0/mmcblk1 y dd en una dirección u otra: destrucción del sistema de origen. Siempre verificar lsblk y el tamaño de los discos.
- Creer en una cadena 100 % libre: BL1/BL3x son blobs no redistribuibles, incluso el U-Boot mainline debe estar firmado (amlogic-boot-fip).
- Olvidar el sync antes de desmontar: sistema corrupto en el eMMC.
- Utilizar las viejas imágenes vendor Ubuntu 16.04/Android 5.1 (kernel 3.14) expuestas en red: vulnerabilidades antiguas; preferir Armbian/DietPi/ALARM.
- >
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