diff options
| author | tranch <tranch.xiao@gmail.com> | 2026-07-17 06:56:56 +0800 |
|---|---|---|
| committer | tranch <tranch.xiao@gmail.com> | 2026-07-17 08:09:37 +0800 |
| commit | 04b8dcbbc3d5707f488c9b67ba96ce88ccd15181 (patch) | |
| tree | 19217b1e64cf32bdf2cd0d6e5aae2660cd8b0966 /installer | |
| parent | e77483dcb6570a003001ea1c81a962c9f45fda74 (diff) | |
| download | AeroCore-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/Containerfile | 4 | ||||
| -rwxr-xr-x | installer/build.sh | 13 |
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 |
