iso
/iso/<source>/<path> OS installers — verified, not merely recorded
How it works
-
Storing an image is the same job as the file backend. What makes this a separate backend is that it LEARNS what the bytes are supposed to be instead of being told: a source declares where its checksums file, its detached signature, and its keyring live, and the line for your image in that manifest becomes the REQUIRED digest. Everywhere else verification is
attested: an artifact is checked when upstream published a claim, and stored unverified when it published none. Here there is no such allowance — an image the manifest does not vouch for is refused. -
Verification uses
gpgv, nevergpg --verify, and the difference is not pedantry. gpgv consults exactly the keyring you hand it, with no keyserver and no web of trust.gpg --verifyagainst your ambient keyring succeeds for ANY key you happen to have installed — a much weaker claim wearing the same exit code and the same green tick. -
It fails closed: a source declaring a signature with no keyring is refused at LOAD, not silently downgraded to checksums.
-
Images are pinned on arrival and live in their own
imageretention class, so garbage collection cannot reclaim one for being large and idle. -
Declared images become generated iPXE scripts — a menu at
/iso/boot.ipxe, one entry at/iso/boot/<id>— so a bare machine can netboot and install with every byte coming from the mirror.
Things that have cost real time
Written down because they were paid for once already.
Trust-on-first-use is a much worse deal for a 5 GB installer than for a small tarball, which is why this is the one backend that REQUIRES a claim rather than checking one when it happens to exist.
Posture is reported per source — signed, checksums-only, or unverified, plus whether the keyring is present — because a fleet can honestly have one of each and a single global claim would be a lie about two of them.
Resolving the checksum line is its own pure, separately tested function. Ubuntu ships two point releases in one SHA256SUMS file, both ending -live-server-amd64.iso, so any suffix-matching rule resolves 24.04.4 to 24.04.3's digest — and the symptom is the mirror appearing to blame upstream for its own lookup bug.