summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yml2
-rwxr-xr-xinstaller/build.sh23
-rwxr-xr-xinstaller/configure-target-grub.sh89
-rw-r--r--system_files/usr/share/ublue-os/bazzite/bazzite-oled.webmbin0 -> 144109 bytes
-rw-r--r--system_files/usr/share/ublue-os/bazzite/bazzite-suspend-oled.webmbin0 -> 46100 bytes
-rw-r--r--system_files/usr/share/ublue-os/bazzite/bazzite-suspend.webmbin0 -> 46100 bytes
-rw-r--r--system_files/usr/share/ublue-os/bazzite/bazzite.webmbin0 -> 144109 bytes
7 files changed, 113 insertions, 1 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b9d12cf..3c8cc06 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -167,7 +167,7 @@ jobs:
# These `if` statements keep pull requests from publishing packages.
# They publish default-branch builds and manual testing branch builds.
- name: Login to GitHub Container Registry
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
+ uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4.5.1
if: github.event_name != 'pull_request' && (github.ref_name == github.event.repository.default_branch || github.ref_name == 'testing')
with:
registry: ghcr.io
diff --git a/installer/build.sh b/installer/build.sh
index c119dcc..a382bcf 100755
--- a/installer/build.sh
+++ b/installer/build.sh
@@ -44,6 +44,13 @@ if [[ -d "${SCRIPT_DIR}/system_files/overrides" ]]; then
cp -a "${SCRIPT_DIR}/system_files/overrides/." /
fi
+# The target system is an upstream-built bootc image. Keep this installer-only
+# helper out of the installed image and invoke it after Anaconda mounts the
+# target rootfs.
+install -Dm0755 \
+ "${SCRIPT_DIR}/configure-target-grub.sh" \
+ /usr/libexec/aerocore-configure-target-grub
+
# 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
@@ -127,6 +134,22 @@ if [ x\${target_root} = x ]; then
fi
systemd-firstboot --root=\${target_root} --hostname=aerocore-os
%end
+
+%post --nochroot --log=/tmp/aerocore-grub.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 GRUB configuration >&2
+ exit 1
+fi
+/usr/libexec/aerocore-configure-target-grub \${target_root}
+%end
EOF
mkdir -p /usr/lib/bootc-image-builder
diff --git a/installer/configure-target-grub.sh b/installer/configure-target-grub.sh
new file mode 100755
index 0000000..2f16692
--- /dev/null
+++ b/installer/configure-target-grub.sh
@@ -0,0 +1,89 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+target_root=${1:?usage: configure-target-grub.sh TARGET_ROOT}
+
+if [[ ! -d "${target_root}/etc" || ! -d "${target_root}/usr" ]]; then
+ echo "Invalid target root: ${target_root}" >&2
+ exit 1
+fi
+
+grub_defaults="${target_root}/etc/default/grub"
+mkdir -p "$(dirname "${grub_defaults}")"
+
+if [[ -f "${grub_defaults}" ]] && grep -q '^GRUB_TIMEOUT=' "${grub_defaults}"; then
+ sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' "${grub_defaults}"
+else
+ printf 'GRUB_TIMEOUT=0\n' >> "${grub_defaults}"
+fi
+
+grub_editenv=""
+for candidate in \
+ "${target_root}/usr/bin/grub2-editenv" \
+ "${target_root}/usr/sbin/grub2-editenv"; do
+ if [[ -x "${candidate}" ]]; then
+ grub_editenv="${candidate#"${target_root}"}"
+ break
+ fi
+done
+
+grub_mkconfig=""
+for candidate in \
+ "${target_root}/usr/bin/grub2-mkconfig" \
+ "${target_root}/usr/sbin/grub2-mkconfig"; do
+ if [[ -x "${candidate}" ]]; then
+ grub_mkconfig="${candidate#"${target_root}"}"
+ break
+ fi
+done
+
+if [[ -z "${grub_editenv}" || -z "${grub_mkconfig}" ]]; then
+ echo "The target image does not contain the required GRUB tools" >&2
+ exit 1
+fi
+
+mounted_paths=()
+cleanup() {
+ local path
+ for path in "${mounted_paths[@]}"; do
+ umount -R "${path}" 2>/dev/null || true
+ done
+}
+trap cleanup EXIT
+
+bind_runtime_tree() {
+ local source=$1
+ local destination="${target_root}/${source#/}"
+
+ mkdir -p "${destination}"
+ if mountpoint -q "${destination}"; then
+ return 0
+ fi
+
+ mount --rbind "${source}" "${destination}"
+ mount --make-rslave "${destination}"
+ mounted_paths+=("${destination}")
+}
+
+# grub2-mkconfig invokes grub-probe and needs the installer's device and EFI
+# views while it runs inside the installed image.
+bind_runtime_tree /dev
+bind_runtime_tree /proc
+bind_runtime_tree /sys
+
+chroot "${target_root}" "${grub_editenv}" - set menu_auto_hide=1
+
+if [[ -e "${target_root}/etc/grub2-efi.cfg" || -L "${target_root}/etc/grub2-efi.cfg" ]]; then
+ grub_config=/etc/grub2-efi.cfg
+elif [[ -e "${target_root}/etc/grub2.cfg" || -L "${target_root}/etc/grub2.cfg" ]]; then
+ grub_config=/etc/grub2.cfg
+elif [[ -d /sys/firmware/efi ]]; then
+ grub_config=/etc/grub2-efi.cfg
+else
+ grub_config=/etc/grub2.cfg
+fi
+
+chroot "${target_root}" "${grub_mkconfig}" -o "${grub_config}"
+
+echo "Configured target GRUB: GRUB_TIMEOUT=0, menu_auto_hide=1, ${grub_config}"
diff --git a/system_files/usr/share/ublue-os/bazzite/bazzite-oled.webm b/system_files/usr/share/ublue-os/bazzite/bazzite-oled.webm
new file mode 100644
index 0000000..14ba412
--- /dev/null
+++ b/system_files/usr/share/ublue-os/bazzite/bazzite-oled.webm
Binary files differ
diff --git a/system_files/usr/share/ublue-os/bazzite/bazzite-suspend-oled.webm b/system_files/usr/share/ublue-os/bazzite/bazzite-suspend-oled.webm
new file mode 100644
index 0000000..50f4300
--- /dev/null
+++ b/system_files/usr/share/ublue-os/bazzite/bazzite-suspend-oled.webm
Binary files differ
diff --git a/system_files/usr/share/ublue-os/bazzite/bazzite-suspend.webm b/system_files/usr/share/ublue-os/bazzite/bazzite-suspend.webm
new file mode 100644
index 0000000..50f4300
--- /dev/null
+++ b/system_files/usr/share/ublue-os/bazzite/bazzite-suspend.webm
Binary files differ
diff --git a/system_files/usr/share/ublue-os/bazzite/bazzite.webm b/system_files/usr/share/ublue-os/bazzite/bazzite.webm
new file mode 100644
index 0000000..14ba412
--- /dev/null
+++ b/system_files/usr/share/ublue-os/bazzite/bazzite.webm
Binary files differ