Booting a converted RPi3 image from SDD

Got a question from a user and though it would be helpful to answer it here,

I am able to boot just fine off an sdcard with a converted rpi3 image but not off an SSD. The SSD boots fine with a stock RPI3 image so its not a power issue or SSD issue. Any idea what could be different
between booting off a converted sdcard and SSD? I used the same mender recommended dd command to flash both…

What I suspect is happening here is that the storage medium naming changes between SD and SSD.

mender-convert is configured to boot from SD, and hence this configuration is applied,

MENDER_STORAGE_DEVICE_BASE=/dev/mmcblk0p

Could you try updating this to,

MENDER_STORAGE_DEVICE_BASE=/dev/sda

You can double-check what the name of the storage medium when booting from SDD using a stock Raspbian image.

This naming is needed for Mender to be able to switch between partitions and right now does not support “dynamic” booting.

Thinking a bit more about this, I now realize that it is probably not as easy as initially suggested.

On Raspberry Pi 3 we use U-Boot as boot loader which is required to integrate Mender to be able to switch between partitions.

The integration that is done in U-Boot is pretty much hard-coded to to use SD as boot medium. You can find the U-Boot integration here.

To support booting from SSD (from USB) you would need adjust U-Boot to:

  • Store the environment on SSD (USB storage) instead of MMC. I am not sure if this is even possible, as SSD is a USB storage device in U-Boot which is a “hot plugged”
  • Adjust the mender_config_defines.h to match booting from USB instead of SD
  • Adjust the boot command script to load files from USB instead of SD
    • This is the boot.scr which is generated here

On a stock Raspbian SSD boot probably works out-of-the-box but this is because they do not use U-Boot.