Gumstix Overo烧录带Qt5的Yocto镜像SD卡启动报错求助
Let's work through this boot error step by step—this is a common issue with U-Boot failing to recognize your kernel image, so we'll cover all the likely fixes:
First, Let's Recap Your Setup (To Align On Context)
You're targeting a Gumstix Overo ironSTORM-Y + Tobi platform, building a Qt5.10.1-enabled Yocto image from an Ubuntu 18.04 VirtualBox VM. You followed the official Gumstix steps: formatted the SD card with mk2partsd, copied MLO, u-boot.img, and the Yocto rootfs tarball, then tried forcing SD boot via NAND erase and reset. But you hit this error on boot:
NAND read: device 0 offset 0x280000, size 0x800000 8388608 bytes read: OK Wrong Image Format for bootm command ERROR: can't get kernel image! Booting from nand with DTS... UBI: attaching mtd1 to ubi0
Let's Fix This—Here Are The Most Likely Solutions
1. Double-Check U-Boot and Kernel Compatibility
That "Wrong Image Format" error almost always means U-Boot can't parse the kernel image you're trying to load:
- Confirm the
u-boot.imgyou downloaded is specifically built for your Overo ironSTORM-Y and matches the version required by thegumstix-qt5-dev-image-overoYocto image. Old U-Boot versions might not support newer kernel formats (like FIT images), or a mismatched U-Boot might be expecting a different image type (e.g.,uImageinstead ofzImage). - Verify the kernel file exists in your SD boot partition. When extracting the Yocto tarball, the kernel (usually
zImageoruImage) should end up directly in the boot partition—sometimes tarballs have nested folders, so check it's not buried in a subdirectory likeboot/boot/.
2. Verify SD Card File Copying and Mounting
It's easy to mix up partitions or forget to sync writes before unmounting:
- Re-mount both SD partitions and confirm:
- The boot partition (smaller FAT one) has
MLO,u-boot.img, the kernel image, and any required device tree blobs (*.dtbfiles for your Overo/Tobi). - The rootfs partition has a complete Yocto filesystem—no missing core directories like
bin,etc, orusr.
- The boot partition (smaller FAT one) has
- After copying files, always run
sudo syncbefore unmounting. This ensures all data is written to the SD card; partial writes can corrupt the kernel image so U-Boot can't read it.
3. Force U-Boot to Boot From SD Manually
Your current NAND erase command might not be overriding the default boot order. Let's set the bootenv manually:
- When the Overo powers on, press any key on the serial console to interrupt U-Boot before it starts booting.
- Enter these commands one by one:
setenv bootcmd 'mmc dev 0; mmc read 0x80000000 0x200 0x400; bootm 0x80000000' saveenv resetmmc dev 0selects the SD card as the boot devicemmc read 0x80000000 0x200 0x400reads the kernel from SD into memory at address 0x80000000bootm 0x80000000tells U-Boot to boot the kernel from that address
If this works, it means your U-Boot was still defaulting to NAND boot even after the erase.
4. Check SD Card Integrity
SD card corruption is a sneaky culprit:
- Use
sudo fdisk -lto confirm your partitions are correctly set up: the first should be a small FAT partition (boot), the second a larger ext4 partition (rootfs). - Run filesystem checks on both partitions to fix any errors:
sudo fsck.vfat /dev/sdb1 # Replace with your actual boot partition device sudo fsck.ext4 /dev/sdb2 # Replace with your actual rootfs partition device - If possible, try a different high-quality Class 10 SD card—cheap or old cards can have write errors that break the image.
5. Re-Extract the Yocto Image
Corrupted tarball extraction can lead to missing kernel files:
- Delete all contents from your rootfs mount point, then re-extract the tarball with:
Watch for any errors during extraction—if you see any, re-download the tarball (it might have been corrupted during download).sudo tar -xvjf gumstix-qt5-dev-image-overo.tar.bz2 -C /media/rootfs/
内容的提问来源于stack exchange,提问作者falcon

