Skip to content

bootc-ubuntu-setup: Use fixed QEMU from Resolute - #53

Merged
cgwalters merged 1 commit into
bootc-dev:mainfrom
cgwalters-bot:fix-ubuntu-qemu-virtiofs
Sep 10, 2026
Merged

bootc-ubuntu-setup: Use fixed QEMU from Resolute#53
cgwalters merged 1 commit into
bootc-dev:mainfrom
cgwalters-bot:fix-ubuntu-qemu-virtiofs

Conversation

@cgwalters-bot

Copy link
Copy Markdown
Contributor

The QEMU selected by our Ubuntu 24.04/Plucky setup lacks the synchronous vhost-user notifier update. Investigating bootc-dev/bootc#2290 produced a controlled CentOS 9 reproducer: moving virtiofs IRQ affinity stalled the unpatched emulator, while the matched patched build completed installation. The investigation and its limitations are recorded in the debug repository.

For libvirt: true on Ubuntu 24.04, install the fixed QEMU from Resolute, together with its matching ipxe-qemu package. The latter is necessary: the first packaged-emulator smoke test failed before boot because its expected efi-virtio.rom was missing. Keep Resolute at low default apt priority and explicitly request the virtualization packages. This still upgrades their runtime dependencies, including libc, on the disposable runner; it is not a standalone executable replacement.

The step is explicitly limited to Ubuntu 24.04, leaving native Ubuntu 26.04 handling in #52 separate. Non-virtualization users are unchanged.

Add a bounded amd64/arm64 smoke test using the prebuilt CentOS Stream 9 image. It launches an ephemeral VM, verifies uname -a && true over SSH, and retains limited diagnostics before cleanup. No bootc image build is needed. SSH avoids unrelated bcvk 0.19 --execute problems uncovered during the experiment, including a false-success result when QEMU never booted.

Validation

  • Local Ubuntu 24.04 container: authenticated Resolute package installation, source verification of the fix, library checks, and a QEMU virtio-net/slirp startup check.
  • GitHub-hosted Ubuntu 24.04, same stock-image smoke test: stock QEMU 9.2.1 passed and Resolute QEMU 10.2.1 passed, with actual guest output verified in both cases.
  • actionlint, composite shell syntax checks, and whitespace checks passed; independent AI review covered the final diff.

The new shared-action/amd64/arm64 matrix is pending this PR's CI. The full PR-2290 composefs installation and reboot tuple also still needs a fresh CI run; the smoke checks establish package integration and guest execution, not that entire test.

Generated-by: AI

Implementation and tests were AI-generated. Human review and DCO signoff are still required; no Signed-off-by was added automatically.

cgwalters
cgwalters previously approved these changes Sep 10, 2026
trap cleanup EXIT

set +e
timeout --foreground --signal=TERM --kill-after=10s 90s \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hmm, this is all gross. I think what we should really do is have something like bcvk ephemeral selftest --image quay.io/centos-bootc/centos-bootc:stream9, like move some core smoke testing of functionality into the binary itself.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The Plucky QEMU used on Noble lacks the synchronous vhost-user notifier update needed to avoid lost virtiofs interrupts. Select Resolute's fixed emulator for virtualization jobs, including its matching iPXE ROM package so guests can actually boot.

Keep this limited to Ubuntu 24.04 disposable runners: the package transaction also upgrades runtime dependencies. Exercise guest boot on the amd64 KVM runner. Since bcvk requires KVM and has no arm64 release asset, validate the installed arm64 emulator with a bounded TCG startup probe instead.

Generated-by: AI

Signed-off-by: Colin Walters <walters@verbum.org>
@cgwalters-bot
cgwalters-bot force-pushed the fix-ubuntu-qemu-virtiofs branch from 3110334 to 818ff7e Compare September 10, 2026 17:05
@cgwalters
cgwalters merged commit a88dfc1 into bootc-dev:main Sep 10, 2026
10 checks passed
@cgwalters

Copy link
Copy Markdown
Contributor

Ah right, I effectively bypassed the review requirement by using my bot account. Sorry about that. This is quite technically messy to handle, we'd need some database mapping between accounts.

But cc e.g. @gursewak1997 for post-merge review.

@gursewak1997 gursewak1997 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.

Looks good overall

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.

3 participants