summaryrefslogtreecommitdiff
path: root/installer
diff options
context:
space:
mode:
authortranch <tranch.xiao@gmail.com>2026-07-17 06:56:56 +0800
committertranch <tranch.xiao@gmail.com>2026-07-17 08:09:37 +0800
commit04b8dcbbc3d5707f488c9b67ba96ce88ccd15181 (patch)
tree19217b1e64cf32bdf2cd0d6e5aae2660cd8b0966 /installer
parente77483dcb6570a003001ea1c81a962c9f45fda74 (diff)
downloadAeroCore-OS-04b8dcbbc3d5707f488c9b67ba96ce88ccd15181.tar.gz
AeroCore-OS-04b8dcbbc3d5707f488c9b67ba96ce88ccd15181.zip
Fix live installer ISO build
Build the live installer from the requested local AeroCore image, use a separate Fedora live base, pass the payload through rootful container storage, and write reproducible checksum entries without host paths.
Diffstat (limited to 'installer')
-rw-r--r--installer/Containerfile4
-rwxr-xr-xinstaller/build.sh13
2 files changed, 13 insertions, 4 deletions
diff --git a/installer/Containerfile b/installer/Containerfile
index fa817b6..50579e6 100644
--- a/installer/Containerfile
+++ b/installer/Containerfile
@@ -3,13 +3,17 @@
ARG BASE_IMAGE=ghcr.io/ublue-os/bazzite:stable
ARG INSTALL_IMAGE_PAYLOAD=ghcr.io/AeroCore-IO/aerocore-bazzite-image:stable
+ARG INSTALL_IMAGE_PAYLOAD_ARCHIVE=/install-payload.oci
FROM ${BASE_IMAGE}
ARG BASE_IMAGE
ARG INSTALL_IMAGE_PAYLOAD
+ARG INSTALL_IMAGE_PAYLOAD_ARCHIVE
RUN --mount=type=bind,source=.,target=/src \
+ --mount=type=bind,source=output/install-payload.oci,target=/install-payload.oci,ro \
env BASE_IMAGE="${BASE_IMAGE}" \
INSTALL_IMAGE_PAYLOAD="${INSTALL_IMAGE_PAYLOAD}" \
+ INSTALL_IMAGE_PAYLOAD_ARCHIVE="${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" \
/src/installer/build.sh
diff --git a/installer/build.sh b/installer/build.sh
index 7532df8..033fe9b 100755
--- a/installer/build.sh
+++ b/installer/build.sh
@@ -5,10 +5,14 @@ set -euxo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BASE_IMAGE=${BASE_IMAGE:?}
INSTALL_IMAGE_PAYLOAD=${INSTALL_IMAGE_PAYLOAD:?}
+INSTALL_IMAGE_PAYLOAD_ARCHIVE=${INSTALL_IMAGE_PAYLOAD_ARCHIVE:-}
# The installer is a live KDE environment. Keep the installed system payload
# separate: it is the AeroCore image, while BASE_IMAGE provides the live UI.
-dnf install -y \
+# Bazzite excludes some base packages from normal transactions. The live
+# installer needs Anaconda's exact NetworkManager dependencies, so clear the
+# excludes only for this dependency install.
+dnf --setopt=excludepkgs= install -y \
anaconda-live \
libblockdev-btrfs \
libblockdev-dm \
@@ -22,9 +26,10 @@ if [[ -d /src/system_files ]]; then
cp -a /src/system_files/. /
fi
-# Make the install payload available to Anaconda. When the build is running
-# with the host container store mounted, this avoids a second registry pull.
-if mountpoint -q /usr/lib/containers/storage; then
+# 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}"
+elif mountpoint -q /usr/lib/containers/storage; then
podman save --format oci-archive "${INSTALL_IMAGE_PAYLOAD}" | \
podman load --storage-opt additionalimagestore=''
else