Installing Ubuntu Core on x86-64 device

Hello,

coming from the official docs, I understand that currently when you want to deploy Ubuntu Core image on x86-64, you need to boot into some live image and dd the Ubuntu Core image to the disk. Which seems to suit development or at best very small deployments. I guess the official way for production deployments is to get in touch with Ubuntu and purchase their service to obtain hardware that comes preinstalled with required image, right?

Does anyone know about other solution? Something like dedicated live image just for this purpose? I remember for example when I used eLux installer, they had image creator, which created bootable USB that to my knowledge served only this simple purpose:

  1. Boot into installer image from USB
  2. Numbered list of available disks was shown
  3. User selected target disk number
  4. dd copied image to disk and rebooted
  5. Done

If anyone knows about such tool that could be used to install medium number of devices I would greatly appreciate it.

Jakub

Canonical does not manufacture or sell any hardware for customers.

There are pre-built images that can be used as reference, but for deploying a product it is recommended to build your own. Have you looked at the docs?

There is no dedicated installer for automating this process. If you’re prototyping or just trying to see what’s what, you can use prebuilt VM images from Index of /ubuntu-core/24 (which are built for models defined in GitHub - canonical/models: Reference Models) or follow the docs and use multipass with prebuilt images, or just build an image yourself and boot it under qemu/boxes/virtualbox. Setting up full disk encryption with TPM takes a couple more steps, but I believe those are documented. There is a somewhat work-in-progress installer that is expected to be widely available at the release of 25.04, you can find the images here: Ubuntu Core 24 Installer Daily Build but I haven’t used it and YMMV.

The high level workflow for building Ubuntu Core system is define a custom ‘model’, listing all the snaps you need, storage encryption requirements and whatnot (see the documentation for details), build an image using that model, deploy the image it to the main storage device and boot. When manufacturing devices, this will likely be one of the last images you write, after all the provisioning/testing stages have completed. For prototyping and local development work, you’d typically build images/snaps yourself and deploy them directly, in that sense the workflow isn’t much different than working with Yocto/buildroot.

There are pre-built images that can be used as reference, but for deploying a product it is recommended to build your own. Have you looked at the docs?

Yes, docs are good and understandable in that manner, I had no problem building custom image with custom gadget. I wanted to know the process of installing it on a disk. Currently I boot to live Ubuntu from USB disk, then launch script to dd Ubuntu Core image to disk. I am not really “manufacturing” devices in a OEM matter to sell it to customers. We are retailers who plan to replace current android kiosks in our own stores. We simply purchased consumer grade mini PCs and touchscreens and want to deploy them in a more traditional way as one would deploy end user desktops.

Regardless thanks for your insights, I will keep an eye on the new installer.

I am currently toying around with an idea to replicate the eLux installer I have mentioned above. That is making bootable USB disk with grub, which will launch minimal Linux that includes my script to select disk and dd Ubuntu Core image into it and restart.

Jakub