From 67c4f1a899ae845b46902e37b90a8393feb4c83a Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Wed, 12 Aug 2026 15:15:48 +0200 Subject: [PATCH 1/5] node-images: build bcvk from source code We need a fix for unlocking our CI which requires the commit in: https://github.com/bootc-dev/bcvk/pull/313 afterwards the commit inside the disk image should match with the one of the corresponding node image. Signed-off-by: Alice Frosi --- node-images/fedora/Containerfile.disk | 11 ++++++++++- node-images/fedora/Makefile | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/node-images/fedora/Containerfile.disk b/node-images/fedora/Containerfile.disk index 63886b1..8436f7d 100644 --- a/node-images/fedora/Containerfile.disk +++ b/node-images/fedora/Containerfile.disk @@ -1,7 +1,16 @@ ARG FEDORA_VERSION=44 +ARG BCVK_REF=main + +FROM quay.io/fedora/fedora-minimal:${FEDORA_VERSION} AS bcvk-builder +ARG BCVK_REF +RUN dnf install -y --setopt=install_weak_deps=0 git rust cargo && dnf clean all +RUN git clone https://github.com/bootc-dev/bcvk.git /bcvk && \ + git -C /bcvk checkout ${BCVK_REF} && \ + cargo build --release --manifest-path /bcvk/Cargo.toml FROM quay.io/fedora/fedora-minimal:${FEDORA_VERSION} AS builder -RUN dnf install -y --setopt=install_weak_deps=0 qemu-kvm podman bcvk binutils && dnf clean all +RUN dnf install -y --setopt=install_weak_deps=0 qemu-kvm qemu-img podman binutils && dnf clean all +COPY --from=bcvk-builder /bcvk/target/release/bcvk /usr/local/bin/bcvk RUN printf '[containers]\nnetns="host"\ncgroups="disabled"\n[engine]\ncgroup_manager="cgroupfs"\n' \ > /etc/containers/containers.conf diff --git a/node-images/fedora/Makefile b/node-images/fedora/Makefile index 999c961..c1e211e 100644 --- a/node-images/fedora/Makefile +++ b/node-images/fedora/Makefile @@ -6,6 +6,7 @@ DISK_SIZE ?= 10G BUILD_MEMORY ?= 4G BUILD_LOG_DIR ?= /tmp/bcvk-logs BCVK_EXTRA_ARGS ?= +BCVK_REF ?= 9005a6111f62533cb7b8b6a3cdffe6e1e98ce673 IMAGE_TAG ?= v$(KUBE_MINOR)-fedora-$(FEDORA_VERSION) REGISTRY ?= ghcr.io/bootc-dev/bink @@ -58,6 +59,7 @@ build-disk-image: --build-arg KUBE_MINOR="$(KUBE_MINOR)" \ --build-arg BOOTC_DIGEST="$$BOOTC_DIGEST" \ --build-arg BCVK_EXTRA_ARGS="$(BCVK_EXTRA_ARGS)" \ + --build-arg BCVK_REF="$(BCVK_REF)" \ -t $(NODE_IMAGE) \ -f Containerfile.disk \ . @@ -103,3 +105,4 @@ help: @echo " BUILD_MEMORY - Memory for bcvk build (default: $(BUILD_MEMORY))" @echo " BUILD_LOG_DIR - Host path to collect bcvk logs (default: none)" @echo " BCVK_EXTRA_ARGS - Extra arguments passed to bcvk to-disk (default: none)" + @echo " BCVK_REF - Git commit/tag to build bcvk from source (default: $(BCVK_REF))" From b4bf40416321a1e8e69aa2d20dc711cd189927d9 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Wed, 12 Aug 2026 15:45:47 +0200 Subject: [PATCH 2/5] gha: print bootc node image digest Printing the digest of the node image should help us to validate if it is the same digest used by bootc inside the bcvk VM. Signed-off-by: Alice Frosi --- .github/workflows/integration-tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 7ee03d0..c1d29ea 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -113,6 +113,12 @@ jobs: name: bootc-image-${{ matrix.kube-minor }} path: bootc-image.tar + - name: Print bootc image digest + working-directory: node-images/fedora + run: | + BOOTC_IMAGE=$(make -s print-bootc-image KUBE_MINOR=${{ matrix.kube-minor }}) + sudo podman inspect --format '{{.Digest}}' ${BOOTC_IMAGE} + - name: Build disk image working-directory: node-images/fedora run: sudo make build-disk-image KUBE_MINOR=${{ matrix.kube-minor }} From bb66b44e40681a3efa8eb075c8683cb62445463c Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Thu, 13 Aug 2026 06:57:51 +0000 Subject: [PATCH 3/5] node-images: install virtiofsd in disk image builder bcvk uses virtiofsd to expose the bootc OCI image's root filesystem to the ephemeral VM via virtio-fs. Without it the kernel boots past BIOS and GRUB but hangs waiting for its root device, so SSH never becomes available and the 240s timeout fires. virtiofsd is only a weak/recommended dependency of qemu-kvm, so --setopt=install_weak_deps=0 silently dropped it. Add it explicitly. Assisted-by: AI Signed-off-by: Alice Frosi --- node-images/fedora/Containerfile.disk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-images/fedora/Containerfile.disk b/node-images/fedora/Containerfile.disk index 8436f7d..4ae85bd 100644 --- a/node-images/fedora/Containerfile.disk +++ b/node-images/fedora/Containerfile.disk @@ -9,7 +9,7 @@ RUN git clone https://github.com/bootc-dev/bcvk.git /bcvk && \ cargo build --release --manifest-path /bcvk/Cargo.toml FROM quay.io/fedora/fedora-minimal:${FEDORA_VERSION} AS builder -RUN dnf install -y --setopt=install_weak_deps=0 qemu-kvm qemu-img podman binutils && dnf clean all +RUN dnf install -y --setopt=install_weak_deps=0 qemu-kvm qemu-img virtiofsd podman binutils && dnf clean all COPY --from=bcvk-builder /bcvk/target/release/bcvk /usr/local/bin/bcvk RUN printf '[containers]\nnetns="host"\ncgroups="disabled"\n[engine]\ncgroup_manager="cgroupfs"\n' \ > /etc/containers/containers.conf From 5d1cee8f16a10849e494ab3687b7f9fad8a001c8 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Thu, 13 Aug 2026 06:58:02 +0000 Subject: [PATCH 4/5] node-images: add hvc0 kernel console for bcvk log capture bcvk's console log capture reads from the virtio console (hvc0), but the kernel cmdline only listed tty0 and ttyS0. Assisted-by: AI Signed-off-by: Alice Frosi --- node-images/fedora/Containerfile.disk | 1 + 1 file changed, 1 insertion(+) diff --git a/node-images/fedora/Containerfile.disk b/node-images/fedora/Containerfile.disk index 4ae85bd..e5cd535 100644 --- a/node-images/fedora/Containerfile.disk +++ b/node-images/fedora/Containerfile.disk @@ -27,6 +27,7 @@ RUN mkdir -p /output ${LOG_DIR} && \ bcvk to-disk -K \ --karg 'console=tty0' \ --karg 'console=ttyS0,115200n8' \ + --karg 'console=hvc0' \ --filesystem ext4 \ --format qcow2 \ --memory ${MEMORY} \ From b863f2abd08ce33f8c228901b3b4dbd3ca5cc354 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Thu, 13 Aug 2026 08:45:36 +0000 Subject: [PATCH 5/5] node-images: install openssh in disk image builder bcvk generates an SSH keypair via ssh-keygen before starting QEMU. The openssl-client was missing. Assisted-by: AI Signed-off-by: Alice Frosi --- node-images/fedora/Containerfile.disk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-images/fedora/Containerfile.disk b/node-images/fedora/Containerfile.disk index e5cd535..3c941ea 100644 --- a/node-images/fedora/Containerfile.disk +++ b/node-images/fedora/Containerfile.disk @@ -9,7 +9,7 @@ RUN git clone https://github.com/bootc-dev/bcvk.git /bcvk && \ cargo build --release --manifest-path /bcvk/Cargo.toml FROM quay.io/fedora/fedora-minimal:${FEDORA_VERSION} AS builder -RUN dnf install -y --setopt=install_weak_deps=0 qemu-kvm qemu-img virtiofsd podman binutils && dnf clean all +RUN dnf install -y --setopt=install_weak_deps=0 qemu-kvm qemu-img virtiofsd podman binutils openssh && dnf clean all COPY --from=bcvk-builder /bcvk/target/release/bcvk /usr/local/bin/bcvk RUN printf '[containers]\nnetns="host"\ncgroups="disabled"\n[engine]\ncgroup_manager="cgroupfs"\n' \ > /etc/containers/containers.conf