Select between flasher and non-flasher images from the dashboard

Hello, team!

I’m working on deploying my own little side project using balena. I’ve been developing on a Strix Halo machine using an Arch Linux install, and I’m intending to deploy in production using balena.

I had just put the finishing touches on my compose file, and decided to boot a Generic x86_64 image from an external USB NVMe enclosure to test my service configuration on my development machine, when I was reminded that flasher images are a thing!

To be fair, the dashboard does tell you this will happen, in small text, that blends into the middle of eleven other steps. I completely ignored it.

This is also not the first time I’ve done this, I think it’s the fourth (over years). I lost my development OS install, some unfinished feature work, and a few dockerfiles. Not the end of the world, but slightly painful.

There’s a combination of inconsistent UX between device types that default to downloading a raw image and device types that default to downloading a flasher image, and perhaps a bit of muscle memory from my own days building images and choosing explicitly to boot and use raw images.

I see a few ways this could be improved:

  1. Communicate to users more clearly they’re about to do something dangerous
  2. Default to not wiping drives with an existing partition table. Perhaps have an opt-in to “eat my data”?
  3. Expose a dashboard option for downloading a raw image or a flasher image

At the end of the day, this was my fault, and you’d think I’d have learned by now. At the same time, it felt entirely too easy to do the wrong thing.

With much love,

Joseph

EDIT: This can be done with the CLI using:
balena os download generic-amd64 --type disk-image --output balena-os.img