Apalis Evaluation Module failed to boot up from external SATA Disk

SATA SSD: Micron 2.5inch SATA SSD 2TBytes.



By referring to the instruction from, Boot From an SD Card / USB Stick / SATA drive | Toradex Developer Center, the following steps are followed,

  1. create the necessary partition of the SATA SSD.

     sudo parted -s /dev/sdb mklabel gpt mkpart primary fat32 1MiB 100MiB mkpart ext4 100MiB 2000MiB name 1 boot name 2 rootfs
  2. Format the partition with the correct filesystem.

     sudo mkfs.fat -n boot /dev/sdb1 && sudo mkfs.ext4 -L rootfs /dev/sdb2
  3. Copy the firmware image to the target SATA SSD partition.

     sudo tar xf Apalis-iMX6_LXDE-Image.bootfs.tar.xz --no-same-owner -C /media/chinkokshyang/boot 
     sudo tar xf Apalis-iMX6_LXDE-Image.rootfs.tar.xz -C /media/chinkokshyang/rootfs/
  4. Plug the SATA SSD into the Apalis Evaluation Board then type the following command,

     sata dev 0

Boot from the SATA SSD:

run sata_boot


By using the same method, I can boot up the system from the SD card but if this method apply to SSD SATA, then it’s failed to boot up.

Any help would be appreciated. Many thanks.

What exact software versions of things are you taking about?

While I never heard of run sata_boot I guess distroboot might actually work. However, you would need to manually do it as our default BOOT_TARGET_DEVICES(func) does not provision for SATA as of yet.

For the software version that i am using:

u-boot version: U-Boot 2016.11-2.8.6+g83a53c1c0c (Apr 01 2019 - 14:09:00 +0000)

Linux firmware image version: Apalis-iMX6_LXDE-Image 2.8b6.184 20190401

the command, “run sata_boot”, is a command gotten from this website (This method should be the method described to boot from SATA disk),

The distroboot that you mentioned is it manually update the u-boot source code?

Hi llks, I’m just seeing that
sata_boot=if sata dev ${devnum}; then setenv devtype sata; run scan_dev_for_boot_part; fi
but devnum is not yet defined at this stage. Could you try to set it first with setenv devnum 0 before running the command and tell us whether it works this way?

After do the setting,
setenv devnum 0

and do the sata boot, the boot result:

The system not continue boot to the Linux system. The SATA disk is using the same method as SD card creation, what could be the root cause of causing it not boot into the system?

Hi Ilks. I’m afraid that the sata_boot command is now using the distroboot mechanism instead of the old raw booting that sdboot is using. This means that sata_boot is looking for an extlinux.conf or a boot.scr in your SATA drive to continue with the execution of the booting procedure, but since it is not there it simply returns. You could add such a script following the instructions here. For now I have redefined the command around to make it work for you. Try this:

setenv sataargs 'ip=off root=/dev/sda2 ro rootfstype=ext4 rootwait'
setenv satadtbload 'setenv dtbparam; load sata 0:1 ${fdt_addr_r} ${fdt_file} && setenv dtbparam " - ${fdt_addr_r}" && true'
setenv sata_boot 'run setup; setenv bootargs ${defargs} ${sataargs} ${setupargs} ${vidargs}; echo Booting from SATA; run satadtbload; load sata 0:1 ${kernel_addr_r} zImage && run fdt_fixup && bootz ${kernel_addr_r} ${dtbparam}'

Then run sata_boot again. I’m assuming you are using only one SATA device (device number 0) and the first partition (part 1) but you can modify accordingly. If this works you can make it permanent by saving the environment with saveenv. Let me know.

After the suggested change, and the Apalis Evaluation Board can boot up from the SATA disk. thanks for the information!

Perfect. Thanks for the feedback.