The Ur Project

Documenting the craft of stacking things so they remain stacked. For a very long time.

Architecture - Images - part 10

Today's post is a quick tour along the images we're producing right now. These images are just the start of what is to come. I foresee us doing lots of experiments with new image types and using them for cool new things.

Container images

The container images are published in OCI v1 format right now. These aren't really "images" but more "blob stores" that can be pulled directly in through crun via podman and off you go. This is relatively simple and straightforward. The v2 registry layout stuff for docker is something we'll likely do on the publish side - e.g. we'll test the basic containers locally and once we promote them for public use, we'll stuff them in a v2 style repo for everyone.

The container images that I'm building have bash, ca-certificates and pkg built in. That pretty much allows these containers to build out to whatever you might want. If you want to expand the container and install more packages from the official repositories, they're fully setup. I'm using this to test the pkg tool itself.

These images are currently only 87MiB large. That is just wonderfully small and hopefully this is a great start for those people wanting a smaller container but not have to deal with musl related issues or busybox, since this is just a normal glibc and bash based container image.

Generic (QCow2) images

The Qcow2 image is your standard "I'm going to run it in a VM" image format for me as it can grow, knows about nocloud and so can be provisioned with a cidata iso9660 filesystem but also just boot and grow. This is a bare bones VM image that just boots to a console. Without the cidata attached you won't be able to even log in unless you override the boot prompt to bypass the no-prompt startup sequence. This is on purpose - I don't want to build a wide open image right now and lock it down later. It's a little extra work, yes.

There's not much in these images, except the full standard kernel but you'll find it lacking in the firmware and hardware support. The Live USB images are the go-to images for that. These images are for a quick try it out in a VM or cloud provider. They might not work well in environments that require a HTTP userdata service to be queried, too, since they don't have the full cloud-init package.

The generic cloud images are sitting at just under 600MiB.

ISO images

These ISO images are pretty much identical content wise to the generic cloud image, except they're in ISO format and support booting on legacy BIOS style systems and VMs as well, and apparently this is still a thing so, there it is.

The ISO image is a little smaller than the generic cloud and is sitting at 352MiB. That's a nice size for a cloud install.

Both the cloud image and this ISO image have a text-based version of the live-install program, so you can use it to perform a full installation.

Live USB images

This is likely going to be the most useful image for most people to start playing around with the distro side of the project. It has a full GNOME desktop and should boot on most modern hardware - I've tested it on systems with both AMD and Intel hardware and graphics. It should also support Nouveau based drivers but I have none to test.

The live-install software is present as an icon in the main dash and fully GUI-based. You should be able to click and enter a few basic things and you're off installing. Note that the live-install currently only supports installing on a fully empty drive for the time being. If you want it to live side-by-side with another OS, you're just going to have to wait until someone else writes that code. However, if you want to know how to prep your drive quickly, and destroy all your data on it for real, then use wipefs -a /dev/<devicename> and you can install to it.

This image has the debranded browser firefox version that should get you up and browsing quickly. There's also flatpak and you can install several flatpak-repo-* packages to get e.g. flathub but also some other flatpak repositories added to your system. Technically that's all you need to fully use the current distro content as a normal desktop PC.

Maybe others?

Maybe? I don't know yet what people want. The live-install program is currently a network installation. So you can use it to do a full PLASMA install, if you so desired. It currently offers a GNOME and a Server installation only, but any of these are just a drop-in composition template file. We can expand them with options for all the available desktops, because that is really IMHO the one thing that makes sense. It would give us a single installer live image that can install everyone's preferred desktop environment.

Automatic testing

All of these images go into my test running and based on what type of image it's running, it tests various bits of functionality. We'll keep this going forward because this is extremely valuable - it saves everyone a ton of time when tests are running as much as possible without human intervention. The runners even look at screenshots of the live USB images and the programs on them to make sure they are looking correct.

See it install

Since the Live USB image is the image that most people will start with, here's live-install doing a server install off it, start to finish and unedited: picking what to install, 124 packages going down, and the reboot prompt at the end. Just under two minutes.

--sofar (aka Auke)