diff options
Diffstat (limited to 'installer')
| -rw-r--r-- | installer/Containerfile | 4 | ||||
| -rw-r--r-- | installer/branding/sidebar-bg.png | bin | 0 -> 163156 bytes | |||
| -rw-r--r-- | installer/branding/sidebar-logo.png | bin | 0 -> 4425 bytes | |||
| -rwxr-xr-x | installer/build.sh | 107 | ||||
| -rw-r--r-- | installer/iso.yaml | 6 | ||||
| -rw-r--r-- | installer/lorax_templates/set_default_user.tmpl | 2 | ||||
| -rw-r--r-- | installer/system_files/overrides/usr/share/icons/hicolor/48x48/apps/org.fedoraproject.AnacondaInstaller.svg | 33 | ||||
| -rw-r--r-- | installer/system_files/overrides/usr/share/icons/hicolor/scalable/apps/org.fedoraproject.AnacondaInstaller.svg | 33 | ||||
| -rw-r--r-- | installer/system_files/overrides/usr/share/icons/hicolor/symbolic/apps/org.fedoraproject.AnacondaInstaller-symbolic.svg | 13 |
9 files changed, 189 insertions, 9 deletions
diff --git a/installer/Containerfile b/installer/Containerfile index 50579e6..fa5d731 100644 --- a/installer/Containerfile +++ b/installer/Containerfile @@ -1,8 +1,8 @@ -# Build the live installer payload from a desktop Bazzite runtime. +# Build the installer ISO payload from a desktop Bazzite runtime. # The image installed to disk is supplied separately as INSTALL_IMAGE_PAYLOAD. 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=ghcr.io/AeroCore-IO/aerocore-os:stable ARG INSTALL_IMAGE_PAYLOAD_ARCHIVE=/install-payload.oci FROM ${BASE_IMAGE} diff --git a/installer/branding/sidebar-bg.png b/installer/branding/sidebar-bg.png Binary files differnew file mode 100644 index 0000000..f957fec --- /dev/null +++ b/installer/branding/sidebar-bg.png diff --git a/installer/branding/sidebar-logo.png b/installer/branding/sidebar-logo.png Binary files differnew file mode 100644 index 0000000..0f47606 --- /dev/null +++ b/installer/branding/sidebar-logo.png diff --git a/installer/build.sh b/installer/build.sh index 033fe9b..c119dcc 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -19,6 +19,13 @@ dnf --setopt=excludepkgs= install -y \ libblockdev-lvm \ dracut-live \ livesys-scripts \ + 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. @@ -26,6 +33,51 @@ 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 + +# 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}" @@ -39,7 +91,42 @@ 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 <<EOF +%pre-install --log=/tmp/aerocore-var-tmp.log +set -eux +target_tmp= +for root in /mnt/sysimage /mnt/sysroot /var/mnt/sysimage; do + if mountpoint -q \${root}; then + target_tmp=\${root}/var/tmp + break + fi +done +if [ x\${target_tmp} = x ]; then + echo No mounted target system found for /var/tmp bind mount >&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 + +%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 @@ -57,9 +144,23 @@ 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 +# 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 +systemd-firstboot --hostname aerocore-os --timezone UTC dnf clean all diff --git a/installer/iso.yaml b/installer/iso.yaml index 8e6bd73..4b9fd2c 100644 --- a/installer/iso.yaml +++ b/installer/iso.yaml @@ -1,10 +1,10 @@ -label: "AeroCore-Live" +label: "AeroCore-Installer" grub2: timeout: 3 entries: - name: "Launch AeroCore Installer" - linux: "/images/pxeboot/vmlinuz quiet rhgb root=live:CDLABEL=AeroCore-Live enforcing=0 rd.live.image" + linux: "/images/pxeboot/vmlinuz quiet rhgb root=live:CDLABEL=AeroCore-Installer enforcing=0 rd.live.image" initrd: "/images/pxeboot/initrd.img" - name: "Launch AeroCore Installer (Basic Graphics Mode)" - linux: "/images/pxeboot/vmlinuz quiet rhgb root=live:CDLABEL=AeroCore-Live enforcing=0 rd.live.image nomodeset" + linux: "/images/pxeboot/vmlinuz quiet rhgb root=live:CDLABEL=AeroCore-Installer enforcing=0 rd.live.image nomodeset" initrd: "/images/pxeboot/initrd.img" diff --git a/installer/lorax_templates/set_default_user.tmpl b/installer/lorax_templates/set_default_user.tmpl index b4cf2c8..c20736f 100644 --- a/installer/lorax_templates/set_default_user.tmpl +++ b/installer/lorax_templates/set_default_user.tmpl @@ -1 +1 @@ -append usr/share/anaconda/interactive-defaults.ks "\\nuser --name=aerocore --password=aerocore --plaintext --groups=wheel" +append usr/share/anaconda/interactive-defaults.ks "\\nuser --name=aerocore --lock --groups=wheel" diff --git a/installer/system_files/overrides/usr/share/icons/hicolor/48x48/apps/org.fedoraproject.AnacondaInstaller.svg b/installer/system_files/overrides/usr/share/icons/hicolor/48x48/apps/org.fedoraproject.AnacondaInstaller.svg new file mode 100644 index 0000000..04454b7 --- /dev/null +++ b/installer/system_files/overrides/usr/share/icons/hicolor/48x48/apps/org.fedoraproject.AnacondaInstaller.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="104px" height="104px" viewBox="0 0 104 104" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <title>aerocore-installer</title> + <defs> + <linearGradient x1="0%" y1="100%" x2="100%" y2="100%" id="window-shadow"> + <stop stop-color="#ACABAE" offset="0%"/> + <stop stop-color="#F7F7F7" offset="3.8%"/> + <stop stop-color="#DEDDDA" offset="7.7%"/> + <stop stop-color="#B0AFAD" offset="92.3%"/> + <stop stop-color="#C0BFBC" offset="96.2%"/> + <stop stop-color="#77767B" offset="100%"/> + </linearGradient> + <linearGradient x1="73.6318768%" y1="26.3681232%" x2="0%" y2="100%" id="aerocore-mark"> + <stop stop-color="#006F84" offset="0%"/> + <stop stop-color="#00B875" offset="100%"/> + </linearGradient> + </defs> + <g fill="none" fill-rule="evenodd"> + <rect fill="url(#window-shadow)" x="0" y="4" width="104" height="100" rx="8"/> + <rect fill="#FFFFFF" x="0" y="0" width="104" height="100" rx="8"/> + <g transform="translate(12, 76)"> + <rect fill="#E1DEDB" x="0" y="0" width="80" height="8" rx="4"/> + <rect fill="#006F84" x="0" y="0" width="48.125" height="8" rx="4"/> + </g> + <g transform="translate(28, 12)"> + <circle fill="url(#aerocore-mark)" cx="26" cy="26" r="26"/> + <path d="M26.0064,10.35 C26.6309,10.3472 27.2474,10.5101 27.7891,10.8208 C28.3120,11.1209 28.7651,11.5588 29.0882,12.1186 L37.6797,27.0006 C37.1939,26.3901 36.4549,26.0229 35.6622,26.0145 L35.6346,26.0144 L28.9472,26.0144 L26.0234,20.9502 L23.0996,26.0144 L16.4121,26.0144 C15.6031,26.0144 14.8474,26.3884 14.3564,27.0143 L22.9416,12.1439 C23.5929,11.0160 24.7911,10.3572 26.0064,10.35 Z" fill="#FFFFFF" opacity="0.4"/> + <path d="M37.8863,27.3274 L43.1174,36.3879 C44.0975,38.0854 43.5159,40.2559 41.8184,41.2360 C40.1209,42.2160 37.9504,41.6344 36.9704,39.9369 L33.8933,34.6074 L18.1534,34.6074 L15.0764,39.9369 C14.0964,41.6344 11.9259,42.2160 10.2284,41.2360 C8.5309,40.2559 7.9493,38.0854 8.9294,36.3879 L14.1605,27.3274 C14.6249,26.5229 15.4832,26.0274 16.4121,26.0274 L35.6346,26.0274 C36.5635,26.0274 37.4219,26.5229 37.8863,27.3274 Z" fill="#FFFFFF" opacity="0.8"/> + <path d="M34.3566,29.5309 L32.9896,29.5309 C32.6142,29.5309 32.3091,29.8363 32.3091,30.2134 C32.3091,30.5929 32.6138,30.8959 32.9896,30.8959 L34.3566,30.8959 L34.3566,32.2629 C34.3566,32.6383 34.6620,32.9434 35.0391,32.9434 C35.4186,32.9434 35.7216,32.6387 35.7216,32.2629 L35.7216,30.8959 L37.0886,30.8959 C37.4640,30.8959 37.7691,30.5905 37.7691,30.2134 C37.7691,29.8339 37.4644,29.5309 37.0886,29.5309 L35.7216,29.5309 L35.7216,28.1639 C35.7216,27.7885 35.4162,27.4834 35.0391,27.4834 C34.6596,27.4834 34.3566,27.7881 34.3566,28.1639 L34.3566,29.5309 Z" fill="#FFFFFF"/> + <path d="M17.0991,32.9434 C15.5913,32.9434 14.3691,31.7211 14.3691,30.2134 C14.3691,28.7057 15.5914,27.4834 17.0991,27.4834 C18.6069,27.4834 19.8291,28.7057 19.8291,30.2134 C19.8291,31.7212 18.6068,32.9434 17.0991,32.9434 Z" fill="#FFFFFF"/> + </g> + </g> +</svg> diff --git a/installer/system_files/overrides/usr/share/icons/hicolor/scalable/apps/org.fedoraproject.AnacondaInstaller.svg b/installer/system_files/overrides/usr/share/icons/hicolor/scalable/apps/org.fedoraproject.AnacondaInstaller.svg new file mode 100644 index 0000000..04454b7 --- /dev/null +++ b/installer/system_files/overrides/usr/share/icons/hicolor/scalable/apps/org.fedoraproject.AnacondaInstaller.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="104px" height="104px" viewBox="0 0 104 104" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <title>aerocore-installer</title> + <defs> + <linearGradient x1="0%" y1="100%" x2="100%" y2="100%" id="window-shadow"> + <stop stop-color="#ACABAE" offset="0%"/> + <stop stop-color="#F7F7F7" offset="3.8%"/> + <stop stop-color="#DEDDDA" offset="7.7%"/> + <stop stop-color="#B0AFAD" offset="92.3%"/> + <stop stop-color="#C0BFBC" offset="96.2%"/> + <stop stop-color="#77767B" offset="100%"/> + </linearGradient> + <linearGradient x1="73.6318768%" y1="26.3681232%" x2="0%" y2="100%" id="aerocore-mark"> + <stop stop-color="#006F84" offset="0%"/> + <stop stop-color="#00B875" offset="100%"/> + </linearGradient> + </defs> + <g fill="none" fill-rule="evenodd"> + <rect fill="url(#window-shadow)" x="0" y="4" width="104" height="100" rx="8"/> + <rect fill="#FFFFFF" x="0" y="0" width="104" height="100" rx="8"/> + <g transform="translate(12, 76)"> + <rect fill="#E1DEDB" x="0" y="0" width="80" height="8" rx="4"/> + <rect fill="#006F84" x="0" y="0" width="48.125" height="8" rx="4"/> + </g> + <g transform="translate(28, 12)"> + <circle fill="url(#aerocore-mark)" cx="26" cy="26" r="26"/> + <path d="M26.0064,10.35 C26.6309,10.3472 27.2474,10.5101 27.7891,10.8208 C28.3120,11.1209 28.7651,11.5588 29.0882,12.1186 L37.6797,27.0006 C37.1939,26.3901 36.4549,26.0229 35.6622,26.0145 L35.6346,26.0144 L28.9472,26.0144 L26.0234,20.9502 L23.0996,26.0144 L16.4121,26.0144 C15.6031,26.0144 14.8474,26.3884 14.3564,27.0143 L22.9416,12.1439 C23.5929,11.0160 24.7911,10.3572 26.0064,10.35 Z" fill="#FFFFFF" opacity="0.4"/> + <path d="M37.8863,27.3274 L43.1174,36.3879 C44.0975,38.0854 43.5159,40.2559 41.8184,41.2360 C40.1209,42.2160 37.9504,41.6344 36.9704,39.9369 L33.8933,34.6074 L18.1534,34.6074 L15.0764,39.9369 C14.0964,41.6344 11.9259,42.2160 10.2284,41.2360 C8.5309,40.2559 7.9493,38.0854 8.9294,36.3879 L14.1605,27.3274 C14.6249,26.5229 15.4832,26.0274 16.4121,26.0274 L35.6346,26.0274 C36.5635,26.0274 37.4219,26.5229 37.8863,27.3274 Z" fill="#FFFFFF" opacity="0.8"/> + <path d="M34.3566,29.5309 L32.9896,29.5309 C32.6142,29.5309 32.3091,29.8363 32.3091,30.2134 C32.3091,30.5929 32.6138,30.8959 32.9896,30.8959 L34.3566,30.8959 L34.3566,32.2629 C34.3566,32.6383 34.6620,32.9434 35.0391,32.9434 C35.4186,32.9434 35.7216,32.6387 35.7216,32.2629 L35.7216,30.8959 L37.0886,30.8959 C37.4640,30.8959 37.7691,30.5905 37.7691,30.2134 C37.7691,29.8339 37.4644,29.5309 37.0886,29.5309 L35.7216,29.5309 L35.7216,28.1639 C35.7216,27.7885 35.4162,27.4834 35.0391,27.4834 C34.6596,27.4834 34.3566,27.7881 34.3566,28.1639 L34.3566,29.5309 Z" fill="#FFFFFF"/> + <path d="M17.0991,32.9434 C15.5913,32.9434 14.3691,31.7211 14.3691,30.2134 C14.3691,28.7057 15.5914,27.4834 17.0991,27.4834 C18.6069,27.4834 19.8291,28.7057 19.8291,30.2134 C19.8291,31.7212 18.6068,32.9434 17.0991,32.9434 Z" fill="#FFFFFF"/> + </g> + </g> +</svg> diff --git a/installer/system_files/overrides/usr/share/icons/hicolor/symbolic/apps/org.fedoraproject.AnacondaInstaller-symbolic.svg b/installer/system_files/overrides/usr/share/icons/hicolor/symbolic/apps/org.fedoraproject.AnacondaInstaller-symbolic.svg new file mode 100644 index 0000000..f8dedad --- /dev/null +++ b/installer/system_files/overrides/usr/share/icons/hicolor/symbolic/apps/org.fedoraproject.AnacondaInstaller-symbolic.svg @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="14px" height="16px" viewBox="0 0 14 16" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <title>aerocore-installer-symbolic</title> + <g transform="translate(1, 1)" fill="#000000" fill-rule="nonzero"> + <g transform="translate(0, 13)"> + <rect opacity="0.257" x="0" y="0" width="11.9892" height="1.6" rx="0.8"/> + <rect x="0" y="0" width="7.625" height="1.6" rx="0.8"/> + </g> + <path d="M6,0 C9.3137,0 12,2.6863 12,6 C12,9.3137 9.3137,12 6,12 C2.6863,12 0,9.3137 0,6 C0,2.6863 2.6863,0 6,0 Z M8.2194,6 L3.7835,6 C3.5691,6 3.3710,6.1144 3.2639,6.3 L2.0567,8.3909 C1.8305,8.7826 1.9647,9.2835 2.3565,9.5097 C2.7482,9.7358 3.2491,9.6016 3.4752,9.2099 L4.1853,7.98 L7.8176,7.98 L8.5277,9.2099 C8.7538,9.6016 9.2547,9.7358 9.6465,9.5097 C10.0382,9.2835 10.1724,8.7826 9.9462,8.3909 L8.7390,6.3 C8.6319,6.1144 8.4338,6 8.2194,6 Z M5.9929,2.388 C5.7126,2.3897 5.4406,2.5358 5.2903,2.7961 L3.4885,5.917 C3.5802,5.8774 3.6803,5.856 3.7835,5.856 L5.4081,5.856 L6.0015,4.8283 L6.5948,5.856 L8.2194,5.856 C8.3226,5.856 8.4228,5.8774 8.5145,5.917 L6.7126,2.7961 C6.6378,2.6666 6.5329,2.5653 6.4108,2.4961 C6.2850,2.4247 6.1410,2.3873 5.9929,2.388 Z"/> + <path d="M7.9245,6.8085 L7.6090,6.8085 C7.5224,6.8085 7.452,6.8790 7.452,6.966 C7.452,7.0536 7.5223,7.1235 7.6090,7.1235 L7.9245,7.1235 L7.9245,7.439 C7.9245,7.5256 7.9950,7.596 8.082,7.596 C8.1696,7.596 8.2395,7.5257 8.2395,7.439 L8.2395,7.1235 L8.5550,7.1235 C8.6416,7.1235 8.712,7.0530 8.712,6.966 C8.712,6.8784 8.6417,6.8085 8.5550,6.8085 L8.2395,6.8085 L8.2395,6.4930 C8.2395,6.4064 8.1690,6.336 8.082,6.336 C7.9944,6.336 7.9245,6.4063 7.9245,6.4930 L7.9245,6.8085 Z"/> + <path d="M3.942,7.596 C3.5941,7.596 3.312,7.3139 3.312,6.966 C3.312,6.6181 3.5941,6.336 3.942,6.336 C4.2899,6.336 4.572,6.6181 4.572,6.966 C4.572,7.3139 4.2899,7.596 3.942,7.596 Z"/> + </g> +</svg> |
