From 0b2b2625dce67e469130e36ff91ab74deab486a5 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Wed, 23 Sep 2026 17:41:55 +0530 Subject: [PATCH 01/19] Avoid sudo in assemble script --- assemble-iso.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assemble-iso.sh b/assemble-iso.sh index 67a17242d..fa41fa25b 100755 --- a/assemble-iso.sh +++ b/assemble-iso.sh @@ -50,7 +50,7 @@ echo "Creating casper liveiso..." mkdir -p iso_root/extra -sudo podman run --rm -it \ +podman run --rm -it \ --network host \ --dns 8.8.8.8 \ -v "$(pwd)":/workspace:Z \ From 82371aa6c5f6e234eb80a2303eb5fb7c98f5774a Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Wed, 23 Sep 2026 18:36:04 +0530 Subject: [PATCH 02/19] Avoid using sudo --- Justfile | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/Justfile b/Justfile index bd85ee04a..5e375744c 100644 --- a/Justfile +++ b/Justfile @@ -5,12 +5,27 @@ default: _do-release stream: #!/usr/bin/env bash - sudo rm -rf mkosi.output/ && \ + podman run --rm \ + --privileged \ + -v "{{invocation_directory()}}:/work" \ + -w /work \ + ghcr.io/elementary/mkosi:tanit \ + rm -rf mkosi.output/ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ - sudo PROFILE={{stream}} ./assemble-iso.sh - sudo just compress-repo - sudo chown -R "$(id -u):$(id -g)" mkosi.output - sudo chmod -R u+rwX mkosi.output + PROFILE={{stream}} ./assemble-iso.sh + just compress-repo + podman run --rm \ + --privileged \ + -v "{{invocation_directory()}}:/work" \ + -w /work \ + ghcr.io/elementary/mkosi:tanit \ + chown -R "$(id -u):$(id -g)" mkosi.output + podman run --rm \ + --privileged \ + -v "{{invocation_directory()}}:/work" \ + -w /work \ + ghcr.io/elementary/mkosi:tanit \ + chmod -R u+rwX mkosi.output do-daily: (_do-release "daily") @@ -29,9 +44,9 @@ genkey: mkosi +subcommand: mkdir -p {{env_var('HOME')}}/.cache/mkosi-workspace - sudo mkdir -p ~/.cache/mkosi + mkdir -p ~/.cache/mkosi - sudo podman run --rm \ + podman run --rm \ --network host \ --dns 8.8.8.8 \ --privileged \ @@ -48,7 +63,13 @@ mkosi +subcommand: clean: just mkosi clean - sudo rm -r mkosi.tools/ mkosi.cache/ ~/.cache/mkosi/* + podman run --rm \ + --privileged \ + -v "{{invocation_directory()}}:/work" \ + -w /work \ + ghcr.io/elementary/mkosi:tanit \ + rm -r mkosi.tools mkosi.cache + rm -r ~/.cache/mkosi/* compress-repo: #!/usr/bin/env bash From fad1e020688dc422c116c6c19dc0d4a20d304a56 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Wed, 23 Sep 2026 18:47:52 +0530 Subject: [PATCH 03/19] Really cleanup when user says "just clean" --- Justfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Justfile b/Justfile index 5e375744c..b1627188c 100644 --- a/Justfile +++ b/Justfile @@ -68,8 +68,8 @@ clean: -v "{{invocation_directory()}}:/work" \ -w /work \ ghcr.io/elementary/mkosi:tanit \ - rm -r mkosi.tools mkosi.cache - rm -r ~/.cache/mkosi/* + rm -rf mkosi.tools mkosi.cache mkosi.output + rm -rf ~/.cache/mkosi ~/.cache/mkosi-workspace compress-repo: #!/usr/bin/env bash From 13c6097fe2f62de375e8f6d9552505176004024d Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Wed, 23 Sep 2026 19:14:37 +0530 Subject: [PATCH 04/19] Force keygen - why fail when the user or CI just wants to do it? --- Justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Justfile b/Justfile index b1627188c..8dcb22e1c 100644 --- a/Justfile +++ b/Justfile @@ -40,7 +40,7 @@ _get_timestamp: echo "$(cat ./mkosi.version)" genkey: - just mkosi genkey + just mkosi genkey --force mkosi +subcommand: mkdir -p {{env_var('HOME')}}/.cache/mkosi-workspace From 1be543860f8e10b4d17b0faee4b7e616d1d0e391 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Thu, 24 Sep 2026 02:23:00 +0530 Subject: [PATCH 05/19] Rework to use run0 instead of podman --- Justfile | 31 ++++--------------------------- assemble-iso.sh | 6 +++++- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/Justfile b/Justfile index 8dcb22e1c..7f1f359f8 100644 --- a/Justfile +++ b/Justfile @@ -5,27 +5,10 @@ default: _do-release stream: #!/usr/bin/env bash - podman run --rm \ - --privileged \ - -v "{{invocation_directory()}}:/work" \ - -w /work \ - ghcr.io/elementary/mkosi:tanit \ - rm -rf mkosi.output/ + run0 rm -rf mkosi.output/ && \ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ PROFILE={{stream}} ./assemble-iso.sh just compress-repo - podman run --rm \ - --privileged \ - -v "{{invocation_directory()}}:/work" \ - -w /work \ - ghcr.io/elementary/mkosi:tanit \ - chown -R "$(id -u):$(id -g)" mkosi.output - podman run --rm \ - --privileged \ - -v "{{invocation_directory()}}:/work" \ - -w /work \ - ghcr.io/elementary/mkosi:tanit \ - chmod -R u+rwX mkosi.output do-daily: (_do-release "daily") @@ -43,7 +26,7 @@ genkey: just mkosi genkey --force mkosi +subcommand: - mkdir -p {{env_var('HOME')}}/.cache/mkosi-workspace + mkdir -p ~/.cache/mkosi-workspace mkdir -p ~/.cache/mkosi podman run --rm \ @@ -55,7 +38,7 @@ mkosi +subcommand: -v /dev:/dev \ -v "{{invocation_directory()}}:/work" \ -w /work \ - -v "{{env_var('HOME')}}/.cache/mkosi-workspace:/workspace" \ + -v ~/.cache/mkosi-workspace:/workspace \ ghcr.io/elementary/mkosi:tanit \ mkosi {{subcommand}} @@ -63,13 +46,7 @@ mkosi +subcommand: clean: just mkosi clean - podman run --rm \ - --privileged \ - -v "{{invocation_directory()}}:/work" \ - -w /work \ - ghcr.io/elementary/mkosi:tanit \ - rm -rf mkosi.tools mkosi.cache mkosi.output - rm -rf ~/.cache/mkosi ~/.cache/mkosi-workspace + run0 rm -rf mkosi.tools/ mkosi.cache/ mkosi.output/ ~/.cache/mkosi/ ~/.cache/mkosi-workspace/ compress-repo: #!/usr/bin/env bash diff --git a/assemble-iso.sh b/assemble-iso.sh index fa41fa25b..466deb9b9 100755 --- a/assemble-iso.sh +++ b/assemble-iso.sh @@ -7,6 +7,10 @@ SEARCH_DIR=. DATE=$(just -f ../Justfile _get_timestamp) PROFILE="${PROFILE:-unknown}" + +ISO_LABEL="elementary OS 9" +[[ "$PROFILE" == "daily" ]] && ISO_LABEL+=" Early Access" + ARCH=$(just -f ../Justfile _get_arch) OUT_ISO="./elementaryos-9.0-${PROFILE}-${ARCH}.${DATE}.iso" @@ -65,7 +69,7 @@ sh -c "set -e mksquashfs ${base_name} iso_root/casper/filesystem.squashfs -comp zstd echo 'Squashing raw image...' mksquashfs '$RAW_IMAGE' 'iso_root/extra/$(basename "$RAW_IMAGE").squashfs' -comp zstd - grub-mkrescue -o ${OUT_ISO} iso_root/ + grub-mkrescue -o ${OUT_ISO} -iso-level 3 -volid \"${ISO_LABEL}\" iso_root/ echo 'Live environment generated!'" rm -f custom_ubuntu_live.iso From a8496c9ea8c1146062483db4038aa47090c3e798 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Thu, 24 Sep 2026 10:07:35 +0530 Subject: [PATCH 06/19] Revert "Merge branch 'main' into vishal/avoid-sudo" This reverts commit 78ca6fa3c6e07f9d69930f4ec344d7d3970cf392, reversing changes made to a8d4b2841233de2ec7144066d3e0577eee0a247b. --- .github/workflows/build-release.yml | 12 ------- .github/workflows/proposed-9.0.yml | 34 ------------------- Justfile | 8 ++--- mkosi.conf.d/arch.arm64.conf | 1 - mkosi.conf.d/arch.x86-64.conf | 4 --- mkosi.images/driver-broadcom-addon/mkosi.conf | 22 ------------ .../driver-broadcom-modules/get-module-only | 10 ------ .../driver-broadcom-modules/mkosi.conf | 27 --------------- .../enable-runtime.chroot | 5 --- .../driver-broadcom-runtime/mkosi.conf | 24 ------------- mkosi.images/driver-nvidia-addon/mkosi.conf | 2 +- .../driver-nvidia-modules/depmod-nvidia | 6 ++++ .../driver-nvidia-modules/get-module-only | 6 ---- mkosi.images/driver-nvidia-modules/mkosi.conf | 4 +-- mkosi.images/driver-nvidia-runtime/mkosi.conf | 2 +- .../modules-db/mkosi.conf.d/arch.arm64.conf | 17 ---------- .../modules-db/mkosi.conf.d/arch.x86-64.conf | 18 ---------- mkosi.images/modules-db/mkosi.finalize | 19 ----------- mkosi.images/sysupdate/mkosi.conf | 5 +-- .../driver-broadcom-modules.transfer | 15 -------- .../driver-broadcom-runtime.transfer | 15 -------- .../lib/sysupdate.d/driver-broadcom.feature | 3 -- ... => driver-nvidia-initrd-modules.transfer} | 8 ++--- 23 files changed, 18 insertions(+), 249 deletions(-) delete mode 100644 mkosi.images/driver-broadcom-addon/mkosi.conf delete mode 100755 mkosi.images/driver-broadcom-modules/get-module-only delete mode 100644 mkosi.images/driver-broadcom-modules/mkosi.conf delete mode 100755 mkosi.images/driver-broadcom-runtime/enable-runtime.chroot delete mode 100644 mkosi.images/driver-broadcom-runtime/mkosi.conf create mode 100755 mkosi.images/driver-nvidia-modules/depmod-nvidia delete mode 100755 mkosi.images/driver-nvidia-modules/get-module-only delete mode 100644 mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf delete mode 100644 mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf delete mode 100755 mkosi.images/modules-db/mkosi.finalize delete mode 100644 mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer delete mode 100644 mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer delete mode 100644 mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature rename mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/{driver-broadcom-addon.transfer => driver-nvidia-initrd-modules.transfer} (54%) diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index cc7518d53..555b4c967 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -7,13 +7,6 @@ on: description: 'Stream to build for (daily, stable or proposed)' required: true type: string - outputs: - iso_amd64: - description: 'Filename of the amd64 ISO' - value: ${{ jobs.build-and-release.outputs.iso_amd64 }} - iso_arm64: - description: 'Filename of the arm64 ISO' - value: ${{ jobs.build-and-release.outputs.iso_arm64 }} jobs: build-and-release: @@ -28,9 +21,6 @@ jobs: runs-on: ${{ matrix.runner }} permissions: contents: write - outputs: - iso_amd64: ${{ steps.upload.outputs.iso_amd64 }} - iso_arm64: ${{ steps.upload.outputs.iso_arm64 }} steps: - name: Checkout repository @@ -72,7 +62,6 @@ jobs: echo "TIMESTAMP=$(just _get_timestamp)" >> "$GITHUB_ENV" - name: Upload sysupdate, iso and SHA256SUMS to Bucket - id: upload env: AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} @@ -136,7 +125,6 @@ jobs: # Live ISO + hash ISO=$(basename $(ls mkosi.output/elementaryos-*.iso | head -n 1)) - echo "iso_${{ matrix.arch }}=$ISO" >> "$GITHUB_OUTPUT" ( cd mkosi.output && sha256sum "$ISO" > "$ISO.sha256.txt" ) aws s3 cp "mkosi.output/$ISO" "s3://$R2_BUCKET_INSTALLER/$ISO" \ diff --git a/.github/workflows/proposed-9.0.yml b/.github/workflows/proposed-9.0.yml index 79a3d142e..041f4ec6d 100644 --- a/.github/workflows/proposed-9.0.yml +++ b/.github/workflows/proposed-9.0.yml @@ -20,37 +20,3 @@ jobs: with: stream: proposed secrets: inherit - - comment-installer-urls: - name: Comment Installer URLs - needs: call-reusable-build - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - permissions: - pull-requests: write - - steps: - - name: Comment installer URLs on PR - env: - GH_TOKEN: ${{ github.token }} - PR_NUMBER: ${{ github.event.pull_request.number }} - HEAD_SHA: ${{ github.event.pull_request.head.sha }} - ISO_AMD64: ${{ needs.call-reusable-build.outputs.iso_amd64 }} - ISO_ARM64: ${{ needs.call-reusable-build.outputs.iso_arm64 }} - run: | - set -euo pipefail - - BASE_URL="https://proposed.installers.elementaryos.org" - - { - echo "### Installer builds for $HEAD_SHA" - echo - echo "Do **not** use these installers for production systems. They are intended for testing purposes only. They will update to the latest PR build, which will break your install eventually." - echo - echo "| Arch | ISO | Checksum |" - echo "|---|---|---|" - echo "| amd64 | [$ISO_AMD64]($BASE_URL/$ISO_AMD64) | [sha256]($BASE_URL/$ISO_AMD64.sha256.txt) |" - echo "| arm64 | [$ISO_ARM64]($BASE_URL/$ISO_ARM64) | [sha256]($BASE_URL/$ISO_ARM64.sha256.txt) |" - } > body.md - - gh pr comment "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --body-file body.md diff --git a/Justfile b/Justfile index fcc3c6842..f035e9cbc 100644 --- a/Justfile +++ b/Justfile @@ -60,13 +60,11 @@ compress-repo: shopt -s nullglob split=(elementary_*.usr-*.*.raw) if [ ${#split[@]} -eq 0 ]; then - echo "Fatal: No split OS partition artifacts found to compress." >&2 + echo "Fatal: No split partition artifacts found to compress." >&2 exit 1 fi - drivers=(driver-*.raw) - files=("${split[@]}" "${drivers[@]}") - zstd -T0 --rm -f "${files[@]}" - ls -l "${files[@]/%/.zst}" + zstd -T0 --rm -f "${split[@]}" + ls -l elementary_*.usr-*.*.raw.zst checksum-repo: #!/usr/bin/env bash diff --git a/mkosi.conf.d/arch.arm64.conf b/mkosi.conf.d/arch.arm64.conf index c8002977d..96c1d858a 100644 --- a/mkosi.conf.d/arch.arm64.conf +++ b/mkosi.conf.d/arch.arm64.conf @@ -14,4 +14,3 @@ Dependencies= driver-nvidia-addon driver-nvidia-modules driver-nvidia-runtime - modules-db diff --git a/mkosi.conf.d/arch.x86-64.conf b/mkosi.conf.d/arch.x86-64.conf index 93c3fc143..2c4a4f2bc 100644 --- a/mkosi.conf.d/arch.x86-64.conf +++ b/mkosi.conf.d/arch.x86-64.conf @@ -14,7 +14,3 @@ Dependencies= driver-nvidia-addon driver-nvidia-modules driver-nvidia-runtime - driver-broadcom-addon - driver-broadcom-modules - driver-broadcom-runtime - modules-db diff --git a/mkosi.images/driver-broadcom-addon/mkosi.conf b/mkosi.images/driver-broadcom-addon/mkosi.conf deleted file mode 100644 index 9b2981f10..000000000 --- a/mkosi.images/driver-broadcom-addon/mkosi.conf +++ /dev/null @@ -1,22 +0,0 @@ -#broadcom-addon -[Config] -Dependencies=base - -[Match] -Architecture=x86-64 - -[Output] -ImageId=driver-broadcom-addon -Format=addon -Overlay=yes -Output=driver-broadcom-addon-%a_%v -OutputExtension=addon.efi -CompressOutput=false - -[Validation] -Verity=yes - -[Content] -BaseTrees=%O/base_%v -Packages=systemd-boot-efi -KernelCommandLine=module_blacklist=b43,bcma,brcmsmac,ssb diff --git a/mkosi.images/driver-broadcom-modules/get-module-only b/mkosi.images/driver-broadcom-modules/get-module-only deleted file mode 100755 index 16cfb9a1b..000000000 --- a/mkosi.images/driver-broadcom-modules/get-module-only +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -euo pipefail - -KVER=$(ls "$BUILDROOT/lib/modules" | head -n 1) - -mkdir -p "$DESTDIR/usr/lib/modules/$KVER/updates/dkms" - -cp "$BUILDROOT/lib/modules/$KVER/updates/dkms/wl.ko.zst" "$DESTDIR/usr/lib/modules/$KVER/updates/dkms/" - -find "$BUILDROOT/usr/lib/modules/$KVER/" -maxdepth 1 -type f -name 'modules.*' -delete diff --git a/mkosi.images/driver-broadcom-modules/mkosi.conf b/mkosi.images/driver-broadcom-modules/mkosi.conf deleted file mode 100644 index 4d43481c5..000000000 --- a/mkosi.images/driver-broadcom-modules/mkosi.conf +++ /dev/null @@ -1,27 +0,0 @@ -#broadcom-modules -[Config] -Dependencies=base - -[Match] -Architecture=x86-64 - -[Output] -ImageId=driver-broadcom-modules -Format=sysext -Overlay=yes -Output=driver-broadcom-modules-%a_%v -CompressOutput=false - -[Validation] -Verity=yes - -[Content] -Bootable=no -BaseTrees=%O/base_%v -BuildPackages= - dkms - broadcom-sta-dkms - linux-headers-generic -Packages=kmod -BuildScripts=get-module-only - diff --git a/mkosi.images/driver-broadcom-runtime/enable-runtime.chroot b/mkosi.images/driver-broadcom-runtime/enable-runtime.chroot deleted file mode 100755 index 91c573a65..000000000 --- a/mkosi.images/driver-broadcom-runtime/enable-runtime.chroot +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -euo pipefail - -mkdir -p /usr/lib/modprobe.d/ -cp /etc/modprobe.d/broadcom-sta-common.conf /usr/lib/modprobe.d/ diff --git a/mkosi.images/driver-broadcom-runtime/mkosi.conf b/mkosi.images/driver-broadcom-runtime/mkosi.conf deleted file mode 100644 index ccd2eec89..000000000 --- a/mkosi.images/driver-broadcom-runtime/mkosi.conf +++ /dev/null @@ -1,24 +0,0 @@ -#broadcom-runtime -[Config] -Dependencies=base - -[Match] -Architecture=x86-64 - -[Output] -ImageId=driver-broadcom-runtime -Format=sysext -Overlay=yes -Output=driver-broadcom-runtime-%a_%v -CompressOutput=false - -[Validation] -Verity=yes - -[Content] -Bootable=no -BaseTrees=%O/base_%v -RemovePackages=broadcom-sta-dkms -BuildScripts=enable-runtime.chroot -Packages= - broadcom-sta-common diff --git a/mkosi.images/driver-nvidia-addon/mkosi.conf b/mkosi.images/driver-nvidia-addon/mkosi.conf index 0b5791956..e613c5249 100644 --- a/mkosi.images/driver-nvidia-addon/mkosi.conf +++ b/mkosi.images/driver-nvidia-addon/mkosi.conf @@ -8,7 +8,7 @@ Format=addon Overlay=yes Output=driver-nvidia-addon-%a_%v OutputExtension=addon.efi -CompressOutput=false +CompressOutput=zstd [Validation] Verity=yes diff --git a/mkosi.images/driver-nvidia-modules/depmod-nvidia b/mkosi.images/driver-nvidia-modules/depmod-nvidia new file mode 100755 index 000000000..b218d7c2f --- /dev/null +++ b/mkosi.images/driver-nvidia-modules/depmod-nvidia @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail + +KVER=$(ls "$BUILDROOT/usr/lib/modules" | head -n 1) + +depmod -a -b "$BUILDROOT/usr" "$KVER" \ No newline at end of file diff --git a/mkosi.images/driver-nvidia-modules/get-module-only b/mkosi.images/driver-nvidia-modules/get-module-only deleted file mode 100755 index 691fa9f96..000000000 --- a/mkosi.images/driver-nvidia-modules/get-module-only +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -euo pipefail - -KVER=$(ls "$BUILDROOT/usr/lib/modules" | head -n 1) - -find "$BUILDROOT/usr/lib/modules/$KVER/" -maxdepth 1 -type f -name 'modules.*' -delete diff --git a/mkosi.images/driver-nvidia-modules/mkosi.conf b/mkosi.images/driver-nvidia-modules/mkosi.conf index d5d09e9ac..99431220a 100644 --- a/mkosi.images/driver-nvidia-modules/mkosi.conf +++ b/mkosi.images/driver-nvidia-modules/mkosi.conf @@ -7,7 +7,7 @@ ImageId=driver-nvidia-modules Format=sysext Overlay=yes Output=driver-nvidia-modules-%a_%v -CompressOutput=false +CompressOutput=zstd [Validation] Verity=yes @@ -19,4 +19,4 @@ Environment=DEB_BUILD_PROFILES=nokerneldkms Bootable=no BaseTrees=%O/base_%v Packages=linux-modules-nvidia-590-open-generic -BuildScripts=get-module-only +FinalizeScripts=depmod-nvidia diff --git a/mkosi.images/driver-nvidia-runtime/mkosi.conf b/mkosi.images/driver-nvidia-runtime/mkosi.conf index 71229ddd6..bdb38b31a 100644 --- a/mkosi.images/driver-nvidia-runtime/mkosi.conf +++ b/mkosi.images/driver-nvidia-runtime/mkosi.conf @@ -7,7 +7,7 @@ ImageId=driver-nvidia-runtime Format=sysext Overlay=yes Output=driver-nvidia-runtime-%a_%v -CompressOutput=false +CompressOutput=zstd [Validation] Verity=yes diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf deleted file mode 100644 index 59b2472d8..000000000 --- a/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf +++ /dev/null @@ -1,17 +0,0 @@ -[Config] -Dependencies=base - -[Match] -Architecture=arm64 - -[Output] -Format=directory -SplitArtifacts= -CompressOutput=false - -[Content] -Bootable=false -BaseTrees= - %O/base_%v - %O/driver-nvidia-modules-%a_%v.raw -Output=modules-db_%a-%v diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf deleted file mode 100644 index b082c18b0..000000000 --- a/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf +++ /dev/null @@ -1,18 +0,0 @@ -[Config] -Dependencies=base - -[Match] -Architecture=x86-64 - -[Output] -Format=directory -SplitArtifacts= -CompressOutput=false - -[Content] -Bootable=false -BaseTrees= - %O/base_%v - %O/driver-broadcom-modules-%a_%v.raw - %O/driver-nvidia-modules-%a_%v.raw -Output=modules-db_%a-%v diff --git a/mkosi.images/modules-db/mkosi.finalize b/mkosi.images/modules-db/mkosi.finalize deleted file mode 100755 index 60e32e590..000000000 --- a/mkosi.images/modules-db/mkosi.finalize +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -euo pipefail - -BUILDROOT=$(realpath "$BUILDROOT") - - -KVER=$(ls "$BUILDROOT/usr/lib/modules" | head -n 1) -MODDIR="$BUILDROOT/usr/lib/modules/$KVER" - -depmod -a -b "$BUILDROOT/usr" "$KVER" - -# Keep only the module database -find "$BUILDROOT" -xdev -mindepth 1 -depth \ - ! -path "$BUILDROOT/usr" \ - ! -path "$BUILDROOT/usr/lib" \ - ! -path "$BUILDROOT/usr/lib/modules" \ - ! -path "$MODDIR" \ - ! -path "$MODDIR/modules.*" \ - -delete diff --git a/mkosi.images/sysupdate/mkosi.conf b/mkosi.images/sysupdate/mkosi.conf index 0a8e16462..8d6c20b4a 100644 --- a/mkosi.images/sysupdate/mkosi.conf +++ b/mkosi.images/sysupdate/mkosi.conf @@ -1,7 +1,5 @@ [Config] -Dependencies= - base - modules-db +Dependencies=base [Match] Distribution=ubuntu @@ -18,7 +16,6 @@ VolatilePackages= systemd-boot-efi Bootable=yes BaseTrees=%O/base_%v -ExtraTrees=%O/modules-db_%a-%v Output=elementary_%v CleanPackageMetadata=yes Bootloader=systemd-boot diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer deleted file mode 100644 index 470134b67..000000000 --- a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer +++ /dev/null @@ -1,15 +0,0 @@ -[Transfer] -ProtectVersion=%A -Features=driver-broadcom -Verify=yes - -[Source] -Type=url-file -Path=https://%W.updates.elementaryos.org/%a/ext -MatchPattern=driver-broadcom-modules-%a_@v.raw.zst - -[Target] -Type=regular-file -Path=/var/lib/extensions/ -MatchPattern=driver-broadcom-modules-%a_@v.raw -InstancesMax=2 diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer deleted file mode 100644 index b04263436..000000000 --- a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer +++ /dev/null @@ -1,15 +0,0 @@ -[Transfer] -ProtectVersion=%A -Features=driver-broadcom -Verify=yes - -[Source] -Type=url-file -Path=https://%W.updates.elementaryos.org/%a/ext -MatchPattern=driver-broadcom-runtime-%a_@v.raw.zst - -[Target] -Type=regular-file -Path=/var/lib/extensions/ -MatchPattern=driver-broadcom-runtime-%a_@v.raw -InstancesMax=2 diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature deleted file mode 100644 index d8386dbf2..000000000 --- a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature +++ /dev/null @@ -1,3 +0,0 @@ -[Feature] -Description=Broadcom STA Wireless Driver (x86-64 only) -Documentation=http://www.broadcom.com/support/802.11/linux_sta.php diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-addon.transfer b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-nvidia-initrd-modules.transfer similarity index 54% rename from mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-addon.transfer rename to mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-nvidia-initrd-modules.transfer index a8985be49..2107e4163 100644 --- a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-addon.transfer +++ b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-nvidia-initrd-modules.transfer @@ -1,17 +1,17 @@ [Transfer] ProtectVersion=%A -Features=driver-broadcom +Features=driver-nvidia Verify=yes [Source] Type=url-file Path=https://%W.updates.elementaryos.org/%a/ext -MatchPattern=driver-broadcom-addon-%a_@v.addon.efi +MatchPattern=driver-nvidia-modules-%a_@v.raw.zst [Target] Type=regular-file -Path=/EFI/Linux +Path=/EFI/Linux/ PathRelativeTo=boot -MatchPattern=elementary_@v_%a.efi.extra.d/broadcom.addon.efi +MatchPattern=elementary_@v_%a.efi.extra.d/nvidia-modules.raw Mode=0444 InstancesMax=2 From 2f24fa242d12a6621da109d8f0949f6b17e074b4 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Thu, 24 Sep 2026 10:20:26 +0530 Subject: [PATCH 07/19] Reapply "Merge branch 'main' into vishal/avoid-sudo" This reverts commit a8496c9ea8c1146062483db4038aa47090c3e798. --- .github/workflows/build-release.yml | 12 +++++++ .github/workflows/proposed-9.0.yml | 34 +++++++++++++++++++ Justfile | 8 +++-- mkosi.conf.d/arch.arm64.conf | 1 + mkosi.conf.d/arch.x86-64.conf | 4 +++ mkosi.images/driver-broadcom-addon/mkosi.conf | 22 ++++++++++++ .../driver-broadcom-modules/get-module-only | 10 ++++++ .../driver-broadcom-modules/mkosi.conf | 27 +++++++++++++++ .../enable-runtime.chroot | 5 +++ .../driver-broadcom-runtime/mkosi.conf | 24 +++++++++++++ mkosi.images/driver-nvidia-addon/mkosi.conf | 2 +- .../driver-nvidia-modules/depmod-nvidia | 6 ---- .../driver-nvidia-modules/get-module-only | 6 ++++ mkosi.images/driver-nvidia-modules/mkosi.conf | 4 +-- mkosi.images/driver-nvidia-runtime/mkosi.conf | 2 +- .../modules-db/mkosi.conf.d/arch.arm64.conf | 17 ++++++++++ .../modules-db/mkosi.conf.d/arch.x86-64.conf | 18 ++++++++++ mkosi.images/modules-db/mkosi.finalize | 19 +++++++++++ mkosi.images/sysupdate/mkosi.conf | 5 ++- ...ransfer => driver-broadcom-addon.transfer} | 8 ++--- .../driver-broadcom-modules.transfer | 15 ++++++++ .../driver-broadcom-runtime.transfer | 15 ++++++++ .../lib/sysupdate.d/driver-broadcom.feature | 3 ++ 23 files changed, 249 insertions(+), 18 deletions(-) create mode 100644 mkosi.images/driver-broadcom-addon/mkosi.conf create mode 100755 mkosi.images/driver-broadcom-modules/get-module-only create mode 100644 mkosi.images/driver-broadcom-modules/mkosi.conf create mode 100755 mkosi.images/driver-broadcom-runtime/enable-runtime.chroot create mode 100644 mkosi.images/driver-broadcom-runtime/mkosi.conf delete mode 100755 mkosi.images/driver-nvidia-modules/depmod-nvidia create mode 100755 mkosi.images/driver-nvidia-modules/get-module-only create mode 100644 mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf create mode 100644 mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf create mode 100755 mkosi.images/modules-db/mkosi.finalize rename mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/{driver-nvidia-initrd-modules.transfer => driver-broadcom-addon.transfer} (54%) create mode 100644 mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer create mode 100644 mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer create mode 100644 mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 555b4c967..cc7518d53 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -7,6 +7,13 @@ on: description: 'Stream to build for (daily, stable or proposed)' required: true type: string + outputs: + iso_amd64: + description: 'Filename of the amd64 ISO' + value: ${{ jobs.build-and-release.outputs.iso_amd64 }} + iso_arm64: + description: 'Filename of the arm64 ISO' + value: ${{ jobs.build-and-release.outputs.iso_arm64 }} jobs: build-and-release: @@ -21,6 +28,9 @@ jobs: runs-on: ${{ matrix.runner }} permissions: contents: write + outputs: + iso_amd64: ${{ steps.upload.outputs.iso_amd64 }} + iso_arm64: ${{ steps.upload.outputs.iso_arm64 }} steps: - name: Checkout repository @@ -62,6 +72,7 @@ jobs: echo "TIMESTAMP=$(just _get_timestamp)" >> "$GITHUB_ENV" - name: Upload sysupdate, iso and SHA256SUMS to Bucket + id: upload env: AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} @@ -125,6 +136,7 @@ jobs: # Live ISO + hash ISO=$(basename $(ls mkosi.output/elementaryos-*.iso | head -n 1)) + echo "iso_${{ matrix.arch }}=$ISO" >> "$GITHUB_OUTPUT" ( cd mkosi.output && sha256sum "$ISO" > "$ISO.sha256.txt" ) aws s3 cp "mkosi.output/$ISO" "s3://$R2_BUCKET_INSTALLER/$ISO" \ diff --git a/.github/workflows/proposed-9.0.yml b/.github/workflows/proposed-9.0.yml index 041f4ec6d..79a3d142e 100644 --- a/.github/workflows/proposed-9.0.yml +++ b/.github/workflows/proposed-9.0.yml @@ -20,3 +20,37 @@ jobs: with: stream: proposed secrets: inherit + + comment-installer-urls: + name: Comment Installer URLs + needs: call-reusable-build + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + permissions: + pull-requests: write + + steps: + - name: Comment installer URLs on PR + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + ISO_AMD64: ${{ needs.call-reusable-build.outputs.iso_amd64 }} + ISO_ARM64: ${{ needs.call-reusable-build.outputs.iso_arm64 }} + run: | + set -euo pipefail + + BASE_URL="https://proposed.installers.elementaryos.org" + + { + echo "### Installer builds for $HEAD_SHA" + echo + echo "Do **not** use these installers for production systems. They are intended for testing purposes only. They will update to the latest PR build, which will break your install eventually." + echo + echo "| Arch | ISO | Checksum |" + echo "|---|---|---|" + echo "| amd64 | [$ISO_AMD64]($BASE_URL/$ISO_AMD64) | [sha256]($BASE_URL/$ISO_AMD64.sha256.txt) |" + echo "| arm64 | [$ISO_ARM64]($BASE_URL/$ISO_ARM64) | [sha256]($BASE_URL/$ISO_ARM64.sha256.txt) |" + } > body.md + + gh pr comment "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --body-file body.md diff --git a/Justfile b/Justfile index f035e9cbc..fcc3c6842 100644 --- a/Justfile +++ b/Justfile @@ -60,11 +60,13 @@ compress-repo: shopt -s nullglob split=(elementary_*.usr-*.*.raw) if [ ${#split[@]} -eq 0 ]; then - echo "Fatal: No split partition artifacts found to compress." >&2 + echo "Fatal: No split OS partition artifacts found to compress." >&2 exit 1 fi - zstd -T0 --rm -f "${split[@]}" - ls -l elementary_*.usr-*.*.raw.zst + drivers=(driver-*.raw) + files=("${split[@]}" "${drivers[@]}") + zstd -T0 --rm -f "${files[@]}" + ls -l "${files[@]/%/.zst}" checksum-repo: #!/usr/bin/env bash diff --git a/mkosi.conf.d/arch.arm64.conf b/mkosi.conf.d/arch.arm64.conf index 96c1d858a..c8002977d 100644 --- a/mkosi.conf.d/arch.arm64.conf +++ b/mkosi.conf.d/arch.arm64.conf @@ -14,3 +14,4 @@ Dependencies= driver-nvidia-addon driver-nvidia-modules driver-nvidia-runtime + modules-db diff --git a/mkosi.conf.d/arch.x86-64.conf b/mkosi.conf.d/arch.x86-64.conf index 2c4a4f2bc..93c3fc143 100644 --- a/mkosi.conf.d/arch.x86-64.conf +++ b/mkosi.conf.d/arch.x86-64.conf @@ -14,3 +14,7 @@ Dependencies= driver-nvidia-addon driver-nvidia-modules driver-nvidia-runtime + driver-broadcom-addon + driver-broadcom-modules + driver-broadcom-runtime + modules-db diff --git a/mkosi.images/driver-broadcom-addon/mkosi.conf b/mkosi.images/driver-broadcom-addon/mkosi.conf new file mode 100644 index 000000000..9b2981f10 --- /dev/null +++ b/mkosi.images/driver-broadcom-addon/mkosi.conf @@ -0,0 +1,22 @@ +#broadcom-addon +[Config] +Dependencies=base + +[Match] +Architecture=x86-64 + +[Output] +ImageId=driver-broadcom-addon +Format=addon +Overlay=yes +Output=driver-broadcom-addon-%a_%v +OutputExtension=addon.efi +CompressOutput=false + +[Validation] +Verity=yes + +[Content] +BaseTrees=%O/base_%v +Packages=systemd-boot-efi +KernelCommandLine=module_blacklist=b43,bcma,brcmsmac,ssb diff --git a/mkosi.images/driver-broadcom-modules/get-module-only b/mkosi.images/driver-broadcom-modules/get-module-only new file mode 100755 index 000000000..16cfb9a1b --- /dev/null +++ b/mkosi.images/driver-broadcom-modules/get-module-only @@ -0,0 +1,10 @@ +#!/bin/bash +set -euo pipefail + +KVER=$(ls "$BUILDROOT/lib/modules" | head -n 1) + +mkdir -p "$DESTDIR/usr/lib/modules/$KVER/updates/dkms" + +cp "$BUILDROOT/lib/modules/$KVER/updates/dkms/wl.ko.zst" "$DESTDIR/usr/lib/modules/$KVER/updates/dkms/" + +find "$BUILDROOT/usr/lib/modules/$KVER/" -maxdepth 1 -type f -name 'modules.*' -delete diff --git a/mkosi.images/driver-broadcom-modules/mkosi.conf b/mkosi.images/driver-broadcom-modules/mkosi.conf new file mode 100644 index 000000000..4d43481c5 --- /dev/null +++ b/mkosi.images/driver-broadcom-modules/mkosi.conf @@ -0,0 +1,27 @@ +#broadcom-modules +[Config] +Dependencies=base + +[Match] +Architecture=x86-64 + +[Output] +ImageId=driver-broadcom-modules +Format=sysext +Overlay=yes +Output=driver-broadcom-modules-%a_%v +CompressOutput=false + +[Validation] +Verity=yes + +[Content] +Bootable=no +BaseTrees=%O/base_%v +BuildPackages= + dkms + broadcom-sta-dkms + linux-headers-generic +Packages=kmod +BuildScripts=get-module-only + diff --git a/mkosi.images/driver-broadcom-runtime/enable-runtime.chroot b/mkosi.images/driver-broadcom-runtime/enable-runtime.chroot new file mode 100755 index 000000000..91c573a65 --- /dev/null +++ b/mkosi.images/driver-broadcom-runtime/enable-runtime.chroot @@ -0,0 +1,5 @@ +#!/bin/bash +set -euo pipefail + +mkdir -p /usr/lib/modprobe.d/ +cp /etc/modprobe.d/broadcom-sta-common.conf /usr/lib/modprobe.d/ diff --git a/mkosi.images/driver-broadcom-runtime/mkosi.conf b/mkosi.images/driver-broadcom-runtime/mkosi.conf new file mode 100644 index 000000000..ccd2eec89 --- /dev/null +++ b/mkosi.images/driver-broadcom-runtime/mkosi.conf @@ -0,0 +1,24 @@ +#broadcom-runtime +[Config] +Dependencies=base + +[Match] +Architecture=x86-64 + +[Output] +ImageId=driver-broadcom-runtime +Format=sysext +Overlay=yes +Output=driver-broadcom-runtime-%a_%v +CompressOutput=false + +[Validation] +Verity=yes + +[Content] +Bootable=no +BaseTrees=%O/base_%v +RemovePackages=broadcom-sta-dkms +BuildScripts=enable-runtime.chroot +Packages= + broadcom-sta-common diff --git a/mkosi.images/driver-nvidia-addon/mkosi.conf b/mkosi.images/driver-nvidia-addon/mkosi.conf index e613c5249..0b5791956 100644 --- a/mkosi.images/driver-nvidia-addon/mkosi.conf +++ b/mkosi.images/driver-nvidia-addon/mkosi.conf @@ -8,7 +8,7 @@ Format=addon Overlay=yes Output=driver-nvidia-addon-%a_%v OutputExtension=addon.efi -CompressOutput=zstd +CompressOutput=false [Validation] Verity=yes diff --git a/mkosi.images/driver-nvidia-modules/depmod-nvidia b/mkosi.images/driver-nvidia-modules/depmod-nvidia deleted file mode 100755 index b218d7c2f..000000000 --- a/mkosi.images/driver-nvidia-modules/depmod-nvidia +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -euo pipefail - -KVER=$(ls "$BUILDROOT/usr/lib/modules" | head -n 1) - -depmod -a -b "$BUILDROOT/usr" "$KVER" \ No newline at end of file diff --git a/mkosi.images/driver-nvidia-modules/get-module-only b/mkosi.images/driver-nvidia-modules/get-module-only new file mode 100755 index 000000000..691fa9f96 --- /dev/null +++ b/mkosi.images/driver-nvidia-modules/get-module-only @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail + +KVER=$(ls "$BUILDROOT/usr/lib/modules" | head -n 1) + +find "$BUILDROOT/usr/lib/modules/$KVER/" -maxdepth 1 -type f -name 'modules.*' -delete diff --git a/mkosi.images/driver-nvidia-modules/mkosi.conf b/mkosi.images/driver-nvidia-modules/mkosi.conf index 99431220a..d5d09e9ac 100644 --- a/mkosi.images/driver-nvidia-modules/mkosi.conf +++ b/mkosi.images/driver-nvidia-modules/mkosi.conf @@ -7,7 +7,7 @@ ImageId=driver-nvidia-modules Format=sysext Overlay=yes Output=driver-nvidia-modules-%a_%v -CompressOutput=zstd +CompressOutput=false [Validation] Verity=yes @@ -19,4 +19,4 @@ Environment=DEB_BUILD_PROFILES=nokerneldkms Bootable=no BaseTrees=%O/base_%v Packages=linux-modules-nvidia-590-open-generic -FinalizeScripts=depmod-nvidia +BuildScripts=get-module-only diff --git a/mkosi.images/driver-nvidia-runtime/mkosi.conf b/mkosi.images/driver-nvidia-runtime/mkosi.conf index bdb38b31a..71229ddd6 100644 --- a/mkosi.images/driver-nvidia-runtime/mkosi.conf +++ b/mkosi.images/driver-nvidia-runtime/mkosi.conf @@ -7,7 +7,7 @@ ImageId=driver-nvidia-runtime Format=sysext Overlay=yes Output=driver-nvidia-runtime-%a_%v -CompressOutput=zstd +CompressOutput=false [Validation] Verity=yes diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf new file mode 100644 index 000000000..59b2472d8 --- /dev/null +++ b/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf @@ -0,0 +1,17 @@ +[Config] +Dependencies=base + +[Match] +Architecture=arm64 + +[Output] +Format=directory +SplitArtifacts= +CompressOutput=false + +[Content] +Bootable=false +BaseTrees= + %O/base_%v + %O/driver-nvidia-modules-%a_%v.raw +Output=modules-db_%a-%v diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf new file mode 100644 index 000000000..b082c18b0 --- /dev/null +++ b/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf @@ -0,0 +1,18 @@ +[Config] +Dependencies=base + +[Match] +Architecture=x86-64 + +[Output] +Format=directory +SplitArtifacts= +CompressOutput=false + +[Content] +Bootable=false +BaseTrees= + %O/base_%v + %O/driver-broadcom-modules-%a_%v.raw + %O/driver-nvidia-modules-%a_%v.raw +Output=modules-db_%a-%v diff --git a/mkosi.images/modules-db/mkosi.finalize b/mkosi.images/modules-db/mkosi.finalize new file mode 100755 index 000000000..60e32e590 --- /dev/null +++ b/mkosi.images/modules-db/mkosi.finalize @@ -0,0 +1,19 @@ +#!/bin/bash +set -euo pipefail + +BUILDROOT=$(realpath "$BUILDROOT") + + +KVER=$(ls "$BUILDROOT/usr/lib/modules" | head -n 1) +MODDIR="$BUILDROOT/usr/lib/modules/$KVER" + +depmod -a -b "$BUILDROOT/usr" "$KVER" + +# Keep only the module database +find "$BUILDROOT" -xdev -mindepth 1 -depth \ + ! -path "$BUILDROOT/usr" \ + ! -path "$BUILDROOT/usr/lib" \ + ! -path "$BUILDROOT/usr/lib/modules" \ + ! -path "$MODDIR" \ + ! -path "$MODDIR/modules.*" \ + -delete diff --git a/mkosi.images/sysupdate/mkosi.conf b/mkosi.images/sysupdate/mkosi.conf index 8d6c20b4a..0a8e16462 100644 --- a/mkosi.images/sysupdate/mkosi.conf +++ b/mkosi.images/sysupdate/mkosi.conf @@ -1,5 +1,7 @@ [Config] -Dependencies=base +Dependencies= + base + modules-db [Match] Distribution=ubuntu @@ -16,6 +18,7 @@ VolatilePackages= systemd-boot-efi Bootable=yes BaseTrees=%O/base_%v +ExtraTrees=%O/modules-db_%a-%v Output=elementary_%v CleanPackageMetadata=yes Bootloader=systemd-boot diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-nvidia-initrd-modules.transfer b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-addon.transfer similarity index 54% rename from mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-nvidia-initrd-modules.transfer rename to mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-addon.transfer index 2107e4163..a8985be49 100644 --- a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-nvidia-initrd-modules.transfer +++ b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-addon.transfer @@ -1,17 +1,17 @@ [Transfer] ProtectVersion=%A -Features=driver-nvidia +Features=driver-broadcom Verify=yes [Source] Type=url-file Path=https://%W.updates.elementaryos.org/%a/ext -MatchPattern=driver-nvidia-modules-%a_@v.raw.zst +MatchPattern=driver-broadcom-addon-%a_@v.addon.efi [Target] Type=regular-file -Path=/EFI/Linux/ +Path=/EFI/Linux PathRelativeTo=boot -MatchPattern=elementary_@v_%a.efi.extra.d/nvidia-modules.raw +MatchPattern=elementary_@v_%a.efi.extra.d/broadcom.addon.efi Mode=0444 InstancesMax=2 diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer new file mode 100644 index 000000000..470134b67 --- /dev/null +++ b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-modules.transfer @@ -0,0 +1,15 @@ +[Transfer] +ProtectVersion=%A +Features=driver-broadcom +Verify=yes + +[Source] +Type=url-file +Path=https://%W.updates.elementaryos.org/%a/ext +MatchPattern=driver-broadcom-modules-%a_@v.raw.zst + +[Target] +Type=regular-file +Path=/var/lib/extensions/ +MatchPattern=driver-broadcom-modules-%a_@v.raw +InstancesMax=2 diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer new file mode 100644 index 000000000..b04263436 --- /dev/null +++ b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom-runtime.transfer @@ -0,0 +1,15 @@ +[Transfer] +ProtectVersion=%A +Features=driver-broadcom +Verify=yes + +[Source] +Type=url-file +Path=https://%W.updates.elementaryos.org/%a/ext +MatchPattern=driver-broadcom-runtime-%a_@v.raw.zst + +[Target] +Type=regular-file +Path=/var/lib/extensions/ +MatchPattern=driver-broadcom-runtime-%a_@v.raw +InstancesMax=2 diff --git a/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature new file mode 100644 index 000000000..d8386dbf2 --- /dev/null +++ b/mkosi.images/sysupdate/mkosi.extra/usr/lib/sysupdate.d/driver-broadcom.feature @@ -0,0 +1,3 @@ +[Feature] +Description=Broadcom STA Wireless Driver (x86-64 only) +Documentation=http://www.broadcom.com/support/802.11/linux_sta.php From 946092347a0fc204315392d6da95e31767ed4a49 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Thu, 24 Sep 2026 11:52:50 +0530 Subject: [PATCH 08/19] Fix build failure due to driver module path weirdness --- mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf | 1 - mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf | 2 -- 2 files changed, 3 deletions(-) diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf index 59b2472d8..8db3e1825 100644 --- a/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf +++ b/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf @@ -13,5 +13,4 @@ CompressOutput=false Bootable=false BaseTrees= %O/base_%v - %O/driver-nvidia-modules-%a_%v.raw Output=modules-db_%a-%v diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf index b082c18b0..a061fb0ac 100644 --- a/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf +++ b/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf @@ -13,6 +13,4 @@ CompressOutput=false Bootable=false BaseTrees= %O/base_%v - %O/driver-broadcom-modules-%a_%v.raw - %O/driver-nvidia-modules-%a_%v.raw Output=modules-db_%a-%v From cfefe824fa2b13573f9e6c06c4a12322e9466ea5 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sat, 26 Sep 2026 07:53:10 +0530 Subject: [PATCH 09/19] Go back to using podman instead of sudo or run0 --- Justfile | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/Justfile b/Justfile index fcc3c6842..561e2c517 100644 --- a/Justfile +++ b/Justfile @@ -5,9 +5,21 @@ default: _do-release stream: #!/usr/bin/env bash - run0 rm -rf mkosi.output/ && \ + podman run --rm \ + --privileged \ + -v "{{invocation_directory()}}:/work" \ + -w /work \ + ghcr.io/elementary/mkosi:tanit \ + rm -rf mkosi.output/ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ - PROFILE={{stream}} ./assemble-iso.sh + PROFILE={{stream}} \ + podman run --rm \ + --privileged \ + -v "{{invocation_directory()}}:/work" \ + -w /work \ + -e PROFILE \ + ghcr.io/elementary/mkosi:tanit \ + ./assemble-iso.sh just compress-repo # Built every day from the main branch @@ -51,7 +63,13 @@ mkosi +subcommand: clean: just mkosi clean - run0 rm -rf mkosi.tools/ mkosi.cache/ mkosi.output/ ~/.cache/mkosi/ ~/.cache/mkosi-workspace/ + podman run --rm \ + --privileged \ + -v "{{invocation_directory()}}:/work" \ + -w /work \ + ghcr.io/elementary/mkosi:tanit \ + rm -rf mkosi.tools mkosi.cache mkosi.output + rm -rf ~/.cache/mkosi ~/.cache/mkosi-workspace compress-repo: #!/usr/bin/env bash From 396fb50ed281d0756644d07d768e81783ba912af Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sat, 26 Sep 2026 10:46:50 +0530 Subject: [PATCH 10/19] Revert assemble-iso.sh changes merged in separate PR --- assemble-iso.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/assemble-iso.sh b/assemble-iso.sh index 466deb9b9..fa41fa25b 100755 --- a/assemble-iso.sh +++ b/assemble-iso.sh @@ -7,10 +7,6 @@ SEARCH_DIR=. DATE=$(just -f ../Justfile _get_timestamp) PROFILE="${PROFILE:-unknown}" - -ISO_LABEL="elementary OS 9" -[[ "$PROFILE" == "daily" ]] && ISO_LABEL+=" Early Access" - ARCH=$(just -f ../Justfile _get_arch) OUT_ISO="./elementaryos-9.0-${PROFILE}-${ARCH}.${DATE}.iso" @@ -69,7 +65,7 @@ sh -c "set -e mksquashfs ${base_name} iso_root/casper/filesystem.squashfs -comp zstd echo 'Squashing raw image...' mksquashfs '$RAW_IMAGE' 'iso_root/extra/$(basename "$RAW_IMAGE").squashfs' -comp zstd - grub-mkrescue -o ${OUT_ISO} -iso-level 3 -volid \"${ISO_LABEL}\" iso_root/ + grub-mkrescue -o ${OUT_ISO} iso_root/ echo 'Live environment generated!'" rm -f custom_ubuntu_live.iso From 70232c5281af412cb3770d3f081d6e719dc05daf Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sat, 26 Sep 2026 12:13:34 +0530 Subject: [PATCH 11/19] Undo changes to module confs --- mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf | 1 + mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf | 2 ++ 2 files changed, 3 insertions(+) diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf index 8db3e1825..59b2472d8 100644 --- a/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf +++ b/mkosi.images/modules-db/mkosi.conf.d/arch.arm64.conf @@ -13,4 +13,5 @@ CompressOutput=false Bootable=false BaseTrees= %O/base_%v + %O/driver-nvidia-modules-%a_%v.raw Output=modules-db_%a-%v diff --git a/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf b/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf index a061fb0ac..b082c18b0 100644 --- a/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf +++ b/mkosi.images/modules-db/mkosi.conf.d/arch.x86-64.conf @@ -13,4 +13,6 @@ CompressOutput=false Bootable=false BaseTrees= %O/base_%v + %O/driver-broadcom-modules-%a_%v.raw + %O/driver-nvidia-modules-%a_%v.raw Output=modules-db_%a-%v From 2f91623bddf1a2da2ad86d704959c12c66464b83 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sat, 26 Sep 2026 12:14:20 +0530 Subject: [PATCH 12/19] Try alternate approach with sudo back in the picture --- Justfile | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/Justfile b/Justfile index 561e2c517..30440539b 100644 --- a/Justfile +++ b/Justfile @@ -4,23 +4,12 @@ default: just --choose _do-release stream: - #!/usr/bin/env bash - podman run --rm \ - --privileged \ - -v "{{invocation_directory()}}:/work" \ - -w /work \ - ghcr.io/elementary/mkosi:tanit \ - rm -rf mkosi.output/ + sudo bash -c ' \ + rm -rf mkosi.output/ && \ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ - PROFILE={{stream}} \ - podman run --rm \ - --privileged \ - -v "{{invocation_directory()}}:/work" \ - -w /work \ - -e PROFILE \ - ghcr.io/elementary/mkosi:tanit \ - ./assemble-iso.sh - just compress-repo + PROFILE={{stream}} ./assemble-iso.sh && \ + just compress-repo \ + ' # Built every day from the main branch do-daily: (_do-release "daily") @@ -62,14 +51,10 @@ mkosi +subcommand: clean: - just mkosi clean - podman run --rm \ - --privileged \ - -v "{{invocation_directory()}}:/work" \ - -w /work \ - ghcr.io/elementary/mkosi:tanit \ - rm -rf mkosi.tools mkosi.cache mkosi.output - rm -rf ~/.cache/mkosi ~/.cache/mkosi-workspace + sudo bash -c ' \ + just mkosi clean && \ + rm -rf mkosi.tools mkosi.cache mkosi.output ~/.cache/mkosi ~/.cache/mkosi-workspace \ + ' compress-repo: #!/usr/bin/env bash From 9ba915b38fdf7b0406c1fef133655b977a0d8996 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 27 Sep 2026 08:43:49 +0530 Subject: [PATCH 13/19] Add fzf to README.md runtime deps list for just chooser --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a8b9f5df0..0bba3af5d 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ You'll need the following runtime dependencies: * podman * just * zstd +* fzf * systemd Generate keys and then build with `just` From e648f913bf8cf99c3c8da01026ea2f0a1ab0dff2 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 27 Sep 2026 08:59:01 +0530 Subject: [PATCH 14/19] Fix mkosi.output perms for other just recipes --- Justfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Justfile b/Justfile index 30440539b..a79dc8b2a 100644 --- a/Justfile +++ b/Justfile @@ -8,7 +8,8 @@ _do-release stream: rm -rf mkosi.output/ && \ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ PROFILE={{stream}} ./assemble-iso.sh && \ - just compress-repo \ + just compress-repo && \ + chmod -R ugo+rwX mkosi.output \ ' # Built every day from the main branch From b2c0c0f0509baa430a9db24862367a4097b2fe4c Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 27 Sep 2026 09:12:04 +0530 Subject: [PATCH 15/19] Mark some Justfile recipes private --- Justfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Justfile b/Justfile index a79dc8b2a..e7a14ccc4 100644 --- a/Justfile +++ b/Justfile @@ -1,3 +1,4 @@ +[private] default: #!/usr/bin/env bash set -xeuo pipefail @@ -32,6 +33,7 @@ _get_timestamp: genkey: just mkosi genkey --force +[private] mkosi +subcommand: mkdir -p ~/.cache/mkosi-workspace mkdir -p ~/.cache/mkosi @@ -57,6 +59,7 @@ clean: rm -rf mkosi.tools mkosi.cache mkosi.output ~/.cache/mkosi ~/.cache/mkosi-workspace \ ' +[private] compress-repo: #!/usr/bin/env bash set -euo pipefail @@ -72,6 +75,7 @@ compress-repo: zstd -T0 --rm -f "${files[@]}" ls -l "${files[@]/%/.zst}" +[private] checksum-repo: #!/usr/bin/env bash set -euo pipefail @@ -81,6 +85,7 @@ checksum-repo: > SHA256SUMS cat SHA256SUMS +[private] checksum-ext: #!/usr/bin/env bash cd mkosi.output From 7450686bbb75f14a78fede0dce6ec8b7da283f81 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 27 Sep 2026 09:46:22 +0530 Subject: [PATCH 16/19] Hide "just genkey" recipe and update README.md --- Justfile | 2 ++ README.md | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Justfile b/Justfile index e7a14ccc4..afabe236c 100644 --- a/Justfile +++ b/Justfile @@ -6,6 +6,7 @@ default: _do-release stream: sudo bash -c ' \ + just genkey && \ rm -rf mkosi.output/ && \ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ PROFILE={{stream}} ./assemble-iso.sh && \ @@ -30,6 +31,7 @@ _get_timestamp: set -euo pipefail echo "$(cat ./mkosi.version)" +[private] genkey: just mkosi genkey --force diff --git a/README.md b/README.md index 0bba3af5d..e434c0ba6 100644 --- a/README.md +++ b/README.md @@ -31,10 +31,9 @@ You'll need the following runtime dependencies: * fzf * systemd -Generate keys and then build with `just` +Build the OS artifacts (ISO etc.) with `just` ```bash -just genkey just do-daily ``` Create install media with [Fedora Media Writer](https://flathub.org/en/apps/org.fedoraproject.MediaWriter) or [Impression](flathub.org/en/apps/io.gitlab.adhami3310.Impression), or boot with GNOME Boxes (>=51). From 02ba1a217bde2a7ca63dfca6c31fa3c15d3bf682 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 27 Sep 2026 11:36:50 +0530 Subject: [PATCH 17/19] Fix "checksum-repo" and "checksum-ext" recipes CI-only failures Apparently caused by `just` generating temporary bash script snippets in (now root owned) `/run/user/1001/just/just-xxxx` due to the bash shebang lines. --- Justfile | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Justfile b/Justfile index afabe236c..5b6d3524a 100644 --- a/Justfile +++ b/Justfile @@ -79,22 +79,21 @@ compress-repo: [private] checksum-repo: - #!/usr/bin/env bash - set -euo pipefail - cd mkosi.output + cd mkosi.output && \ sha256sum elementary_*.efi \ elementary_*.usr-*.*.raw.zst \ - > SHA256SUMS + > SHA256SUMS && \ cat SHA256SUMS [private] checksum-ext: - #!/usr/bin/env bash - cd mkosi.output - mkdir ext - mv {ext,driver}-*.raw.zst ext/ - mv *addon.efi ext/ - cd ext/ - sha256sum {ext,driver}-*.raw.zst > SHA256SUMS - sha256sum *addon.efi >> SHA256SUMS + cd mkosi.output && \ + mkdir -p ext && \ + mv ext-*.raw.zst ext/ || true && \ + mv driver-*.raw.zst ext/ || true && \ + mv *addon.efi ext/ || true && \ + cd ext/ && \ + sha256sum ext-*.raw.zst > SHA256SUMS && \ + sha256sum driver-*.raw.zst >> SHA256SUMS && \ + sha256sum *addon.efi >> SHA256SUMS && \ cat SHA256SUMS From 45a94b9bda7d913ff1e6f596240a0e58cca89026 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 27 Sep 2026 13:27:33 +0530 Subject: [PATCH 18/19] Use sudo for checksum recipes so wide open chmod access is moot --- Justfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Justfile b/Justfile index 5b6d3524a..a0c6de504 100644 --- a/Justfile +++ b/Justfile @@ -10,8 +10,7 @@ _do-release stream: rm -rf mkosi.output/ && \ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ PROFILE={{stream}} ./assemble-iso.sh && \ - just compress-repo && \ - chmod -R ugo+rwX mkosi.output \ + just compress-repo \ ' # Built every day from the main branch @@ -79,14 +78,17 @@ compress-repo: [private] checksum-repo: + sudo bash -c ' \ cd mkosi.output && \ sha256sum elementary_*.efi \ elementary_*.usr-*.*.raw.zst \ > SHA256SUMS && \ - cat SHA256SUMS + cat SHA256SUMS \ + ' [private] checksum-ext: + sudo bash -c ' \ cd mkosi.output && \ mkdir -p ext && \ mv ext-*.raw.zst ext/ || true && \ @@ -96,4 +98,5 @@ checksum-ext: sha256sum ext-*.raw.zst > SHA256SUMS && \ sha256sum driver-*.raw.zst >> SHA256SUMS && \ sha256sum *addon.efi >> SHA256SUMS && \ - cat SHA256SUMS + cat SHA256SUMS \ + ' From 9f793c9b914970067f8dbd0d0ff2abbfae817fa4 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 27 Sep 2026 14:31:57 +0530 Subject: [PATCH 19/19] I give up so bring back the chown and chmod lines --- Justfile | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Justfile b/Justfile index a0c6de504..10df101c7 100644 --- a/Justfile +++ b/Justfile @@ -10,7 +10,9 @@ _do-release stream: rm -rf mkosi.output/ && \ just mkosi -B --debug --profile={{stream}} --force --workspace-directory=/workspace && \ PROFILE={{stream}} ./assemble-iso.sh && \ - just compress-repo \ + just compress-repo && \ + chown -R "$SUDO_UID:$SUDO_GID" mkosi.output && \ + chmod -R u+rwX mkosi.output \ ' # Built every day from the main branch @@ -78,17 +80,14 @@ compress-repo: [private] checksum-repo: - sudo bash -c ' \ cd mkosi.output && \ sha256sum elementary_*.efi \ elementary_*.usr-*.*.raw.zst \ > SHA256SUMS && \ - cat SHA256SUMS \ - ' + cat SHA256SUMS [private] checksum-ext: - sudo bash -c ' \ cd mkosi.output && \ mkdir -p ext && \ mv ext-*.raw.zst ext/ || true && \ @@ -98,5 +97,4 @@ checksum-ext: sha256sum ext-*.raw.zst > SHA256SUMS && \ sha256sum driver-*.raw.zst >> SHA256SUMS && \ sha256sum *addon.efi >> SHA256SUMS && \ - cat SHA256SUMS \ - ' + cat SHA256SUMS