Skip to content

Update to GNOME 51.1 through Dakota and distrust the compromised eMudhra roots - #116

Merged
TB516 merged 5 commits into
mainfrom
gnome-51.1
Oct 21, 2026
Merged

TB516 merged 5 commits into
mainfrom
gnome-51.1

Conversation

@TB516

@TB516 TB516 commented Oct 21, 2026

Copy link
Copy Markdown
Owner

GNOME 51.1 moved many host packages into freedesktop-sdk-extra, which broke Renovate's GNOME bump (#96). Separately, the image still trusts the two roots behind the compromised eMudhra intermediates, so https://dv-g3b-emudhra.we-have-a-problem.com/ loads without a certificate error. freedesktop-sdk 26.08.2 doesn't fix that yet.

GNOME and freedesktop-sdk now come through Dakota's junctions instead of our own GNOME pin, so our artifacts match what Dakota's CI caches. Only our own stacks and image assembly build locally. Renovate now only offers a Dakota commit once its newest testing build has succeeded. Our firewalld patch moved into Dakota's GNOME patch queue, and the GNOME Shell unzip patch is gone because Shell 51.1 extracts extensions with gnome-autoar. This also takes Dakota's GNOME-level choices, such as its boot splash and bootc.

Both roots (emSign ECC Root CA - G3 and Comodo AAA Services root) are temporarily blocklisted through p11-kit, which covers OpenSSL, GnuTLS and NSS, and Python's certifi now uses the system bundle. Remove both once freedesktop-sdk ships its ca-certificates fix (freedesktop-sdk!35109, GNOME's gnome-51 backport gnome-build-meta!5137) and certifi 2026.10.19 or newer. A new boot service rebuilds the CA bundles, because bootc keeps locally modified bundles, such as on systems with a local CA, and those would otherwise never receive certificate changes from updates.

Tested locally: the image builds and passes bootc container lint, then installs and boots in a VM with no failed services. Both eMudhra test hosts fail TLS through OpenSSL, GnuTLS and Python. Libvirt networking and a nested KVM guest, Docker networking with firewalld, and extension installation from extensions.gnome.org all work. Upgrading a VM with a local CA and a stale bundle fixed itself on reboot and kept the local CA. The docs drop pinned hashes and dated bring-up logs.

Replaces #96.

TB516 added 5 commits October 21, 2026 01:24
Eight eMudhra intermediates under emSign ECC Root CA - G3 and the
Sectigo-cross-signed Comodo AAA Services root had their private keys
compromised. freedesktop-sdk 26.08.2 still trusts both roots, and its
fix (freedesktop-sdk!35109) has not landed yet.

Block both roots through p11-kit's /etc source so OpenSSL, GnuTLS and
NSS reject them in every extracted bundle, and point Python certifi's
bundled list at the system one. Both are temporary.
Follow Dakota's testing branch after its GNOME 51.1 and freedesktop-sdk
26.08.2 bump (projectbluefin/dakota#1796), and let Dakota own the GNOME
and freedesktop-sdk junctions instead of redirecting them to our own
GNOME pin. Our artifacts then match the ones Dakota's CI pushes to the
Bluefin cache, so only our own stacks and image assembly build locally.

- Drop elements/gnome.bst and refer to Dakota's junctions directly.
- Override the apps list, os-release and boot modules inside Dakota's
  GNOME junction.
- Move the firewalld iptables patch into Dakota's GNOME patch queue.
- Point packages that moved to freedesktop-sdk-extra at their new paths.
- Drop the Shell unzip patch: Shell 51.1 extracts extensions with
  gnome-autoar instead.

This also takes Dakota's GNOME-level choices: its Plymouth theme, bootc,
Mesa and ffmpeg builds, initramfs modules and dnsmasq fix.
Renovate tracked the head of Dakota's testing branch, which can be a
commit that hasn't built yet or failed to build. A custom datasource now
reads the newest build.yml push run on testing and offers its commit only
when that run succeeded, so every proposed commit has pushed its
artifacts to the Bluefin cache. Older successful runs are not trusted
because Dakota skips the build for a push when a newer one is queued.

GNOME and freedesktop-sdk now move with Dakota, so the generic git-refs
element manager is no longer needed. A package rule keeps the
commit-to-commit comparison link on Dakota update PRs.
bootc keeps locally changed /etc files across upgrades. Adding a local CA
with update-ca-trust changes the extracted bundles, so such systems kept
their old bundles and never received certificate changes from image
updates, including the eMudhra blocklist. Rebuild the bundles early in
boot, before the network starts, from the booted image's certificates and
the local sources in /etc/pki/ca-trust/source.
Drop pinned hashes and exact versions that Renovate updates in code but
not in the docs, describe Dakota's ownership of the GNOME graph, and
replace the dated bring-up logs in validation.md with the current
verified state, known issues and remaining checks. The detailed logs
remain in git history.
@TB516
TB516 merged commit 3493ec0 into main Oct 21, 2026
1 check passed
@TB516
TB516 deleted the gnome-51.1 branch October 22, 2026 00:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant