Skip to content

[WIP] Validate ISO build of Rocky Linux 9 - #15

Merged
8r4n merged 7 commits into
mainfrom
codex/validate-iso-build-rocky-linux-9
May 24, 2026
Merged

[WIP] Validate ISO build of Rocky Linux 9#15
8r4n merged 7 commits into
mainfrom
codex/validate-iso-build-rocky-linux-9

Conversation

@Codex

@Codex Codex AI commented May 24, 2026

Copy link
Copy Markdown

Cloud agent has begun work on Create a plan to val... and will update this pull request as work progresses.

Original prompt

Create a plan to validate the ISO build of the Rocky Linux 9 variant. You must verify the ISO loads a functioning linux os

Created from VS Code.

Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
@Codex
Codex AI requested a review from 8r4n May 24, 2026 19:10
@8r4n

8r4n commented May 24, 2026

Copy link
Copy Markdown
Owner

@codex[agent] checkout the branch

@Codex

Codex AI commented May 24, 2026

Copy link
Copy Markdown
Author

@codex[agent] checkout the branch

On branch codex/validate-iso-build-rocky-linux-9 locally; latest commit is e039a1e.

@8r4n

8r4n commented May 24, 2026

Copy link
Copy Markdown
Owner

@codex[agent] Proceed with the plan

Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
@Codex

Codex AI commented May 24, 2026

Copy link
Copy Markdown
Author

@codex[agent] Proceed with the plan

Added ISO boot smoke-test execution to the ISO build workflows; commit 4dfa142 runs just_scripts/validate-iso-boot.sh during build_iso.yml (anaconda) and build_iso_titanoboa.yml (live).

@8r4n

8r4n commented May 24, 2026

Copy link
Copy Markdown
Owner

@codex[agent] boot into the iso and verify the funcitionality of the linux system

@Codex

Codex AI commented May 24, 2026

Copy link
Copy Markdown
Author

@codex[agent] boot into the iso and verify the funcitionality of the linux system

I can boot it in QEMU via just_scripts/validate-iso-boot.sh, but I need the ISO file/URL. This sandbox can only reliably fetch from GitHub domains (Rocky/COPR mirrors don’t resolve here), so please share a GitHub artifact/release-asset URL (or attach the ISO to the workflow) and I’ll run the boot validation and report the serial log match.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • copr.fedorainfracloud.org
    • Triggering command: /usr/bin/curl curl -L --fail --retry 3 -o /tmp/iso-build/bazzite.repo REDACTED (dns block)
  • dl.google.com
    • Triggering command: /usr/lib/apt/methods/https /usr/lib/apt/methods/https (dns block)
  • dl.rockylinux.org
    • Triggering command: /usr/bin/getent getent hosts dl.rockylinux.org tr [:lo�� liborc-0.4-0t64_1%3a0.4.38-1ubuntu0.1_amd64.deb untu1.16_amd64.deb or (dns block)
    • Triggering command: /usr/bin/curl curl -IL --max-time 10 REDACTED untu1.16_amd64.deb (dns block)
  • download.rockylinux.org
    • Triggering command: /usr/bin/curl curl -L --fail --retry 3 -o /tmp/iso-test/Rocky-9.5-x86_64-boot.iso REDACTED origins &#39;localho/usr/lib/systemd/system-generators/cloud-init-generator (dns block)
    • Triggering command: /usr/bin/getent getent hosts download.rockylinux.org cut -c1 (dns block)
  • mirror.rackspace.com
    • Triggering command: /usr/bin/curl curl -IL --max-time 10 REDACTED -4ubuntu5_amd64.run-qemu.mount (dns block)
  • mirrors.edge.kernel.org
    • Triggering command: /usr/bin/curl curl -IL --max-time 10 REDACTED untu1.16_amd64.deb anoia0_3.10.2&#43;debian-14build3_amd64.deb .4-0t64_1%3a0.4.38-1ubuntu0.1_amd64.deb amer-plugins-bas/var/lib/dpkg/info/qemu-system-x86.postinst _1.4-1build1_amdconfigure a0_1.1.1&#43;dfsg.1- l-0.4-0_0.4.2-2build1_amd64.deb senc�� untu2_amd64.deb .4p5-51.1_amd64.deb pt-extracttemplates (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@8r4n

8r4n commented May 24, 2026

Copy link
Copy Markdown
Owner

@codex[agent] how can you build and stash the artifact using github repo and then test

Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
@Codex

Codex AI commented May 24, 2026

Copy link
Copy Markdown
Author

@codex[agent] how can you build and stash the artifact using github repo and then test

Use Actions -> Build ISOs and run it via workflow_dispatch (or push to testing). The workflow now (commit fc395d0) uploads the ISO+CHECKSUM as an Actions artifact for 7 days and also boots it in QEMU as part of the run. To re-test later: download the artifact ZIP from that run, extract the .iso, then run bash just_scripts/validate-iso-boot.sh --iso /path/to.iso --mode anaconda (or host it as a GitHub release asset and run Actions -> Validate ISO Boot with the asset URL).

@8r4n

8r4n commented May 24, 2026

Copy link
Copy Markdown
Owner

@codex[agent] now verify the linux system boots with the iso

Agent-Logs-Url: https://github.com/8r4n/bazzite/sessions/02672ad2-25d1-438a-9537-ff549f9762fa

Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
@8r4n

8r4n commented May 24, 2026

Copy link
Copy Markdown
Owner

@codex[agent] continue

continue

try to create a smaller exampel

Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
@Codex

Codex AI commented May 24, 2026

Copy link
Copy Markdown
Author

@codex[agent] continue

continue...

Added a smaller CI path by letting .github/workflows/build_iso.yml take optional image_name/major_version inputs to run a single-ISO build (instead of the full matrix), and documented how to use it in ISO_VALIDATION_ROCKY9.md. Commit: c35fa76.

@8r4n

8r4n commented May 24, 2026

Copy link
Copy Markdown
Owner

@copilot review the pull request

Copilot AI commented May 24, 2026

Copy link
Copy Markdown

@copilot review the pull request

Reviewed the PR and found a workflow input-handling issue in .github/workflows/build_iso.yml (matrix JSON construction could be expanded by crafted input). I fixed it by JSON-encoding dispatch inputs before fromJson, and kept major_version defaults consistent as strings. Addressed in commit 749e667.

Copilot finished work on behalf of 8r4n May 24, 2026 20:54
@8r4n
8r4n marked this pull request as ready for review May 24, 2026 21:00
Copilot AI review requested due to automatic review settings May 24, 2026 21:00
@8r4n
8r4n merged commit 29f48a6 into main May 24, 2026
2 checks passed
@8r4n
8r4n deleted the codex/validate-iso-build-rocky-linux-9 branch May 24, 2026 21:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds automated ISO boot validation (via QEMU) to ensure the Rocky Linux 9 ISO variant (and other ISO builds) actually boots into a functioning userspace, and wires that smoke test into CI/workflows.

Changes:

  • Introduces a QEMU-based ISO boot smoke test script that extracts kernel/initrd from an ISO and validates boot progress via serial console output.
  • Adds a Rocky Linux 9 ISO validation plan doc and a manually-triggered GitHub Actions workflow to validate an ISO from a direct URL.
  • Integrates the smoke test into existing ISO build workflows and adds inputs to allow single-ISO builds on demand.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
just_scripts/validate-iso-boot.sh New QEMU/xorriso-based boot smoke test script for installer/live ISOs.
ISO_VALIDATION_ROCKY9.md Documentation for acceptance criteria and how to run validation locally/CI.
.github/workflows/validate_iso_boot.yml New on-demand workflow to download an ISO and run the smoke test.
.github/workflows/build_iso.yml Adds optional single-ISO build inputs and runs the smoke test on built installer ISOs; adjusts artifact retention/conditions.
.github/workflows/build_iso_titanoboa.yml Installs QEMU and runs the smoke test for live ISO builds.
Comments suppressed due to low confidence (4)

just_scripts/validate-iso-boot.sh:202

  • volume_label is interpolated into the kernel cmdline as part of inst.stage2=hd:LABEL=.... Labels with spaces/special characters will break argument parsing and stage2 lookup. Consider validating --label or encoding spaces (e.g. \x20) before constructing this argument.
        "${boot_args_common[@]}"
        inst.text
        "inst.stage2=hd:LABEL=${volume_label}"
        inst.loglevel=debug
    )

