From b1b6e69325d0437b40ca1ddac7288ef1ae1c20b6 Mon Sep 17 00:00:00 2001 From: gursewak1997 Date: Mon, 27 Apr 2026 15:07:06 -0700 Subject: [PATCH] Clarify host vs target container dependencies Signed-off-by: gursewak1997 --- contrib/packaging/bcvk.spec | 1 - crates/kit/src/run_ephemeral.rs | 10 +++++++--- docs/src/installation.md | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/contrib/packaging/bcvk.spec b/contrib/packaging/bcvk.spec index 6614628..10f57dc 100644 --- a/contrib/packaging/bcvk.spec +++ b/contrib/packaging/bcvk.spec @@ -14,7 +14,6 @@ Source1: %{url}/releases/download/v%{version}/bcvk-%{version}-vendor.tar. # Only build for architectures with full support and testing ExclusiveArch: x86_64 aarch64 -Requires: binutils Requires: openssh-clients Requires: podman Requires: qemu-img diff --git a/crates/kit/src/run_ephemeral.rs b/crates/kit/src/run_ephemeral.rs index ea0c7a4..b98ce9a 100644 --- a/crates/kit/src/run_ephemeral.rs +++ b/crates/kit/src/run_ephemeral.rs @@ -861,11 +861,15 @@ fn parse_service_exit_code(status_content: &str) -> Result { Ok(0) } -/// Check for required binaries in the target container image +/// Check for required binaries in the privileged container /// -/// These binaries must be present in the container image being run as an ephemeral VM. +/// These binaries must be present in the privileged container that runs bcvk, +/// not the guest bootc image that gets booted inside the VM. fn check_required_container_binaries() -> Result<()> { - // We use systemctl in a few places. objcopy is for UKI extraction. + // systemctl: used for checking cloud-init and other systemd operations + // objcopy: for UKI kernel extraction (when using UKI images) + // NOTE: bwrap is checked earlier in entrypoint.sh, not here, because by the + // time run_impl() executes we're already inside the bwrap namespace let required_binaries = ["systemctl", "objcopy"]; let mut missing = Vec::new(); diff --git a/docs/src/installation.md b/docs/src/installation.md index 2edcb5d..8b10a38 100644 --- a/docs/src/installation.md +++ b/docs/src/installation.md @@ -10,12 +10,18 @@ sudo dnf install bcvk ## Prerequisites -Required: +### Host Requirements + +For building from source: - [Rust](https://www.rust-lang.org/) - Git + +For running bcvk: - QEMU/KVM +- qemu-img - virtiofsd - Podman +- openssh-clients (for libvirt SSH operations) Optional: - libvirt (for persistent VM features) @@ -24,6 +30,14 @@ Optional: sudo usermod -a -G libvirt $USER ``` +### Target Bootc Image Requirements + +For `bcvk ephemeral` operations, the bootc container images you run must contain: +- systemctl (systemd) +- objcopy (binutils) +- bwrap (bubblewrap) +- ssh, ssh-keygen (openssh-clients) + ## Development Binaries Pre-built binaries from `main` are available as OCI artifacts: