From 33ccd0f64b93bb615a771b6f246bcdb4cb3969f1 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 24 Jul 2026 08:18:08 +0800 Subject: Fix live installer EFI fallback Copy Fedora grubx64.efi to the fallback EFI path expected by bootc-image-builder. --- installer/build.sh | 3 +++ 1 file changed, 3 insertions(+) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index 033fe9b..921e628 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -61,5 +61,8 @@ if compgen -G '/usr/lib/efi/*/*/EFI' >/dev/null; then cp -a /usr/lib/efi/*/*/EFI /boot/efi/ fi +# bootc-image-builder needs the Fedora live ISO fallback EFI loader. +cp -v /boot/efi/EFI/fedora/grubx64.efi /boot/efi/EFI/BOOT/fbx64.efi + systemd-firstboot --timezone UTC dnf clean all -- cgit v1.2.3 From 986e450e1ab476e35012370d97b7e4526e113d88 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 24 Jul 2026 09:17:07 +0800 Subject: Fix live installer GRUB EFI fallback Install the full EFI GRUB package and create the fallback directory. --- installer/build.sh | 2 ++ 1 file changed, 2 insertions(+) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index 921e628..6f1561f 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -19,6 +19,7 @@ dnf --setopt=excludepkgs= install -y \ libblockdev-lvm \ dracut-live \ livesys-scripts \ + grub2-efi-x64 \ grub2-efi-x64-cdboot # Apply the same AeroCore overlay to the live session where possible. @@ -62,6 +63,7 @@ if compgen -G '/usr/lib/efi/*/*/EFI' >/dev/null; then fi # bootc-image-builder needs the Fedora live ISO fallback EFI loader. +mkdir -p /boot/efi/EFI/BOOT cp -v /boot/efi/EFI/fedora/grubx64.efi /boot/efi/EFI/BOOT/fbx64.efi systemd-firstboot --timezone UTC -- cgit v1.2.3 From 2de184fb8db64a900ed2e64e292fd7b77f3deae4 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 24 Jul 2026 09:39:33 +0800 Subject: Find live installer EFI files robustly Avoid assuming the Fedora EFI directory layout when creating fbx64.efi. --- installer/build.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index 6f1561f..2f8a26b 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -58,13 +58,21 @@ sed -i 's/^livesys_session=.*/livesys_session=kde/' /etc/sysconfig/livesys systemctl enable livesys.service livesys-late.service mkdir -p /boot/efi -if compgen -G '/usr/lib/efi/*/*/EFI' >/dev/null; then - cp -a /usr/lib/efi/*/*/EFI /boot/efi/ +efi_dir="$(find /usr/lib/efi -type d -name EFI -print -quit 2>/dev/null || true)" +if [[ -n "${efi_dir}" ]]; then + cp -a "${efi_dir}" /boot/efi/ fi # bootc-image-builder needs the Fedora live ISO fallback EFI loader. +grubx64="$(find /usr/lib/efi /boot/efi -type f \ + -path '*/EFI/fedora/grubx64.efi' -print -quit 2>/dev/null || true)" +if [[ -z "${grubx64}" ]]; then + echo "grubx64.efi was not found in the installed EFI tree" >&2 + find /usr/lib/efi /boot/efi -type f -path '*/EFI/*' -print >&2 || true + exit 1 +fi mkdir -p /boot/efi/EFI/BOOT -cp -v /boot/efi/EFI/fedora/grubx64.efi /boot/efi/EFI/BOOT/fbx64.efi +cp -v "${grubx64}" /boot/efi/EFI/BOOT/fbx64.efi systemd-firstboot --timezone UTC dnf clean all -- cgit v1.2.3 From e41af95f56d4cbfee68081f82dd329ee68486267 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 24 Jul 2026 09:44:48 +0800 Subject: Restore EFI GRUB files in Kinoite build Reinstall EFI packages so missing payload files are materialized. --- installer/build.sh | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index 2f8a26b..efce782 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -22,6 +22,12 @@ dnf --setopt=excludepkgs= install -y \ grub2-efi-x64 \ grub2-efi-x64-cdboot +# Kinoite can carry the EFI packages in the RPM database without their files +# materialized in the container filesystem. Restore the files for the ISO. +dnf --setopt=excludepkgs= reinstall -y \ + grub2-efi-x64 \ + grub2-efi-x64-cdboot + # Apply the same AeroCore overlay to the live session where possible. if [[ -d /src/system_files ]]; then cp -a /src/system_files/. / -- cgit v1.2.3 From 1d0659a9f5ac7e18639a88b772f0766afa3910db Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 24 Jul 2026 13:34:08 +0800 Subject: Add standard UEFI fallback loader Include BOOTX64.EFI alongside the bootc-image-builder fbx64.efi so removable-media UEFI firmware can boot the live installer ISO. --- installer/build.sh | 2 ++ 1 file changed, 2 insertions(+) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index efce782..3ee1744 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -78,6 +78,8 @@ if [[ -z "${grubx64}" ]]; then exit 1 fi mkdir -p /boot/efi/EFI/BOOT +# UEFI removable-media fallback; keep fbx64.efi for bootc-image-builder. +cp -v "${grubx64}" /boot/efi/EFI/BOOT/BOOTX64.EFI cp -v "${grubx64}" /boot/efi/EFI/BOOT/fbx64.efi systemd-firstboot --timezone UTC -- cgit v1.2.3 From d3698fbc897c39cdc723cb85b5e03daf3e1bbc31 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 24 Jul 2026 16:58:29 +0800 Subject: Brand live installer sidebar Copy installer branding assets into Anaconda's pixmaps directory after the shared live-session overlay so AeroCore resources take precedence. Ignore local .DS_Store files to keep macOS metadata out of commits. --- installer/build.sh | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index 3ee1744..f9eb210 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -33,6 +33,12 @@ if [[ -d /src/system_files ]]; then cp -a /src/system_files/. / fi +BRANDING_DIR="${SCRIPT_DIR}/branding" +if [[ -d "${BRANDING_DIR}" ]]; then + mkdir -p /usr/share/anaconda/pixmaps + cp -a "${BRANDING_DIR}/." /usr/share/anaconda/pixmaps/ +fi + # Make the install payload available to Anaconda. if [[ -n "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" && -f "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" ]]; then podman load --storage-opt additionalimagestore='' < "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" -- cgit v1.2.3 From 4bf6f276a7c616ebb7797952c5f33e5f282fb2c8 Mon Sep 17 00:00:00 2001 From: tranch Date: Sat, 25 Jul 2026 04:55:42 +0800 Subject: Brand installer live session icons Install AeroCore icon aliases for the live KDE launcher and replace Anaconda's installer icon in the hicolor theme. --- installer/build.sh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index f9eb210..c8ac830 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -39,6 +39,45 @@ if [[ -d "${BRANDING_DIR}" ]]; then cp -a "${BRANDING_DIR}/." /usr/share/anaconda/pixmaps/ fi +# Installer-only overrides, kept separate from the installed AeroCore payload. +if [[ -d "${SCRIPT_DIR}/system_files/overrides" ]]; then + cp -a "${SCRIPT_DIR}/system_files/overrides/." / +fi + +# Plasma's live-session launcher defaults to start-here, and Fedora keeps +# LOGO=fedora-logo-icon in the base live environment. +for size in 16x16 22x22 24x24 32x32 36x36 48x48 64x64 96x96 128x128 256x256; do + icon_dir="/usr/share/icons/hicolor/${size}" + if [[ -f "${icon_dir}/bazzite-logo-icon.png" ]]; then + mkdir -p "${icon_dir}/apps" "${icon_dir}/places" + cp -f "${icon_dir}/bazzite-logo-icon.png" "${icon_dir}/apps/fedora-logo-icon.png" + cp -f "${icon_dir}/bazzite-logo-icon.png" "${icon_dir}/places/start-here.png" + fi +done + +if [[ -f /usr/share/icons/hicolor/scalable/places/distributor-logo.svg ]]; then + mkdir -p /usr/share/icons/hicolor/scalable/apps /usr/share/icons/hicolor/scalable/places + cp -f /usr/share/icons/hicolor/scalable/places/distributor-logo.svg \ + /usr/share/icons/hicolor/scalable/apps/start-here.svg + cp -f /usr/share/icons/hicolor/scalable/places/distributor-logo.svg \ + /usr/share/icons/hicolor/scalable/places/start-here.svg +fi + +sed -i 's/^LOGO=.*/LOGO=distributor-logo/' /usr/lib/os-release + +for desktop_file in \ + /usr/share/applications/liveinst.desktop \ + /usr/share/applications/org.fedoraproject.AnacondaInstaller.desktop \ + /usr/share/applications/anaconda.desktop; do + if [[ -f "${desktop_file}" ]]; then + sed -i 's/^Icon=.*/Icon=org.fedoraproject.AnacondaInstaller/' "${desktop_file}" + fi +done + +if command -v gtk-update-icon-cache >/dev/null 2>&1; then + gtk-update-icon-cache -f /usr/share/icons/hicolor || true +fi + # Make the install payload available to Anaconda. if [[ -n "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" && -f "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" ]]; then podman load --storage-opt additionalimagestore='' < "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" -- cgit v1.2.3 From 981dde9ceed99c6b0a9dde1bce74e6100f0593d2 Mon Sep 17 00:00:00 2001 From: tranch Date: Sat, 25 Jul 2026 07:14:05 +0800 Subject: Apply var tmp fix in installer payload Write the pre-install /var/tmp bind mount hook from installer/build.sh so both Titanoboa CI builds and local ISO builds carry the fix. The previous lorax template path was only wired through the local helper and did not affect GitHub Actions. --- installer/build.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index c8ac830..aa30f42 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -91,6 +91,25 @@ fi # Tell Anaconda to install the bootc container that was loaded above. mkdir -p /var/lib/rpm-state cat >> /usr/share/anaconda/interactive-defaults.ks <&2 + exit 1 +fi +mkdir -p \${target_tmp} +chmod 1777 \${target_tmp} +mount --bind \${target_tmp} /var/tmp +df -h /var/tmp \${target_tmp} +%end + ostreecontainer --url=${INSTALL_IMAGE_PAYLOAD} --transport=containers-storage --no-signature-verification EOF -- cgit v1.2.3 From db108b8b23c86ba39a2ba289fc6129a6325f045f Mon Sep 17 00:00:00 2001 From: tranch Date: Sat, 25 Jul 2026 09:57:45 +0800 Subject: Normalize installer payload and host naming Use a formal local installer image tag and set aerocore-os as the default hostname in both the live image and installed target system. --- installer/build.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'installer/build.sh') diff --git a/installer/build.sh b/installer/build.sh index aa30f42..c119dcc 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -111,6 +111,22 @@ df -h /var/tmp \${target_tmp} %end ostreecontainer --url=${INSTALL_IMAGE_PAYLOAD} --transport=containers-storage --no-signature-verification + +%post --nochroot --log=/tmp/aerocore-hostname.log +set -eux +target_root= +for root in /mnt/sysroot /mnt/sysimage /var/mnt/sysimage; do + if mountpoint -q \${root}; then + target_root=\${root} + break + fi +done +if [ x\${target_root} = x ]; then + echo No mounted target system found for hostname setup >&2 + exit 1 +fi +systemd-firstboot --root=\${target_root} --hostname=aerocore-os +%end EOF mkdir -p /usr/lib/bootc-image-builder @@ -146,5 +162,5 @@ mkdir -p /boot/efi/EFI/BOOT cp -v "${grubx64}" /boot/efi/EFI/BOOT/BOOTX64.EFI cp -v "${grubx64}" /boot/efi/EFI/BOOT/fbx64.efi -systemd-firstboot --timezone UTC +systemd-firstboot --hostname aerocore-os --timezone UTC dnf clean all -- cgit v1.2.3