How to "hack" on top of the Noble Subiquity installer?

Ubuntu Version: 24.04.02

This is going to sound a bit silly; I might be in the wrong place. I found this discourse via a dead link on cloud-init’s docs; I don’t know if I don’t have access or if it’s truly dead…

I’ve installed Ubuntu 24.04.02 to a VM using the standard interactive process to a VM, and I now have the autoinstall-user-data file that gets written to /var/log/autoinstall-user-data.

I’m attempting to figure out

  • how does Subiquity / Curtin know what to mount into the /target environment? (Happy to figure this out myself, if I was further along in being able to run Subiquity at all)
  • how to run Subiquity / Curtin from-source, in dry-run mode, so I can make the appropriate changes that I want to make (same might go for cloud-init; but it’s not yet clear where I have to introduce my changes)?
  • where would I go to (politely) offer my patches to be upstreamed, if the dev teams would want them? Or is standard etiquette just to throw up a PR and if it’s wanted it’ll be merged?

I’ve cloned the Subiquity source into a the live environment of the 24.04.2 desktop installer disk image and run make install_deps as suggested. Running subiquity via make dryrun from the main branch gives strange warnings about the version being out of date (running 19.04.2 when 19.07.X. Switching to the 24.04 tag didn’t help, even with a git clean -xdf and rerunning make install_deps. When editing the makefile to pass in my autoinstall.yaml, Subiquity fails here (which as an aside, very non-descript error, but I assume I managed to get into an impossible state).

Apologies again if I’m in the wrong place. Happy to go wherever I can get an answer and talk to a human. Generative AI has hallucinated the wrong answer far too much, and the lack of dev-docs make it all the more difficult to find a concise answer without reaching out.

2 Likes

Okay, so I’ve answered part of my own question (at least the “why can’t I get anything to work” part).

The series of issues I solved were:

  • the “example” sources are not really examples at all; and are necessary to set correctly to match your expected install from autoinstall. In my case, I needed the desktop.yaml source catalog
  • When running Subiquity from source, it appears the machine spec needs to be provided. So I created one as suggested in the project’s readme; but it wasn’t clear that this needed to be done on a machine that I was using
  • some stuff gets cached in .subiquity and prevents you from continuing forward after resolving other issues. I just nuked it.

The lack of documentation around the tool is a tad disappointing, considering it is part of the stack (subiquity, cloud-init, curtin) seemingly advertised for consistent enterprise (cloud-and-not) consistent deployments.

I’m still figuring out point 1 and point 3 of my question; but I’ll mark this as a solution since it fits the primary goal I had.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.