just_scripts/validate-iso-boot.sh:77

  • --ram is passed directly to QEMU via -m, but the script doesn't validate it as a positive integer. Consider validating ram_mib after parsing to catch invalid values early with a clear message.
        --ram)
            ram_mib=${2:-}
            shift 2
            ;;

just_scripts/validate-iso-boot.sh:81

  • --cpus is passed directly to QEMU via -smp, but the script doesn't validate it as a positive integer. Consider validating cpu_count after parsing to avoid confusing QEMU errors in CI.
        --cpus)
            cpu_count=${2:-}
            shift 2
            ;;

just_scripts/validate-iso-boot.sh:208

  • The Anaconda path can also pass too early because success_patterns includes 'Linux version '. Tighten the success condition to match an installer/userspace milestone (e.g., Anaconda start) rather than kernel start alone, or require Linux version AND an Anaconda-specific pattern.
        'Linux version '
        'Starting installer'
        'anaconda'
        'Running.*Anaconda'
    )

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +104 to +107
require_cmd qemu-system-x86_64
require_cmd xorriso
require_cmd timeout

Comment on lines +184 to +188
"${boot_args_common[@]}"
rd.live.image
"root=live:CDLABEL=${volume_label}"
enforcing=0
systemd.unit=multi-user.target
Comment on lines +70 to +73
--timeout)
timeout_s=${2:-}
shift 2
;;
Comment on lines +191 to +195
'Linux version '
'systemd\\[[0-9]+\\]: Reached target .*System'
'systemd\\[[0-9]+\\]: Started .*'
'Welcome to '
)
Comment thread ISO_VALIDATION_ROCKY9.md
Prereqs:

- `qemu-system-x86_64`
- `xorriso`

- name: Upload ISOs and Checksum to Job Artifacts
if: github.ref_name == 'testing'
if: github.ref_name == 'testing' || github.event_name == 'workflow_dispatch'
Comment on lines +154 to +158
- name: Boot ISO in QEMU (smoke test)
shell: bash
run: |
set -euxo pipefail
bash just_scripts/validate-iso-boot.sh \
wait "${qemu_pid}" 2>/dev/null || true
fi
}
trap kill_qemu INT TERM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants