Booting Solidrun ClearFog Base from eMMC

Hi Mirzak,

I wasn’t able to get this to run on the eMMC or when booting from USB on ClearFog Base. I have been able to boot the Debian image successfully from the eMMC. Have you tested the images produced and have been able to boot? I should also say I didn’t modify the recipes other than activating hosted mender and putting in my token.

Hi @henzigen,

No this was never tested using eMMC as I did not have an eMMC module when I did this integration. This has only been tested using SD as boot medium. I should probably have put a note on this in the tutorial.

With that said it might work with eMMC, if you add the following in e.g local.conf:

 MENDER_STORAGE_DEVICE = "/dev/mmcblk1" 

As I assume mmcblk0is the SD card.

Thanks for the quick reply. The eMMC is actually mmcblk0 if you order the eMMC version and the sdcard slot is disabled. It’s one or the other.

So I followed the guide here but instead replacing the debian image with the image built with yocto. The eMMC has two boot partitions, and a data partition. The guide provides a u-boot-mmc to dd onto boot partition 0 and then set the eMMC to boot from there. When I did that, it failed to boot but interestingly enough it did have some messages regarding mender-setup not being defined. I also tried to set the eMMC to boot directly from the data partition because I see that /dev/mmcblk0 ends up having 4 partitions (boot, data, primary, secondary) but that fails completely. No boot messages at all. I was thinking of dd’ing the /dev/mmcblk0p1 onto the eMMC boot parition 0. Do you think that would work?

This probably means that you did not get the correct U-boot binary flashed as it is trying to execute the following,

But it wont be that easy and this probably requires some additional integration work. If i recall correctly, they have different U-boot configuration depending on where you will load it from, so you need to adjust this,

Also the sdimg can not have an embedded U-boot for eMMC so you would need to manually write it after you have flashed the sdimg, and this is the command according to Solidrun docs that you execute on a running system to flash U-boot,

  echo 0 | sudo tee /sys/block/mmcblk0boot0/force_ro
  sudo dd if=u-boot-spl-mmc.kwb of=/dev/mmcblk0boot0 conv=sync
1 Like

Mirzak, you’re amazing. That did it. I added UBOOT_BINARY = “u-boot-spl-mmc.kwb” and ran bitbake. It produced “u-boot-spl-mmc.kwb”. I flashed that to boot 0 parition of eMMC and it worked perfectly. The device popped up on my hosted mender. Thank you so much for your help.

1 Like

Glad it worked out for you.