🛠 Boot eMMC/microSD et récupération
Objectives
Cleanly install the ODROID-XU4 system, understand the dual boot between microSD and eMMC module (the eMMC port runs in 8-bit HS400 200 MHz mode under mainline — significantly faster and more durable than an SD card), migrate from one medium to the other, and know how to recover a card that no longer displays anything.
Hardware
- ODROID-XU4, Hardkernel eMMC module (16/32/64 GB) and/or microSD
- eMMC-USB adapter or a second SD card for emergency booting
- Armbian odroidxu4 image (U-Boot mainline, odroid-xu4_defconfig — no proprietary blobs)
Complete code
# 1) Graver l'image Armbian sur la microSD (verifier le disque !)
sudo dd if=Armbian_*_odroidxu4.img of=/dev/sdX bs=4M status=progress oflag=sync
# 2) Amorcé sur SD, copier la SD entiere vers le module eMMC
# (sdX = carte SD, sdY = module eMMC vu comme disque USB/SD)
sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress oflag=sync
sync
# 3) Redemarrer SANS la SD : la carte doit booter sur l'eMMC
sudo poweroff
# 4) Recuperation : carte muette ? Re-graver une image Armbian sur SD,
# demarrer dessus, puis diagnostiquer ; en dernier recours la console
# serie ttySAC2 (1,8 V !) affiche le log U-Boot/noyau.
sudo dd if=Armbian_neuve.img of=/dev/sdX bs=4M status=progress oflag=sync
Expected verification
After migration, lsblk shows the root on the eMMC device and dmesg | grep -i mmc mentions HS400 or HS200 mode. Booting without the microSD card works. A recovery dd brings a "dead" SD card back to life.
Common errors
- Writing to the wrong device with dd: always check with
lsblkfirst, as the device name changes when plugging in the eMMC adapter. - Leaving the SD card in place after migration: the board may boot from it instead of the eMMC.
- Using an arm64 image: the Exynos5422 is ARMv7 32-bit only, use the odroidxu4 image (armhf).
- Staying on an old vendor 3.10 kernel: migrate to Armbian/mainline (4.9 LTS minimum, 6.6.x current).
- Undersized power adapter: require 5 V/4 A, otherwise brownouts and corrupted SD cards.
Other tutorials for this board
Code examples for this board
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash