Skip to main content

max / alloy

image: give the system one identity, at /usr/lib/os-release The image carried two. /etc/os-release said Alloy and /usr/lib/os-release said Fedora Linux 43, because `COPY etc/ /etc/` replaced the base's symlink with a regular file and left the file underneath it untouched. Which name a consumer saw depended on which path it read, and everything reading the /usr/lib path was told it was running Fedora. ostree is one of those consumers. It builds the boot menu entry from the deployment's /usr/lib/os-release, so every installed machine offered "Fedora Linux 43 (Forty Three) (ostree:0)" at GRUB — after all the work to replace Anaconda, the last surface before tuigreet that still said Fedora. Ship the file at /usr/lib/os-release and point /etc at it, which is both what the spec describes and what fedora-release, redhat-release and issue already do in this image. The link is relative so it resolves inside a mounted deployment rather than against the host's /usr. Verified on a scratch install: the generated BLS entry now reads `title Alloy 0.0 (pre-v0) (ostree:0)`. Both paths agree in the image, and the dnf $releasever pin still reads 43, which is the thing Alloy's own VERSION_ID would otherwise break.
Author: Max Johnson <me@maxj.phd> · 2026-07-22 17:36 UTC
Signed with PGP, not checked
Commit: a558726eb01814e73ba26018b514a277804986be
Parent: eed2a7b
2 files changed, +19 insertions, -2 deletions
M Containerfile +19 -2
@@ -429,8 +429,25 @@
429 429 # =====================================================================
430 430 # Branding
431 431 # =====================================================================
432 - # os-release, plymouth splash, wallpapers ship via the config tree
433 - # above. No additional layer needed here.
432 + # plymouth splash and wallpapers ship via the config tree above.
433 + #
434 + # os-release ships at /usr/lib/os-release, not /etc/os-release, and this
435 + # link is what makes the two agree. It shipped at /etc for a while, which
436 + # left the image carrying two identities: /etc said Alloy and
437 + # /usr/lib said Fedora, because `COPY etc/ /etc/` replaced the base's
438 + # symlink with a regular file. Which name a consumer saw then depended on
439 + # which path it happened to read, and the ones reading /usr/lib were told
440 + # they were running Fedora. ostree is one of them: it builds the boot
441 + # menu entry from the deployment's /usr/lib/os-release, so every installed
442 + # machine offered "Fedora Linux 43 (Forty Three)" at GRUB, which is the
443 + # last surface after the installer that still said Fedora. See GO task
444 + # 7869c992.
445 + #
446 + # The link direction follows the spec and the base: /usr/lib holds the
447 + # file, /etc points at it, the same arrangement fedora-release, issue and
448 + # redhat-release already use. Relative, not absolute, so it resolves
449 + # inside a mounted deployment rather than against the host's /usr.
450 + RUN ln -sfn ../usr/lib/os-release /etc/os-release
434 451
435 452 # =====================================================================
436 453 # Disable third-party repos post-install.